optimize various base components

This commit is contained in:
jeffvli
2026-01-02 12:46:35 -08:00
parent a66c67e86d
commit d06d1674d1
31 changed files with 669 additions and 393 deletions
+17 -21
View File
@@ -2,7 +2,7 @@ import type { ButtonVariant, ButtonProps as MantineButtonProps } from '@mantine/
import { ElementProps, Button as MantineButton } from '@mantine/core';
import clsx from 'clsx';
import { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
import styles from './button.module.css';
@@ -41,21 +41,26 @@ export const _Button = forwardRef<HTMLButtonElement, ButtonProps>(
}: ButtonProps,
ref,
) => {
const memoizedClassNames = useMemo(
() => ({
inner: styles.inner,
label: clsx(styles.label, {
[styles.uppercase]: uppercase,
}),
loader: styles.loader,
root: styles.root,
section: styles.section,
...classNames,
}),
[classNames, uppercase],
);
if (tooltip) {
return (
<Tooltip withinPortal {...tooltip}>
<MantineButton
autoContrast
classNames={{
inner: styles.inner,
label: clsx(styles.label, {
[styles.uppercase]: uppercase,
}),
loader: styles.loader,
root: styles.root,
section: styles.section,
...classNames,
}}
classNames={memoizedClassNames}
loading={loading}
ref={ref}
size={size}
@@ -71,16 +76,7 @@ export const _Button = forwardRef<HTMLButtonElement, ButtonProps>(
return (
<MantineButton
classNames={{
inner: styles.inner,
label: clsx(styles.label, {
[styles.uppercase]: uppercase,
}),
loader: styles.loader,
root: styles.root,
section: styles.section,
...classNames,
}}
classNames={memoizedClassNames}
loading={loading}
ref={ref}
size={size}