{"version":3,"file":"PaginationItemButton.cjs","sources":["../../../src/components/Pagination/PaginationItemButton.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType, type FC, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { useIntl } from '../../intl'\nimport { AnchorButton, Button } from '../Button'\n\nconst classNameGenerator = tv({\n  base: [\n    'shr-rounded-s',\n    'aria-current-page:[&&&]:shr-cursor-default aria-current-page:[&&&]:shr-bg-main aria-current-page:[&&&]:shr-text-white',\n    'aria-current-page:focus-visible:[&&&]:shr-focus-indicator',\n    'aria-current-page:[&&&]:shr-border-solid aria-current-page:[&&&]:shr-border-main',\n  ],\n})\n\ntype Props = {\n  page: number\n  disabled: boolean\n  hrefTemplate?: (pageNumber: number) => string\n  linkAs?: ElementType\n}\n\nexport const PaginationItemButton: FC<Props> = ({ page, disabled, hrefTemplate, linkAs }) => {\n  const { localize } = useIntl()\n  const className = useMemo(() => classNameGenerator(), [])\n\n  const ariaLabel = useMemo(\n    () =>\n      localize(\n        {\n          id: 'smarthr-ui/Pagination/itemButtonLabel',\n          defaultText: '{page}ページ目',\n        },\n        { page },\n      ),\n    [localize, page],\n  )\n\n  const { Component, attrs } = useMemo(() => {\n    const common = {\n      'aria-label': ariaLabel,\n      'aria-current': disabled ? 'page' : undefined,\n    }\n\n    if (hrefTemplate) {\n      return {\n        Component: AnchorButton,\n        attrs: {\n          ...common,\n          // HINT: elementAsにnext/linkを設定した場合、hrefがundefinedでは\n          // エラーになってしまうため、undefinedで指定されていない状態にする\n          ...(disabled\n            ? {\n                href: undefined,\n                elementAs: undefined,\n              }\n            : {\n                href: hrefTemplate(page),\n                elementAs: linkAs,\n              }),\n        } as ComponentProps<typeof AnchorButton>,\n      }\n    }\n\n    return {\n      Component: Button,\n      attrs: {\n        ...common,\n        disabled,\n        value: page,\n      } as ComponentProps<typeof Button>,\n    }\n  }, [disabled, page, hrefTemplate, linkAs, ariaLabel])\n\n  return (\n    <Component {...attrs} variant=\"secondary\" size=\"S\" className={className}>\n      {page}\n    </Component>\n  )\n}\n"],"names":["tv","useIntl","useMemo","AnchorButton","Button","_jsx"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,IAAI,EAAE;QACJ,eAAe;QACf,uHAAuH;QACvH,2DAA2D;QAC3D,kFAAkF;AACnF,KAAA;AACF,CAAA,CAAC;AASK,MAAM,oBAAoB,GAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAI;AAC1F,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAGC,oBAAO,EAAE;AAC9B,IAAA,MAAM,SAAS,GAAGC,aAAO,CAAC,MAAM,kBAAkB,EAAE,EAAE,EAAE,CAAC;IAEzD,MAAM,SAAS,GAAGA,aAAO,CACvB,MACE,QAAQ,CACN;AACE,QAAA,EAAE,EAAE,uCAAuC;AAC3C,QAAA,WAAW,EAAE,YAAY;KAC1B,EACD,EAAE,IAAI,EAAE,CACT,EACH,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB;IAED,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAGA,aAAO,CAAC,MAAK;AACxC,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;SAC9C;QAED,IAAI,YAAY,EAAE;YAChB,OAAO;AACL,gBAAA,SAAS,EAAEC,2CAAY;AACvB,gBAAA,KAAK,EAAE;AACL,oBAAA,GAAG,MAAM;;;AAGT,oBAAA,IAAI;AACF,0BAAE;AACE,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,SAAS,EAAE,SAAS;AACrB;AACH,0BAAE;AACE,4BAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;AACxB,4BAAA,SAAS,EAAE,MAAM;yBAClB,CAAC;AACgC,iBAAA;aACzC;QACH;QAEA,OAAO;AACL,YAAA,SAAS,EAAEC,+BAAM;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,GAAG,MAAM;gBACT,QAAQ;AACR,gBAAA,KAAK,EAAE,IAAI;AACqB,aAAA;SACnC;AACH,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAErD,QACEC,eAAC,SAAS,EAAA,EAAA,GAAK,KAAK,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,GAAG,EAAC,SAAS,EAAE,SAAS,EAAA,QAAA,EACpE,IAAI,EAAA,CACK;AAEhB;;;;"}