@grazziotin/react-components-next 2.2.1 → 3.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.
@@ -0,0 +1 @@
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/functions/format-price-brl/format-price-brl.ts","../src/functions/format-item-170/format-item-170.ts","../src/functions/format-item-150/format-item-150.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","../src/core/css-var.ts","../src/components/ui/input/utils/css.ts","../src/components/ui/input/components/maskers.tsx","../src/components/ui/input/components/slot-props.tsx","../src/components/ui/input/index.tsx","../src/components/ui/input-select/utils/css.ts","../src/components/ui/input-select/utils/constants.ts","../src/components/ui/input-select/index.tsx","../src/components/ui/filter/components/card.tsx","../src/components/ui/filter/utils/constants.ts","../src/components/ui/filter/components/filter.tsx","../src/components/ui/filter/index.tsx","../src/components/accessibility/say/utils/constants.ts","../src/components/accessibility/say/use-speech-ponyfill.ts","../src/components/accessibility/say/index.tsx","../src/components/accessibility/say/use-say.ts","../src/providers/app-providers.tsx"],"names":["twMerge","clsx","jsxs","Box","jsx","Tooltip","DialogMui","DialogTitle","DialogContent","DialogActions","ptBR","createTheme","TextField","getGridStringOperators","getGridNumericOperators","GRID_STRING_COL_DEF","GRID_NUMERIC_COL_DEF","GridColumnsPanel","GridColumnMenu","ThemeProvider","GridFilterPanel","GridOverlay","GridPagination","DataGrid","styled","MuiTabs","MuiTab","memo","useCallback","MdVisibilityOff","MdVisibility","InputAdornment","IconButton","useState","useMemo","input","Autocomplete","_a","ActionIcon","FaFilter","card_default","useMediaQuery","Grid","Drawer","Button","filter_default","toast","useEffect","Fragment","ToastContainer","SayEngine","CssBaseline","MantineProvider"],"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-space-x-reverse:0;\\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 --container-5xl:64rem;\\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-lg:1.125rem;\\n --text-lg--line-height:calc(1.75 / 1.125);\\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-md:.375rem;\\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 :root {\\n --primary-color:#00b2a6;\\n --font-poppins:\\\"Poppins\\\", sans-serif;\\n --font-family:var(--font-poppins);\\n --default-font-family:var(--font-poppins);\\n --mui-font-family:var(--font-poppins);\\n --mantine-font-family:var(--font-poppins);\\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 .mb-2 {\\n margin-bottom: calc(var(--spacing) * 2);\\n }\\n .ml-1 {\\n margin-left: calc(var(--spacing) * 1);\\n }\\n .block {\\n display: block;\\n }\\n .block\\\\! {\\n display: block !important;\\n }\\n .flex {\\n display: flex;\\n }\\n .grid {\\n display: grid;\\n }\\n .hidden {\\n display: none;\\n }\\n .inline-block {\\n display: inline-block;\\n }\\n .table {\\n display: table;\\n }\\n .h-5 {\\n height: calc(var(--spacing) * 5);\\n }\\n .h-15 {\\n height: calc(var(--spacing) * 15);\\n }\\n .h-full {\\n height: 100%;\\n }\\n .min-h-\\\\[210px\\\\]\\\\! {\\n min-height: 210px !important;\\n }\\n .min-h-screen {\\n min-height: 100vh;\\n }\\n .w-2 {\\n width: calc(var(--spacing) * 2);\\n }\\n .w-5 {\\n width: calc(var(--spacing) * 5);\\n }\\n .w-80 {\\n width: calc(var(--spacing) * 80);\\n }\\n .w-full {\\n width: 100%;\\n }\\n .max-w-3xl {\\n max-width: var(--container-3xl);\\n }\\n .max-w-5xl {\\n max-width: var(--container-5xl);\\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-between {\\n justify-content: space-between;\\n }\\n .justify-center {\\n justify-content: center;\\n }\\n .justify-end {\\n justify-content: flex-end;\\n }\\n .gap-2 {\\n gap: calc(var(--spacing) * 2);\\n }\\n .gap-4 {\\n gap: calc(var(--spacing) * 4);\\n }\\n :where(.space-x-4 > :not(:last-child)) {\\n --tw-space-x-reverse:0;\\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\\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 .overflow-hidden {\\n overflow: hidden;\\n }\\n .rounded {\\n border-radius: .25rem;\\n }\\n .rounded-lg {\\n border-radius: var(--radius-lg);\\n }\\n .rounded-md {\\n border-radius: var(--radius-md);\\n }\\n .rounded-tl-md {\\n border-top-left-radius: var(--radius-md);\\n }\\n .rounded-bl-md {\\n border-bottom-left-radius: var(--radius-md);\\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-\\\\(--primary-color\\\\) {\\n background-color: var(--primary-color);\\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 .bg-white {\\n background-color: var(--color-white);\\n }\\n .p-3 {\\n padding: calc(var(--spacing) * 3);\\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 .py-4 {\\n padding-block: calc(var(--spacing) * 4);\\n }\\n .pt-1 {\\n padding-top: calc(var(--spacing) * 1);\\n }\\n .pt-4 {\\n padding-top: calc(var(--spacing) * 4);\\n }\\n .pr-4 {\\n padding-right: calc(var(--spacing) * 4);\\n }\\n .pr-5 {\\n padding-right: calc(var(--spacing) * 5);\\n }\\n .pb-5 {\\n padding-bottom: calc(var(--spacing) * 5);\\n }\\n .pl-5 {\\n padding-left: calc(var(--spacing) * 5);\\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-lg {\\n font-size: var(--text-lg);\\n line-height: var(--tw-leading,var(--text-lg--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-ellipsis {\\n text-overflow: ellipsis;\\n }\\n .whitespace-nowrap {\\n white-space: nowrap;\\n }\\n .text-black {\\n color: var(--color-black);\\n }\\n .text-black\\\\/80 {\\n color: #000c;\\n }\\n @supports (color:color-mix(in lab, red, red)) {\\n .text-black\\\\/80 {\\n color: color-mix(in oklab, var(--color-black) 80%, transparent);\\n }\\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-\\\\[0_2px_6px_-1px_rgba\\\\(0\\\\,0\\\\,0\\\\,\\\\.16\\\\)\\\\,0_6px_18px_-1px_rgba\\\\(0\\\\,0\\\\,0\\\\,\\\\.06\\\\)\\\\] {\\n --tw-shadow:0 2px 6px -1px var(--tw-shadow-color,#00000029), 0 6px 18px -1px var(--tw-shadow-color,#0000000f);\\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 .select-none {\\n -webkit-user-select: none;\\n user-select: none;\\n }\\n .disabled\\\\:opacity-50:disabled {\\n opacity: .5;\\n }\\n}\\n@layer mui, mantine;\\n@property --tw-space-x-reverse { syntax:\\\"*\\\";inherits:false;initial-value:0 }\\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\r\n/** Remove tudo que não for número. */\r\nexport function removeNonDigits(value: string) {\r\n return value.replaceAll(/\\d/g, \"\");\r\n}\r\n\r\n/** Remove tudo que não for letra. */\r\nexport function removeTextOnly(value: string) {\r\n return value.replaceAll(/[^\\p{L}]/gu, \"\");\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 { removeDigits } from \"../../core/remove-digits\";\r\n\r\n/**\r\n * Formata um valor como moeda brasileira (BRL).\r\n *\r\n * - **string** — máscara de input: remove não dígitos, divide por 100 (centavos)\r\n * - **number** — valor já em reais\r\n *\r\n * @param value - Valor digitado ou numérico em reais\r\n * @returns Valor formatado (ex.: `R$ 1.234,56`) ou string vazia se ausente\r\n * @example\r\n * formatPriceBrl(\"123456\") // \"R$ 1.234,56\" (input)\r\n * formatPriceBrl(1234.56) // \"R$ 1.234,56\" (número)\r\n * formatPriceBrl(0) // \"R$ 0,00\"\r\n */\r\nexport function formatPriceBrl(value?: string | number | null): string {\r\n if (value === undefined || value === null) return \"\";\r\n\r\n if (typeof value === \"string\") {\r\n const digits = removeDigits(value);\r\n if (!digits) return \"\";\r\n const price = Number(digits) / 100;\r\n if (Number.isNaN(price)) return \"\";\r\n return price.toLocaleString(\"pt-BR\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n });\r\n }\r\n\r\n if (Number.isNaN(value)) return \"\";\r\n return value.toLocaleString(\"pt-BR\", { style: \"currency\", currency: \"BRL\" });\r\n}\r\n","import { removeDigits } from \"../../core/remove-digits\";\r\n\r\n/**\r\n * Formata máscara de item 170 (até 12 dígitos) no padrão `00.00.00.00.0.000`.\r\n * Remove caracteres não numéricos antes de formatar.\r\n * @param item - Valor com ou sem formatação\r\n * @returns Item formatado ou string vazia se ausente\r\n * @example\r\n * formatItem170(\"123456789012\") // \"12.34.56.78.9.012\"\r\n */\r\nexport function formatItem170(item?: string): string {\r\n if (!item) return \"\";\r\n const digits = removeDigits(item).slice(0, 12);\r\n if (!digits) return \"\";\r\n\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})\\.(\\d)(\\d{1,3})$/, \"$1.$2.$3\");\r\n}\r\n","import { removeDigits } from \"../../core/remove-digits\";\r\n\r\n/**\r\n * Formata máscara de item 150 (até 10 dígitos) no padrão `00.00.00.0.000`.\r\n * Remove caracteres não numéricos antes de formatar.\r\n * @param item - Valor com ou sem formatação\r\n * @returns Item formatado ou string vazia se ausente\r\n * @example\r\n * formatItem150(\"1234567890\") // \"12.34.56.7.890\"\r\n */\r\nexport function formatItem150(item?: string): string {\r\n if (!item) return \"\";\r\n const digits = removeDigits(item).slice(0, 10);\r\n if (!digits) return \"\";\r\n\r\n return digits\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\r\n .replace(/(\\d{2})\\.(\\d)(\\d{1,3})$/, \"$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 \"@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\">{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 { ptBR } from \"@mui/x-data-grid/locales\";\r\nimport { GridLocaleText } from \"@mui/x-data-grid\";\r\nimport { createTheme, SxProps, Theme } from \"@mui/material\";\r\n\r\nconst tableFont =\r\n \"var(--font-family, var(--font-poppins, Poppins, sans-serif))\";\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 \"*\": { fontFamily: `${tableFont} !important` },\r\n};\r\n\r\nexport const columnMenuSx: SxProps<Theme> = {\r\n \"*\": { fontFamily: `${tableFont} !important` },\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 \"*\": {\r\n fontSize: \"14px !important\",\r\n fontFamily: `${tableFont} !important`,\r\n },\r\n \"& .MuiDataGrid-filterFormColumnInput\": { width: \"230px\" },\r\n \"& .MuiDataGrid-filterFormOperatorInput\": { width: \"230px\" },\r\n};\r\n\r\nexport const filterTheme = createTheme({\r\n typography: { fontFamily: tableFont },\r\n components: {\r\n MuiList: {\r\n styleOverrides: {\r\n root: { fontFamily: tableFont },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n root: { fontFamily: tableFont },\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const paginationSx: SxProps<Theme> = {\r\n \"& .MuiTablePagination-root\": {\r\n fontSize: \"12px !important\",\r\n fontFamily: `${tableFont} !important`,\r\n },\r\n \"& .MuiTablePagination-selectLabel\": {\r\n fontSize: \"12px !important\",\r\n fontFamily: `${tableFont} !important`,\r\n },\r\n \"& .MuiTablePagination-displayedRows\": {\r\n fontSize: \"12px !important\",\r\n fontFamily: `${tableFont} !important`,\r\n },\r\n \"& .MuiTablePagination-select\": {\r\n fontSize: \"12px !important\",\r\n fontFamily: `${tableFont} !important`,\r\n },\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 fontFamily: `${tableFont} !important`,\r\n \"& *\": {\r\n fontFamily: `${tableFont} !important`,\r\n },\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 filterTheme,\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, ThemeProvider } 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 (\r\n <ThemeProvider theme={filterTheme}>\r\n <GridFilterPanel {...props} sx={filterSx} />\r\n </ThemeProvider>\r\n );\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","import type { CSSProperties } from \"react\";\r\n\r\nexport type CssVarName = `--${string}`;\r\n\r\nexport function withCssVar<T extends CSSProperties | undefined>(\r\n style: T,\r\n name: CssVarName,\r\n value?: string | null,\r\n): T {\r\n if (value == null || value === \"\") return style;\r\n return { ...style, [name]: value };\r\n}\r\n","import { memo } from \"react\";\r\nimport { styled, SxProps, TextField, Theme } from \"@mui/material\";\r\n\r\nexport const DEFAULT_ACCENT = \"var(--primary-color)\";\r\n\r\nconst accent = \"var(--primary-color)\";\r\nconst errorColor = \"#D32F2F\";\r\nconst focusLabel = { color: accent };\r\nconst errorLabel = { color: errorColor };\r\nconst borderAccent = { borderColor: accent };\r\nconst borderError = { borderColor: errorColor };\r\nconst underlineAccent = { borderBottomColor: accent };\r\nconst underlineError = { borderBottomColor: errorColor };\r\nconst disabledText = { color: \"#9E9E9E\", cursor: \"not-allowed\" };\r\nconst disabledBorder = { borderColor: \"#9E9E9E\", cursor: \"not-allowed\" };\r\nconst input = {\r\n color: \"#333\",\r\n fontSize: \"13px !important\",\r\n fontFamily: \"var(--font-poppins) !important\",\r\n};\r\n\r\nconst InputTextField = styled(TextField)({\r\n fontFamily: \"var(--font-poppins) !important\",\r\n \"& input\": input,\r\n \"& label\": input,\r\n \"& label.Mui-focused\": focusLabel,\r\n \"& label.Mui-error\": errorLabel,\r\n \"& .MuiInput-underline:after\": underlineAccent,\r\n \"& .MuiInput-underline.Mui-error:after\": underlineError,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": borderAccent,\r\n \"&:hover fieldset\": borderAccent,\r\n \"&.Mui-disabled fieldset\": disabledBorder,\r\n \"&.Mui-focused fieldset\": borderAccent,\r\n \"&.Mui-error fieldset\": borderError,\r\n \"&.Mui-error:hover fieldset\": borderError,\r\n \"&.Mui-error.Mui-focused fieldset\": borderError,\r\n },\r\n \"& .MuiFilledInput-root\": {\r\n backgroundColor: \"#F9FAFB\",\r\n \"&:after\": underlineAccent,\r\n \"&:before\": underlineAccent,\r\n \"&:hover:before\": underlineAccent,\r\n \"&.Mui-error:after\": underlineError,\r\n \"&.Mui-error:before\": underlineError,\r\n \"&:hover\": { backgroundColor: \"#F5F5F5\" },\r\n \"&.Mui-error:hover:before\": underlineError,\r\n fontFamily: \"var(--font-poppins) !important\",\r\n \"&.Mui-disabled\": { ...disabledText, backgroundColor: \"#F9FAFB\" },\r\n },\r\n \"& .MuiInputBase-input\": { ...input, \"&.Mui-disabled\": disabledText },\r\n \"& .MuiFormHelperText-root\": {\r\n fontSize: \"11px\",\r\n marginLeft: 2,\r\n fontFamily: \"var(--font-poppins) !important\",\r\n },\r\n \"& .MuiFormHelperText-root.Mui-error\": { color: errorColor },\r\n \"& .Mui-disabled\": disabledText,\r\n});\r\n\r\nexport default memo(InputTextField);\r\n\r\nexport const xsInputFilled: SxProps<Theme> = {\r\n \"& .MuiFilledInput-root\": {\r\n bgcolor: \"#F3F4F6\",\r\n borderStartEndRadius: \"20px\",\r\n borderStartStartRadius: \"20px\",\r\n },\r\n};\r\n","import {\r\n formatCpfCnpj,\r\n formatItem150,\r\n formatItem170,\r\n formatPhoneBr,\r\n formatPriceBrl,\r\n} from \"@/functions\";\r\nimport { useCallback } from \"react\";\r\nimport { removeDigits } from \"@/core\";\r\nimport { InputMaskerArgs, InputType } from \"../utils/interface\";\r\nimport { removeNonDigits, removeTextOnly } from \"@/core/remove-digits\";\r\n\r\nexport function useInputMasker({ type, onChange }: InputMaskerArgs) {\r\n /**\r\n * Formata o valor de entrada de acordo com o tipo definido (ex.: CPF, telefone, moeda).\r\n *\r\n * @param {string} value - O valor a ser formatado.\r\n * @returns {string} O valor formatado.\r\n */\r\n const formatValue = useCallback(\r\n (v: InputType): string => {\r\n if (!v) return \"\";\r\n switch (type) {\r\n case \"cpf-cnpj\":\r\n return formatCpfCnpj(v);\r\n case \"numeric\":\r\n return removeDigits(v);\r\n case \"tel\":\r\n return formatPhoneBr(v);\r\n case \"price\":\r\n return formatPriceBrl(v);\r\n case \"text-only\":\r\n return removeTextOnly(v);\r\n case \"text-no-number\":\r\n return removeNonDigits(v);\r\n case \"item-170\":\r\n return formatItem170(v);\r\n case \"item-150\":\r\n return formatItem150(v);\r\n default:\r\n return v;\r\n }\r\n },\r\n [type],\r\n );\r\n\r\n /**\r\n * Manipula a alteração do valor de entrada, aplicando a formatação correta.\r\n *\r\n * @param {React.ChangeEvent<HTMLInputElement>} e - Evento de alteração da entrada.\r\n */\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n\r\n onChange?.({\r\n ...e,\r\n target: { ...e.target, value: formatValue(newValue) },\r\n });\r\n };\r\n\r\n return { handleChange };\r\n}\r\n","import { DEFAULT_ACCENT } from \"../utils/css\";\r\nimport { IconButton, InputAdornment } from \"@mui/material\";\r\nimport { MdVisibility, MdVisibilityOff } from \"react-icons/md\";\r\nimport type { InputProps, PasswordToggleArgs } from \"../utils/interface\";\r\n\r\nfunction withPasswordToggle({\r\n showPwd,\r\n canToggle,\r\n slotProps,\r\n setShowPwd,\r\n color = DEFAULT_ACCENT,\r\n}: PasswordToggleArgs): InputProps[\"slotProps\"] {\r\n if (!canToggle) return slotProps;\r\n\r\n const Icon = showPwd ? MdVisibilityOff : MdVisibility;\r\n\r\n return {\r\n ...slotProps,\r\n input: {\r\n ...slotProps?.input,\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n edge=\"end\"\r\n size=\"small\"\r\n sx={{ color }}\r\n onClick={() => setShowPwd((prev) => !prev)}\r\n >\r\n <Icon size={20} />\r\n </IconButton>\r\n </InputAdornment>\r\n ),\r\n },\r\n };\r\n}\r\n\r\nexport function buildSlotProps(\r\n args: PasswordToggleArgs,\r\n): InputProps[\"slotProps\"] {\r\n return withPasswordToggle(args);\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"@/functions\";\r\nimport { withCssVar } from \"@/core\";\r\nimport InputTextField from \"./utils/css\";\r\nimport { useMemo, useState } from \"react\";\r\nimport { useInputMasker } from \"./components/maskers\";\r\nimport { buildSlotProps } from \"./components/slot-props\";\r\nimport { InputProps, InputType } from \"./utils/interface\";\r\n\r\nconst CUSTOM_INPUT_TYPES = new Set<InputType>([\r\n \"cpf-cnpj\",\r\n \"numeric\",\r\n \"price\",\r\n \"item-170\",\r\n \"item-150\",\r\n \"text-only\",\r\n \"text-no-number\",\r\n]);\r\n\r\nfunction resolveHtmlInputType(\r\n type: InputProps[\"type\"],\r\n): NonNullable<InputProps[\"type\"]> {\r\n if (!type || CUSTOM_INPUT_TYPES.has(type)) return \"text\";\r\n return type;\r\n}\r\n\r\n/**\r\n * Campo de texto baseado no MUI TextField, com máscaras e tipos customizados do projeto.\r\n */\r\nconst Input = ({\r\n color,\r\n onChange,\r\n isPassword,\r\n type = \"text\",\r\n size = \"small\",\r\n ...rest\r\n}: Readonly<InputProps>) => {\r\n const [showPwd, setShowPwd] = useState(false);\r\n const isPwd = type === \"password\";\r\n const canToggle = isPwd && isPassword;\r\n const htmlType = resolveHtmlInputType(type);\r\n const inputType = canToggle && showPwd ? \"text\" : htmlType;\r\n\r\n const style = useMemo(\r\n () => withCssVar(rest.style, \"--primary-color\", color),\r\n [color, rest.style],\r\n );\r\n\r\n const slotProps = useMemo(\r\n () =>\r\n buildSlotProps({\r\n color,\r\n showPwd,\r\n canToggle,\r\n setShowPwd,\r\n slotProps: rest.slotProps,\r\n }),\r\n [canToggle, color, showPwd, rest.slotProps],\r\n );\r\n\r\n const { handleChange } = useInputMasker({ type, onChange });\r\n\r\n return (\r\n <InputTextField\r\n {...rest}\r\n size={size}\r\n style={style}\r\n type={inputType}\r\n slotProps={slotProps}\r\n onChange={handleChange}\r\n className={cn(\"select-none\", rest.className)}\r\n />\r\n );\r\n};\r\n\r\nexport default Input;\r\n","const optionText = {\r\n fontSize: \"13px !important\",\r\n fontFamily: \"var(--font-poppins) !important\",\r\n};\r\n\r\nexport const selectMui = {\r\n \"& .MuiAutocomplete-option\": {\r\n padding: \"8px 12px\",\r\n ...optionText,\r\n lineHeight: \"25px !important\",\r\n },\r\n \"& .MuiAutocomplete-noOptions\": optionText,\r\n \"& .MuiAutocomplete-listbox\": { padding: \"5px\" },\r\n};\r\n","export const locale = {\r\n noOptionsText: \"Nenhum resultado encontrado\",\r\n};\r\n\r\nconst inputSelectConstants = `\r\nAutocomplete do MUI com o \\`Input\\` do projeto como campo de busca e seleção.\r\n\r\n**Importação:**\r\n\\`\\`\\`tsx\r\nimport { InputSelect } from \"@grazziotin/react-components-next/ui\";\r\n\\`\\`\\`\r\n\r\n**Uso básico:**\r\n\\`\\`\\`tsx\r\nconst options = [\r\n { id: 1, label: \"Opção 1\" },\r\n { id: 2, label: \"Opção 2\" },\r\n];\r\n\r\n<InputSelect\r\n options={options}\r\n optionLabel={(option) => option.label}\r\n input={{ label: \"Selecione\", color: \"#00b2a6\" }}\r\n onChange={(_event, value) => console.log(value)}\r\n/>\r\n\\`\\`\\`\r\n\r\n**Seleção múltipla:** passe \\`multiple\\` e trate o valor como array.\r\n\r\n**Campo interno:** props do \\`Input\\` (label, color, placeholder, error, etc.) vão em \\`input\\`.\r\n\r\n**Busca sem resultados:** quando nenhuma opção corresponde ao texto digitado, exibe \\`${locale.noOptionsText}\\`.\r\n\r\n**Texto personalizado:** use a prop \\`noOptionsText\\` para alterar a mensagem exibida quando não houver opções.\r\n\\`\\`\\`tsx\r\n<InputSelect\r\n options={options}\r\n optionLabel={(option) => option.label}\r\n noOptionsText=\"Nenhuma cidade encontrada\"\r\n input={{ label: \"Cidade\", color: \"#00b2a6\" }}\r\n/>\r\n\\`\\`\\`\r\n`;\r\n\r\nexport default inputSelectConstants;\r\n","\"use client\";\r\n\r\nimport Input from \"../input\";\r\nimport Autocomplete, {\r\n type AutocompleteValue,\r\n type AutocompleteChangeReason,\r\n type AutocompleteChangeDetails,\r\n} from \"@mui/material/Autocomplete\";\r\nimport { selectMui } from \"./utils/css\";\r\nimport { locale } from \"./utils/constants\";\r\nimport type { InputSelectProps } from \"./utils/interface\";\r\n\r\n/**\r\n * Componente InputSelect que encapsula o Autocomplete do Material-UI com o {@link Input} do projeto.\r\n *\r\n * Permite a seleção de uma ou mais opções com base nos parâmetros fornecidos.\r\n * É configurável via props do Autocomplete do MUI, com campo de entrada customizável\r\n * através de `input` (mesmas props do {@link Input}: cor, label, máscaras, etc.).\r\n *\r\n * @template T - Tipo dos itens de opções exibidos no seletor.\r\n * @template M - Define se o seletor permite múltiplas seleções. Padrão: `false` (seletor único).\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link InputSelectProps}.\r\n * @param props.multiple - Se `true`, permite selecionar várias opções. Padrão: `false`.\r\n * @param props.optionLabel - Função que recebe uma opção e retorna o rótulo exibido.\r\n * @param props.onChange - Callback ao alterar o valor (evento, valor, motivo e detalhes).\r\n * @param props.input - Props repassadas ao {@link Input} interno (label, color, type, etc.).\r\n * @param props.options - Lista de opções disponíveis no seletor.\r\n * @param props.rest - Demais props do Autocomplete do MUI (exceto `renderInput` e `onChange`).\r\n *\r\n * @returns Autocomplete com campo de entrada personalizado.\r\n *\r\n * @example\r\n * ```tsx\r\n * const options = [\r\n * { id: 1, label: \"Opção 1\" },\r\n * { id: 2, label: \"Opção 2\" },\r\n * ];\r\n *\r\n * <InputSelect\r\n * options={options}\r\n * optionLabel={(option) => option.label}\r\n * input={{ label: \"Selecione\", color: \"#00b2a6\" }}\r\n * onChange={(_event, value) => console.log(\"Valor selecionado:\", value)}\r\n * multiple\r\n * />\r\n * ```\r\n */\r\nfunction InputSelect<T, M extends boolean = false>({\r\n input,\r\n multiple,\r\n onChange,\r\n optionLabel,\r\n noOptionsText = locale.noOptionsText,\r\n ...rest\r\n}: Readonly<InputSelectProps<T, M>>) {\r\n const handleChange = (\r\n event: React.SyntheticEvent,\r\n value: AutocompleteValue<T, M, false, false>,\r\n reason: AutocompleteChangeReason,\r\n details?: AutocompleteChangeDetails<T>,\r\n ) => {\r\n onChange?.(event, value, reason, details);\r\n };\r\n\r\n return (\r\n <Autocomplete\r\n {...rest}\r\n size=\"small\"\r\n multiple={multiple}\r\n onChange={handleChange}\r\n noOptionsText={noOptionsText}\r\n slotProps={{ paper: { sx: selectMui } }}\r\n getOptionLabel={(option) =>\r\n typeof option === \"string\" ? \"\" : optionLabel(option)\r\n }\r\n isOptionEqualToValue={(option, value) =>\r\n JSON.stringify(option) === JSON.stringify(value)\r\n }\r\n renderInput={(params) => (\r\n <Input {...params} {...input} size={input?.size ?? \"small\"} />\r\n )}\r\n />\r\n );\r\n}\r\n\r\nexport default InputSelect;\r\n","import type { ReactElement } from \"react\";\r\nimport { FaFilter } from \"react-icons/fa\";\r\nimport { ActionIcon, Tooltip } from \"@mantine/core\";\r\nimport type { FilterCardProps } from \"../utils/interface\";\r\n\r\n/**\r\n * Card de título com botão para abrir o drawer de filtros.\r\n *\r\n * Exibe uma faixa colorida à esquerda, o título da página/relatório e, quando\r\n * `renderFilter` é verdadeiro, um ícone de filtro com tooltip \"Ver filtros\".\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link FilterCardProps}.\r\n * @param props.title - Título exibido no card.\r\n * @param props.renderFilter - Indica se o botão de filtros deve ser exibido.\r\n * @param props.setOpen - Controla a abertura do drawer de filtros.\r\n */\r\nconst FilterCard = ({\r\n title,\r\n setOpen,\r\n renderFilter,\r\n}: FilterCardProps): ReactElement => {\r\n return (\r\n <div className=\"h-15 flex items-center w-full bg-white mb-2 rounded-md shadow-[0_2px_6px_-1px_rgba(0,0,0,.16),0_6px_18px_-1px_rgba(0,0,0,.06)]\">\r\n <div className=\"h-full w-2 bg-(--primary-color) rounded-tl-md rounded-bl-md\" />\r\n <div className=\"w-full flex justify-between items-center p-3\">\r\n <h1 className=\"font-medium text-lg whitespace-nowrap text-ellipsis overflow-hidden ml-1 text-black/80\">\r\n {title}\r\n </h1>\r\n <div className=\"flex items-center space-x-4\">\r\n {renderFilter && (\r\n <Tooltip\r\n withArrow\r\n arrowSize={4}\r\n color=\"#00b2a6\"\r\n arrowOffset={20}\r\n label=\"Ver filtros\"\r\n className=\"text-xs!\"\r\n transitionProps={{ transition: \"pop\", duration: 300 }}\r\n >\r\n <span className=\"flex items-center\">\r\n <ActionIcon\r\n size={40}\r\n radius=\"md\"\r\n aria-label=\"Ver filtros\"\r\n color=\"var(--primary-color)\"\r\n onClick={() => setOpen(true)}\r\n >\r\n <FaFilter className=\"h-5 w-5 text-white\" />\r\n </ActionIcon>\r\n </span>\r\n </Tooltip>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default FilterCard;\r\n","import type {\r\n FilterDrawerField,\r\n FilterInputProps,\r\n FilterInputSelectField,\r\n FilterInputSelectProps,\r\n} from \"./interface\";\r\nimport type {\r\n InputSelectGridProps,\r\n InputSelectProps,\r\n} from \"../../input-select/utils/interface\";\r\n\r\n/** Ordem padrão dos campos quando `order` não é informado. */\r\nexport const FILTER_DEFAULT_ORDER = 99;\r\n\r\n/** Estilo do papel do drawer de filtros. */\r\nexport const FILTER_DRAWER_PAPER_SX = {\r\n [\"& .MuiDrawer-paper\"]: { borderRadius: \"0px 0px 20px 20px\" },\r\n};\r\n\r\n/**\r\n * Indica se há campos de filtro para exibir o botão no card.\r\n * @param inputs - Lista de campos Input.\r\n * @param inputSelect - Lista de campos InputSelect.\r\n */\r\nexport function hasFilterFields(\r\n inputs?: FilterInputProps[],\r\n inputSelect?: FilterInputSelectProps,\r\n): boolean {\r\n return (inputs?.length ?? 0) > 0 || (inputSelect?.length ?? 0) > 0;\r\n}\r\n\r\n/**\r\n * Verifica se o campo do drawer é um InputSelect.\r\n * @param field - Campo do drawer.\r\n */\r\nexport function isInputSelect(\r\n field: FilterDrawerField,\r\n): field is FilterInputSelectField<false> | FilterInputSelectField<true> {\r\n return \"options\" in field;\r\n}\r\n\r\n/**\r\n * Define um campo {@link InputSelect} no filter preservando a inferência de `T`.\r\n * Permite montar listas com tipos de opção diferentes sem union nem `as`.\r\n *\r\n * @example\r\n * filterInputSelect({\r\n * options: networks,\r\n * optionLabel: (v) => v.desRede,\r\n * input: { label: \"Rede\" },\r\n * order: 1,\r\n * })\r\n */\r\nexport function filterInputSelect<T extends object, M extends boolean = false>(\r\n props: InputSelectProps<T, M> & InputSelectGridProps,\r\n): M extends true\r\n ? FilterInputSelectField<true>\r\n : FilterInputSelectField<false> {\r\n return props as unknown as M extends true\r\n ? FilterInputSelectField<true>\r\n : FilterInputSelectField<false>;\r\n}\r\n\r\n/**\r\n * Ordena os campos do drawer por `order` (crescente).\r\n * @param fields - Campos a ordenar.\r\n */\r\nexport function sortFilterFields(\r\n fields: FilterDrawerField[],\r\n): FilterDrawerField[] {\r\n return [...fields].sort(\r\n (a, b) =>\r\n (a.order ?? FILTER_DEFAULT_ORDER) - (b.order ?? FILTER_DEFAULT_ORDER),\r\n );\r\n}\r\n\r\n/**\r\n * Mescla inputs e inputSelect e ordena por `order`.\r\n * @param inputs - Campos Input.\r\n * @param inputSelect - Campos InputSelect.\r\n */\r\nexport function mergeFilterFields(\r\n inputs: FilterDrawerField[],\r\n inputSelect: FilterDrawerField[],\r\n): FilterDrawerField[] {\r\n return sortFilterFields([...inputs, ...inputSelect]);\r\n}\r\n\r\n/**\r\n * Retorna o número de colunas do grid conforme o breakpoint.\r\n * @param isMobile - Largura até 640px.\r\n * @param isTablet - Largura até 1120px.\r\n */\r\nexport function getFilterGridColumns(\r\n isMobile: boolean,\r\n isTablet: boolean,\r\n): number {\r\n if (isMobile) return 1;\r\n if (isTablet) return 3;\r\n return 7;\r\n}\r\n\r\nconst filterConstants = `\r\nFiltro com card de título e drawer para busca com \\`Input\\` e \\`InputSelect\\`.\r\n\r\n**Importação:**\r\n\\`\\`\\`tsx\r\nimport { Filter, filterInputSelect } from \"@grazziotin/react-components-next/ui\";\r\n\\`\\`\\`\r\n\r\n**Uso básico:**\r\n\\`\\`\\`tsx\r\n<Filter\r\n title=\"Relatório\"\r\n inputs={[{ label: \"Nome\", name: \"nome\", order: 1, xs: 2 }]}\r\n inputSelect={[\r\n filterInputSelect({\r\n options: cidades,\r\n optionLabel: (c) => c.nome,\r\n input: { label: \"Cidade\" },\r\n order: 2,\r\n xs: 2,\r\n }),\r\n filterInputSelect({\r\n options: redes,\r\n optionLabel: (r) => r.desRede,\r\n input: { label: \"Rede\" },\r\n order: 3,\r\n xs: 2,\r\n }),\r\n ]}\r\n onClear={() => reset()}\r\n onSubmit={(e) => handleFilter(e)}\r\n/>\r\n\\`\\`\\`\r\n\r\nUse \\`filterInputSelect\\` quando houver vários selects com tipos de opção diferentes — evita union manual e \\`as\\`.\r\n`;\r\n\r\nexport default filterConstants;\r\n","import {\r\n isInputSelect,\r\n mergeFilterFields,\r\n getFilterGridColumns,\r\n FILTER_DRAWER_PAPER_SX,\r\n} from \"../utils/constants\";\r\nimport type {\r\n FilterDrawerField,\r\n FilterDrawerProps,\r\n FilterInputSelectField,\r\n} from \"../utils/interface\";\r\nimport Input from \"../../input\";\r\nimport { Button } from \"@mantine/core\";\r\nimport InputSelect from \"../../input-select\";\r\nimport { Drawer, Grid, useMediaQuery } from \"@mui/material\";\r\nimport type { ReactElement, SubmitEventHandler } from \"react\";\r\n\r\n/**\r\n * Drawer com campos de filtro ({@link Input} e {@link InputSelect}).\r\n *\r\n * Mescla `inputs` e `inputSelect`, ordena por `order` e renderiza em grid\r\n * responsivo (1 coluna no mobile, 3 no tablet, 7 no desktop).\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link FilterDrawerProps}.\r\n * @param props.open - Drawer aberto.\r\n * @param props.setOpen - Controla a abertura do drawer.\r\n * @param props.inputs - Campos {@link Input}.\r\n * @param props.inputSelect - Campos {@link InputSelect}.\r\n * @param props.onClear - Callback ao limpar filtros.\r\n * @param props.onSubmit - Callback ao submeter o formulário de filtros.\r\n */\r\nconst FilterDrawer = ({\r\n open,\r\n setOpen,\r\n onClear,\r\n onSubmit,\r\n inputs = [],\r\n inputSelect = [],\r\n}: FilterDrawerProps): ReactElement => {\r\n const m640 = useMediaQuery(\"(max-width:640px)\");\r\n const m1120 = useMediaQuery(\"(max-width:1120px)\");\r\n const allInputs = mergeFilterFields(inputs, inputSelect);\r\n\r\n const renderField = (field: FilterDrawerField, index: number) => {\r\n if (isInputSelect(field)) {\r\n if (field.multiple) {\r\n return (\r\n <Grid size={field.xs ?? 1} key={`inputSelect-${index}`}>\r\n <InputSelect<unknown, true>\r\n {...field}\r\n id={`inputSM${index}`}\r\n fullWidth\r\n />\r\n </Grid>\r\n );\r\n }\r\n\r\n return (\r\n <Grid size={field.xs ?? 1} key={`inputSelect-${index}`}>\r\n <InputSelect<unknown, false>\r\n {...(field as FilterInputSelectField<false>)}\r\n id={`inputSM${index}`}\r\n fullWidth\r\n />\r\n </Grid>\r\n );\r\n }\r\n\r\n return (\r\n <Grid size={field.xs ?? 1} key={`input-${index}`}>\r\n <Input {...field} fullWidth />\r\n </Grid>\r\n );\r\n };\r\n\r\n const handleSubmit: SubmitEventHandler<HTMLFormElement> = (event) => {\r\n event.preventDefault();\r\n if (!onSubmit) return;\r\n onSubmit(event);\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <Drawer\r\n open={open}\r\n anchor=\"top\"\r\n onClose={() => setOpen(false)}\r\n sx={FILTER_DRAWER_PAPER_SX}\r\n >\r\n <form\r\n onSubmit={handleSubmit}\r\n className=\"flex w-full select-none flex-col py-4 pl-5\"\r\n >\r\n <p className=\"text-lg font-medium text-system-900\">Filtros</p>\r\n <p className=\"pb-5 pt-1 text-sm text-black/80\">\r\n Para que possamos apresentar dados específicos, por favor, preencha os\r\n campos abaixo.\r\n </p>\r\n <Grid\r\n container\r\n rowSpacing={2}\r\n className=\"pr-5\"\r\n columnSpacing={1}\r\n columns={getFilterGridColumns(Boolean(m640), Boolean(m1120))}\r\n >\r\n {allInputs.map((field, index) => renderField(field, index))}\r\n </Grid>\r\n <div className=\"flex justify-end space-x-4 pr-4 pt-4\">\r\n {onClear && (\r\n <Button\r\n radius=\"sm\"\r\n color=\"#253E56\"\r\n variant=\"outline\"\r\n onClick={onClear}\r\n size=\"xs\"\r\n >\r\n LIMPAR FILTROS\r\n </Button>\r\n )}\r\n {onSubmit && (\r\n <Button\r\n size=\"xs\"\r\n radius=\"sm\"\r\n type=\"submit\"\r\n variant=\"filled\"\r\n color=\"var(--primary-color)\"\r\n >\r\n PESQUISAR\r\n </Button>\r\n )}\r\n </div>\r\n </form>\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default FilterDrawer;\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport type { ReactElement } from \"react\";\r\nimport FilterCard from \"./components/card\";\r\nimport FilterDrawer from \"./components/filter\";\r\nimport { hasFilterFields } from \"./utils/constants\";\r\nimport type { FilterProps } from \"./utils/interface\";\r\n\r\n/**\r\n * Filtro com card de título e drawer contendo {@link Input} e {@link InputSelect}.\r\n *\r\n * O card exibe o título da página/relatório e um botão para abrir o drawer quando\r\n * há campos em `inputs` ou `inputSelect`. O drawer renderiza os campos em grid\r\n * responsivo, com ações de limpar e pesquisar.\r\n *\r\n * @param props - Propriedades do componente. Detalhes em {@link FilterProps}.\r\n * @param props.title - Título exibido no card.\r\n * @param props.inputs - Campos de texto/máscara ({@link Input}).\r\n * @param props.inputSelect - Campos de seleção ({@link InputSelect}).\r\n * @param props.onClear - Callback ao limpar filtros.\r\n * @param props.onSubmit - Callback ao pesquisar.\r\n * @returns Elemento React com card e drawer de filtros.\r\n */\r\nconst Filter = ({\r\n title,\r\n inputs,\r\n onClear,\r\n onSubmit,\r\n inputSelect,\r\n}: FilterProps): ReactElement => {\r\n const [open, setOpen] = useState(false);\r\n const hasFields = hasFilterFields(inputs, inputSelect);\r\n\r\n return (\r\n <div>\r\n <FilterCard title={title} setOpen={setOpen} renderFilter={hasFields} />\r\n <FilterDrawer\r\n open={open}\r\n inputs={inputs}\r\n setOpen={setOpen}\r\n onClear={onClear}\r\n onSubmit={onSubmit}\r\n inputSelect={inputSelect}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default Filter;\r\n","import type {\r\n SayFeedbackType,\r\n SayNotifyOptions,\r\n SpeechPonyfill,\r\n} from \"./interface\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport const DEFAULT_SAY_RATE = 1.4;\r\nexport const DEFAULT_SAY_VOLUME = 1;\r\nexport const DEFAULT_SAY_PITCH = 0.8;\r\nexport const DEFAULT_SAY_VIBRATE_DURATION = 500;\r\nexport const DEFAULT_SAY_VOICE = \"Google português do Brasil\";\r\nexport const SPEECH_APIS = [\"speechSynthesis\", \"SpeechSynthesisUtterance\"];\r\n\r\nexport function hasSpeechSupport(): boolean {\r\n return SPEECH_APIS.every((api) => api in globalThis);\r\n}\r\n\r\nexport function voicesAreEqual(\r\n current: SpeechSynthesisVoice[],\r\n next: SpeechSynthesisVoice[],\r\n): boolean {\r\n if (current.length !== next.length) return false;\r\n return current.every(\r\n (v, i) => v.name === next[i]?.name && v.lang === next[i]?.lang,\r\n );\r\n}\r\n\r\nexport function getSpeechSupport(): SpeechPonyfill | null {\r\n if (!hasSpeechSupport()) return null;\r\n return {\r\n speechSynthesis: globalThis.speechSynthesis,\r\n SpeechSynthesisUtterance: globalThis.SpeechSynthesisUtterance,\r\n };\r\n}\r\n\r\nexport function defaultShouldVibrate(type: SayFeedbackType): boolean {\r\n return type === \"warning\";\r\n}\r\n\r\n/** Exibe toast integrado do {@link Say}. */\r\nexport function showSayNotify(\r\n text: string,\r\n { type = \"success\", autoClose = 4500 }: SayNotifyOptions,\r\n): void {\r\n toast(text, { type, autoClose });\r\n}\r\n\r\nconst sayConstants = `\r\nSintetiza texto em fala via Web Speech API (\\`react-say\\`), com toast integrado (\\`react-toastify\\`) e vibração.\r\n\r\n**Importação:**\r\n\\`\\`\\`tsx\r\nimport { Say, useSay } from \"@grazziotin/react-components-next/accessibility\";\r\n\\`\\`\\`\r\n\r\n**Uso básico:**\r\n\\`\\`\\`tsx\r\nconst { handleSay, isSpeaking, textSpeaking, setIsSpeaking } = useSay();\r\n\r\n<>\r\n <Say\r\n isSpeaking={isSpeaking}\r\n text={textSpeaking}\r\n setIsSpeaking={setIsSpeaking}\r\n />\r\n <button type=\"button\" onClick={() => handleSay(\"Operação concluída\", { type: \"success\" })}>\r\n Falar\r\n </button>\r\n</>\r\nonSuccess: (r) => handleSay(r.status, { type: \"success\" })\r\n\\`\\`\\`\r\n\r\nMonte \\`<Say />\\` uma vez no layout. Toast e CSS já vêm embutidos.\r\nUse \\`notify: false\\` para falar sem toast: \\`handleSay(texto, { type: \"default\", notify: false })\\`.\r\n`;\r\nexport default sayConstants;\r\n","import {\r\n voicesAreEqual,\r\n getSpeechSupport,\r\n hasSpeechSupport,\r\n} from \"./utils/constants\";\r\n\r\nimport { useEffect, useMemo, useState } from \"react\";\r\n\r\nexport function useSpeechPonyfill() {\r\n const ponyfill = useMemo(() => getSpeechSupport(), []);\r\n const [voices, setVoices] = useState<SpeechSynthesisVoice[]>([]);\r\n\r\n useEffect(() => {\r\n if (!hasSpeechSupport()) return;\r\n const synthesis = globalThis.speechSynthesis;\r\n\r\n const updateVoices = () => {\r\n setVoices((current) => {\r\n const next = synthesis.getVoices();\r\n return voicesAreEqual(current, next) ? current : next;\r\n });\r\n };\r\n\r\n synthesis.onvoiceschanged = updateVoices;\r\n updateVoices();\r\n\r\n return () => {\r\n synthesis.onvoiceschanged = null;\r\n };\r\n }, []);\r\n\r\n return { voices, ponyfill };\r\n}\r\n","\"use client\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\n\r\nimport {\r\n DEFAULT_SAY_PITCH,\r\n DEFAULT_SAY_RATE,\r\n DEFAULT_SAY_VOICE,\r\n DEFAULT_SAY_VOLUME,\r\n} from \"./utils/constants\";\r\nimport SayEngine from \"react-say\";\r\nimport React, { useCallback } from \"react\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport type { SayProps } from \"./utils/interface\";\r\nimport { useSpeechPonyfill } from \"./use-speech-ponyfill\";\r\n\r\n/**\r\n * Sintetiza texto em fala via Web Speech API (`react-say`).\r\n * Inclui toast integrado para notificações do {@link useSay}.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { handleSay, isSpeaking, textSpeaking, setIsSpeaking } = useSay();\r\n *\r\n * return (\r\n * <>\r\n * <Say\r\n * isSpeaking={isSpeaking}\r\n * text={textSpeaking}\r\n * setIsSpeaking={setIsSpeaking}\r\n * />\r\n * <button type=\"button\" onClick={() => handleSay(\"Pronto\", { type: \"success\" })}>\r\n * Falar\r\n * </button>\r\n * </>\r\n * );\r\n * ```\r\n */\r\nfunction Say({\r\n text,\r\n onEnd,\r\n onStart,\r\n isSpeaking,\r\n setIsSpeaking,\r\n rate = DEFAULT_SAY_RATE,\r\n voice = DEFAULT_SAY_VOICE,\r\n pitch = DEFAULT_SAY_PITCH,\r\n volume = DEFAULT_SAY_VOLUME,\r\n}: Readonly<SayProps>): React.ReactElement {\r\n const { voices, ponyfill } = useSpeechPonyfill();\r\n const canSpeak = isSpeaking && voices.length > 0 && ponyfill;\r\n\r\n const handleEnd = useCallback(() => {\r\n setIsSpeaking(false);\r\n onEnd?.();\r\n }, [setIsSpeaking, onEnd]);\r\n\r\n return (\r\n <>\r\n <ToastContainer\r\n limit={3}\r\n draggable\r\n newestOnTop\r\n pauseOnHover\r\n closeOnClick\r\n autoClose={4500}\r\n pauseOnFocusLoss\r\n closeButton={false}\r\n position=\"top-right\"\r\n style={{ fontSize: \"14px\" }}\r\n />\r\n {canSpeak && (\r\n <SayEngine\r\n text={text}\r\n rate={rate}\r\n pitch={pitch}\r\n volume={volume}\r\n onEnd={handleEnd}\r\n onStart={onStart}\r\n ponyfill={ponyfill}\r\n voice={voices.find((v) => v.name === voice)}\r\n />\r\n )}\r\n </>\r\n );\r\n}\r\nexport default Say;\r\n","import {\r\n showSayNotify,\r\n defaultShouldVibrate,\r\n DEFAULT_SAY_VIBRATE_DURATION,\r\n} from \"./utils/constants\";\r\nimport type {\r\n SayCallOptions,\r\n UseSayReturn,\r\n UseSayOptions,\r\n} from \"./utils/interface\";\r\nimport { nvl } from \"@/functions\";\r\nimport { useCallback, useState } from \"react\";\r\n\r\n/**\r\n * Hook para disparar fala, toast integrado e vibração.\r\n *\r\n * @example\r\n * ```tsx\r\n * const { handleSay, isSpeaking, textSpeaking, setIsSpeaking } = useSay();\r\n *\r\n * <Say\r\n * isSpeaking={isSpeaking}\r\n * text={textSpeaking}\r\n * setIsSpeaking={setIsSpeaking}\r\n * />\r\n *\r\n * handleSay(\"Operação concluída\", { type: \"success\" });\r\n * handleSay(\"Atenção\", { type: \"warning\" });\r\n * handleSay(\"Apenas fala\", { type: \"default\", notify: false });\r\n * ```\r\n */\r\nexport function useSay({\r\n notifyAutoClose = 4500,\r\n vibrateDuration = DEFAULT_SAY_VIBRATE_DURATION,\r\n shouldVibrate = defaultShouldVibrate,\r\n}: UseSayOptions = {}): UseSayReturn {\r\n const [isSpeaking, setIsSpeaking] = useState(false);\r\n const [textSpeaking, setTextSpeaking] = useState(\"\");\r\n\r\n const handleSay = useCallback(\r\n (text: string, options: SayCallOptions) => {\r\n const notify = nvl(options.notify, true);\r\n const vibrate = nvl(options.vibrate, true);\r\n const { type } = options;\r\n\r\n setIsSpeaking(true);\r\n setTextSpeaking(text);\r\n\r\n if (notify) {\r\n showSayNotify(text, {\r\n type,\r\n autoClose: nvl(options.autoClose, notifyAutoClose),\r\n });\r\n }\r\n\r\n if (vibrate && shouldVibrate(type) && navigator.vibrate) {\r\n navigator.vibrate(vibrateDuration);\r\n }\r\n },\r\n [shouldVibrate, vibrateDuration, notifyAutoClose],\r\n );\r\n\r\n return { handleSay, isSpeaking, textSpeaking, setIsSpeaking };\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n CssBaseline,\r\n ThemeProvider,\r\n createTheme,\r\n type Theme,\r\n} from \"@mui/material\";\r\nimport { MantineProvider } from \"@mantine/core\";\r\n\r\ntype GrazziotinProvidersProps = {\r\n readonly children: React.ReactNode;\r\n readonly muiTheme?: Theme;\r\n};\r\n\r\nconst defaultMuiTheme = createTheme({\r\n typography: { fontFamily: \"var(--font-family, inherit)\" },\r\n});\r\n\r\nexport function GrazziotinProviders({\r\n children,\r\n muiTheme = defaultMuiTheme,\r\n}: GrazziotinProvidersProps) {\r\n return (\r\n <ThemeProvider theme={muiTheme}>\r\n <CssBaseline />\r\n <MantineProvider>{children}</MantineProvider>\r\n </ThemeProvider>\r\n );\r\n}\r\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,7 @@
1
+ export { card_default as Card, data_table_default as DataTable, dialog_default as Dialog, filter_default as Filter, input_default as Input, input_select_default as InputSelect, Tab, Tabs, filterInputSelect } from './chunk-OFMJB5WP.mjs';
2
+ export { say_default as Say, useSay } from './chunk-4AYAPBGW.mjs';
3
+ export { cn, formatCpfCnpj, formatItem150, formatItem170, formatPhoneBr, formatPriceBrl, nvl } from './chunk-DM64WOVD.mjs';
4
+ export { GrazziotinProviders } from './chunk-2ZJJRHPT.mjs';
5
+ import './chunk-YOSPWY5K.mjs';
6
+ //# sourceMappingURL=index.mjs.map
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Theme } from '@mui/material';
3
+
4
+ type GrazziotinProvidersProps = {
5
+ readonly children: React.ReactNode;
6
+ readonly muiTheme?: Theme;
7
+ };
8
+ declare function GrazziotinProviders({ children, muiTheme, }: GrazziotinProvidersProps): react_jsx_runtime.JSX.Element;
9
+
10
+ export { GrazziotinProviders };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Theme } from '@mui/material';
3
+
4
+ type GrazziotinProvidersProps = {
5
+ readonly children: React.ReactNode;
6
+ readonly muiTheme?: Theme;
7
+ };
8
+ declare function GrazziotinProviders({ children, muiTheme, }: GrazziotinProvidersProps): react_jsx_runtime.JSX.Element;
9
+
10
+ export { GrazziotinProviders };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var material = require('@mui/material');
4
+ var core = require('@mantine/core');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ // src/providers/app-providers.tsx
8
+ var defaultMuiTheme = material.createTheme({
9
+ typography: { fontFamily: "var(--font-family, inherit)" }
10
+ });
11
+ function GrazziotinProviders({
12
+ children,
13
+ muiTheme = defaultMuiTheme
14
+ }) {
15
+ return /* @__PURE__ */ jsxRuntime.jsxs(material.ThemeProvider, { theme: muiTheme, children: [
16
+ /* @__PURE__ */ jsxRuntime.jsx(material.CssBaseline, {}),
17
+ /* @__PURE__ */ jsxRuntime.jsx(core.MantineProvider, { children })
18
+ ] });
19
+ }
20
+
21
+ exports.GrazziotinProviders = GrazziotinProviders;
22
+ //# sourceMappingURL=index.js.map
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/providers/app-providers.tsx"],"names":["createTheme","jsxs","ThemeProvider","jsx","CssBaseline","MantineProvider"],"mappings":";;;;;;;AAeA,IAAM,kBAAkBA,oBAAA,CAAY;AAAA,EAClC,UAAA,EAAY,EAAE,UAAA,EAAY,6BAAA;AAC5B,CAAC,CAAA;AAEM,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA6B;AAC3B,EAAA,uBACEC,eAAA,CAACC,sBAAA,EAAA,EAAc,KAAA,EAAO,QAAA,EACpB,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,oBAAA,EAAA,EAAY,CAAA;AAAA,oBACbD,cAAA,CAACE,wBAAiB,QAAA,EAAS;AAAA,GAAA,EAC7B,CAAA;AAEJ","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport {\r\n CssBaseline,\r\n ThemeProvider,\r\n createTheme,\r\n type Theme,\r\n} from \"@mui/material\";\r\nimport { MantineProvider } from \"@mantine/core\";\r\n\r\ntype GrazziotinProvidersProps = {\r\n readonly children: React.ReactNode;\r\n readonly muiTheme?: Theme;\r\n};\r\n\r\nconst defaultMuiTheme = createTheme({\r\n typography: { fontFamily: \"var(--font-family, inherit)\" },\r\n});\r\n\r\nexport function GrazziotinProviders({\r\n children,\r\n muiTheme = defaultMuiTheme,\r\n}: GrazziotinProvidersProps) {\r\n return (\r\n <ThemeProvider theme={muiTheme}>\r\n <CssBaseline />\r\n <MantineProvider>{children}</MantineProvider>\r\n </ThemeProvider>\r\n );\r\n}\r\n"]}
@@ -0,0 +1,4 @@
1
+ export { GrazziotinProviders } from '../chunk-2ZJJRHPT.mjs';
2
+ import '../chunk-YOSPWY5K.mjs';
3
+ //# sourceMappingURL=index.mjs.map
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -299,7 +299,7 @@ type TabsProps = TabsProps$1 & TabColorProps;
299
299
  * </Tabs>
300
300
  * ```
301
301
  */
302
- declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "className" | "aria-label" | "aria-labelledby" | "children" | "onChange" | "sx" | "classes" | "slots" | "slotProps" | "variant" | "value" | "action" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "orientation" | "scrollButtons" | "selectionFollowsFocus" | "textColor" | "visibleScrollbar"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
302
+ declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "className" | "aria-label" | "aria-labelledby" | "children" | "onChange" | "sx" | "classes" | "slots" | "slotProps" | "variant" | "action" | "value" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "orientation" | "scrollButtons" | "selectionFollowsFocus" | "textColor" | "visibleScrollbar"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
303
303
  /**
304
304
  * Aba individual baseada no MUI `Tab`, com tipografia e cor de seleção customizáveis.
305
305
  *
@@ -311,7 +311,7 @@ declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps &
311
311
  * <Tab label="Configurações" color="#00B2A6" />
312
312
  * ```
313
313
  */
314
- declare const Tab: _emotion_styled.StyledComponent<_mui_material.TabOwnProps & Omit<_mui_material.ButtonBaseOwnProps, keyof _mui_material.TabOwnProps> & Omit<_mui_material.ButtonBaseOwnProps, "tabIndex" | "type" | "touchRippleRef" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | keyof _mui_material.TabOwnProps> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "label" | "className" | "tabIndex" | "children" | "icon" | "sx" | "type" | "classes" | "disabled" | "touchRippleRef" | "value" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "disableFocusRipple" | "iconPosition" | "wrapped"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
314
+ declare const Tab: _emotion_styled.StyledComponent<_mui_material.TabOwnProps & Omit<_mui_material.ButtonBaseOwnProps, keyof _mui_material.TabOwnProps> & Omit<_mui_material.ButtonBaseOwnProps, "tabIndex" | "type" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof _mui_material.TabOwnProps> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "label" | "className" | "tabIndex" | "children" | "icon" | "sx" | "type" | "classes" | "disabled" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "value" | "disableFocusRipple" | "iconPosition" | "wrapped"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
315
315
 
316
316
  type InputType = TextFieldProps["type"] | "cpf-cnpj" | "numeric" | "price" | "text-only" | "text-no-number" | "item-170" | "item-150";
317
317
  type InputProps = Omit<TextFieldProps, "color" | "type" | "size"> & {
@@ -299,7 +299,7 @@ type TabsProps = TabsProps$1 & TabColorProps;
299
299
  * </Tabs>
300
300
  * ```
301
301
  */
302
- declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "className" | "aria-label" | "aria-labelledby" | "children" | "onChange" | "sx" | "classes" | "slots" | "slotProps" | "variant" | "value" | "action" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "orientation" | "scrollButtons" | "selectionFollowsFocus" | "textColor" | "visibleScrollbar"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
302
+ declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "className" | "aria-label" | "aria-labelledby" | "children" | "onChange" | "sx" | "classes" | "slots" | "slotProps" | "variant" | "action" | "value" | "allowScrollButtonsMobile" | "centered" | "indicatorColor" | "orientation" | "scrollButtons" | "selectionFollowsFocus" | "textColor" | "visibleScrollbar"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
303
303
  /**
304
304
  * Aba individual baseada no MUI `Tab`, com tipografia e cor de seleção customizáveis.
305
305
  *
@@ -311,7 +311,7 @@ declare const Tabs: _emotion_styled.StyledComponent<_mui_material.TabsOwnProps &
311
311
  * <Tab label="Configurações" color="#00B2A6" />
312
312
  * ```
313
313
  */
314
- declare const Tab: _emotion_styled.StyledComponent<_mui_material.TabOwnProps & Omit<_mui_material.ButtonBaseOwnProps, keyof _mui_material.TabOwnProps> & Omit<_mui_material.ButtonBaseOwnProps, "tabIndex" | "type" | "touchRippleRef" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | keyof _mui_material.TabOwnProps> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "label" | "className" | "tabIndex" | "children" | "icon" | "sx" | "type" | "classes" | "disabled" | "touchRippleRef" | "value" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "disableFocusRipple" | "iconPosition" | "wrapped"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
314
+ declare const Tab: _emotion_styled.StyledComponent<_mui_material.TabOwnProps & Omit<_mui_material.ButtonBaseOwnProps, keyof _mui_material.TabOwnProps> & Omit<_mui_material.ButtonBaseOwnProps, "tabIndex" | "type" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | keyof _mui_material.TabOwnProps> & _mui_material_OverridableComponent.CommonProps & Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style" | "label" | "className" | "tabIndex" | "children" | "icon" | "sx" | "type" | "classes" | "disabled" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "nativeButton" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "value" | "disableFocusRipple" | "iconPosition" | "wrapped"> & _mui_system.MUIStyledCommonProps<_mui_material.Theme> & TabColorProps, {}, {}>;
315
315
 
316
316
  type InputType = TextFieldProps["type"] | "cpf-cnpj" | "numeric" | "price" | "text-only" | "text-no-number" | "item-170" | "item-150";
317
317
  type InputProps = Omit<TextFieldProps, "color" | "type" | "size"> & {