UNPKG

@rdsaude/pulso-react-components

Version:

Biblioteca de componentes React do Pulso Design System da RD Saúde oferece componentes consistentes e de alto desempenho, alinhados com os padrões da RDSaúde. Ideal para desenvolver aplicações modernas e acessíveis.

1 lines 50.1 kB
{"version":3,"sources":["../../../src/components/snackbar/index.ts","../../../src/components/snackbar/snackbar.tsx","../../../src/components/button/button.tsx","../../../src/utils/tv.ts","../../../src/components/button/button.styles.ts","../../../src/hooks/use-theme.ts","../../../src/components/theme-provider/theme-provider.tsx","../../../src/components/icon/utils/get-icon-color.ts","../../../src/components/icon/utils/get-icon-size.ts","../../../src/components/icon/icon.tsx","../../../src/components/button/components/button-icon.tsx","../../../src/components/refresh/utils/get-refresh-color.ts","../../../src/components/refresh/refresh.tsx","../../../src/components/button/components/button-refresh.tsx","../../../src/components/button/utils/is-icon-only.ts","../../../src/components/snackbar/components/snackbar-action-button/index.tsx","../../../src/components/snackbar/components/snackbar-description/snackbar-description.styles.ts","../../../src/components/snackbar/components/snackbar-description/index.tsx","../../../src/components/snackbar/components/snackbar-icon/index.tsx","../../../src/components/snackbar/components/snackbar-title/snackbar-title.styles.ts","../../../src/components/snackbar/components/snackbar-title/index.tsx","../../../src/components/snackbar/components/snackbar-content/snackbar-content.styles.ts","../../../src/components/snackbar/components/snackbar-content/index.tsx","../../../src/components/link/link.tsx","../../../src/components/link/components/link-icon.tsx","../../../src/components/link/link.styles.ts","../../../src/components/snackbar/components/snackbar-footer/snackbar-footer.styles.ts","../../../src/components/snackbar/components/snackbar-footer/index.tsx","../../../src/components/snackbar/components/snackbar-timebar/index.tsx","../../../src/components/progress-indicator/progress-indicator.tsx","../../../src/utils/cn.ts","../../../src/components/progress-indicator/hooks/use-handler-progress.ts","../../../src/components/snackbar/components/snackbar-timebar/snackbar-timebar.styles.ts","../../../src/components/snackbar/snackbar.styles.ts"],"sourcesContent":["export { Snackbar } from './snackbar'\nexport type { SnackbarProps } from './snackbar.types'\n","import { type Scope, createContextScope } from '@radix-ui/react-context'\nimport { useState } from 'react'\nimport { SnackbarContent } from './components/snackbar-content'\nimport { SnackbarFooter } from './components/snackbar-footer'\nimport { SnackbarTimeBar } from './components/snackbar-timebar'\nimport { SnackbarRootVariants } from './snackbar.styles'\nimport type { SnackbarProps } from './snackbar.types'\n\ntype SnackbarRootProps = SnackbarProps\n\nexport const DISPLAY_NAME = 'Snackbar'\nconst SnackbarRoot = (props: SnackbarRootProps) => {\n const {\n type,\n children,\n layout,\n duration,\n buttonLabel,\n onClickFooter,\n __scopeSnackbar,\n } = props as SnackbarScopedProps<SnackbarProps>\n const [isPaused, setPaused] = useState(false)\n return (\n <SnackbarProvider\n scope={__scopeSnackbar}\n layout={layout}\n type={type}\n buttonLabel={buttonLabel}\n onClickFooter={() => onClickFooter?.()}\n duration={duration}\n isPaused={isPaused}\n setPaused={setPaused}\n >\n <div\n className={SnackbarRootVariants({ type })}\n data-testid=\"snackbar-root\"\n >\n {children}\n </div>\n </SnackbarProvider>\n )\n}\n\nSnackbarRoot.displayName = DISPLAY_NAME\n\n/*\n----------------------------------------------------------------\nScope Definition\n----------------------------------------------------------------\n*/\n\nexport type SnackbarContext = SnackbarProps & {\n isPaused: boolean\n setPaused: (paused: boolean) => void\n}\n\nexport type SnackbarScopedProps<P> = P & {\n __scopeSnackbar?: Scope\n}\n\nconst [createSnackbarContext] = createContextScope(DISPLAY_NAME)\n\nexport const [SnackbarProvider, useSnackbarContext]: readonly [\n ProviderType<SnackbarContext>,\n (consumerName: string, scope: Scope) => SnackbarContext,\n] = createSnackbarContext<SnackbarContext>(DISPLAY_NAME)\n\n/*\n----------------------------------------------------------------\nComposition Export\n----------------------------------------------------------------\n*/\n\nexport const Snackbar = {\n Root: SnackbarRoot,\n Content: SnackbarContent,\n Footer: SnackbarFooter,\n Timebar: SnackbarTimeBar,\n}\n","import { forwardRef } from 'react'\n\nimport { type Scope, createContextScope } from '@radix-ui/react-context'\n\nimport type { ButtonProps } from './button.types'\n\nimport { buttonVariants } from './button.styles'\n\nimport { ButtonIcon } from './components/button-icon'\nimport { ButtonRefresh } from './components/button-refresh'\n\nimport { isIconOnly } from './utils/is-icon-only'\n\ntype ButtonContext = Pick<ButtonProps, 'variant' | 'size' | 'disabled'>\n\nconst DISPLAY_NAME = 'Button'\n\nconst ButtonRoot = forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ScopedProps<ButtonProps>, ref) => {\n const {\n children,\n variant = 'brand-primary',\n size = 'ml',\n loading = false,\n disabled = false,\n full,\n className,\n __scopeButton,\n } = props\n\n const isDisabled = loading || disabled\n\n return (\n <ButtonProvider\n scope={__scopeButton}\n variant={variant}\n size={size}\n disabled={disabled}\n >\n <button\n {...props}\n ref={ref}\n className={buttonVariants({\n variant,\n size,\n disabled,\n full,\n className,\n asIconOnly: isIconOnly(children),\n })}\n disabled={isDisabled}\n aria-disabled={disabled}\n >\n {loading ? <ButtonRefresh /> : children}\n </button>\n </ButtonProvider>\n )\n }\n)\n\nButtonRoot.displayName = DISPLAY_NAME\n\n/*\n----------------------------------------------------------------\nScope Definition\n----------------------------------------------------------------\n*/\n\nexport type ScopedProps<P> = P & {\n __scopeButton?: Scope\n}\n\nconst [createButtonContext] = createContextScope(DISPLAY_NAME)\n\nexport const [ButtonProvider, useButtonContext]: readonly [\n ProviderType<ButtonContext>,\n (consumerName: string, scope: Scope) => ButtonContext,\n] = createButtonContext<ButtonContext>(DISPLAY_NAME)\n\n/*\n----------------------------------------------------------------\nComposition Export\n----------------------------------------------------------------\n*/\n\nexport const Button = {\n Root: ButtonRoot,\n Icon: ButtonIcon,\n}\n","import { type VariantProps, createTV } from 'tailwind-variants'\n\nexport const tv = createTV({\n twMergeConfig: {\n extend: {\n classGroups: {\n 'font-size': [\n {\n text: ['threepulse', 'threeandhalfpulse'],\n },\n ],\n 'border-width': [\n {\n border: ['quarterpulse', 'halfpulse'],\n },\n ],\n '--tw-ring-inset': [\n {\n ring: ['none', 'quarterpulse', 'halfpulse'],\n },\n ],\n },\n },\n },\n})\n\nexport type { VariantProps }\n","import { tv } from '~/utils/tv'\n\nexport const buttonVariants = tv({\n base: `\n tracking inline-flex items-center justify-center gap-twopulse rounded-pill\n border-quarterpulse border-[transparent] font-bold font-rdmodern text-threeandhalfpulse truncate`,\n variants: {\n variant: {\n 'brand-primary': `bg-action-fill-brand-primary-enabled text-text-neutral-inverse\n enabled:active:bg-action-fill-brand-primary-pressed enabled:hover:bg-action-fill-brand-primary-hovered`,\n 'neutral-secondary': `border-action-border-neutral-secondary-enabled bg-action-fill-neutral-secondary-enabled text-text-neutral\n enabled:active:border-action-border-neutral-secondary-pressed enabled:active:bg-action-fill-neutral-secondary-pressed enabled:hover:bg-action-fill-neutral-secondary-hovered`,\n 'neutral-tertiary': `border-action-border-neutral-tertiary-enabled bg-action-fill-neutral-tertiary-enabled text-text-neutral\n enabled:active:bg-action-fill-neutral-tertiary-pressed enabled:hover:bg-action-fill-neutral-tertiary-hovered`,\n },\n size: {\n md: 'h-medium min-w-medium px-fourpulse text-threepulse leading-medium',\n ml: 'h-mediumlarge min-w-mediumlarge px-fourpulse leading-small',\n lg: 'h-large min-w-large px-fivepulse leading-small',\n xl: 'h-extralarge min-w-extralarge px-sixpulse leading-small',\n },\n disabled: {\n true: 'cursor-not-allowed text-text-neutral-disabled outline-none',\n false:\n 'outline-action-border-focused outline-offset-4 focus-visible:outline-1',\n },\n full: {\n true: 'w-full',\n },\n asIconOnly: {\n true: 'aspect-square px-none',\n },\n },\n compoundVariants: [\n {\n variant: 'brand-primary',\n disabled: true,\n class:\n 'border-action-border-brand-primary-disabled bg-action-fill-brand-primary-disabled',\n },\n {\n variant: 'neutral-secondary',\n disabled: true,\n class:\n 'border-action-border-neutral-secondary-disabled bg-action-fill-neutral-secondary-disabled',\n },\n {\n variant: 'neutral-tertiary',\n disabled: true,\n class:\n 'border-action-fill-neutral-tertiary-disabled bg-action-fill-neutral-tertiary-enabled',\n },\n ],\n\n defaultVariants: {\n variant: 'brand-primary',\n size: 'ml',\n },\n})\n","import {\n DROGASIL_TOKENS,\n GLOBALS_TOKENS,\n PRIME_TOKENS,\n RAIA_TOKENS,\n RDSAUDESISTEMAS_TOKENS,\n SUBSCRIPTION_TOKENS,\n} from '@raiadrogasil/pulso-design-tokens'\n\nimport { useContext } from 'react'\n\nimport { ThemeContext } from '~/components/theme-provider/theme-provider'\n\nexport function useTheme() {\n const { currentTheme } = useContext(ThemeContext)\n\n const themes = {\n rdsaudesistemas: RDSAUDESISTEMAS_TOKENS,\n drogasil: DROGASIL_TOKENS,\n raia: RAIA_TOKENS,\n subscription: SUBSCRIPTION_TOKENS,\n prime: PRIME_TOKENS,\n }\n\n return {\n ...themes[currentTheme],\n ...GLOBALS_TOKENS,\n }\n}\n","import { createContext, useEffect } from 'react'\n\nimport type { Themes } from '@raiadrogasil/pulso-design-tokens'\n\ntype TThemeContextData = {\n currentTheme: Themes\n}\n\ninterface IThemeProviderProps {\n children: React.ReactNode\n theme: Themes\n}\n\nexport const ThemeContext = createContext({} as TThemeContextData)\n\nexport function ThemeProvider({ children, theme }: IThemeProviderProps) {\n useEffect(() => {\n if (theme && document) {\n document?.documentElement?.classList?.add(theme)\n }\n\n return () => {\n document?.documentElement?.classList?.remove(theme)\n }\n }, [theme])\n\n return (\n <ThemeContext.Provider\n value={{\n currentTheme: theme,\n }}\n >\n {children}\n </ThemeContext.Provider>\n )\n}\n","import type { TIconColors } from '../icon.types'\n\nimport { useTheme } from '~/hooks/use-theme'\n\nexport function getColorIcon(color: keyof TIconColors) {\n const theme = useTheme()\n const allTokens = Object.keys(theme)\n\n const colorTokens = allTokens.reduce((acc, tokenKey) => {\n if (tokenKey.includes('color')) {\n const colorToken = tokenKey as keyof TIconColors\n acc[colorToken] = theme[colorToken]\n }\n\n return acc\n }, {} as TIconColors)\n\n return colorTokens[color]\n}\n","export const getIconSize = {\n tiny: 'var(--sizing-tiny)',\n 'extra-small': 'var(--sizing-extrasmall)',\n small: 'var(--sizing-small)',\n medium: 'var(--sizing-medium)',\n}\n","import type { TIconProps } from './icon.types'\n\nimport { getColorIcon } from './utils/get-icon-color'\nimport { getIconSize } from './utils/get-icon-size'\n\nexport function Icon({\n symbol = 'rdicon-default',\n size = 'small',\n color = 'colorActionFillBrandPrimaryEnabled',\n ...props\n}: TIconProps) {\n const symbolName = symbol.replace('rdicon', '').trim()\n\n return (\n <i\n {...props}\n title={symbolName}\n className={symbol}\n style={{\n fontSize: getIconSize[size],\n color: getColorIcon(color),\n }}\n />\n )\n}\n\nexport type { TIconProps }\n","import { type ScopedProps, useButtonContext } from '../button'\nimport type { ButtonSizes, ButtonVariants } from '../button.types'\n\nimport { Icon, type TIconProps } from '~/components/icon'\n\ntype ButtonIconProps = Pick<TIconProps, 'symbol'>\n\nexport function ButtonIcon(props: ButtonIconProps) {\n const { __scopeButton, ...rest } = props as ScopedProps<ButtonIconProps>\n\n const { variant, size, disabled } = useButtonContext(\n 'ButtonIcon',\n __scopeButton\n )\n\n const iconColorMapper: Record<ButtonVariants, TIconProps['color']> = {\n 'brand-primary': 'colorTextNeutralInverse',\n 'neutral-secondary': 'colorTextNeutralDefault',\n 'neutral-tertiary': 'colorTextNeutralDefault',\n } as const\n\n const iconSizeMapper: Record<ButtonSizes, TIconProps['size']> = {\n md: 'extra-small',\n ml: 'small',\n lg: 'small',\n xl: 'small',\n } as const\n\n return (\n <Icon\n {...rest}\n color={disabled ? 'colorTextNeutralDisabled' : iconColorMapper[variant!]}\n size={iconSizeMapper[size!]}\n />\n )\n}\n","import { useTheme } from '~/hooks/use-theme'\n\nimport type { TRefreshColor } from '../refresh.types'\n\nexport function getRefreshColor(color: TRefreshColor) {\n const theme = useTheme()\n\n const colors = {\n brand: theme.colorActionFillBrandPrimaryEnabled,\n neutral: theme.colorTextNeutralReadonly,\n black: theme.colorTextNeutralDefault,\n white: theme.colorTextNeutralInverse,\n } as Record<TRefreshColor, string>\n\n return colors[color]\n}\n","import type { TRefreshProps } from './refresh.types'\n\nimport { getRefreshColor } from './utils/get-refresh-color'\n\nexport function Refresh({ color = 'brand', srText }: TRefreshProps) {\n return (\n <div\n role=\"status\"\n className=\"grid size-eightpulse place-items-center\"\n aria-label={srText}\n >\n <svg className=\"size-sixpulse animate-spin fill-none\" viewBox=\"0 0 24 24\">\n <path\n fillRule=\"evenodd\"\n d=\"M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0v2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12H0z\"\n clipRule=\"evenodd\"\n fill={getRefreshColor(color)}\n />\n\n <title>{srText}</title>\n </svg>\n </div>\n )\n}\n\nexport type { TRefreshProps }\n","import { type ScopedProps, useButtonContext } from '../button'\n\nimport { Refresh, type TRefreshProps } from '~/components/refresh'\nimport type { ButtonVariants } from '../button.types'\n\ntype ButtonRefreshProps = Pick<TRefreshProps, 'srText'>\n\nexport function ButtonRefresh(props: ButtonRefreshProps) {\n const { __scopeButton, ...rest } = props as ScopedProps<ButtonRefreshProps>\n\n const { variant } = useButtonContext('ButtonRefresh', __scopeButton)\n\n const refreshColorMapper = {\n 'brand-primary': 'white',\n 'neutral-secondary': 'neutral',\n 'neutral-tertiary': 'black',\n } as Record<ButtonVariants, TRefreshProps['color']>\n\n return <Refresh {...rest} color={refreshColorMapper[variant!]} />\n}\n","import React from 'react'\n\nimport { ButtonIcon } from '../components/button-icon'\n\nexport function isIconOnly(children: React.ReactNode) {\n if (React.Children.count(children) === 1 && React.isValidElement(children)) {\n return children.type === ButtonIcon\n }\n\n return false\n}\n","import type { ButtonHTMLAttributes } from 'react'\nimport { Button } from '~/components/button'\n\ntype SnackbarActionButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n closable?: boolean\n onClickAction?: () => void\n}\n\nexport const SnackbarActionButton = (props: SnackbarActionButtonProps) => {\n const { closable, onClickAction } = props\n return (\n <Button.Root\n variant=\"neutral-tertiary\"\n onClick={onClickAction}\n data-testid=\"snackbar-action-button\"\n size=\"ml\"\n >\n <Button.Icon\n symbol={closable ? 'rdicon-dismiss' : 'rdicon-chevron-right'}\n />\n </Button.Root>\n )\n}\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarDescriptionVariants = tv({\n base: `\n text-text-neutral text-threeandhalfpulse !font-rdmodern font-regular\n leading-small line-clamp-2\n `,\n})\n","import { SnackbarDescriptionVariants } from './snackbar-description.styles'\n\ntype SnackbarDescriptionProps = {\n children?: React.ReactNode\n}\n\nexport const SnackbarDescription = (props: SnackbarDescriptionProps) => {\n const { children } = props\n return (\n <p\n className={SnackbarDescriptionVariants({})}\n data-testid=\"snackbar-description\"\n aria-label={children?.toString()}\n >\n {children}\n </p>\n )\n}\n","import { useCallback } from 'react'\nimport { Icon, type TIconProps } from '~/components/icon'\nimport {\n DISPLAY_NAME,\n type SnackbarScopedProps,\n useSnackbarContext,\n} from '../../snackbar'\nimport type { SnackbarTypes } from '../../snackbar.types'\n\ntype SnackbarIconProps = TIconProps\n\nexport const SnackbarIcon = (props: SnackbarIconProps) => {\n const { symbol, __scopeSnackbar } =\n props as SnackbarScopedProps<SnackbarIconProps>\n\n const { type } = useSnackbarContext(DISPLAY_NAME, __scopeSnackbar)\n\n const mapper: Record<SnackbarTypes, TIconProps['color']> = {\n success: 'colorTextSuccessAlternative',\n informative: 'colorTextInformativeAlternative',\n warning: 'colorTextWarningAlternative',\n danger: 'colorTextDangerAlternative',\n 'brand-accent': 'colorActionTextOnbrandDefault',\n }\n\n const mapVariantColor = useCallback((): TIconProps['color'] => {\n return mapper[type]\n }, [type])\n\n return (\n <Icon\n symbol={symbol}\n size=\"small\"\n color={mapVariantColor()}\n data-testid=\"snackbar-icon\"\n />\n )\n}\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarTitleVariants = tv({\n base: `\n text-text-neutral text-threeandhalfpulse !font-rdmodern font-bold leading-small\n truncate max-w-full\n `,\n})\n","import { SnackbarTitleVariants } from './snackbar-title.styles'\n\ntype SnackbarTitleProps = {\n children?: React.ReactNode\n}\n\nexport const SnackbarTitle = (props: SnackbarTitleProps) => {\n const { children } = props\n return (\n <p\n className={SnackbarTitleVariants({})}\n data-testid=\"snackbar-title\"\n aria-label={children?.toString()}\n >\n {children}\n </p>\n )\n}\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarContentVariants = tv({\n base: `\n flex flex-row gap-twopulse items-center justify-start\n px-fourpulse pt-fourpulse\n `,\n})\n\nexport const SnackbarBoxTextVariants = tv({\n base: `\n flex flex-col w-full overflow-hidden gap-onepulse max-h-huge\n `,\n})\n","import type { TIconProps } from '~/components/icon'\nimport {\n DISPLAY_NAME,\n type SnackbarScopedProps,\n useSnackbarContext,\n} from '../../snackbar'\nimport { SnackbarActionButton } from '../snackbar-action-button'\nimport { SnackbarDescription } from '../snackbar-description'\nimport { SnackbarIcon } from '../snackbar-icon'\nimport { SnackbarTitle } from '../snackbar-title'\nimport {\n SnackbarBoxTextVariants,\n SnackbarContentVariants,\n} from './snackbar-content.styles'\n\ntype SnackbarContentProps = {\n title?: string\n description: string\n onClickAction?: () => void\n closable?: boolean\n iconName?: TIconProps['symbol']\n}\n\nexport const SnackbarContent = (props: SnackbarContentProps) => {\n const {\n description,\n title,\n onClickAction,\n closable,\n iconName,\n __scopeSnackbar,\n } = props as SnackbarScopedProps<SnackbarContentProps>\n const { layout, setPaused } = useSnackbarContext(\n DISPLAY_NAME,\n __scopeSnackbar\n )\n const handlePause = () => {\n setPaused(true)\n }\n const handleRestart = () => {\n setPaused(false)\n }\n\n return (\n <div\n className={SnackbarContentVariants({})}\n data-testid=\"snackbar-content\"\n onMouseDown={handlePause}\n onMouseUp={handleRestart}\n >\n {iconName !== undefined && <SnackbarIcon symbol={iconName} />}\n <div className={SnackbarBoxTextVariants({})}>\n {title && <SnackbarTitle>{title}</SnackbarTitle>}\n <SnackbarDescription>{description}</SnackbarDescription>\n </div>\n {layout === undefined && (\n <SnackbarActionButton\n closable={closable}\n onClickAction={onClickAction}\n />\n )}\n </div>\n )\n}\n","import { type Scope, createContextScope } from '@radix-ui/react-context'\nimport { forwardRef } from 'react'\nimport { LinkIcon } from './components/link-icon'\nimport {\n iconLinkVariants,\n labelLinkVariants,\n linkVariants,\n} from './link.styles'\nimport type { LinkProps } from './link.types'\n\ntype LinkContext = Pick<LinkProps, 'size' | 'disabled'>\n\nconst DISPLAY_NAME = 'Link'\n\nconst LinkRoot = forwardRef<HTMLAnchorElement, LinkProps>(\n (props: LinkScopedProps<LinkProps>, ref) => {\n const {\n children,\n icon,\n size,\n disabled,\n full,\n __scopeLink,\n href,\n onClick,\n ...rest\n } = props\n\n const linkClassName = linkVariants({\n size,\n disabled,\n full,\n })\n\n const handleClick = (\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) => {\n if (disabled) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n if (onClick) {\n onClick(event)\n }\n }\n\n return (\n <LinkProvider scope={__scopeLink} size={size} disabled={disabled}>\n <a\n {...rest}\n ref={ref}\n href={disabled ? undefined : href}\n className={linkClassName}\n aria-disabled={disabled}\n role=\"link\"\n onClick={handleClick}\n >\n <div className={labelLinkVariants()}>{children}</div>\n {icon && <LinkIcon className={iconLinkVariants()} />}\n </a>\n </LinkProvider>\n )\n }\n)\n\nLinkRoot.displayName = DISPLAY_NAME\n\n/*\nScope Definition\n*/\n\nexport type LinkScopedProps<P> = P & {\n __scopeLink?: Scope\n}\n\nconst [createLinkContext] = createContextScope(DISPLAY_NAME)\n\nexport const [LinkProvider, useLinkContext]: readonly [\n ProviderType<LinkContext>,\n (consumerName: string, scope: Scope) => LinkContext,\n] = createLinkContext<LinkContext>(DISPLAY_NAME)\n\n/*\nComposition Export\n*/\n\nexport const Link = {\n Root: LinkRoot,\n}\n","import { Icon, type TIconProps } from '~/components/icon'\nimport { useLinkContext } from '../link'\nimport type { LinkIconProps, LinkScopedProps } from '../link.types'\n\nexport function LinkIcon({\n __scopeLink,\n color = 'colorTextNeutralDefault',\n className,\n ...props\n}: LinkScopedProps<LinkIconProps> & { className?: string }) {\n const { size, disabled } = useLinkContext('LinkIcon', __scopeLink)\n\n const iconSizeMapper: Record<string, TIconProps['size']> = {\n md: 'tiny',\n ml: 'tiny',\n } as const\n\n return (\n <div\n className={`flex items-center ${className && className}`}\n role=\"figure\"\n >\n <Icon\n {...props}\n symbol=\"rdicon-open\"\n color={disabled ? 'colorTextNeutralDisabled' : color}\n size={iconSizeMapper[size!]}\n />\n </div>\n )\n}\n","import { tv } from '~/utils/tv'\n\nexport const linkVariants = tv({\n base: 'letter-spacing-default inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md rounded-pill border-action-border-neutral-tertiary-enabled bg-action-fill-neutral-tertiary-enabled px-fourpulse text-text-neutral hover:border-action-border-neutral-tertiary-hovered hover:bg-action-fill-neutral-tertiary-hovered focus:border-action-border-focused focus:border-halfpulse active:border-action-border-neutral-tertiary-pressed active:bg-action-fill-neutral-tertiary-pressed focus:active:border-action-border-focused',\n variants: {\n size: {\n md: 'h-medium min-w-medium font-semibold text-threepulse leading-medium',\n ml: 'h-mediumlarge min-w-mediumlarge font-semibold text-threeandhalfpulse leading-small',\n },\n disabled: {\n true: 'cursor-not-allowed border-action-border-neutral-tertiary-disabled bg-action-fill-neutral-tertiary-disabled text-text-neutral-disabled hover:bg-action-fill-neutral-tertiary-disabled active:bg-action-fill-neutral-tertiary-disabled',\n false: '',\n },\n full: {\n true: 'w-full',\n },\n withIcon: {\n true: 'pl-1',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\nexport const labelLinkVariants = tv({\n base: 'inline-flex h-small items-center justify-center underline decoration-solid',\n})\nexport const iconLinkVariants = tv({\n base: 'pl-onepulse no-underline',\n})\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarFooterButtonVariants = tv({\n base: `\n flex pl-twelvepulse pr-fourpulse pt-twopulse\n `,\n})\nexport const SnackbarFooterLinkVariants = tv({\n base: `\n flex pl-eightpulse pr-fourpulse pt-twopulse\n `,\n})\n","import { Button } from '~/components/button'\nimport { Link } from '~/components/link'\nimport {\n DISPLAY_NAME,\n type SnackbarScopedProps,\n useSnackbarContext,\n} from '../../snackbar'\nimport {\n SnackbarFooterButtonVariants,\n SnackbarFooterLinkVariants,\n} from './snackbar-footer.styles'\n\ntype SnackbarFooterProps = {}\nexport const SnackbarFooter = (props: SnackbarFooterProps) => {\n const { __scopeSnackbar } = props as SnackbarScopedProps<SnackbarFooterProps>\n\n const { onClickFooter, layout, buttonLabel, setPaused } = useSnackbarContext(\n DISPLAY_NAME,\n __scopeSnackbar\n )\n\n const handlePause = () => {\n setPaused(true)\n }\n const handleRestart = () => {\n setPaused(false)\n }\n\n if (layout === undefined) {\n return\n }\n\n if (layout === 'with-link') {\n return (\n <div\n className={SnackbarFooterLinkVariants({})}\n data-testid=\"snackbar-footer-link\"\n onMouseDown={handlePause}\n onMouseUp={handleRestart}\n >\n <Link.Root icon size=\"ml\" onClick={onClickFooter}>\n {buttonLabel === '' || !buttonLabel ? 'Link' : buttonLabel}\n </Link.Root>\n </div>\n )\n }\n return (\n <div\n className={SnackbarFooterButtonVariants({})}\n data-testid=\"snackbar-footer-button\"\n onMouseDown={handlePause}\n onMouseUp={handleRestart}\n >\n <Button.Root\n onClick={onClickFooter}\n full\n variant=\"neutral-secondary\"\n size=\"ml\"\n >\n {buttonLabel === '' || !buttonLabel ? 'Button' : buttonLabel}\n </Button.Root>\n </div>\n )\n}\n","import React, { useCallback } from 'react'\nimport {\n ProgressIndicator,\n type ProgressIndicatorProps,\n} from '~/components/progress-indicator'\nimport {\n DISPLAY_NAME,\n type SnackbarScopedProps,\n useSnackbarContext,\n} from '../../snackbar'\nimport type { SnackbarTypes } from '../../snackbar.types'\nimport { SnackbarTimebarVariants } from './snackbar-timebar.styles'\n\ntype SnackbarTimeBarProps = {}\n\nexport const SnackbarTimeBar = (props: SnackbarTimeBarProps) => {\n const { __scopeSnackbar } = props as SnackbarScopedProps<SnackbarTimeBarProps>\n const {\n duration = 5000,\n type,\n isPaused,\n } = useSnackbarContext(DISPLAY_NAME, __scopeSnackbar)\n\n const mapper: Record<SnackbarTypes, ProgressIndicatorProps['variant']> = {\n success: 'success',\n informative: 'informative',\n warning: 'warning',\n danger: 'danger',\n 'brand-accent': 'brand',\n }\n\n const [percentage, setPercentage] = React.useState(0)\n\n React.useEffect(() => {\n if (isPaused) return\n\n const interval = setInterval(() => {\n setPercentage(prev => {\n const nextValue = prev + 100 / (duration / 100)\n return Math.min(nextValue, 100)\n })\n }, 100)\n\n return () => clearInterval(interval)\n }, [isPaused, duration])\n\n const mapVariantColor = useCallback((): ProgressIndicatorProps['variant'] => {\n return mapper[type]\n }, [type])\n\n return (\n <div className={SnackbarTimebarVariants({})} data-testid=\"snackbar-timebar\">\n <ProgressIndicator\n percentage={percentage}\n bgTransparent\n size=\"nano\"\n variant={mapVariantColor()}\n />\n </div>\n )\n}\n","import { forwardRef } from 'react'\n\nimport type { VariantProps } from 'tailwind-variants'\n\nimport { cn } from '~/utils/cn'\nimport { tv } from '~/utils/tv'\n\nimport { useHandlerProgress } from './hooks/use-handler-progress'\n\ntype ProgressIndicatorProps = React.ComponentPropsWithoutRef<'div'> &\n VariantProps<typeof progressIndicatorStyles> & {\n /**\n * Representa o progresso atual em porcentagem (0 a 100).\n */\n percentage?: number\n /**\n * Define o tempo estimado (em milissegundos) para o progresso atingir 100%.\n */\n duration?: number\n /**\n * Indica se o fundo do indicador deve ser transparente.\n */\n bgTransparent?: boolean\n /**\n * Callback acionado ao final do progresso, quando percentage atinge 100%.\n */\n onComplete?(): void\n }\n\nexport const progressIndicatorStyles = tv({\n base: 'flex w-full min-w-48 overflow-hidden rounded-pill p-none',\n variants: {\n variant: {\n brand: '*:bg-action-fill-brand-primary-enabled',\n neutral: '*:bg-text-neutral',\n 'neutral-readonly': '*:bg-text-neutral-readonly',\n inverse: '*:bg-text-neutral-inverse',\n informative: '*:bg-text-informative-alternative',\n success: '*:bg-text-success-alternative',\n warning: '*:bg-text-warning-alternative',\n danger: '*:bg-text-danger-alternative',\n },\n size: {\n tiny: 'h-tiny',\n // @TODO - Exchange for a semantic token\n mini: 'h-3',\n micro: 'h-2',\n nano: 'h-1',\n pico: 'h-[0.125rem]',\n },\n },\n defaultVariants: {\n variant: 'brand',\n size: 'tiny',\n },\n})\n\nconst ProgressIndicator = forwardRef<HTMLDivElement, ProgressIndicatorProps>(\n (\n {\n variant,\n size,\n percentage = 0,\n duration = 0,\n onComplete,\n bgTransparent,\n className,\n ...props\n },\n ref\n ) => {\n if (percentage > 0 && duration) {\n throw new Error(\n \"As propriedades 'percentage' e 'duration' são mutuamente exclusivas. Por favor, forneça apenas uma delas.\"\n )\n }\n\n if (!props['aria-labelledby']) {\n console.warn(\n 'A propriedade \"aria-labelledby\" é obrigatória para acessibilidade. Por favor, forneça um rótulo para o componente.'\n )\n }\n\n const {\n currentPercentage,\n PROGRESS_INDICATOR_MIN_VALUE,\n PROGRESS_INDICATOR_MAX_VALUE,\n } = useHandlerProgress(percentage, duration, onComplete)\n\n const classname = cn(\n progressIndicatorStyles({\n variant,\n size,\n className: bgTransparent\n ? 'bg-transparent'\n : 'bg-[--color-fill-neutral-fallback]',\n }), className)\n\n return (\n <div\n {...props}\n role=\"meter\"\n ref={ref}\n className={classname}\n style={\n // @TODO - Exchange for a semantic token\n {\n '--color-fill-neutral-fallback': '#E6E6E6',\n '--progress-width': `${currentPercentage}%`,\n } as Record<string, string>\n }\n aria-valuenow={currentPercentage}\n aria-valuemin={PROGRESS_INDICATOR_MIN_VALUE}\n aria-valuemax={PROGRESS_INDICATOR_MAX_VALUE}\n >\n <span\n className={cn(\n 'block h-full w-[--progress-width] rounded-tr-pill rounded-br-pill transition-transform ease-linear'\n )}\n />\n </div>\n )\n }\n)\n\nProgressIndicator.displayName = 'ProgressIndicator'\n\nexport { ProgressIndicator }\nexport type { ProgressIndicatorProps }\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport const cn = (...input: ClassValue[]) => twMerge(clsx(...input))\n","import { useEffect, useState } from 'react'\n\nexport function useHandlerProgress(\n percentage: number,\n duration: number,\n onComplete?: () => void\n) {\n const PROGRESS_INDICATOR_MIN_VALUE = 0\n const PROGRESS_INDICATOR_MAX_VALUE = 100\n\n const [currentPercentage, setCurrentPercentage] = useState(\n Math.min(\n Math.max(percentage, PROGRESS_INDICATOR_MIN_VALUE),\n PROGRESS_INDICATOR_MAX_VALUE\n )\n )\n\n useEffect(() => {\n setCurrentPercentage(\n Math.min(\n Math.max(percentage, PROGRESS_INDICATOR_MIN_VALUE),\n PROGRESS_INDICATOR_MAX_VALUE\n )\n )\n\n if (percentage === PROGRESS_INDICATOR_MAX_VALUE && onComplete) {\n onComplete()\n }\n }, [percentage, onComplete])\n\n useEffect(() => {\n if (duration) {\n const interval = duration / PROGRESS_INDICATOR_MAX_VALUE\n let progress = PROGRESS_INDICATOR_MIN_VALUE\n\n const intervalId = setInterval(() => {\n progress += 1\n setCurrentPercentage(prev =>\n Math.min(Math.max(prev + 1, 0), PROGRESS_INDICATOR_MAX_VALUE)\n )\n\n if (progress >= PROGRESS_INDICATOR_MAX_VALUE) {\n clearInterval(intervalId)\n onComplete?.()\n }\n }, interval)\n\n return () => clearInterval(intervalId)\n }\n }, [duration, onComplete])\n\n return {\n currentPercentage,\n PROGRESS_INDICATOR_MIN_VALUE,\n PROGRESS_INDICATOR_MAX_VALUE,\n }\n}\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarTimebarVariants = tv({\n base: `\n max-h-onepulse px-0.5\n `,\n})\n","import { tv } from '~/utils/tv'\n\nexport const SnackbarRootVariants = tv({\n base: `\n flex flex-col min-w-[256px] max-w-[768px] border-quarterpulse\n rounded-form border-border-neutral overflow-hidden\n pb-fourpulse\n `,\n variants: {\n type: {\n 'brand-accent': 'bg-fill-neutral',\n informative: 'bg-fill-informative-alternative',\n success: 'bg-fill-success-alternative',\n warning: 'bg-fill-warning-alternative',\n danger: 'bg-fill-danger-alternative',\n },\n },\n})\n"],"mappings":"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","names":["snackbar_exports","__export","Snackbar","__toCommonJS","import_react_context","import_react","import_react","import_react_context","import_tailwind_variants","tv","buttonVariants","tv","import_pulso_design_tokens","import_react","import_react","import_jsx_runtime","ThemeContext","useTheme","currentTheme","ThemeContext","__spreadValues","getColorIcon","color","theme","useTheme","acc","tokenKey","colorToken","getIconSize","import_jsx_runtime","Icon","_a","_b","symbol","size","color","props","__objRest","symbolName","__spreadProps","__spreadValues","getIconSize","getColorIcon","import_jsx_runtime","ButtonIcon","props","_a","__scopeButton","rest","__objRest","variant","size","disabled","useButtonContext","iconColorMapper","iconSizeMapper","Icon","__spreadProps","__spreadValues","getRefreshColor","color","theme","useTheme","import_jsx_runtime","Refresh","color","srText","getRefreshColor","import_jsx_runtime","ButtonRefresh","props","_a","__scopeButton","rest","__objRest","variant","useButtonContext","refreshColorMapper","Refresh","__spreadProps","__spreadValues","import_react","isIconOnly","children","React","ButtonIcon","import_jsx_runtime","DISPLAY_NAME","ButtonRoot","props","ref","children","variant","size","loading","disabled","full","className","__scopeButton","isDisabled","ButtonProvider","__spreadProps","__spreadValues","buttonVariants","isIconOnly","ButtonRefresh","createButtonContext","useButtonContext","Button","ButtonIcon","import_jsx_runtime","SnackbarActionButton","props","closable","onClickAction","Button","SnackbarDescriptionVariants","tv","import_jsx_runtime","SnackbarDescription","props","children","SnackbarDescriptionVariants","import_react","import_jsx_runtime","SnackbarIcon","props","symbol","__scopeSnackbar","type","useSnackbarContext","DISPLAY_NAME","mapper","mapVariantColor","Icon","SnackbarTitleVariants","tv","import_jsx_runtime","SnackbarTitle","props","children","SnackbarTitleVariants","SnackbarContentVariants","tv","SnackbarBoxTextVariants","import_jsx_runtime","SnackbarContent","props","description","title","onClickAction","closable","iconName","__scopeSnackbar","layout","setPaused","useSnackbarContext","DISPLAY_NAME","handlePause","handleRestart","SnackbarContentVariants","SnackbarIcon","SnackbarBoxTextVariants","SnackbarTitle","SnackbarDescription","SnackbarActionButton","import_react_context","import_react","import_jsx_runtime","LinkIcon","_a","_b","__scopeLink","color","className","props","__objRest","size","disabled","useLinkContext","iconSizeMapper","Icon","__spreadProps","__spreadValues","linkVariants","tv","labelLinkVariants","iconLinkVariants","import_jsx_runtime","DISPLAY_NAME","LinkRoot","props","ref","_a","children","icon","size","disabled","full","__scopeLink","href","onClick","rest","__objRest","linkClassName","linkVariants","handleClick","event","LinkProvider","__spreadProps","__spreadValues","labelLinkVariants","LinkIcon","iconLinkVariants","createLinkContext","useLinkContext","Link","SnackbarFooterButtonVariants","tv","SnackbarFooterLinkVariants","import_jsx_runtime","SnackbarFooter","props","__scopeSnackbar","onClickFooter","layout","buttonLabel","setPaused","useSnackbarContext","DISPLAY_NAME","handlePause","handleRestart","SnackbarFooterLinkVariants","Link","SnackbarFooterButtonVariants","Button","import_react","import_react","import_clsx","import_tailwind_merge","cn","input","import_react","useHandlerProgress","percentage","duration","onComplete","currentPercentage","setCurrentPercentage","interval","progress","intervalId","prev","import_jsx_runtime","progressIndicatorStyles","tv","ProgressIndicator","_a","ref","_b","variant","size","percentage","duration","onComplete","bgTransparent","className","props","__objRest","currentPercentage","PROGRESS_INDICATOR_MIN_VALUE","PROGRESS_INDICATOR_MAX_VALUE","useHandlerProgress","classname","cn","__spreadProps","__spreadValues","SnackbarTimebarVariants","tv","import_jsx_runtime","SnackbarTimeBar","props","__scopeSnackbar","duration","type","isPaused","useSnackbarContext","DISPLAY_NAME","mapper","percentage","setPercentage","React","interval","prev","nextValue","mapVariantColor","SnackbarTimebarVariants","ProgressIndicator","SnackbarRootVariants","tv","import_jsx_runtime","DISPLAY_NAME","SnackbarRoot","props","type","children","layout","duration","buttonLabel","onClickFooter","__scopeSnackbar","isPaused","setPaused","SnackbarProvider","SnackbarRootVariants"