{"version":3,"file":"NotificationBar.cjs","sources":["../../../src/components/NotificationBar/NotificationBar.tsx"],"sourcesContent":["import {\n  type ComponentProps,\n  type ComponentPropsWithoutRef,\n  type FC,\n  Fragment,\n  type PropsWithChildren,\n  type ReactNode,\n  memo,\n  useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { Localizer } from '../../intl'\nimport { Base } from '../Base'\nimport { Button } from '../Button'\nimport {\n  FaCircleCheckIcon,\n  FaCircleExclamationIcon,\n  FaCircleInfoIcon,\n  FaRotateIcon,\n  FaTriangleExclamationIcon,\n  FaXmarkIcon,\n  WarningIcon,\n} from '../Icon'\nimport { Cluster } from '../Layout'\nimport { Text } from '../Text'\n\nconst classNameGenerator = tv({\n  slots: {\n    wrapper:\n      'smarthr-ui-NotificationBar shr-flex shr-items-baseline shr-justify-between shr-gap-0.5 shr-p-0.75',\n    inner: 'shr-flex-grow',\n    messageArea: [\n      'smarthr-ui-NotificationBar-messageArea',\n      'shr-flex shr-grow',\n      '[&_.smarthr-ui-Icon-withText]:shr-leading-tight',\n    ],\n    icon: '',\n    actionArea: 'smarthr-ui-NotificationBar-actionArea -shr-my-0.5 shr-shrink-0',\n    closeButton:\n      'smarthr-ui-NotificationBar-closeButton -shr-mb-0.5 -shr-mr-0.5 -shr-mt-0.5 shr-flex-shrink-0 shr-text-black',\n  },\n  variants: {\n    /** 下地 */\n    base: {\n      none: {},\n      base: {\n        wrapper: 'shr-py-1 shr-pe-1 shr-ps-1.5',\n      },\n    },\n    /** メッセージの種類 */\n    type: {\n      info: {\n        icon: 'shr-text-grey',\n      },\n      success: {},\n      warning: {\n        icon: 'shr-text-black',\n      },\n      error: {},\n      sync: {\n        icon: 'shr-text-main',\n      },\n    },\n    /** 強調するかどうか */\n    bold: {\n      true: '',\n      false: '',\n    },\n    /** スライドインするかどうか */\n    animate: {\n      true: {\n        wrapper: 'shr-animate-[notification-bar-slide-in_0.2s_ease-out]',\n      },\n    },\n  },\n  compoundVariants: [\n    {\n      type: ['info', 'success', 'warning', 'error', 'sync'],\n      bold: false,\n      className: {\n        wrapper: 'shr-bg-white shr-text-black',\n      },\n    },\n    {\n      type: 'success',\n      bold: false,\n      className: {\n        icon: 'shr-text-main',\n      },\n    },\n    {\n      type: 'error',\n      bold: false,\n      className: {\n        icon: 'shr-text-danger',\n      },\n    },\n    {\n      type: ['info', 'sync'],\n      bold: true,\n      className: {\n        wrapper: 'shr-bg-white',\n      },\n    },\n    {\n      type: 'success',\n      bold: true,\n      className: {\n        wrapper: 'shr-bg-main shr-text-white',\n        icon: 'shr-text-white',\n        closeButton:\n          'shr-text-white focus-visible:[&]:shr-focus-indicator hover:[&]:shr-bg-main-darken focus-visible:[&]:shr-bg-main-darken',\n      },\n    },\n    {\n      type: 'warning',\n      bold: true,\n      className: {\n        wrapper: 'shr-bg-warning-yellow shr-text-black',\n        closeButton:\n          'shr-text-black hover:[&]:shr-bg-warning-yellow-darken focus-visible:[&]:shr-bg-warning-yellow-darken',\n      },\n    },\n    {\n      type: 'error',\n      bold: true,\n      className: {\n        wrapper: 'shr-bg-danger shr-text-white',\n        icon: 'shr-text-white',\n        closeButton:\n          'shr-text-white hover:[&]:shr-bg-danger-darken focus-visible:[&]:shr-bg-danger-darken',\n      },\n    },\n  ],\n})\n\ntype StyleVariants = VariantProps<typeof classNameGenerator>\ntype AbstractProps = PropsWithChildren<\n  Omit<StyleVariants, 'type'> &\n    Required<Pick<StyleVariants, 'type'>> & {\n      /** コンポーネント右の領域 */\n      subActionArea?: ReactNode\n      /** 閉じるボタン押下時に発火させる関数 */\n      onClose?: () => void\n      /** role 属性 */\n      role?: 'alert' | 'status'\n    }\n>\ntype BaseProps = Pick<ComponentProps<typeof Base>, 'layer'>\ntype Props = AbstractProps &\n  Omit<ComponentPropsWithoutRef<'div'>, keyof AbstractProps> &\n  Omit<BaseProps, keyof AbstractProps>\n\nconst ABSTRACT_ICON_MAPPER = {\n  info: FaCircleInfoIcon,\n  success: FaCircleCheckIcon,\n  error: FaCircleExclamationIcon,\n  sync: FaRotateIcon,\n}\nconst ICON_MAPPER = {\n  normal: {\n    ...ABSTRACT_ICON_MAPPER,\n    warning: WarningIcon,\n  },\n  bold: {\n    ...ABSTRACT_ICON_MAPPER,\n    warning: FaTriangleExclamationIcon,\n  },\n} as const\n\nconst ROLE_STATUS_TYPE_REGEX = /^(info|sync)$/\n\nexport const NotificationBar: FC<Props> = ({\n  type,\n  bold,\n  animate,\n  subActionArea,\n  onClose,\n  children,\n  role,\n  base,\n  layer,\n  className,\n  ...rest\n}) => {\n  const actualRole = useMemo(() => {\n    if (role) {\n      return role\n    }\n\n    return ROLE_STATUS_TYPE_REGEX.test(type) ? 'status' : 'alert'\n  }, [role, type])\n  const { WrapBase, baseProps } = useMemo(\n    () =>\n      base === 'base'\n        ? {\n            WrapBase: Base,\n            baseProps: {\n              layer,\n              overflow: 'hidden' as ComponentProps<typeof Base>['overflow'],\n            },\n          }\n        : {\n            WrapBase: Fragment,\n            baseProps: {},\n          },\n    [base, layer],\n  )\n  const classNames = useMemo(() => {\n    const { wrapper, inner, messageArea, icon, actionArea, closeButton } = classNameGenerator({\n      type,\n      bold: !!bold,\n      base: base || 'none',\n    })\n\n    return {\n      wrapper: wrapper({ animate, className }),\n      inner: inner(),\n      messageArea: messageArea(),\n      icon: icon(),\n      actionArea: actionArea(),\n      closeButton: closeButton(),\n    }\n  }, [animate, base, bold, type, className])\n\n  return (\n    <WrapBase {...baseProps}>\n      <div {...rest} className={classNames.wrapper} role={actualRole}>\n        <Cluster gap={1} align=\"center\" justify=\"flex-end\" className={classNames.inner}>\n          <MessageArea bold={bold} type={type} classNames={classNames}>\n            {children}\n          </MessageArea>\n          {subActionArea && (\n            <Cluster align=\"center\" justify=\"flex-end\" className={classNames.actionArea}>\n              {subActionArea}\n            </Cluster>\n          )}\n        </Cluster>\n        <CloseButton onClose={onClose} className={classNames.closeButton} />\n      </div>\n    </WrapBase>\n  )\n}\n\nconst MessageArea = memo<\n  Pick<Props, 'children' | 'bold' | 'type'> & {\n    classNames: { messageArea: string; icon: string }\n  }\n>(({ children, bold, type, classNames }) => {\n  const Icon = ICON_MAPPER[bold ? 'bold' : 'normal'][type]\n\n  return (\n    <Text\n      icon={{\n        prefix: <Icon className={classNames.icon} />,\n        gap: 0.5,\n      }}\n      className={classNames.messageArea}\n      as=\"div\"\n    >\n      {children}\n    </Text>\n  )\n})\n\nconst CloseButton = memo<Pick<Props, 'onClose'> & { className: string }>(\n  ({ onClose, className }) =>\n    onClose && (\n      <Button variant=\"text\" size=\"S\" onClick={onClose} className={className}>\n        <FaXmarkIcon\n          alt={\n            <Localizer id=\"smarthr-ui/NotificationBar/closeButtonIconAlt\" defaultText=\"閉じる\" />\n          }\n        />\n      </Button>\n    ),\n)\n"],"names":["tv","FaCircleInfoIcon","FaCircleCheckIcon","FaCircleExclamationIcon","FaRotateIcon","WarningIcon","FaTriangleExclamationIcon","useMemo","Base","Fragment","_jsx","_jsxs","Cluster","memo","Text","Button","FaXmarkIcon","Localizer"],"mappings":"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"}