@charcoal-ui/react-sandbox 4.0.1 → 4.2.0

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.
Files changed (40) hide show
  1. package/dist/_lib/ComponentAbstraction.d.ts +4 -3
  2. package/dist/_lib/ComponentAbstraction.d.ts.map +1 -1
  3. package/dist/components/Carousel/index.d.ts +1 -1
  4. package/dist/components/Carousel/index.d.ts.map +1 -1
  5. package/dist/components/CarouselButton/index.d.ts +2 -2
  6. package/dist/components/CarouselButton/index.d.ts.map +1 -1
  7. package/dist/components/Filter/index.d.ts +1 -1
  8. package/dist/components/Filter/index.d.ts.map +1 -1
  9. package/dist/components/HintText/index.d.ts +1 -1
  10. package/dist/components/HintText/index.d.ts.map +1 -1
  11. package/dist/components/Layout/index.d.ts +4 -4
  12. package/dist/components/Layout/index.d.ts.map +1 -1
  13. package/dist/components/LeftMenu/index.d.ts +2 -2
  14. package/dist/components/LeftMenu/index.d.ts.map +1 -1
  15. package/dist/components/MenuListItem/index.d.ts +4 -4
  16. package/dist/components/MenuListItem/index.d.ts.map +1 -1
  17. package/dist/components/Pager/index.d.ts +1 -1
  18. package/dist/components/Pager/index.d.ts.map +1 -1
  19. package/dist/components/icons/Base.d.ts +2 -2
  20. package/dist/components/icons/Base.d.ts.map +1 -1
  21. package/dist/components/icons/DotsIcon.d.ts +1 -1
  22. package/dist/components/icons/DotsIcon.d.ts.map +1 -1
  23. package/dist/components/icons/InfoIcon.d.ts +1 -1
  24. package/dist/components/icons/InfoIcon.d.ts.map +1 -1
  25. package/dist/components/icons/NextIcon.d.ts +1 -1
  26. package/dist/components/icons/NextIcon.d.ts.map +1 -1
  27. package/dist/components/icons/WedgeIcon.d.ts +1 -1
  28. package/dist/components/icons/WedgeIcon.d.ts.map +1 -1
  29. package/dist/index.cjs.js +7 -11
  30. package/dist/index.cjs.js.map +1 -1
  31. package/dist/index.esm.js +7 -11
  32. package/dist/index.esm.js.map +1 -1
  33. package/package.json +13 -17
  34. package/src/_lib/ComponentAbstraction.tsx +2 -1
  35. package/src/components/Carousel/index.tsx +4 -4
  36. package/src/components/Filter/index.tsx +8 -7
  37. package/src/components/HintText/index.tsx +5 -4
  38. package/src/components/Pager/index.tsx +2 -2
  39. package/src/components/WithIcon/index.tsx +8 -3
  40. package/src/type.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/Filter/index.tsx","../src/_lib/ComponentAbstraction.tsx","../src/components/HintText/index.tsx","../src/styled.ts","../src/components/icons/InfoIcon.tsx","../src/components/icons/Base.tsx","../src/components/Layout/index.tsx","../src/foundation/constants.ts","../src/foundation/hooks.ts","../src/components/LeftMenu/index.tsx","../src/components/MenuListItem/index.tsx","../src/components/TextEllipsis/index.tsx","../src/components/TextEllipsis/helper.ts","../src/components/SwitchCheckbox/index.tsx","../src/components/WithIcon/index.tsx","../src/components/Carousel/index.tsx","../src/foundation/support.ts","../src/hooks/index.ts","../src/components/CarouselButton/index.tsx","../src/foundation/utils.ts","../src/components/icons/NextIcon.tsx","../src/components/Pager/index.tsx","../src/components/icons/DotsIcon.tsx","../src/components/icons/WedgeIcon.tsx"],"sourcesContent":["export {\n default as Filter,\n FilterButton,\n FilterIconButton,\n FilterLink,\n} from './components/Filter'\nexport { default as HintText } from './components/HintText'\nexport {\n default as Layout,\n CancelLayoutItemBodyPadding,\n LAYOUT_ITEM_BODY_PADDING,\n LayoutItem,\n LayoutItemBody,\n LayoutItemHeader,\n StyledCancelLayoutItemBodyPadding,\n StyledLayoutItemBody,\n useLayoutItemBodyPadding,\n} from './components/Layout'\nexport { default as LeftMenu, LeftMenuContent } from './components/LeftMenu'\nexport {\n default as MenuListItem,\n type MenuListItemBaseData,\n MenuListItemContext,\n MenuListItemWithIcon,\n MenuListLabel,\n MenuListLinkItem,\n MenuListLinkItemWithIcon,\n MenuListSpacer,\n} from './components/MenuListItem'\nexport { default as SwitchCheckbox } from './components/SwitchCheckbox'\nexport { TextEllipsis } from './components/TextEllipsis'\nexport { default as WithIcon } from './components/WithIcon'\nexport {\n default as ComponentAbstraction,\n useComponentAbstraction,\n type LinkProps,\n} from './_lib/ComponentAbstraction'\nexport {\n MAIN_COLUMN_HORIZONTAL_MIN_MARGIN,\n RESPONSIVE_LEFT_WIDTH,\n RESPONSIVE_MAIN_MAX_WIDTH,\n} from './foundation/constants'\nexport { default as Carousel } from './components/Carousel'\nexport { useElementSize, useMedia, useMediaScreen1 } from './foundation/hooks'\nexport { default as Pager, LinkPager } from './components/Pager'\n","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../_lib/ComponentAbstraction'\n\ninterface Props<T extends HTMLElement> {\n active?: boolean\n hover?: boolean\n reactive?: boolean\n children: React.ReactNode\n onClick?: React.MouseEventHandler<T>\n}\n\ninterface FilterIconButtonProps extends Props<HTMLButtonElement> {\n width?: number\n height?: number\n}\n\nexport const FilterButton = React.forwardRef(function FilterButton(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n }: Props<HTMLButtonElement>,\n ref: React.Ref<HTMLButtonElement>\n) {\n return (\n <ButtonLike\n active={active}\n reactive={reactive}\n hover={hover}\n onClick={active && !reactive ? undefined : onClick}\n ref={ref}\n >\n {children}\n </ButtonLike>\n )\n})\n\nexport const FilterIconButton = React.forwardRef(function FilterIconButton(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n width,\n height,\n }: FilterIconButtonProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n return (\n <StyledButtonLike\n active={active}\n reactive={reactive}\n hover={hover}\n onClick={active && !reactive ? undefined : onClick}\n ref={ref}\n buttonWidth={width}\n buttonHeight={height}\n >\n {children}\n </StyledButtonLike>\n )\n})\n\nexport const FilterLink = React.forwardRef(function FilterLink(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n ...props\n }: Props<HTMLAnchorElement> & LinkProps,\n ref: React.Ref<HTMLAnchorElement>\n) {\n const { Link } = useComponentAbstraction()\n if (active && !reactive) {\n return (\n <PlainElement active hover={hover} ref={ref}>\n {children}\n </PlainElement>\n )\n } else {\n return (\n <Link {...props} onClick={onClick}>\n <PlainElement\n active={active}\n reactive={reactive}\n hover={hover}\n ref={ref}\n >\n {children}\n </PlainElement>\n </Link>\n )\n }\n})\n\ninterface ButtonCssProps {\n active?: boolean\n hover?: boolean\n reactive?: boolean\n}\n\nconst buttonCss = css`\n display: block;\n outline: none;\n border: none;\n padding: 9px 24px;\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n border-radius: /* absurd radius, but ensures rounded corners */ 2000px;\n transition: color 0.2s;\n color: ${({ theme }) => theme.color.text3};\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n\n &:hover {\n color: ${({ theme }) => theme.color.text2};\n }\n\n ${({ hover = false }: ButtonCssProps) =>\n hover &&\n css`\n color: ${({ theme }) => theme.color.text2};\n `}\n\n ${({ active = false }: ButtonCssProps) =>\n active &&\n css`\n background-color: ${({ theme }) => theme.color.surface3};\n color: ${({ theme }) => theme.color.text2};\n `}\n\n ${({ active = false, reactive = false }) =>\n active &&\n !reactive &&\n css`\n cursor: default;\n `}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 5px 16px;\n }\n`\n\nconst padding0Css = css`\n padding: 0;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 0;\n }\n`\n\nconst ButtonLike = styled.button`\n ${buttonCss}\n`\n\nconst PlainElement = styled.span`\n ${buttonCss}\n`\n\nconst StyledButtonLike = styled(ButtonLike)<{\n buttonWidth: number | undefined\n buttonHeight: number | undefined\n}>`\n ${padding0Css};\n ${(p) => p.buttonWidth !== undefined && `width: ${p.buttonWidth}px;`}\n ${(p) => p.buttonHeight !== undefined && `height: ${p.buttonHeight}px;`}\n`\n\nconst Filter = styled.div`\n display: flex;\n`\n\nexport default Filter\n","import { useContext } from 'react'\nimport * as React from 'react'\n\nexport type LinkProps = {\n /**\n * リンクのURL\n */\n to: string\n} & Omit<React.ComponentPropsWithoutRef<'a'>, 'href'>\n\nexport const DefaultLink = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function DefaultLink({ to, children, ...rest }, ref) {\n return (\n <a href={to} ref={ref} {...rest}>\n {children}\n </a>\n )\n }\n)\n\nexport interface Components {\n Link: React.ComponentType<React.ComponentPropsWithRef<typeof DefaultLink>>\n}\n\nconst DefaultValue: Components = {\n Link: DefaultLink,\n}\n\nconst ComponentAbstractionContext = React.createContext(DefaultValue)\n\ninterface Props {\n children: React.ReactNode\n components: Partial<Components>\n}\n\nexport default function ComponentAbstraction({ children, components }: Props) {\n return (\n <ComponentAbstractionContext.Provider\n value={{ ...DefaultValue, ...components }}\n >\n {children}\n </ComponentAbstractionContext.Provider>\n )\n}\n\nexport function useComponentAbstraction() {\n return useContext(ComponentAbstractionContext)\n}\n","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { theme } from '../../styled'\nimport InfoIcon from '../icons/InfoIcon'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ntype Context = 'page' | 'section'\ninterface Props {\n children: React.ReactNode\n context: Context\n className?: string\n}\n\nexport default function HintText({ children, context, className }: Props) {\n return (\n <Container className={className} context={context}>\n <IconWrap>\n <InfoIcon />\n </IconWrap>\n <Text>{children}</Text>\n </Container>\n )\n}\n\nconst Container = styled.div.attrs<Props, ReturnType<typeof styledProps>>(\n styledProps\n)`\n ${(p) =>\n theme((o) => [\n o.bg.surface3,\n o.borderRadius(8),\n o.padding.vertical(p.default.vertical),\n o.padding.horizontal(p.default.horizontal),\n ])}\n\n @media ${({ theme: t }) => maxWidth(t.breakpoint.screen1)} {\n ${(p) =>\n theme((o) => [\n o.padding.vertical(p.screen1.vertical),\n o.padding.horizontal(p.screen1.horizontal),\n ])}\n }\n\n display: flex;\n align-items: flex-start;\n ${(p) =>\n p.context === 'page' &&\n css`\n justify-content: center;\n `}\n`\n\nconst IconWrap = styled.div`\n display: flex;\n align-items: center;\n color: ${(p) => p.theme.color.text4};\n height: 22px;\n margin: -4px 4px -4px 0;\n`\n\nconst Text = styled.p`\n ${theme((o) => [o.font.text2, o.typography(14)])}\n margin: 0;\n min-width: 0;\n overflow-wrap: break-word;\n`\n\nfunction styledProps(props: Props) {\n return { ...props, ...contextToProps(props.context) }\n}\n\nfunction contextToProps(context: Context) {\n switch (context) {\n case 'page':\n return {\n default: {\n horizontal: 40,\n vertical: 24,\n },\n screen1: {\n horizontal: 16,\n vertical: 16,\n },\n } as const\n case 'section':\n return {\n default: {\n horizontal: 16,\n vertical: 16,\n },\n screen1: {\n horizontal: 16,\n vertical: 16,\n },\n } as const\n }\n}\n","import styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\nexport const theme = createTheme(styled)\n","import styled from 'styled-components'\nimport IconBase from './Base'\n\nconst size = 16\n\nexport default function InfoIcon() {\n const path = (\n <>\n <path\n d=\"M8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183\n 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16Z\"\n />\n <Path\n d=\"M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629\n 4.68629 2 8 2C11.3137 2 14 4.68629 14 8ZM8 6.25C8.69036 6.25 9.25 5.69036\n 9.25 5C9.25 4.30964 8.69036 3.75 8 3.75C7.30964 3.75 6.75 4.30964 6.75\n 5C6.75 5.69036 7.30964 6.25 8 6.25ZM7 7.75V11.25C7 11.8023 7.44772 12.25\n 8 12.25C8.55228 12.25 9 11.8023 9 11.25V7.75C9 7.19772 8.55228 6.75 8\n 6.75C7.44772 6.75 7 7.19772 7 7.75Z\"\n />\n </>\n )\n return <IconBase viewBoxSize={size} size={size} currentColor path={path} />\n}\n\nconst Path = styled.path`\n fill: ${({ theme }) => theme.color.surface1};\n fill-rule: evenodd;\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\n\nexport type IconSizes = 16 | 24 | 32\n\ninterface Props {\n path: string | React.ReactNode\n viewBoxSize: number\n size?: IconSizes | 40 | 48 | 64 | 72\n transform?: string\n currentColor?: boolean\n fillRule?: 'nonzero' | 'evenodd'\n clipRule?: 'nonzero' | 'evenodd' | 'inherit'\n}\n\nexport default function IconBase({\n size = 24,\n viewBoxSize,\n currentColor,\n path,\n transform,\n fillRule,\n clipRule,\n}: Props) {\n return (\n <Icon\n viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}\n size={size}\n currentColor={currentColor}\n >\n <IconBasePath\n path={path}\n transform={transform}\n fillRule={fillRule}\n clipRule={clipRule}\n />\n </Icon>\n )\n}\n\nconst Icon = styled.svg<{ size: number; currentColor?: boolean }>`\n stroke: none;\n fill: ${({ currentColor = false, theme }) =>\n currentColor ? 'currentColor' : theme.color.text2};\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n line-height: 0;\n font-size: 0;\n vertical-align: middle;\n`\n\ntype IconBasePathProps = Pick<\n Props,\n 'path' | 'transform' | 'fillRule' | 'clipRule'\n>\nexport const IconBasePath = ({\n path,\n transform,\n fillRule,\n clipRule,\n}: IconBasePathProps) => {\n if (typeof path === 'string') {\n return (\n <path\n d={path}\n transform={transform}\n fillRule={fillRule}\n clipRule={clipRule}\n />\n )\n } else {\n return <>{path}</>\n }\n}\n","import { useContext } from 'react'\nimport * as React from 'react'\nimport styled, { createGlobalStyle, css } from 'styled-components'\nimport {\n MAIN_COLUMN_HORIZONTAL_MIN_MARGIN,\n RESPONSIVE_LEFT_WIDTH,\n RESPONSIVE_MAIN_MAX_WIDTH,\n} from '../../foundation/constants'\nimport { useMediaScreen1 } from '../../foundation/hooks'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ninterface Props {\n menu?: React.ReactNode\n isHeaderTopMenu?: boolean\n children: React.ReactNode\n header?: React.ReactNode\n wide?: boolean\n center?: boolean\n}\n\nconst LayoutConfigContext = React.createContext({\n wide: false,\n center: false,\n withLeft: false,\n})\n\nexport default function Layout({\n menu,\n children,\n header,\n center = false,\n wide,\n isHeaderTopMenu = false,\n}: Props) {\n const config = {\n center,\n wide: center ? true : wide ?? false,\n withLeft: menu != null && !isHeaderTopMenu,\n }\n return (\n <LayoutRoot>\n <LayoutConfigContext.Provider value={config}>\n {config.withLeft && <LeftArea>{menu}</LeftArea>}\n <MainArea center={center}>\n {header != null && <Header>{header}</Header>}\n {isHeaderTopMenu && (\n <HeaderTopMenuContainer>{menu}</HeaderTopMenuContainer>\n )}\n <Grid>{children}</Grid>\n </MainArea>\n </LayoutConfigContext.Provider>\n <GlobalStyle />\n </LayoutRoot>\n )\n}\n\nconst HeaderTopMenuContainer = styled.div`\n margin-bottom: 40px;\n overflow-x: auto;\n word-break: keep-all;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-bottom: 0;\n padding-left: 16px;\n padding-bottom: 16px;\n background-color: ${({ theme }) => theme.color.surface2};\n }\n`\n\nconst GlobalStyle = createGlobalStyle`\n :root {\n background-color: ${({ theme }) => theme.color.background2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n background-color: ${({ theme }) => theme.color.background1};\n }\n }\n`\n\nconst LayoutRoot = styled.div`\n display: flex;\n background-color: ${({ theme }) => theme.color.background2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n background-color: ${({ theme }) => theme.color.background1};\n }\n`\n\nconst LeftArea = styled.div`\n min-width: ${RESPONSIVE_LEFT_WIDTH}px;\n padding: 40px 0 40px ${GUTTER_UNIT}px;\n box-sizing: border-box;\n\n @media ${({ theme }) => theme.breakpoint.screen3} {\n display: none;\n }\n`\n\nconst MainArea = styled.div<{ center: boolean }>`\n flex-grow: 1;\n /* https://www.w3.org/TR/css-flexbox-1/#min-size-auto */\n min-width: 0;\n max-width: ${(p) =>\n p.center\n ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT)\n : RESPONSIVE_MAIN_MAX_WIDTH}px;\n padding: 40px ${MAIN_COLUMN_HORIZONTAL_MIN_MARGIN}px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 0;\n }\n`\n\nconst Header = styled.div`\n font-weight: bold;\n margin-bottom: 12px;\n font-size: 20px;\n line-height: 28px;\n color: ${({ theme }) => theme.color.text2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-bottom: 0;\n padding: 12px;\n font-size: 16px;\n line-height: 24px;\n display: flex;\n justify-content: center;\n background-color: ${({ theme }) => theme.color.surface2};\n }\n`\n\nconst Grid = styled.div`\n display: grid;\n gap: ${GUTTER_UNIT}px;\n grid-template-columns: 1fr;\n grid-auto-columns: 1fr;\n grid-auto-rows: auto;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n gap: 0;\n background-color: ${({ theme }) => theme.color.background1};\n padding-bottom: 60px;\n }\n`\n\ninterface LayoutItemProps {\n span: number\n children?: React.ReactNode\n}\n\nexport const LayoutItem = React.forwardRef<HTMLDivElement, LayoutItemProps>(\n function LayoutItem({ span, children }, ref) {\n const { withLeft } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItem span={span} withLeft={withLeft} ref={ref}>\n {children}\n </StyledLayoutItem>\n )\n }\n)\n\ninterface StyledLayoutItemProps {\n span: number\n withLeft: boolean\n}\n\nconst StyledLayoutItem = styled.div<StyledLayoutItemProps>`\n grid-column-start: auto;\n grid-column-end: span ${(p) => p.span};\n border-radius: 24px;\n color: ${({ theme }) => theme.color.text2};\n background-color: ${({ theme }) => theme.color.background1};\n /* https://www.w3.org/TR/css-grid-1/#min-size-auto */\n min-width: 0;\n\n @media ${(p) =>\n p.withLeft ? p.theme.breakpoint.screen4 : p.theme.breakpoint.screen3} {\n ${(p) =>\n p.span > 2 &&\n css`\n grid-column-end: span 2;\n `}\n }\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.span > 1 &&\n css`\n grid-column-end: span 1;\n `}\n\n border-radius: 0;\n padding-bottom: 40px;\n }\n`\n\nexport function LayoutItemHeader({ children }: { children: React.ReactNode }) {\n const { wide, center } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItemHeader wide={wide} center={center}>\n {children}\n </StyledLayoutItemHeader>\n )\n}\n\ninterface StyledLayoutItemHeaderProps {\n wide: boolean\n center: boolean\n}\n\nconst StyledLayoutItemHeader = styled.div<StyledLayoutItemHeaderProps>`\n padding: 0 ${(p) => (p.wide ? 40 : 24)}px;\n height: ${(p) => (p.wide ? 64 : 48)}px;\n display: grid;\n align-items: center;\n font-size: 16px;\n line-height: 24px;\n font-weight: bold;\n background-color: ${({ theme }) => theme.color.surface2};\n color: ${({ theme }) => theme.color.text2};\n border-radius: 24px 24px 0 0;\n ${(p) =>\n p.center &&\n css`\n justify-content: center;\n `}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-top: 4px;\n padding: 0 16px;\n background: none;\n overflow-x: auto;\n border-radius: unset;\n ${(p) =>\n p.wide &&\n css`\n height: 48px;\n margin-top: 0;\n `}\n }\n`\n\nexport const LAYOUT_ITEM_BODY_PADDING = {\n wide: {\n x: 40,\n y: 40,\n },\n default: {\n x: 24,\n y: 24,\n },\n column1: {\n x: 16,\n y: 16,\n },\n narrow: {\n x: 24,\n yTop: 12,\n yBottom: 20,\n },\n narrowColumn1: {\n x: 16,\n yTop: 4,\n yBottom: 0,\n },\n}\n\nexport function LayoutItemBody({\n children,\n horizontal = false,\n narrow = false,\n}: {\n children: React.ReactNode\n horizontal?: boolean\n narrow?: boolean\n}) {\n const { wide } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItemBody wide={wide} horizontal={horizontal} narrow={narrow}>\n {children}\n </StyledLayoutItemBody>\n )\n}\n\ninterface StyledLayoutItemBodyProps {\n wide: boolean\n horizontal: boolean\n narrow: boolean\n}\n\nexport const StyledLayoutItemBody = styled.div<StyledLayoutItemBodyProps>`\n padding: ${(p) =>\n p.narrow\n ? `${LAYOUT_ITEM_BODY_PADDING.narrow.yTop}px ${\n p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.narrow.x\n }px ${LAYOUT_ITEM_BODY_PADDING.narrow.yBottom}px`\n : p.wide\n ? `${p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.wide.y}px ${\n LAYOUT_ITEM_BODY_PADDING.wide.x\n }px`\n : `${p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.default.y}px ${\n LAYOUT_ITEM_BODY_PADDING.default.x\n }px`};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: ${(p) =>\n p.narrow\n ? `${LAYOUT_ITEM_BODY_PADDING.narrowColumn1.yTop}px ${\n p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.narrowColumn1.x\n }px ${LAYOUT_ITEM_BODY_PADDING.narrowColumn1.yBottom}px`\n : `${LAYOUT_ITEM_BODY_PADDING.column1.y}px ${\n LAYOUT_ITEM_BODY_PADDING.column1.x\n }px ${0}`};\n }\n\n width: 100%;\n box-sizing: border-box;\n`\n\nexport function useLayoutItemBodyPadding() {\n const { wide } = useContext(LayoutConfigContext)\n return useMediaScreen1()\n ? LAYOUT_ITEM_BODY_PADDING.column1\n : wide\n ? LAYOUT_ITEM_BODY_PADDING.wide\n : LAYOUT_ITEM_BODY_PADDING.default\n}\n\nexport function CancelLayoutItemBodyPadding({\n children,\n cancelTop,\n}: {\n children: React.ReactNode\n cancelTop?: boolean\n}) {\n const { wide } = useContext(LayoutConfigContext)\n\n return (\n <StyledCancelLayoutItemBodyPadding wide={wide} cancelTop={cancelTop}>\n {children}\n </StyledCancelLayoutItemBodyPadding>\n )\n}\n\ninterface StyledCancelLayoutItemBodyPaddingProps {\n wide: boolean\n cancelTop?: boolean\n}\n\nexport const StyledCancelLayoutItemBodyPadding = styled.div<StyledCancelLayoutItemBodyPaddingProps>`\n margin: 0 -${(p) => (p.wide ? LAYOUT_ITEM_BODY_PADDING.wide.x : LAYOUT_ITEM_BODY_PADDING.default.x)}px;\n margin-top: -${({ cancelTop = false, wide }) => (!cancelTop ? 0 : wide ? LAYOUT_ITEM_BODY_PADDING.wide.y : LAYOUT_ITEM_BODY_PADDING.default.y)}px;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin: 0 -${LAYOUT_ITEM_BODY_PADDING.column1.x}px;\n margin-top: -${({ cancelTop = false }) => (!cancelTop ? 0 : LAYOUT_ITEM_BODY_PADDING.column1.x)}px;\n }\n`\n","import { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\n\nexport const MAIN_COLUMN_HORIZONTAL_MIN_MARGIN = 72\n\nexport const RESPONSIVE_LEFT_WIDTH =\n columnSystem(2, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT\nexport const RESPONSIVE_MAIN_MAX_WIDTH = columnSystem(\n 12,\n COLUMN_UNIT,\n GUTTER_UNIT\n)\n","import {\n useCallback,\n useDebugValue,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport { useTheme } from 'styled-components'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ndeclare const __TEST__: object | undefined // actually object|false, but using undefined allows ! assertion\n\ndeclare module 'react-dom' {\n export function flushSync<R>(callback: () => R): R\n}\n\n/**\n * 現在の画面幅がモバイル幅かどうかを返す\n */\nexport function useMediaScreen1() {\n return useMedia(maxWidth(useTheme().breakpoint.screen1))\n}\n\n/**\n * Returns a dynamically-updating media query result.\n *\n * When the media query's matching state changes, this hook's result\n * will update with sync priority.\n *\n * @param query A full media query (the string written between `@media` and the `{` in CSS)\n * @returns true if the query matches, false if it doesn't\n */\nexport function useMedia(query: string) {\n const matcher = useMemo(\n () =>\n __TEST__\n ? {\n matches: false,\n addListener: () => {\n // do nothing\n },\n removeListener: () => {\n // do nothing\n },\n }\n : matchMedia(query),\n [query]\n )\n const [matches, setMatches] = useState<boolean>(matcher.matches)\n\n // can only happen if/when the query changes\n if (matcher.matches !== matches) {\n setMatches(matcher.matches)\n }\n\n const callback = (e: MediaQueryListEvent) => {\n // We're not on a React event listener, so React doesn't know the priority of the setState call\n // Media query updates _are_ very high priority to avoid FOUC\n // so we need to emit a sync priority update\n try {\n // However, flushSync may throw if the matcher is triggered by a\n // forced relayout that happens during a React lifecycle handler.\n // Try to be resilient and retry without flushSync if flushSync throws.\n ReactDOM.flushSync(() => {\n setMatches(e.matches)\n })\n } catch {\n setMatches(e.matches)\n }\n }\n\n useLayoutEffect(() => {\n matcher.addListener(callback)\n // sync update\n setMatches(matcher.matches)\n return () => {\n matcher.removeListener(callback)\n }\n }, [matcher])\n\n useDebugValue(`${query}: ${matches.toString()}`)\n\n return matches\n}\n\nexport interface ElementSize {\n width: number\n height: number\n}\n\nfunction measure(ref: Element | null): ElementSize | undefined {\n return ref !== null ? ref.getBoundingClientRect() : undefined\n}\n\nexport function useElementSize(\n ref: React.RefObject<Element>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n deps: any[] = []\n) {\n // _don't_ call measure synchronously here even if you somehow can\n // measurement has to be done outside the render phase, either\n // as the resize observer callback or as a layout effect\n\n const [size, setSize] = useReducer(\n (\n state: ElementSize | undefined,\n next: ElementSize | undefined\n ): ElementSize | undefined => {\n // width, height, etc are not own properties but getters in the prototype\n // can't use shallowEqual or other iterative checks\n if (state === undefined || next === undefined) {\n return next\n }\n if (state.height === next.height && state.width === next.width) {\n return state\n }\n return next\n },\n undefined\n )\n const [watch, setWatch] = useState<Element | null>(null)\n useLayoutEffect(() => {\n if (watch === null) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n // NOTE: the ResizeObserverCallback receives a rect,\n // but it's not measured in the same way as getBoundingClientRect,\n // which causes unstable layout\n const newSize = measure(watch)\n setSize(newSize)\n })\n\n // The ResizeObserver is supposed to call handleResize on observe\n observer.observe(watch)\n\n return () => {\n // this will correctly unobserve if either the observer\n // or the current changes, and even on unmount\n // no need for an observer.disconnect() 🎉\n observer.unobserve(watch)\n setSize(undefined)\n }\n }, [watch])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useLayoutEffect(() => {\n if (ref.current !== watch) {\n setWatch(ref.current)\n }\n })\n\n useLayoutEffect(() => {\n if (deps.length > 0) {\n // Sync measuring\n setSize(measure(ref.current))\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n useDebugValue(size)\n\n return size\n}\n\n/**\n * Debounce version of setState with `requestAnimationFrame`\n *\n * @param defaultValue Default value for `useState`\n */\nexport function useDebounceAnimationState<T>(defaultValue: T) {\n const [state, setState] = useState(defaultValue)\n const timer = useRef<ReturnType<typeof requestAnimationFrame>>()\n // typescript bug? (any when omitting type annotation)\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n const setDebounceState = useCallback((value: T, force: boolean = false) => {\n if (force) {\n setState(value)\n return\n }\n if (timer.current !== undefined) {\n return\n }\n timer.current = requestAnimationFrame(() => {\n setState(value)\n if (timer.current !== undefined) {\n timer.current = undefined\n }\n })\n }, [])\n return [state, setDebounceState] as [typeof state, typeof setDebounceState]\n}\n","import styled from 'styled-components'\nimport { MenuListLinkItem } from '../MenuListItem'\nimport { useComponentAbstraction } from '../../_lib/ComponentAbstraction'\n\ninterface Props<ID extends string> {\n links: readonly {\n text: string\n to: string\n id: ID\n }[]\n active: ID\n}\n\nexport default function LeftMenu<ID extends string>({\n links,\n active,\n}: Props<ID>) {\n const { Link } = useComponentAbstraction()\n return (\n <Container>\n {links.map((link, index) => (\n <Link to={link.to} key={index}>\n <LinkItem aria-current={link.id === active || undefined}>\n {link.text}\n </LinkItem>\n </Link>\n ))}\n </Container>\n )\n}\n\nexport function LeftMenuContent<ID extends string>({ links }: Props<ID>) {\n return (\n <>\n {links.map((link, index) => (\n <MenuListLinkItem link={link.to} key={index} primary={link.text} />\n ))}\n </>\n )\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`\n\nconst LinkItem = styled.div`\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.color.text3};\n border-radius: 24px;\n font-weight: bold;\n font-size: 14px;\n line-height: 22px;\n padding: 0 16px;\n height: 40px;\n transition: 0.2s color;\n &:hover {\n transition: 0.2s color;\n color: ${({ theme }) => theme.color.text2};\n }\n &[aria-current] {\n color: ${({ theme }) => theme.color.text2};\n background-color: ${({ theme }) => theme.color.surface3};\n }\n`\n","import { useContext } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { theme } from '../../styled'\nimport { TextEllipsis } from '../TextEllipsis'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../_lib/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface MenuListItemContextProps {\n padding: 16 | 24\n}\n\nexport const MenuListItemContext =\n React.createContext<MenuListItemContextProps>({ padding: 24 })\n\nexport interface MenuListItemBaseData {\n primary: string | React.ReactNode // 表示アイテム名(上に表示)\n secondary?: string // 表示アイテム名2(下に表示)\n onClick?: (e: React.MouseEvent) => void\n disabled?: boolean\n gtmClass?: string\n noHover?: boolean\n}\n\ninterface MenuListItemProps extends MenuListItemBaseData {\n children?: React.ReactNode // 右寄せで表示したい要素\n}\n\nexport default function MenuListItem({\n primary,\n secondary,\n onClick,\n disabled = false,\n noHover = false,\n gtmClass,\n children,\n}: MenuListItemProps) {\n const { padding } = useContext(MenuListItemContext)\n\n return (\n <Item\n hasSubLabel={secondary !== undefined}\n onClick={(e) => !disabled && onClick && onClick(e)}\n sidePadding={padding}\n noHover={noHover}\n noClick={onClick === undefined}\n aria-disabled={disabled}\n role={onClick !== undefined ? 'button' : undefined}\n className={gtmClass !== undefined ? `gtm-${gtmClass}` : undefined}\n >\n <Labels>\n <PrimaryText>\n <TextEllipsis lineHeight={22} lineLimit={1}>\n {primary}\n </TextEllipsis>\n </PrimaryText>\n {secondary !== undefined && (\n <SecondaryText>\n <TextEllipsis lineHeight={22} lineLimit={1}>\n {secondary}\n </TextEllipsis>\n </SecondaryText>\n )}\n </Labels>\n {children}\n </Item>\n )\n}\n\ninterface ItemProps {\n hasSubLabel: boolean\n sidePadding: 16 | 24\n noHover: boolean\n noClick: boolean\n}\n\nconst Item = styled.div<ItemProps>`\n display: flex;\n height: ${(p) => (p.hasSubLabel ? 56 : 40)}px;\n align-items: center;\n justify-content: space-between;\n padding: 0 ${(p) => p.sidePadding}px;\n user-select: none;\n cursor: ${(p) => (p.noClick ? 'default' : 'pointer')};\n transition: 0.2s background-color;\n\n &:hover {\n ${(p) =>\n !p.noHover &&\n css`\n background-color: ${({ theme }) => theme.color.surface3};\n `}\n }\n\n ${theme((o) => o.disabled)}\n\n ${disabledSelector} {\n cursor: default;\n pointer-events: none;\n\n &:hover {\n background-color: unset;\n }\n }\n`\n\nconst Labels = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst PrimaryText = styled.div`\n color: ${(p) => p.theme.color.text2};\n line-height: 22px;\n font-size: 14px;\n display: grid;\n`\n\nconst SecondaryText = styled.div`\n color: ${(p) => p.theme.color.text3};\n line-height: 18px;\n font-size: 10px;\n`\n\ninterface MenuListLinkItemProps\n extends MenuListItemBaseData,\n Omit<LinkProps, 'to' | 'onClick' | 'children'> {\n link: string\n children?: React.ReactNode\n}\n\nexport function MenuListLinkItem({\n link,\n onClick,\n disabled = false,\n primary,\n secondary,\n gtmClass,\n noHover,\n children,\n ...linkProps\n}: MenuListLinkItemProps) {\n const { Link } = useComponentAbstraction()\n const props: MenuListItemProps = {\n disabled,\n primary,\n secondary,\n gtmClass,\n noHover,\n children,\n }\n\n return disabled ? (\n <span onClick={onClick}>\n <MenuListItem {...props} />\n </span>\n ) : (\n <A<typeof Link> as={Link} to={link} onClick={onClick} {...linkProps}>\n <MenuListItem onClick={() => void 0} {...props} />\n </A>\n )\n}\n\nconst A = styled.a`\n display: block;\n`\n\ninterface MenuListLinkItemWithIconProps extends MenuListLinkItemProps {\n icon: React.ReactNode\n}\n\ninterface MenuListItemWithIconProps extends MenuListItemProps {\n icon: React.ReactNode\n}\n\nexport function MenuListLinkItemWithIcon({\n icon,\n primary: text,\n ...props\n}: MenuListLinkItemWithIconProps) {\n const primary = (\n <IconContainer>\n <Icon>{icon}</Icon>\n {text}\n </IconContainer>\n )\n return <MenuListLinkItem primary={primary} {...props} />\n}\n\nexport function MenuListItemWithIcon({\n icon,\n primary: text,\n ...props\n}: MenuListItemWithIconProps) {\n const primary = (\n <IconContainer>\n <Icon>{icon}</Icon>\n {text}\n </IconContainer>\n )\n return <MenuListItem primary={primary} {...props} />\n}\n\nconst IconContainer = styled.div`\n display: grid;\n gap: 8px;\n grid-auto-flow: column;\n align-items: center;\n`\n\nconst Icon = styled.div`\n color: ${({ theme }) => theme.color.text3};\n display: flex;\n`\n\nexport const MenuListSpacer = styled.div`\n height: 24px;\n`\n\nexport const MenuListLabel = styled.div`\n padding: 0 16px;\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.color.text3};\n margin-top: -2px;\n margin-bottom: 6px;\n`\n","import styled, { css } from 'styled-components'\nimport { onlyText } from './helper'\n\nexport interface Props {\n lineHeight: number\n lineLimit?: number\n}\n\n/**\n * 複数行のテキストに表示行数制限を設けて`...`で省略する\n */\nexport const TextEllipsis = styled.div.attrs(\n ({ children, title = onlyText(children) }) => ({\n title: title !== '' ? title : undefined,\n })\n)<Props>`\n overflow: hidden;\n line-height: ${(props) => props.lineHeight}px;\n /* For english */\n overflow-wrap: break-word;\n\n ${({ lineLimit = 1, lineHeight }) =>\n lineLimit === 1\n ? css`\n text-overflow: ellipsis;\n white-space: nowrap;\n `\n : css`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: ${lineLimit};\n /* Fallback for -webkit-line-clamp */\n max-height: ${lineHeight * lineLimit}px;\n `}\n`\n","// https://github.com/fernandopasik/react-children-utilities/blob/971d8a0324e6183734d8d1af9a65dbad18ab3d00/src/lib/onlyText.ts\n\nimport {\n Children,\n isValidElement,\n ReactElement,\n ReactNode,\n ReactText,\n} from 'react'\n\nconst hasChildren = (\n element: ReactNode\n): element is ReactElement<{ children: ReactNode[] }> =>\n isValidElement<{ children?: ReactNode[] }>(element) &&\n Boolean(element.props.children)\n\nexport const childToString = (\n // eslint-disable-next-line @typescript-eslint/ban-types\n child?: ReactText | boolean | {} | null\n): string => {\n if (\n typeof child === 'undefined' ||\n child === null ||\n typeof child === 'boolean'\n ) {\n return ''\n }\n\n if (JSON.stringify(child) === '{}') {\n return ''\n }\n\n return (child as string | number).toString()\n}\n\nexport const onlyText = (children: ReactNode): string => {\n if (!Array.isArray(children) && !isValidElement(children)) {\n return childToString(children)\n }\n\n return Children.toArray(children).reduce(\n (text: string, child: ReactNode): string => {\n let newText = ''\n\n if (isValidElement(child) && hasChildren(child)) {\n newText = onlyText(child.props.children)\n } else if (isValidElement(child) && !hasChildren(child)) {\n newText = ''\n } else {\n newText = childToString(child)\n }\n\n return text.concat(newText)\n },\n ''\n )\n}\n","import * as React from 'react'\n\nimport styled, { css } from 'styled-components'\nimport { applyEffect } from '@charcoal-ui/utils'\n\nexport interface Props extends React.ComponentPropsWithoutRef<'input'> {\n gtmClass?: string\n flex?: boolean\n rowReverse?: boolean\n}\n\nexport default React.forwardRef(function SwitchCheckbox(\n {\n gtmClass,\n flex = false,\n rowReverse = false,\n children,\n disabled,\n ...props\n }: Props,\n ref: React.Ref<HTMLInputElement>\n) {\n return (\n <Label\n className={gtmClass !== undefined ? `gtm-${gtmClass}` : ''}\n flex={flex}\n rowReverse={rowReverse}\n aria-disabled={disabled}\n >\n <SwitchOuter>\n <SwitchInput {...props} disabled={disabled} ref={ref} />\n <SwitchInner>\n <SwitchInnerKnob />\n </SwitchInner>\n </SwitchOuter>\n {children != null && (\n <Children rowReverse={rowReverse}>{children}</Children>\n )}\n </Label>\n )\n})\n\nconst Children = styled.span<{ rowReverse: boolean }>`\n ${(p) =>\n p.rowReverse\n ? css`\n margin-right: 8px;\n `\n : css`\n margin-left: 8px;\n `}\n`\n\nconst Label = styled.label<{ flex: boolean; rowReverse: boolean }>`\n display: inline-flex;\n align-items: center;\n ${({ flex }) =>\n flex &&\n css`\n display: flex;\n justify-content: space-between;\n `}\n ${({ rowReverse }) =>\n css`\n flex-direction: ${rowReverse ? 'row-reverse' : 'row'};\n `}\n cursor: pointer;\n outline: 0;\n\n &[aria-disabled='true'] {\n cursor: auto;\n }\n`\n\nconst SwitchOuter = styled.span`\n display: inline-flex;\n position: relative;\n z-index: 0;\n`\n\nconst SwitchInner = styled.div`\n position: relative;\n box-sizing: border-box;\n width: 28px;\n height: 16px;\n border-radius: 16px;\n border: 2px solid transparent;\n background: ${({ theme }) => theme.color.text4};\n transition: box-shadow 0.2s, background-color 0.2s;\n`\n\nconst SwitchInnerKnob = styled.div`\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n background-color: ${({ theme }) => theme.color.text5};\n border-radius: 50%;\n transform: translateX(0);\n transition: transform 0.2s;\n`\n\nconst SwitchInput = styled.input.attrs({\n type: 'checkbox' as string,\n})`\n position: absolute;\n /* NOTE: this is contained by the GraphicCheckboxOuter */\n z-index: 1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n /* just to control the clickable area if used standalone */\n border-radius: 16px;\n opacity: 0;\n appearance: none;\n outline: none;\n cursor: pointer;\n\n &:checked {\n ~ ${SwitchInner} {\n background-color: ${({ theme }) => theme.color.brand};\n\n ${SwitchInnerKnob} {\n transform: translateX(12px);\n }\n }\n }\n\n &:disabled {\n cursor: auto;\n\n ~ ${SwitchInner} {\n opacity: ${({ theme }) => theme.elementEffect.disabled.opacity};\n }\n }\n\n &:not(:disabled):focus {\n ~ ${SwitchInner} {\n box-shadow: 0 0 0 4px\n ${({ theme }) =>\n applyEffect(theme.color.brand, theme.elementEffect.disabled)};\n }\n }\n`\n","import { useRef } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useElementSize } from '../../foundation/hooks'\n\nexport interface Props {\n children?: React.ReactNode\n icon: React.ReactNode\n /**\n * アイコンを表示。デフォルトがtrueなので、非表示にするときに使います。 (アイコン自体の幅を維持します)\n */\n show?: boolean | 'collapse'\n /**\n * アイコンを前にする\n */\n prefix?: boolean\n /**\n * アイコンの高さが文字の高さよりも大きいケースで有効。アイコンの高さをゼロにしてインラインの高さに関与させないようにします。\n */\n fit?: boolean\n /**\n * `fit`と併用した時にのみ有効な最適化オプション。アイコンの幅の自動計算を行わず指定した数値を利用します。\n */\n width?: number\n /**\n * 親要素のサイズに合わせるのではなく、コンテンツのサイズを優先する\n */\n fixed?: boolean\n}\n\nexport default React.memo(function WithIcon({\n children,\n icon,\n show = true,\n prefix: pre = false,\n width,\n fit = false,\n fixed = false,\n}: Props) {\n const node = fit ? (\n width === undefined ? (\n <AutoWidthIconAnchor show={show} pre={pre}>\n {icon}\n </AutoWidthIconAnchor>\n ) : (\n <IconAnchor width={width} show={show} pre={pre}>\n <Icon>{icon}</Icon>\n </IconAnchor>\n )\n ) : (\n <IconAnchorNaive show={show} pre={pre}>\n <IconNaive>{icon}</IconNaive>\n </IconAnchorNaive>\n )\n\n return (\n <Root>\n {pre && node}\n <Text fixed={fixed}>{children}</Text>\n {!pre && node}\n </Root>\n )\n})\n\nconst Root = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst Text = styled.div<{ fixed: boolean }>`\n ${(p) =>\n !p.fixed &&\n css`\n min-width: 0;\n overflow: hidden;\n `}\n white-space: nowrap;\n text-overflow: ellipsis;\n`\n\nfunction AutoWidthIconAnchor({\n children,\n show,\n pre,\n}: {\n children: React.ReactNode\n show: boolean | 'collapse'\n pre: boolean\n}) {\n const ref = useRef<HTMLDivElement>(null)\n // depsを空配列にしないことで初回だけ同期で幅を計算させるテクニック\n const width = useElementSize(ref, [null])?.width ?? 0\n return (\n <IconAnchor width={width} show={show} pre={pre}>\n <Icon ref={ref}>{children}</Icon>\n </IconAnchor>\n )\n}\n\nconst forceCenteringCss = css`\n > svg {\n display: block;\n }\n`\n\nconst iconAnchorCss = css`\n ${(p: { show: boolean | 'collapse'; pre: boolean }) =>\n p.show === 'collapse'\n ? css`\n display: none;\n `\n : css`\n visibility: ${p.show ? 'visible' : 'hidden'};\n `};\n ${(p) =>\n p.pre\n ? css`\n margin-right: 4px;\n `\n : css`\n margin-left: 4px;\n `}\n`\n\nconst IconAnchorNaive = styled.div`\n display: flex;\n align-items: center;\n\n ${iconAnchorCss}\n`\n\nconst IconNaive = styled.div`\n display: inline-flex;\n\n ${forceCenteringCss}\n`\n\nconst IconAnchor = styled.div<{\n width: number\n show: boolean | 'collapse'\n pre: boolean\n}>`\n display: flex;\n position: relative;\n /* Iconをline-heightに関与させない */\n height: 0;\n /* 横方向の領域は確保する */\n width: ${(p) => p.width}px;\n\n ${iconAnchorCss}\n`\n\nconst Icon = styled.div`\n display: inline-flex;\n position: absolute;\n transform: translateY(-50%);\n\n ${forceCenteringCss}\n`\n","import { useEffect, useState, useCallback, useRef } from 'react'\nimport * as React from 'react'\nimport { animated, useSpring } from 'react-spring'\nimport styled, { css } from 'styled-components'\nimport { useDebounceAnimationState } from '../../foundation/hooks'\nimport { passiveEvents, isEdge } from '../../foundation/support'\nimport { useIsomorphicLayoutEffect } from '../../hooks'\nimport CarouselButton, { Direction } from '../CarouselButton'\n\nexport const GRADIENT_WIDTH = 72\n/**\n * カルーセル系のスクロール量の定数\n *\n * @example\n * const scrollAmount = containerElm.clientWidth * SCROLL_AMOUNT_COEF\n */\nexport const SCROLL_AMOUNT_COEF = 0.75\n\ninterface ScrollProps {\n align?: 'center' | 'left' | 'right'\n offset?: number\n}\n\nexport interface CarouselBaseAppearanceProps {\n buttonOffset?: number\n buttonPadding?: number\n bottomOffset?: number\n defaultScroll?: ScrollProps\n}\n\nexport type CarouselGradientProps =\n | { hasGradient?: false }\n | {\n hasGradient: true\n fadeInGradient?: boolean\n }\n\ntype CarouselAppearanceProps = CarouselBaseAppearanceProps &\n CarouselGradientProps\n\ntype Props = CarouselAppearanceProps & {\n onScroll?: (left: number) => void\n onResize?: (width: number) => void\n children: React.ReactNode\n centerItems?: boolean\n onScrollStateChange?: (canScroll: boolean) => void\n scrollAmountCoef?: number\n}\n\nexport interface CarouselHandlerRef {\n resetScroll(): void\n}\n\nexport default function Carousel({\n buttonOffset = 0,\n buttonPadding = 16,\n bottomOffset = 0,\n defaultScroll: { align = 'left', offset: scrollOffset = 0 } = {},\n onScroll,\n onResize,\n children,\n centerItems,\n onScrollStateChange,\n scrollAmountCoef = SCROLL_AMOUNT_COEF,\n ...options\n}: Props) {\n // スクロール位置を保存する\n // アニメーション中の場合は、アニメーション終了時のスクロール位置が保存される\n const [scrollLeft, setScrollLeft] = useDebounceAnimationState(0)\n // アニメーション中かどうか\n const animation = useRef(false)\n // スクロール可能な領域を保存する\n const [maxScrollLeft, setMaxScrollLeft] = useState(0)\n // 左右のボタンの表示状態を保存する\n const [leftShow, setLeftShow] = useState(false)\n const [rightShow, setRightShow] = useState(false)\n\n // const [props, set, stop] = useSpring(() => ({\n // scroll: 0\n // }))\n const [styles, set] = useSpring(() => ({ scroll: 0 }))\n\n const ref = useRef<HTMLDivElement>(null)\n const visibleAreaRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLUListElement>(null)\n\n const handleRight = useCallback(() => {\n if (visibleAreaRef.current === null) {\n return\n }\n const { clientWidth } = visibleAreaRef.current\n // スクロール領域を超えないように、アニメーションを開始\n // アニメーション中にアニメーションが開始されたときに、アニメーション終了予定の位置から再度計算するようにする\n const scroll = Math.min(\n scrollLeft + clientWidth * scrollAmountCoef,\n maxScrollLeft\n )\n setScrollLeft(scroll, true)\n void set({\n scroll,\n from: { scroll: scrollLeft },\n reset: !animation.current,\n })\n animation.current = true\n }, [\n animation,\n maxScrollLeft,\n scrollLeft,\n set,\n scrollAmountCoef,\n setScrollLeft,\n ])\n\n const handleLeft = useCallback(() => {\n if (visibleAreaRef.current === null) {\n return\n }\n const { clientWidth } = visibleAreaRef.current\n const scroll = Math.max(scrollLeft - clientWidth * scrollAmountCoef, 0)\n setScrollLeft(scroll, true)\n void set({\n scroll,\n from: { scroll: scrollLeft },\n reset: !animation.current,\n })\n animation.current = true\n }, [animation, scrollLeft, set, scrollAmountCoef, setScrollLeft])\n\n // スクロール可能な場合にボタンを表示する\n // scrollLeftが変化したときに処理する (アニメーション開始時 & 手動スクロール時)\n useEffect(() => {\n const newLeftShow = scrollLeft > 0\n const newRightShow = scrollLeft < maxScrollLeft && maxScrollLeft > 0\n if (newLeftShow !== leftShow || newRightShow !== rightShow) {\n setLeftShow(newLeftShow)\n setRightShow(newRightShow)\n onScrollStateChange?.(newLeftShow || newRightShow)\n }\n }, [leftShow, maxScrollLeft, onScrollStateChange, rightShow, scrollLeft])\n\n const handleScroll = useCallback(() => {\n if (ref.current === null) {\n return\n }\n // 手動でスクロールが開始されたときにアニメーションを中断\n if (animation.current) {\n styles.scroll.stop()\n animation.current = false\n }\n // スクロール位置を保存 (アニメーションの基準になる)\n const manualScrollLeft = ref.current.scrollLeft\n // 過剰にsetStateが走らないようにdebounceする\n setScrollLeft(manualScrollLeft)\n }, [animation, setScrollLeft, styles])\n\n // リサイズが起きたときに、アニメーション用のスクロール領域 & ボタンの表示状態 を再計算する\n const handleResize = useCallback(() => {\n if (ref.current === null) {\n return\n }\n const { clientWidth, scrollWidth } = ref.current\n const newMaxScrollLeft = scrollWidth - clientWidth\n setMaxScrollLeft(newMaxScrollLeft)\n if (onResize) {\n onResize(clientWidth)\n }\n }, [onResize])\n\n useIsomorphicLayoutEffect(() => {\n const elm = ref.current\n const innerElm = innerRef.current\n if (elm === null || innerElm === null) {\n return\n }\n\n elm.addEventListener(\n 'wheel',\n handleScroll,\n passiveEvents() && { passive: true }\n )\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(elm)\n\n const resizeObserverInner = new ResizeObserver(handleResize)\n resizeObserverInner.observe(innerElm)\n\n return () => {\n elm.removeEventListener('wheel', handleScroll)\n resizeObserver.disconnect()\n resizeObserverInner.disconnect()\n }\n }, [handleResize, handleScroll])\n\n // 初期スクロールを行う\n useIsomorphicLayoutEffect(() => {\n if (align !== 'left' || scrollOffset !== 0) {\n const scroll = ref.current\n if (scroll !== null) {\n const scrollLength = Math.max(\n 0,\n Math.min(\n align === 'left' && scrollOffset > 0\n ? scrollOffset\n : align === 'center'\n ? maxScrollLeft / 2 + scrollOffset\n : align === 'right' && scrollOffset <= maxScrollLeft\n ? maxScrollLeft - scrollOffset / 2\n : 0,\n maxScrollLeft\n )\n )\n scroll.scrollLeft = scrollLength\n setScrollLeft(scrollLength, true)\n }\n }\n }, [ref.current])\n\n const handleScrollMove = useCallback(() => {\n if (ref.current === null) {\n return\n }\n if (onScroll) {\n onScroll(ref.current.scrollLeft)\n }\n }, [onScroll])\n\n const [disableGradient, setDisableGradient] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n if (isEdge()) {\n setDisableGradient(true)\n }\n }, [])\n\n // NOTE: Edgeではmaskを使うと要素のレンダリングがバグる(場合によっては画像が表示されない)のでグラデーションを無効にする\n if (!disableGradient && options.hasGradient === true) {\n const fadeInGradient = options.fadeInGradient ?? false\n const overflowGradient = !fadeInGradient\n return (\n <Container ref={visibleAreaRef}>\n <GradientContainer fadeInGradient={fadeInGradient}>\n <RightGradient>\n <LeftGradient show={overflowGradient || scrollLeft > 0}>\n <ScrollArea\n ref={ref}\n scrollLeft={styles.scroll}\n onScroll={handleScrollMove}\n >\n <CarouselContainer ref={innerRef} centerItems={centerItems}>\n {children}\n </CarouselContainer>\n </ScrollArea>\n </LeftGradient>\n </RightGradient>\n </GradientContainer>\n <ButtonsContainer>\n <CarouselButton\n direction={Direction.Left}\n show={leftShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n gradient={overflowGradient}\n onClick={handleLeft}\n />\n <CarouselButton\n direction={Direction.Right}\n show={rightShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n gradient\n onClick={handleRight}\n />\n </ButtonsContainer>\n </Container>\n )\n }\n\n return (\n <Container ref={visibleAreaRef}>\n <ScrollArea\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref={ref}\n scrollLeft={styles.scroll}\n onScroll={handleScrollMove}\n >\n <CarouselContainer ref={innerRef} centerItems={centerItems}>\n {children}\n </CarouselContainer>\n </ScrollArea>\n <ButtonsContainer>\n <CarouselButton\n direction={Direction.Left}\n show={leftShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n onClick={handleLeft}\n />\n <CarouselButton\n direction={Direction.Right}\n show={rightShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n onClick={handleRight}\n />\n </ButtonsContainer>\n </Container>\n )\n}\n\nconst CarouselContainer = styled.ul<{ centerItems?: boolean }>`\n vertical-align: top;\n overflow: hidden;\n list-style: none;\n padding: 0;\n\n /* 最小幅を100%にして親要素にぴったりくっつけることで子要素で要素を均等に割り付けるなどを出来るようにしてある */\n min-width: 100%;\n box-sizing: border-box;\n\n ${({ centerItems = false }) =>\n centerItems\n ? css`\n display: flex;\n width: max-content;\n margin: 0 auto;\n `\n : css`\n display: inline-flex;\n margin: 0;\n `}\n`\n\nconst ButtonsContainer = styled.div`\n opacity: 0;\n transition: 0.4s opacity;\n`\nconst Container = styled.div`\n &:hover ${ButtonsContainer} {\n opacity: 1;\n }\n\n /* CarouselButtonの中にz-index:1があるのでここでコンテキストを切る */\n position: relative;\n z-index: 0;\n`\n\nconst ScrollArea = styled(animated.div)`\n overflow-x: auto;\n padding: 0;\n margin: 0;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n scrollbar-width: none;\n`\n\nconst GradientContainer = styled.div<{ fadeInGradient: boolean }>`\n /* NOTE: LeftGradientがはみ出るためhidden */\n overflow: hidden;\n ${(p) =>\n !p.fadeInGradient &&\n css`\n margin-left: ${-GRADIENT_WIDTH}px;\n ${CarouselContainer} {\n padding-left: ${GRADIENT_WIDTH}px;\n }\n `}\n\n margin-right: ${-GRADIENT_WIDTH}px;\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${CarouselContainer} {\n padding-right: ${GRADIENT_WIDTH}px;\n }\n`\n\nconst RightGradient = styled.div`\n mask-image: linear-gradient(\n to right,\n #000 calc(100% - ${GRADIENT_WIDTH}px),\n transparent\n );\n`\n\nconst LeftGradient = styled.div<{ show: boolean }>`\n /* NOTE: mask-position が left → negative px の時、right → abs(negative px) の位置に表示されるため */\n margin-right: ${-GRADIENT_WIDTH}px;\n padding-right: ${GRADIENT_WIDTH}px;\n /* NOTE: mask-position に transition をつけたいが vender prefixes 対策で all につける */\n transition: 0.2s all ease-in;\n mask: linear-gradient(to right, transparent, #000 ${GRADIENT_WIDTH}px)\n ${(p) => (p.show ? 0 : -GRADIENT_WIDTH)}px 0;\n`\n","var passiveEventsResult: boolean | undefined // eslint-disable-line no-var\nexport function passiveEvents(): boolean {\n if (passiveEventsResult !== undefined) {\n return passiveEventsResult\n }\n\n passiveEventsResult = false\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n return (passiveEventsResult = true)\n },\n })\n\n window.addEventListener('test', test, options)\n window.removeEventListener('test', test)\n } catch {\n // test fail\n }\n\n return passiveEventsResult\n\n function test() {\n /* empty */\n }\n}\n\nexport const isEdge = () => navigator.userAgent.includes('Edge/')\n","import { useLayoutEffect, useEffect } from 'react'\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import styled, { css } from 'styled-components'\nimport { unreachable } from '../../foundation/utils'\nimport NextIcon, { WedgeDirection } from '../icons/NextIcon'\nimport { applyEffect } from '@charcoal-ui/utils'\n\nexport enum Direction {\n Right = 'right',\n Left = 'left',\n}\n\ninterface Props {\n direction: Direction\n show: boolean\n offset?: number\n padding?: number\n bottomOffset?: number\n gradient?: boolean\n onClick(): void\n}\n\nexport default function CarouselButton({\n direction,\n show,\n offset = 0,\n padding = 0,\n bottomOffset: bottom = 0,\n gradient = false,\n onClick,\n}: Props) {\n const offsetStyle =\n direction === Direction.Left\n ? {\n left: gradient ? offset - 72 : offset,\n paddingLeft: Math.max(padding, 0),\n paddingBottom: bottom,\n }\n : {\n right: gradient ? offset - 72 : offset,\n paddingRight: Math.max(padding, 0),\n paddingBottom: bottom,\n }\n return (\n <Button\n type=\"button\"\n onClick={onClick}\n hide={!show}\n style={offsetStyle}\n css={onlyNonTouchDevice}\n >\n <CarouselButtonIcon>\n <NextIcon\n direction={\n direction === Direction.Right\n ? WedgeDirection.Right\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n direction === Direction.Left\n ? WedgeDirection.Left\n : unreachable()\n }\n />\n </CarouselButtonIcon>\n </Button>\n )\n}\n\nexport const CAROUSEL_BUTTON_SIZE = 40\n\nconst CarouselButtonIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${CAROUSEL_BUTTON_SIZE}px;\n height: ${CAROUSEL_BUTTON_SIZE}px;\n border-radius: 50%;\n background-color: ${({ theme }) => theme.color.surface4};\n transition: 0.4s visibility, 0.4s opacity, 0.2s background-color, 0.2s color;\n color: ${({ theme }) => theme.color.text5};\n`\n\nconst Button = styled.button<{ hide: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n padding: 0;\n min-width: 40px;\n border: none;\n outline: 0;\n background: transparent;\n cursor: pointer;\n transition: 0.4s visibility, 0.4s opacity;\n /* つらい */\n /* このコンポーネントはCarouselでしか使われてないのでそっちでコンテキストで切る */\n z-index: 1;\n\n &:hover ${CarouselButtonIcon} {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.hover)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.hover)};\n }\n\n &:active ${CarouselButtonIcon} {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.press)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.press)};\n }\n\n ${(p) =>\n p.hide &&\n css`\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n `}\n`\n\nexport function ScrollHintButton({\n direction,\n onClick,\n}: {\n direction: Direction\n onClick(): void\n}) {\n return (\n <ScrollHintIcon onClick={onClick}>\n <NextIcon\n direction={\n direction === Direction.Right\n ? WedgeDirection.Right\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n direction === Direction.Left\n ? WedgeDirection.Left\n : unreachable()\n }\n />\n </ScrollHintIcon>\n )\n}\n\nconst ScrollHintIcon = styled(CarouselButtonIcon)`\n cursor: pointer;\n\n &:hover {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.hover)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.hover)};\n }\n\n &:active {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.press)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.press)};\n }\n`\n\nconst onlyNonTouchDevice = css`\n @media (hover: none) and (pointer: coarse) {\n display: none;\n }\n`\n","/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n","import { unreachable } from '../../foundation/utils'\nimport IconBase from './Base'\n\nexport enum WedgeDirection {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\nconst path = `M8.08579 16.5858C7.30474 17.3668 7.30474 18.6332 8.08579 19.4142C8.86684 20.1953 10.1332 20.1953 10.9142 19.4142L18.3284 12L10.9142 4.58579C10.1332 3.80474 8.86684 3.80474 8.08579 4.58579C7.30474 5.36684 7.30474 6.63317 8.08579 7.41421L12.6716 12L8.08579 16.5858Z`\nconst size = 24\n\ninterface Props {\n direction: WedgeDirection\n}\n\nexport default function NextIcon({ direction }: Props) {\n const transform = directionToTransform(direction)\n return (\n <IconBase\n viewBoxSize={size}\n size={size}\n currentColor\n path={path}\n transform={transform}\n />\n )\n}\n\nfunction directionToTransform(direction: WedgeDirection) {\n // \"5 4\" is the center point of the \"0 0 10 8\" viewBox\n switch (direction) {\n case WedgeDirection.Up:\n return 'rotate(270 12 12)'\n case WedgeDirection.Down:\n return 'rotate(90 12 12)'\n case WedgeDirection.Left:\n return 'rotate(180 12 12)'\n case WedgeDirection.Right:\n return undefined\n default:\n return unreachable(direction)\n }\n}\n","import { memo, useCallback, useDebugValue, useMemo } from 'react'\n\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport DotsIcon from '../icons/DotsIcon'\nimport WedgeIcon, { WedgeDirection } from '../icons/WedgeIcon'\nimport { useComponentAbstraction } from '../../_lib/ComponentAbstraction'\n\nfunction usePagerWindow(\n page: number,\n pageCount: number,\n pageRangeDisplayed = 7\n) {\n // ページャーのリンク生成例:\n //\n // < [ 1 ] [*2*] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] >\n //\n // < [ 1 ] [ 2 ] [ 3 ] [*4*] [ 5 ] [ 6 ] [ 7 ] >\n //\n // < [ 1 ] ... [ 4 ] [*5*] [ 6 ] [ 7 ] [ 8 ] >\n //\n // < [ 1 ] ... [ 99 ] [*100*] [ 101 ] [ 102 ] [ 103 ] >\n //\n // < [ 1 ] ... [ 99 ] [ 100 ] [ 101 ] [ 102 ] [*103*]\n //\n // [*1*] [ 2 ] >\n //\n // デザインの意図: 前後移動時のカーソル移動を最小限にする。\n\n if (process.env.NODE_ENV !== 'production') {\n warning((page | 0) === page, `\\`page\\` must be integer (${page})`)\n warning(\n (pageCount | 0) === pageCount,\n `\\`pageCount\\` must be integer (${pageCount})`\n )\n warning(\n (pageRangeDisplayed | 0) === pageRangeDisplayed,\n `\\`pageRangeDisplayed\\` must be integer (${pageRangeDisplayed})`\n )\n warning(pageRangeDisplayed > 2, `\\`windowSize\\` must be greater than 2`)\n }\n\n const window = useMemo(() => {\n const visibleFirstPage = 1\n const visibleLastPage = Math.min(\n pageCount,\n Math.max(page + Math.floor(pageRangeDisplayed / 2), pageRangeDisplayed)\n )\n\n if (visibleLastPage <= pageRangeDisplayed) {\n // 表示範囲が1-7ページなら省略は無い。\n return Array.from(\n { length: 1 + visibleLastPage - visibleFirstPage },\n (_, i) => visibleFirstPage + i\n )\n } else {\n const start = visibleLastPage - (pageRangeDisplayed - 1) + 2\n return [\n // 表示範囲が1-7ページを超えるなら、\n // - 1ページ目は固定で表示する\n visibleFirstPage,\n // - 2ページ目から現在のページの直前までは省略する\n '...' as const,\n ...Array.from(\n { length: 1 + visibleLastPage - start },\n (_, i) => start + i\n ),\n ]\n }\n }, [page, pageCount, pageRangeDisplayed])\n\n useDebugValue(window)\n\n return window\n}\n\ninterface CommonProps {\n page: number\n pageCount: number\n pageRangeDisplayed?: number\n}\n\nexport interface PagerProps extends CommonProps {\n onChange(newPage: number): void\n}\n\n// this pager is just regular buttons; for links use LinkPager\nexport default memo(function Pager({\n page,\n pageCount,\n pageRangeDisplayed,\n onChange,\n}: PagerProps) {\n // TODO: refactor Pager and LinkPager to use a common parent component\n const window = usePagerWindow(page, pageCount, pageRangeDisplayed)\n const makeClickHandler = useCallback(\n (value: number) => () => {\n onChange(value)\n },\n [onChange]\n )\n\n const hasNext = page < pageCount\n const hasPrev = page > 1\n return (\n <PagerContainer>\n <CircleButton\n type=\"button\"\n hidden={!hasPrev}\n disabled={!hasPrev}\n onClick={makeClickHandler(Math.max(1, page - 1))}\n noBackground\n >\n <WedgeIcon size={16} direction={WedgeDirection.Left} />\n </CircleButton>\n {window.map((p) =>\n p === '...' ? (\n <Spacer key={p}>\n <DotsIcon size={20} />\n </Spacer>\n ) : p === page ? (\n // we remove the onClick but don't mark it as disabled to preserve keyboard focus\n // not doing so causes the focus ring to flicker in and out of existence\n <CircleButton key={p} type=\"button\" aria-current>\n <Text>{p}</Text>\n </CircleButton>\n ) : (\n <CircleButton key={p} type=\"button\" onClick={makeClickHandler(p)}>\n <Text>{p}</Text>\n </CircleButton>\n )\n )}\n <CircleButton\n type=\"button\"\n hidden={!hasNext}\n disabled={!hasNext}\n onClick={makeClickHandler(Math.min(pageCount, page + 1))}\n noBackground\n >\n <WedgeIcon size={16} direction={WedgeDirection.Right} />\n </CircleButton>\n </PagerContainer>\n )\n})\n\nexport interface LinkPagerProps extends CommonProps {\n makeUrl(page: number): string\n}\n\nexport function LinkPager({\n page,\n pageCount,\n pageRangeDisplayed,\n makeUrl,\n}: LinkPagerProps) {\n const { Link } = useComponentAbstraction()\n const window = usePagerWindow(page, pageCount, pageRangeDisplayed)\n\n const hasNext = page < pageCount\n const hasPrev = page > 1\n return (\n <PagerContainer>\n <Link to={makeUrl(Math.max(1, page - 1))}>\n <CircleButton hidden={!hasPrev} aria-disabled={!hasPrev} noBackground>\n <WedgeIcon size={16} direction={WedgeDirection.Left} />\n </CircleButton>\n </Link>\n {window.map((p) =>\n p === '...' ? (\n <Spacer key={p}>\n <DotsIcon size={20} subLink />\n </Spacer>\n ) : p === page ? (\n <CircleButton key={p} type=\"button\" aria-current>\n <Text>{p}</Text>\n </CircleButton>\n ) : (\n <Link key={p} to={makeUrl(p)}>\n <CircleButton type=\"button\">\n <Text>{p}</Text>\n </CircleButton>\n </Link>\n )\n )}\n <Link to={makeUrl(Math.min(pageCount, page + 1))}>\n <CircleButton hidden={!hasNext} aria-disabled={!hasNext} noBackground>\n <WedgeIcon size={16} direction={WedgeDirection.Right} />\n </CircleButton>\n </Link>\n </PagerContainer>\n )\n}\n\nconst PagerContainer = styled.nav`\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst CircleButton = styled.button`\n font-size: 1rem;\n line-height: calc(1em + 8px);\n text-decoration: none;\n border: none;\n outline: none;\n touch-action: manipulation;\n user-select: none;\n transition: box-shadow 0.2s ease 0s, color 0.2s ease 0s,\n background 0.2s ease 0s, opacity 0.2s ease 0s;\n\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: content-box;\n min-width: 24px;\n min-height: 24px;\n padding: 8px;\n cursor: pointer;\n font-weight: bold;\n /* HACK:\n * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.\n * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.\n */\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-transform: translateZ(0);\n\n &[hidden] {\n visibility: hidden;\n display: block;\n }\n\n border-radius: 48px;\n\n background: transparent;\n color: ${({ theme }) => theme.color.text3};\n\n &:hover {\n background: ${({ theme }) => theme.color.surface3};\n color: ${({ theme }) => theme.color.text2};\n }\n\n &[aria-current] {\n background-color: ${({ theme }) => theme.color.surface6};\n color: ${({ theme }) => theme.color.text5};\n }\n\n &[aria-current]:hover {\n background-color: ${({ theme }) => theme.color.surface6};\n color: ${({ theme }) => theme.color.text5};\n }\n\n ${({ noBackground = false }: { noBackground?: boolean }) =>\n noBackground &&\n css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n &:hover {\n background: transparent;\n }\n `}\n`\n\nconst Spacer = styled(CircleButton).attrs({ type: 'button', disabled: true })`\n && {\n color: ${({ theme }) => theme.color.text3};\n background: none;\n }\n`\n\nconst Text = 'span'\n","import styled from 'styled-components'\n\ninterface Props {\n size?: number | string\n subLink?: boolean\n}\n\nexport { DotsIcon as default }\n\nfunction DotsIcon({ size }: Props) {\n return (\n <StyledSVG viewBox=\"0 0 20 6\" width={size} height={size}>\n <path\n fillRule=\"evenodd\"\n d={`M5,14.5 C3.61928813,14.5 2.5,13.3807119 2.5,12 C2.5,10.6192881 3.61928813,9.5 5,9.5\n C6.38071187,9.5 7.5,10.6192881 7.5,12 C7.5,13.3807119 6.38071187,14.5 5,14.5 Z M12,14.5\n C10.6192881,14.5 9.5,13.3807119 9.5,12 C9.5,10.6192881 10.6192881,9.5 12,9.5\n C13.3807119,9.5 14.5,10.6192881 14.5,12 C14.5,13.3807119 13.3807119,14.5 12,14.5 Z M19,14.5\n C17.6192881,14.5 16.5,13.3807119 16.5,12 C16.5,10.6192881 17.6192881,9.5 19,9.5\n C20.3807119,9.5 21.5,10.6192881 21.5,12 C21.5,13.3807119 20.3807119,14.5 19,14.5 Z`}\n transform=\"translate(-2 -9)\"\n />\n </StyledSVG>\n )\n}\nDotsIcon.defaultProps = {\n size: 16,\n}\n\nconst StyledSVG = styled.svg`\n fill: currentColor;\n`\n","import styled from 'styled-components'\n\nimport { unreachable } from '../../foundation/utils'\n\nexport enum WedgeDirection {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\ninterface Props {\n size?: number | string\n direction: WedgeDirection\n}\n\nexport default function WedgeIcon({ size, direction }: Props) {\n return (\n // NOTE: directionToTransform depends on the value of viewBox\n <svg viewBox=\"0 0 10 8\" width={size} height={size}>\n <StyledPolyline\n strokeWidth=\"2\"\n points=\"1,2 5,6 9,2\"\n transform={directionToTransform(direction)}\n />\n </svg>\n )\n}\nWedgeIcon.defaultProps = {\n size: 16,\n white: false,\n lightGray: false,\n}\n\nfunction directionToTransform(direction: WedgeDirection) {\n // \"5 4\" is the center point of the \"0 0 10 8\" viewBox\n switch (direction) {\n case WedgeDirection.Up:\n return 'rotate(180 5 4)'\n case WedgeDirection.Down:\n return undefined\n case WedgeDirection.Left:\n return 'rotate(90 5 4)'\n case WedgeDirection.Right:\n return 'rotate(-90 5 4)'\n default:\n return unreachable(direction)\n }\n}\n\nconst StyledPolyline = styled.polyline`\n fill: none;\n stroke-linejoin: round;\n stroke-linecap: round;\n stroke: currentColor;\n`\n"],"mappings":"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","names":["React","DefaultLink","forwardRef","to","children","rest","ref","DefaultValue","Link","ComponentAbstractionContext","createContext","components","useComponentAbstraction","useContext","import_jsx_runtime","FilterButton","forwardRef","onClick","children","active","hover","reactive","ref","undefined","FilterIconButton","width","height","FilterLink","props","Link","useComponentAbstraction","buttonCss","css","theme","color","text3","text2","surface3","maxWidth","breakpoint","screen1","padding0Css","ButtonLike","styled","button","withConfig","componentId","PlainElement","span","StyledButtonLike","p","buttonWidth","buttonHeight","Filter","div","import_styled_components","import_styled_components","theme","createTheme","styled","import_styled_components","import_styled_components","import_jsx_runtime","size","viewBoxSize","currentColor","path","transform","fillRule","clipRule","Icon","styled","svg","withConfig","componentId","theme","color","text2","props","IconBasePath","import_jsx_runtime","size","path","Path","styled","withConfig","componentId","theme","color","surface1","import_utils","import_jsx_runtime","children","context","className","Container","styled","div","attrs","styledProps","withConfig","componentId","p","theme","o","bg","surface3","borderRadius","padding","vertical","default","horizontal","t","maxWidth","breakpoint","screen1","css","IconWrap","color","text4","Text","font","text2","typography","props","contextToProps","import_react","React","import_styled_components","MAIN_COLUMN_HORIZONTAL_MIN_MARGIN","RESPONSIVE_LEFT_WIDTH","columnSystem","COLUMN_UNIT","GUTTER_UNIT","RESPONSIVE_MAIN_MAX_WIDTH","import_react","import_styled_components","import_utils","useMediaScreen1","useMedia","maxWidth","useTheme","breakpoint","screen1","query","matcher","useMemo","__TEST__","matches","addListener","removeListener","matchMedia","setMatches","useState","callback","e","ReactDOM","flushSync","useLayoutEffect","useDebugValue","toString","measure","ref","getBoundingClientRect","undefined","useElementSize","deps","size","setSize","useReducer","state","next","height","width","watch","setWatch","observer","ResizeObserver","newSize","observe","unobserve","current","length","useDebounceAnimationState","defaultValue","setState","timer","useRef","setDebounceState","useCallback","value","force","requestAnimationFrame","import_foundation","import_utils","import_jsx_runtime","LayoutConfigContext","createContext","wide","center","withLeft","menu","children","header","isHeaderTopMenu","config","HeaderTopMenuContainer","styled","div","withConfig","componentId","theme","maxWidth","breakpoint","screen1","color","surface2","GlobalStyle","createGlobalStyle","background2","background1","LayoutRoot","LeftArea","RESPONSIVE_LEFT_WIDTH","GUTTER_UNIT","screen3","MainArea","p","columnSystem","COLUMN_UNIT","RESPONSIVE_MAIN_MAX_WIDTH","MAIN_COLUMN_HORIZONTAL_MIN_MARGIN","Header","text2","Grid","LayoutItem","forwardRef","span","ref","useContext","StyledLayoutItem","screen4","css","LayoutItemHeader","StyledLayoutItemHeader","LAYOUT_ITEM_BODY_PADDING","x","y","default","column1","narrow","yTop","yBottom","narrowColumn1","LayoutItemBody","horizontal","StyledLayoutItemBody","useLayoutItemBodyPadding","useMediaScreen1","CancelLayoutItemBodyPadding","cancelTop","StyledCancelLayoutItemBodyPadding","import_styled_components","import_react","React","import_styled_components","import_styled_components","import_react","hasChildren","element","isValidElement","Boolean","props","children","childToString","child","JSON","stringify","toString","onlyText","Array","isArray","Children","toArray","reduce","text","newText","concat","TextEllipsis","styled","div","attrs","children","title","onlyText","undefined","withConfig","componentId","props","lineHeight","lineLimit","css","import_utils","import_jsx_runtime","MenuListItemContext","createContext","padding","primary","secondary","onClick","disabled","noHover","gtmClass","children","useContext","undefined","e","Item","styled","div","withConfig","componentId","p","hasSubLabel","sidePadding","noClick","css","theme","color","surface3","o","disabledSelector","Labels","PrimaryText","text2","SecondaryText","text3","MenuListLinkItem","link","linkProps","Link","useComponentAbstraction","props","A","a","MenuListLinkItemWithIcon","icon","text","Icon","MenuListItemWithIcon","IconContainer","MenuListSpacer","MenuListLabel","import_jsx_runtime","links","active","Link","useComponentAbstraction","Container","map","link","index","to","id","undefined","text","LeftMenuContent","styled","div","withConfig","componentId","LinkItem","theme","color","text3","text2","surface3","React","import_styled_components","import_utils","import_jsx_runtime","forwardRef","SwitchCheckbox","gtmClass","flex","rowReverse","children","disabled","props","ref","undefined","Children","styled","span","withConfig","componentId","p","css","Label","label","SwitchOuter","SwitchInner","div","theme","color","text4","SwitchInnerKnob","text5","SwitchInput","input","attrs","type","brand","elementEffect","opacity","applyEffect","import_react","React","import_styled_components","import_jsx_runtime","memo","WithIcon","children","icon","show","prefix","pre","width","fit","fixed","node","undefined","Icon","Text","Root","styled","div","withConfig","componentId","p","css","AutoWidthIconAnchor","ref","useRef","useElementSize","forceCenteringCss","iconAnchorCss","IconAnchorNaive","IconNaive","IconAnchor","import_react","import_styled_components","passiveEventsResult","passiveEvents","undefined","options","Object","defineProperty","get","window","addEventListener","test","removeEventListener","isEdge","navigator","userAgent","includes","import_react","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","import_styled_components","unreachable","value","Error","arguments","length","JSON","stringify","import_jsx_runtime","path","size","direction","transform","directionToTransform","WedgeDirection","undefined","unreachable","import_utils","import_jsx_runtime","direction","show","offset","padding","bottomOffset","bottom","gradient","onClick","offsetStyle","Direction","left","paddingLeft","Math","max","paddingBottom","right","paddingRight","unreachable","CAROUSEL_BUTTON_SIZE","CarouselButtonIcon","styled","div","withConfig","componentId","theme","color","surface4","text5","Button","button","applyEffect","effect","hover","press","p","hide","css","_StyledButton","onlyNonTouchDevice","ScrollHintIcon","styled","CarouselButtonIcon","withConfig","componentId","theme","applyEffect","color","surface4","effect","hover","text5","press","onlyNonTouchDevice","css","import_jsx_runtime","GRADIENT_WIDTH","SCROLL_AMOUNT_COEF","buttonOffset","buttonPadding","bottomOffset","defaultScroll","align","offset","scrollOffset","onScroll","onResize","children","centerItems","onScrollStateChange","scrollAmountCoef","options","scrollLeft","setScrollLeft","useDebounceAnimationState","animation","useRef","maxScrollLeft","setMaxScrollLeft","useState","leftShow","setLeftShow","rightShow","setRightShow","styles","set","useSpring","scroll","ref","visibleAreaRef","innerRef","handleRight","useCallback","current","clientWidth","Math","min","from","reset","handleLeft","max","useEffect","newLeftShow","newRightShow","handleScroll","stop","manualScrollLeft","handleResize","scrollWidth","newMaxScrollLeft","useIsomorphicLayoutEffect","elm","innerElm","addEventListener","passiveEvents","passive","resizeObserver","ResizeObserver","observe","resizeObserverInner","removeEventListener","disconnect","scrollLength","handleScrollMove","disableGradient","setDisableGradient","isEdge","hasGradient","fadeInGradient","overflowGradient","Container","CarouselContainer","styled","ul","withConfig","componentId","css","ButtonsContainer","div","ScrollArea","animated","GradientContainer","p","RightGradient","LeftGradient","show","import_react","import_styled_components","import_styled_components","import_jsx_runtime","DotsIcon","size","defaultProps","StyledSVG","styled","svg","withConfig","componentId","import_styled_components","import_jsx_runtime","size","direction","directionToTransform","WedgeIcon","defaultProps","white","lightGray","WedgeDirection","undefined","unreachable","StyledPolyline","styled","polyline","withConfig","componentId","import_jsx_runtime","usePagerWindow","page","pageCount","pageRangeDisplayed","process","env","NODE_ENV","warning","window","useMemo","visibleFirstPage","visibleLastPage","Math","min","max","floor","Array","from","length","_","i","start","useDebugValue","memo","Pager","onChange","makeClickHandler","useCallback","value","hasNext","hasPrev","map","p","Text","LinkPager","makeUrl","Link","useComponentAbstraction","PagerContainer","styled","nav","withConfig","componentId","CircleButton","button","theme","color","text3","surface3","text2","surface6","text5","noBackground","css","Spacer","attrs","type","disabled"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/Filter/index.tsx","../src/_lib/ComponentAbstraction.tsx","../src/components/HintText/index.tsx","../src/styled.ts","../src/components/icons/InfoIcon.tsx","../src/components/icons/Base.tsx","../src/components/Layout/index.tsx","../src/foundation/constants.ts","../src/foundation/hooks.ts","../src/components/LeftMenu/index.tsx","../src/components/MenuListItem/index.tsx","../src/components/TextEllipsis/index.tsx","../src/components/TextEllipsis/helper.ts","../src/components/SwitchCheckbox/index.tsx","../src/components/WithIcon/index.tsx","../src/components/Carousel/index.tsx","../src/foundation/support.ts","../src/hooks/index.ts","../src/components/CarouselButton/index.tsx","../src/foundation/utils.ts","../src/components/icons/NextIcon.tsx","../src/components/Pager/index.tsx","../src/components/icons/DotsIcon.tsx","../src/components/icons/WedgeIcon.tsx"],"sourcesContent":["export {\n default as Filter,\n FilterButton,\n FilterIconButton,\n FilterLink,\n} from './components/Filter'\nexport { default as HintText } from './components/HintText'\nexport {\n default as Layout,\n CancelLayoutItemBodyPadding,\n LAYOUT_ITEM_BODY_PADDING,\n LayoutItem,\n LayoutItemBody,\n LayoutItemHeader,\n StyledCancelLayoutItemBodyPadding,\n StyledLayoutItemBody,\n useLayoutItemBodyPadding,\n} from './components/Layout'\nexport { default as LeftMenu, LeftMenuContent } from './components/LeftMenu'\nexport {\n default as MenuListItem,\n type MenuListItemBaseData,\n MenuListItemContext,\n MenuListItemWithIcon,\n MenuListLabel,\n MenuListLinkItem,\n MenuListLinkItemWithIcon,\n MenuListSpacer,\n} from './components/MenuListItem'\nexport { default as SwitchCheckbox } from './components/SwitchCheckbox'\nexport { TextEllipsis } from './components/TextEllipsis'\nexport { default as WithIcon } from './components/WithIcon'\nexport {\n default as ComponentAbstraction,\n useComponentAbstraction,\n type LinkProps,\n} from './_lib/ComponentAbstraction'\nexport {\n MAIN_COLUMN_HORIZONTAL_MIN_MARGIN,\n RESPONSIVE_LEFT_WIDTH,\n RESPONSIVE_MAIN_MAX_WIDTH,\n} from './foundation/constants'\nexport { default as Carousel } from './components/Carousel'\nexport { useElementSize, useMedia, useMediaScreen1 } from './foundation/hooks'\nexport { default as Pager, LinkPager } from './components/Pager'\n","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../_lib/ComponentAbstraction'\n\ninterface Props<T extends HTMLElement> {\n active?: boolean\n hover?: boolean\n reactive?: boolean\n children: React.ReactNode\n onClick?: React.MouseEventHandler<T>\n}\n\ninterface FilterIconButtonProps extends Props<HTMLButtonElement> {\n width?: number\n height?: number\n}\n\nexport const FilterButton = React.forwardRef(function FilterButton(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n }: Props<HTMLButtonElement>,\n ref: React.Ref<HTMLButtonElement>\n) {\n return (\n <ButtonLike\n active={active}\n reactive={reactive}\n hover={hover}\n onClick={active && !reactive ? undefined : onClick}\n ref={ref}\n >\n {children}\n </ButtonLike>\n )\n})\n\nexport const FilterIconButton = React.forwardRef(function FilterIconButton(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n width,\n height,\n }: FilterIconButtonProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n return (\n <StyledButtonLike\n active={active}\n reactive={reactive}\n hover={hover}\n onClick={active && !reactive ? undefined : onClick}\n ref={ref}\n buttonWidth={width}\n buttonHeight={height}\n >\n {children}\n </StyledButtonLike>\n )\n})\n\nexport const FilterLink = React.forwardRef(function FilterLink(\n {\n onClick,\n children,\n active = false,\n hover,\n reactive = false,\n ...props\n }: Props<HTMLAnchorElement> & LinkProps,\n ref: React.Ref<HTMLAnchorElement>\n) {\n const { Link } = useComponentAbstraction()\n if (active && !reactive) {\n return (\n <PlainElement active hover={hover} ref={ref}>\n {children}\n </PlainElement>\n )\n } else {\n return (\n <Link {...props} onClick={onClick}>\n <PlainElement\n active={active}\n reactive={reactive}\n hover={hover}\n ref={ref}\n >\n {children}\n </PlainElement>\n </Link>\n )\n }\n})\n\ninterface ButtonCssProps {\n active?: boolean\n hover?: boolean\n reactive?: boolean\n}\n\nconst buttonCss = css<ButtonCssProps>`\n display: block;\n outline: none;\n border: none;\n padding: 9px 24px;\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n border-radius: /* absurd radius, but ensures rounded corners */ 2000px;\n transition: color 0.2s;\n color: ${({ theme }) => theme.color.text3};\n cursor: pointer;\n user-select: none;\n background-color: transparent;\n\n &:hover {\n color: ${({ theme }) => theme.color.text2};\n }\n\n ${({ hover = false }) =>\n hover &&\n css`\n color: ${({ theme }) => theme.color.text2};\n `}\n\n ${({ active = false }) =>\n active &&\n css`\n background-color: ${({ theme }) => theme.color.surface3};\n color: ${({ theme }) => theme.color.text2};\n `}\n\n ${({ active = false, reactive = false }) =>\n active &&\n !reactive &&\n css`\n cursor: default;\n `}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 5px 16px;\n }\n`\n\nconst padding0Css = css`\n padding: 0;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 0;\n }\n`\n\nconst ButtonLike = styled.button<ButtonCssProps>`\n ${buttonCss}\n`\n\nconst PlainElement = styled.span<ButtonCssProps>`\n ${buttonCss}\n`\n\ntype StyledButtonLikeProps = {\n buttonWidth: number | undefined\n buttonHeight: number | undefined\n}\nconst StyledButtonLike = styled(ButtonLike)<StyledButtonLikeProps>`\n ${padding0Css};\n ${(p) => p.buttonWidth !== undefined && `width: ${p.buttonWidth}px;`}\n ${(p) => p.buttonHeight !== undefined && `height: ${p.buttonHeight}px;`}\n`\n\nconst Filter = styled.div`\n display: flex;\n`\n\nexport default Filter\n","import { useContext } from 'react'\nimport * as React from 'react'\n\nexport type LinkProps = {\n /**\n * リンクのURL\n */\n to: string\n} & Omit<React.ComponentPropsWithoutRef<'a'>, 'href'>\n\nexport const DefaultLink = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function DefaultLink({ to, children, ...rest }, ref) {\n return (\n <a href={to} ref={ref} {...rest}>\n {children}\n </a>\n )\n }\n)\n\ntype DefaultLinkProps = LinkProps & React.RefAttributes<HTMLAnchorElement>\nexport interface Components {\n Link: React.ComponentType<React.PropsWithoutRef<DefaultLinkProps>>\n}\n\nconst DefaultValue: Components = {\n Link: DefaultLink,\n}\n\nconst ComponentAbstractionContext = React.createContext(DefaultValue)\n\ninterface Props {\n children: React.ReactNode\n components: Partial<Components>\n}\n\nexport default function ComponentAbstraction({ children, components }: Props) {\n return (\n <ComponentAbstractionContext.Provider\n value={{ ...DefaultValue, ...components }}\n >\n {children}\n </ComponentAbstractionContext.Provider>\n )\n}\n\nexport function useComponentAbstraction() {\n return useContext(ComponentAbstractionContext)\n}\n","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { theme } from '../../styled'\nimport InfoIcon from '../icons/InfoIcon'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ntype Context = 'page' | 'section'\ninterface Props {\n children: React.ReactNode\n context: Context\n className?: string\n}\n\nexport default function HintText({ children, context, className }: Props) {\n return (\n <Container\n className={className}\n {...styledProps({ children, context, className })}\n >\n <IconWrap>\n <InfoIcon />\n </IconWrap>\n <Text>{children}</Text>\n </Container>\n )\n}\n\nconst Container = styled.div<ReturnType<typeof styledProps>>`\n ${(p) =>\n theme((o) => [\n o.bg.surface3,\n o.borderRadius(8),\n o.padding.vertical(p.default.vertical),\n o.padding.horizontal(p.default.horizontal),\n ])}\n\n @media ${({ theme: t }) => maxWidth(t.breakpoint.screen1)} {\n ${(p) =>\n theme((o) => [\n o.padding.vertical(p.screen1.vertical),\n o.padding.horizontal(p.screen1.horizontal),\n ])}\n }\n\n display: flex;\n align-items: flex-start;\n ${(p) =>\n p.context === 'page' &&\n css`\n justify-content: center;\n `}\n`\n\nconst IconWrap = styled.div`\n display: flex;\n align-items: center;\n color: ${(p) => p.theme.color.text4};\n height: 22px;\n margin: -4px 4px -4px 0;\n`\n\nconst Text = styled.p`\n ${theme((o) => [o.font.text2, o.typography(14)])}\n margin: 0;\n min-width: 0;\n overflow-wrap: break-word;\n`\n\nfunction styledProps(props: Props) {\n return { ...props, ...contextToProps(props.context) }\n}\n\nfunction contextToProps(context: Context) {\n switch (context) {\n case 'page':\n return {\n default: {\n horizontal: 40,\n vertical: 24,\n },\n screen1: {\n horizontal: 16,\n vertical: 16,\n },\n } as const\n case 'section':\n return {\n default: {\n horizontal: 16,\n vertical: 16,\n },\n screen1: {\n horizontal: 16,\n vertical: 16,\n },\n } as const\n }\n}\n","import styled from 'styled-components'\nimport { createTheme } from '@charcoal-ui/styled'\nexport const theme = createTheme(styled)\n","import styled from 'styled-components'\nimport IconBase from './Base'\n\nconst size = 16\n\nexport default function InfoIcon() {\n const path = (\n <>\n <path\n d=\"M8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183\n 0 16 3.58172 16 8C16 12.4183 12.4183 16 8 16Z\"\n />\n <Path\n d=\"M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629\n 4.68629 2 8 2C11.3137 2 14 4.68629 14 8ZM8 6.25C8.69036 6.25 9.25 5.69036\n 9.25 5C9.25 4.30964 8.69036 3.75 8 3.75C7.30964 3.75 6.75 4.30964 6.75\n 5C6.75 5.69036 7.30964 6.25 8 6.25ZM7 7.75V11.25C7 11.8023 7.44772 12.25\n 8 12.25C8.55228 12.25 9 11.8023 9 11.25V7.75C9 7.19772 8.55228 6.75 8\n 6.75C7.44772 6.75 7 7.19772 7 7.75Z\"\n />\n </>\n )\n return <IconBase viewBoxSize={size} size={size} currentColor path={path} />\n}\n\nconst Path = styled.path`\n fill: ${({ theme }) => theme.color.surface1};\n fill-rule: evenodd;\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\n\nexport type IconSizes = 16 | 24 | 32\n\ninterface Props {\n path: string | React.ReactNode\n viewBoxSize: number\n size?: IconSizes | 40 | 48 | 64 | 72\n transform?: string\n currentColor?: boolean\n fillRule?: 'nonzero' | 'evenodd'\n clipRule?: 'nonzero' | 'evenodd' | 'inherit'\n}\n\nexport default function IconBase({\n size = 24,\n viewBoxSize,\n currentColor,\n path,\n transform,\n fillRule,\n clipRule,\n}: Props) {\n return (\n <Icon\n viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}\n size={size}\n currentColor={currentColor}\n >\n <IconBasePath\n path={path}\n transform={transform}\n fillRule={fillRule}\n clipRule={clipRule}\n />\n </Icon>\n )\n}\n\nconst Icon = styled.svg<{ size: number; currentColor?: boolean }>`\n stroke: none;\n fill: ${({ currentColor = false, theme }) =>\n currentColor ? 'currentColor' : theme.color.text2};\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n line-height: 0;\n font-size: 0;\n vertical-align: middle;\n`\n\ntype IconBasePathProps = Pick<\n Props,\n 'path' | 'transform' | 'fillRule' | 'clipRule'\n>\nexport const IconBasePath = ({\n path,\n transform,\n fillRule,\n clipRule,\n}: IconBasePathProps) => {\n if (typeof path === 'string') {\n return (\n <path\n d={path}\n transform={transform}\n fillRule={fillRule}\n clipRule={clipRule}\n />\n )\n } else {\n return <>{path}</>\n }\n}\n","import { useContext } from 'react'\nimport * as React from 'react'\nimport styled, { createGlobalStyle, css } from 'styled-components'\nimport {\n MAIN_COLUMN_HORIZONTAL_MIN_MARGIN,\n RESPONSIVE_LEFT_WIDTH,\n RESPONSIVE_MAIN_MAX_WIDTH,\n} from '../../foundation/constants'\nimport { useMediaScreen1 } from '../../foundation/hooks'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ninterface Props {\n menu?: React.ReactNode\n isHeaderTopMenu?: boolean\n children: React.ReactNode\n header?: React.ReactNode\n wide?: boolean\n center?: boolean\n}\n\nconst LayoutConfigContext = React.createContext({\n wide: false,\n center: false,\n withLeft: false,\n})\n\nexport default function Layout({\n menu,\n children,\n header,\n center = false,\n wide,\n isHeaderTopMenu = false,\n}: Props) {\n const config = {\n center,\n wide: center ? true : wide ?? false,\n withLeft: menu != null && !isHeaderTopMenu,\n }\n return (\n <LayoutRoot>\n <LayoutConfigContext.Provider value={config}>\n {config.withLeft && <LeftArea>{menu}</LeftArea>}\n <MainArea center={center}>\n {header != null && <Header>{header}</Header>}\n {isHeaderTopMenu && (\n <HeaderTopMenuContainer>{menu}</HeaderTopMenuContainer>\n )}\n <Grid>{children}</Grid>\n </MainArea>\n </LayoutConfigContext.Provider>\n <GlobalStyle />\n </LayoutRoot>\n )\n}\n\nconst HeaderTopMenuContainer = styled.div`\n margin-bottom: 40px;\n overflow-x: auto;\n word-break: keep-all;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-bottom: 0;\n padding-left: 16px;\n padding-bottom: 16px;\n background-color: ${({ theme }) => theme.color.surface2};\n }\n`\n\nconst GlobalStyle = createGlobalStyle`\n :root {\n background-color: ${({ theme }) => theme.color.background2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n background-color: ${({ theme }) => theme.color.background1};\n }\n }\n`\n\nconst LayoutRoot = styled.div`\n display: flex;\n background-color: ${({ theme }) => theme.color.background2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n background-color: ${({ theme }) => theme.color.background1};\n }\n`\n\nconst LeftArea = styled.div`\n min-width: ${RESPONSIVE_LEFT_WIDTH}px;\n padding: 40px 0 40px ${GUTTER_UNIT}px;\n box-sizing: border-box;\n\n @media ${({ theme }) => theme.breakpoint.screen3} {\n display: none;\n }\n`\n\nconst MainArea = styled.div<{ center: boolean }>`\n flex-grow: 1;\n /* https://www.w3.org/TR/css-flexbox-1/#min-size-auto */\n min-width: 0;\n max-width: ${(p) =>\n p.center\n ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT)\n : RESPONSIVE_MAIN_MAX_WIDTH}px;\n padding: 40px ${MAIN_COLUMN_HORIZONTAL_MIN_MARGIN}px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: 0;\n }\n`\n\nconst Header = styled.div`\n font-weight: bold;\n margin-bottom: 12px;\n font-size: 20px;\n line-height: 28px;\n color: ${({ theme }) => theme.color.text2};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-bottom: 0;\n padding: 12px;\n font-size: 16px;\n line-height: 24px;\n display: flex;\n justify-content: center;\n background-color: ${({ theme }) => theme.color.surface2};\n }\n`\n\nconst Grid = styled.div`\n display: grid;\n gap: ${GUTTER_UNIT}px;\n grid-template-columns: 1fr;\n grid-auto-columns: 1fr;\n grid-auto-rows: auto;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n gap: 0;\n background-color: ${({ theme }) => theme.color.background1};\n padding-bottom: 60px;\n }\n`\n\ninterface LayoutItemProps {\n span: number\n children?: React.ReactNode\n}\n\nexport const LayoutItem = React.forwardRef<HTMLDivElement, LayoutItemProps>(\n function LayoutItem({ span, children }, ref) {\n const { withLeft } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItem span={span} withLeft={withLeft} ref={ref}>\n {children}\n </StyledLayoutItem>\n )\n }\n)\n\ninterface StyledLayoutItemProps {\n span: number\n withLeft: boolean\n}\n\nconst StyledLayoutItem = styled.div<StyledLayoutItemProps>`\n grid-column-start: auto;\n grid-column-end: span ${(p) => p.span};\n border-radius: 24px;\n color: ${({ theme }) => theme.color.text2};\n background-color: ${({ theme }) => theme.color.background1};\n /* https://www.w3.org/TR/css-grid-1/#min-size-auto */\n min-width: 0;\n\n @media ${(p) =>\n p.withLeft ? p.theme.breakpoint.screen4 : p.theme.breakpoint.screen3} {\n ${(p) =>\n p.span > 2 &&\n css`\n grid-column-end: span 2;\n `}\n }\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.span > 1 &&\n css`\n grid-column-end: span 1;\n `}\n\n border-radius: 0;\n padding-bottom: 40px;\n }\n`\n\nexport function LayoutItemHeader({ children }: { children: React.ReactNode }) {\n const { wide, center } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItemHeader wide={wide} center={center}>\n {children}\n </StyledLayoutItemHeader>\n )\n}\n\ninterface StyledLayoutItemHeaderProps {\n wide: boolean\n center: boolean\n}\n\nconst StyledLayoutItemHeader = styled.div<StyledLayoutItemHeaderProps>`\n padding: 0 ${(p) => (p.wide ? 40 : 24)}px;\n height: ${(p) => (p.wide ? 64 : 48)}px;\n display: grid;\n align-items: center;\n font-size: 16px;\n line-height: 24px;\n font-weight: bold;\n background-color: ${({ theme }) => theme.color.surface2};\n color: ${({ theme }) => theme.color.text2};\n border-radius: 24px 24px 0 0;\n ${(p) =>\n p.center &&\n css`\n justify-content: center;\n `}\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin-top: 4px;\n padding: 0 16px;\n background: none;\n overflow-x: auto;\n border-radius: unset;\n ${(p) =>\n p.wide &&\n css`\n height: 48px;\n margin-top: 0;\n `}\n }\n`\n\nexport const LAYOUT_ITEM_BODY_PADDING = {\n wide: {\n x: 40,\n y: 40,\n },\n default: {\n x: 24,\n y: 24,\n },\n column1: {\n x: 16,\n y: 16,\n },\n narrow: {\n x: 24,\n yTop: 12,\n yBottom: 20,\n },\n narrowColumn1: {\n x: 16,\n yTop: 4,\n yBottom: 0,\n },\n}\n\nexport function LayoutItemBody({\n children,\n horizontal = false,\n narrow = false,\n}: {\n children: React.ReactNode\n horizontal?: boolean\n narrow?: boolean\n}) {\n const { wide } = useContext(LayoutConfigContext)\n\n return (\n <StyledLayoutItemBody wide={wide} horizontal={horizontal} narrow={narrow}>\n {children}\n </StyledLayoutItemBody>\n )\n}\n\ninterface StyledLayoutItemBodyProps {\n wide: boolean\n horizontal: boolean\n narrow: boolean\n}\n\nexport const StyledLayoutItemBody = styled.div<StyledLayoutItemBodyProps>`\n padding: ${(p) =>\n p.narrow\n ? `${LAYOUT_ITEM_BODY_PADDING.narrow.yTop}px ${\n p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.narrow.x\n }px ${LAYOUT_ITEM_BODY_PADDING.narrow.yBottom}px`\n : p.wide\n ? `${p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.wide.y}px ${\n LAYOUT_ITEM_BODY_PADDING.wide.x\n }px`\n : `${p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.default.y}px ${\n LAYOUT_ITEM_BODY_PADDING.default.x\n }px`};\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n padding: ${(p) =>\n p.narrow\n ? `${LAYOUT_ITEM_BODY_PADDING.narrowColumn1.yTop}px ${\n p.horizontal ? 0 : LAYOUT_ITEM_BODY_PADDING.narrowColumn1.x\n }px ${LAYOUT_ITEM_BODY_PADDING.narrowColumn1.yBottom}px`\n : `${LAYOUT_ITEM_BODY_PADDING.column1.y}px ${\n LAYOUT_ITEM_BODY_PADDING.column1.x\n }px ${0}`};\n }\n\n width: 100%;\n box-sizing: border-box;\n`\n\nexport function useLayoutItemBodyPadding() {\n const { wide } = useContext(LayoutConfigContext)\n return useMediaScreen1()\n ? LAYOUT_ITEM_BODY_PADDING.column1\n : wide\n ? LAYOUT_ITEM_BODY_PADDING.wide\n : LAYOUT_ITEM_BODY_PADDING.default\n}\n\nexport function CancelLayoutItemBodyPadding({\n children,\n cancelTop,\n}: {\n children: React.ReactNode\n cancelTop?: boolean\n}) {\n const { wide } = useContext(LayoutConfigContext)\n\n return (\n <StyledCancelLayoutItemBodyPadding wide={wide} cancelTop={cancelTop}>\n {children}\n </StyledCancelLayoutItemBodyPadding>\n )\n}\n\ninterface StyledCancelLayoutItemBodyPaddingProps {\n wide: boolean\n cancelTop?: boolean\n}\n\nexport const StyledCancelLayoutItemBodyPadding = styled.div<StyledCancelLayoutItemBodyPaddingProps>`\n margin: 0 -${(p) => (p.wide ? LAYOUT_ITEM_BODY_PADDING.wide.x : LAYOUT_ITEM_BODY_PADDING.default.x)}px;\n margin-top: -${({ cancelTop = false, wide }) => (!cancelTop ? 0 : wide ? LAYOUT_ITEM_BODY_PADDING.wide.y : LAYOUT_ITEM_BODY_PADDING.default.y)}px;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n margin: 0 -${LAYOUT_ITEM_BODY_PADDING.column1.x}px;\n margin-top: -${({ cancelTop = false }) => (!cancelTop ? 0 : LAYOUT_ITEM_BODY_PADDING.column1.x)}px;\n }\n`\n","import { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\n\nexport const MAIN_COLUMN_HORIZONTAL_MIN_MARGIN = 72\n\nexport const RESPONSIVE_LEFT_WIDTH =\n columnSystem(2, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT\nexport const RESPONSIVE_MAIN_MAX_WIDTH = columnSystem(\n 12,\n COLUMN_UNIT,\n GUTTER_UNIT\n)\n","import {\n useCallback,\n useDebugValue,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport ReactDOM from 'react-dom'\nimport { useTheme } from 'styled-components'\nimport { maxWidth } from '@charcoal-ui/utils'\n\ndeclare const __TEST__: object | undefined // actually object|false, but using undefined allows ! assertion\n\ndeclare module 'react-dom' {\n export function flushSync<R>(callback: () => R): R\n}\n\n/**\n * 現在の画面幅がモバイル幅かどうかを返す\n */\nexport function useMediaScreen1() {\n return useMedia(maxWidth(useTheme().breakpoint.screen1))\n}\n\n/**\n * Returns a dynamically-updating media query result.\n *\n * When the media query's matching state changes, this hook's result\n * will update with sync priority.\n *\n * @param query A full media query (the string written between `@media` and the `{` in CSS)\n * @returns true if the query matches, false if it doesn't\n */\nexport function useMedia(query: string) {\n const matcher = useMemo(\n () =>\n __TEST__\n ? {\n matches: false,\n addListener: () => {\n // do nothing\n },\n removeListener: () => {\n // do nothing\n },\n }\n : matchMedia(query),\n [query]\n )\n const [matches, setMatches] = useState<boolean>(matcher.matches)\n\n // can only happen if/when the query changes\n if (matcher.matches !== matches) {\n setMatches(matcher.matches)\n }\n\n const callback = (e: MediaQueryListEvent) => {\n // We're not on a React event listener, so React doesn't know the priority of the setState call\n // Media query updates _are_ very high priority to avoid FOUC\n // so we need to emit a sync priority update\n try {\n // However, flushSync may throw if the matcher is triggered by a\n // forced relayout that happens during a React lifecycle handler.\n // Try to be resilient and retry without flushSync if flushSync throws.\n ReactDOM.flushSync(() => {\n setMatches(e.matches)\n })\n } catch {\n setMatches(e.matches)\n }\n }\n\n useLayoutEffect(() => {\n matcher.addListener(callback)\n // sync update\n setMatches(matcher.matches)\n return () => {\n matcher.removeListener(callback)\n }\n }, [matcher])\n\n useDebugValue(`${query}: ${matches.toString()}`)\n\n return matches\n}\n\nexport interface ElementSize {\n width: number\n height: number\n}\n\nfunction measure(ref: Element | null): ElementSize | undefined {\n return ref !== null ? ref.getBoundingClientRect() : undefined\n}\n\nexport function useElementSize(\n ref: React.RefObject<Element>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n deps: any[] = []\n) {\n // _don't_ call measure synchronously here even if you somehow can\n // measurement has to be done outside the render phase, either\n // as the resize observer callback or as a layout effect\n\n const [size, setSize] = useReducer(\n (\n state: ElementSize | undefined,\n next: ElementSize | undefined\n ): ElementSize | undefined => {\n // width, height, etc are not own properties but getters in the prototype\n // can't use shallowEqual or other iterative checks\n if (state === undefined || next === undefined) {\n return next\n }\n if (state.height === next.height && state.width === next.width) {\n return state\n }\n return next\n },\n undefined\n )\n const [watch, setWatch] = useState<Element | null>(null)\n useLayoutEffect(() => {\n if (watch === null) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n // NOTE: the ResizeObserverCallback receives a rect,\n // but it's not measured in the same way as getBoundingClientRect,\n // which causes unstable layout\n const newSize = measure(watch)\n setSize(newSize)\n })\n\n // The ResizeObserver is supposed to call handleResize on observe\n observer.observe(watch)\n\n return () => {\n // this will correctly unobserve if either the observer\n // or the current changes, and even on unmount\n // no need for an observer.disconnect() 🎉\n observer.unobserve(watch)\n setSize(undefined)\n }\n }, [watch])\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useLayoutEffect(() => {\n if (ref.current !== watch) {\n setWatch(ref.current)\n }\n })\n\n useLayoutEffect(() => {\n if (deps.length > 0) {\n // Sync measuring\n setSize(measure(ref.current))\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n useDebugValue(size)\n\n return size\n}\n\n/**\n * Debounce version of setState with `requestAnimationFrame`\n *\n * @param defaultValue Default value for `useState`\n */\nexport function useDebounceAnimationState<T>(defaultValue: T) {\n const [state, setState] = useState(defaultValue)\n const timer = useRef<ReturnType<typeof requestAnimationFrame>>()\n // typescript bug? (any when omitting type annotation)\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n const setDebounceState = useCallback((value: T, force: boolean = false) => {\n if (force) {\n setState(value)\n return\n }\n if (timer.current !== undefined) {\n return\n }\n timer.current = requestAnimationFrame(() => {\n setState(value)\n if (timer.current !== undefined) {\n timer.current = undefined\n }\n })\n }, [])\n return [state, setDebounceState] as [typeof state, typeof setDebounceState]\n}\n","import styled from 'styled-components'\nimport { MenuListLinkItem } from '../MenuListItem'\nimport { useComponentAbstraction } from '../../_lib/ComponentAbstraction'\n\ninterface Props<ID extends string> {\n links: readonly {\n text: string\n to: string\n id: ID\n }[]\n active: ID\n}\n\nexport default function LeftMenu<ID extends string>({\n links,\n active,\n}: Props<ID>) {\n const { Link } = useComponentAbstraction()\n return (\n <Container>\n {links.map((link, index) => (\n <Link to={link.to} key={index}>\n <LinkItem aria-current={link.id === active || undefined}>\n {link.text}\n </LinkItem>\n </Link>\n ))}\n </Container>\n )\n}\n\nexport function LeftMenuContent<ID extends string>({ links }: Props<ID>) {\n return (\n <>\n {links.map((link, index) => (\n <MenuListLinkItem link={link.to} key={index} primary={link.text} />\n ))}\n </>\n )\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`\n\nconst LinkItem = styled.div`\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.color.text3};\n border-radius: 24px;\n font-weight: bold;\n font-size: 14px;\n line-height: 22px;\n padding: 0 16px;\n height: 40px;\n transition: 0.2s color;\n &:hover {\n transition: 0.2s color;\n color: ${({ theme }) => theme.color.text2};\n }\n &[aria-current] {\n color: ${({ theme }) => theme.color.text2};\n background-color: ${({ theme }) => theme.color.surface3};\n }\n`\n","import { useContext } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { theme } from '../../styled'\nimport { TextEllipsis } from '../TextEllipsis'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../_lib/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface MenuListItemContextProps {\n padding: 16 | 24\n}\n\nexport const MenuListItemContext =\n React.createContext<MenuListItemContextProps>({ padding: 24 })\n\nexport interface MenuListItemBaseData {\n primary: string | React.ReactNode // 表示アイテム名(上に表示)\n secondary?: string // 表示アイテム名2(下に表示)\n onClick?: (e: React.MouseEvent) => void\n disabled?: boolean\n gtmClass?: string\n noHover?: boolean\n}\n\ninterface MenuListItemProps extends MenuListItemBaseData {\n children?: React.ReactNode // 右寄せで表示したい要素\n}\n\nexport default function MenuListItem({\n primary,\n secondary,\n onClick,\n disabled = false,\n noHover = false,\n gtmClass,\n children,\n}: MenuListItemProps) {\n const { padding } = useContext(MenuListItemContext)\n\n return (\n <Item\n hasSubLabel={secondary !== undefined}\n onClick={(e) => !disabled && onClick && onClick(e)}\n sidePadding={padding}\n noHover={noHover}\n noClick={onClick === undefined}\n aria-disabled={disabled}\n role={onClick !== undefined ? 'button' : undefined}\n className={gtmClass !== undefined ? `gtm-${gtmClass}` : undefined}\n >\n <Labels>\n <PrimaryText>\n <TextEllipsis lineHeight={22} lineLimit={1}>\n {primary}\n </TextEllipsis>\n </PrimaryText>\n {secondary !== undefined && (\n <SecondaryText>\n <TextEllipsis lineHeight={22} lineLimit={1}>\n {secondary}\n </TextEllipsis>\n </SecondaryText>\n )}\n </Labels>\n {children}\n </Item>\n )\n}\n\ninterface ItemProps {\n hasSubLabel: boolean\n sidePadding: 16 | 24\n noHover: boolean\n noClick: boolean\n}\n\nconst Item = styled.div<ItemProps>`\n display: flex;\n height: ${(p) => (p.hasSubLabel ? 56 : 40)}px;\n align-items: center;\n justify-content: space-between;\n padding: 0 ${(p) => p.sidePadding}px;\n user-select: none;\n cursor: ${(p) => (p.noClick ? 'default' : 'pointer')};\n transition: 0.2s background-color;\n\n &:hover {\n ${(p) =>\n !p.noHover &&\n css`\n background-color: ${({ theme }) => theme.color.surface3};\n `}\n }\n\n ${theme((o) => o.disabled)}\n\n ${disabledSelector} {\n cursor: default;\n pointer-events: none;\n\n &:hover {\n background-color: unset;\n }\n }\n`\n\nconst Labels = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst PrimaryText = styled.div`\n color: ${(p) => p.theme.color.text2};\n line-height: 22px;\n font-size: 14px;\n display: grid;\n`\n\nconst SecondaryText = styled.div`\n color: ${(p) => p.theme.color.text3};\n line-height: 18px;\n font-size: 10px;\n`\n\ninterface MenuListLinkItemProps\n extends MenuListItemBaseData,\n Omit<LinkProps, 'to' | 'onClick' | 'children'> {\n link: string\n children?: React.ReactNode\n}\n\nexport function MenuListLinkItem({\n link,\n onClick,\n disabled = false,\n primary,\n secondary,\n gtmClass,\n noHover,\n children,\n ...linkProps\n}: MenuListLinkItemProps) {\n const { Link } = useComponentAbstraction()\n const props: MenuListItemProps = {\n disabled,\n primary,\n secondary,\n gtmClass,\n noHover,\n children,\n }\n\n return disabled ? (\n <span onClick={onClick}>\n <MenuListItem {...props} />\n </span>\n ) : (\n <A<typeof Link> as={Link} to={link} onClick={onClick} {...linkProps}>\n <MenuListItem onClick={() => void 0} {...props} />\n </A>\n )\n}\n\nconst A = styled.a`\n display: block;\n`\n\ninterface MenuListLinkItemWithIconProps extends MenuListLinkItemProps {\n icon: React.ReactNode\n}\n\ninterface MenuListItemWithIconProps extends MenuListItemProps {\n icon: React.ReactNode\n}\n\nexport function MenuListLinkItemWithIcon({\n icon,\n primary: text,\n ...props\n}: MenuListLinkItemWithIconProps) {\n const primary = (\n <IconContainer>\n <Icon>{icon}</Icon>\n {text}\n </IconContainer>\n )\n return <MenuListLinkItem primary={primary} {...props} />\n}\n\nexport function MenuListItemWithIcon({\n icon,\n primary: text,\n ...props\n}: MenuListItemWithIconProps) {\n const primary = (\n <IconContainer>\n <Icon>{icon}</Icon>\n {text}\n </IconContainer>\n )\n return <MenuListItem primary={primary} {...props} />\n}\n\nconst IconContainer = styled.div`\n display: grid;\n gap: 8px;\n grid-auto-flow: column;\n align-items: center;\n`\n\nconst Icon = styled.div`\n color: ${({ theme }) => theme.color.text3};\n display: flex;\n`\n\nexport const MenuListSpacer = styled.div`\n height: 24px;\n`\n\nexport const MenuListLabel = styled.div`\n padding: 0 16px;\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.color.text3};\n margin-top: -2px;\n margin-bottom: 6px;\n`\n","import styled, { css } from 'styled-components'\nimport { onlyText } from './helper'\n\nexport interface Props {\n lineHeight: number\n lineLimit?: number\n}\n\n/**\n * 複数行のテキストに表示行数制限を設けて`...`で省略する\n */\nexport const TextEllipsis = styled.div.attrs(\n ({ children, title = onlyText(children) }) => ({\n title: title !== '' ? title : undefined,\n })\n)<Props>`\n overflow: hidden;\n line-height: ${(props) => props.lineHeight}px;\n /* For english */\n overflow-wrap: break-word;\n\n ${({ lineLimit = 1, lineHeight }) =>\n lineLimit === 1\n ? css`\n text-overflow: ellipsis;\n white-space: nowrap;\n `\n : css`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: ${lineLimit};\n /* Fallback for -webkit-line-clamp */\n max-height: ${lineHeight * lineLimit}px;\n `}\n`\n","// https://github.com/fernandopasik/react-children-utilities/blob/971d8a0324e6183734d8d1af9a65dbad18ab3d00/src/lib/onlyText.ts\n\nimport {\n Children,\n isValidElement,\n ReactElement,\n ReactNode,\n ReactText,\n} from 'react'\n\nconst hasChildren = (\n element: ReactNode\n): element is ReactElement<{ children: ReactNode[] }> =>\n isValidElement<{ children?: ReactNode[] }>(element) &&\n Boolean(element.props.children)\n\nexport const childToString = (\n // eslint-disable-next-line @typescript-eslint/ban-types\n child?: ReactText | boolean | {} | null\n): string => {\n if (\n typeof child === 'undefined' ||\n child === null ||\n typeof child === 'boolean'\n ) {\n return ''\n }\n\n if (JSON.stringify(child) === '{}') {\n return ''\n }\n\n return (child as string | number).toString()\n}\n\nexport const onlyText = (children: ReactNode): string => {\n if (!Array.isArray(children) && !isValidElement(children)) {\n return childToString(children)\n }\n\n return Children.toArray(children).reduce(\n (text: string, child: ReactNode): string => {\n let newText = ''\n\n if (isValidElement(child) && hasChildren(child)) {\n newText = onlyText(child.props.children)\n } else if (isValidElement(child) && !hasChildren(child)) {\n newText = ''\n } else {\n newText = childToString(child)\n }\n\n return text.concat(newText)\n },\n ''\n )\n}\n","import * as React from 'react'\n\nimport styled, { css } from 'styled-components'\nimport { applyEffect } from '@charcoal-ui/utils'\n\nexport interface Props extends React.ComponentPropsWithoutRef<'input'> {\n gtmClass?: string\n flex?: boolean\n rowReverse?: boolean\n}\n\nexport default React.forwardRef(function SwitchCheckbox(\n {\n gtmClass,\n flex = false,\n rowReverse = false,\n children,\n disabled,\n ...props\n }: Props,\n ref: React.Ref<HTMLInputElement>\n) {\n return (\n <Label\n className={gtmClass !== undefined ? `gtm-${gtmClass}` : ''}\n flex={flex}\n rowReverse={rowReverse}\n aria-disabled={disabled}\n >\n <SwitchOuter>\n <SwitchInput {...props} disabled={disabled} ref={ref} />\n <SwitchInner>\n <SwitchInnerKnob />\n </SwitchInner>\n </SwitchOuter>\n {children != null && (\n <Children rowReverse={rowReverse}>{children}</Children>\n )}\n </Label>\n )\n})\n\nconst Children = styled.span<{ rowReverse: boolean }>`\n ${(p) =>\n p.rowReverse\n ? css`\n margin-right: 8px;\n `\n : css`\n margin-left: 8px;\n `}\n`\n\nconst Label = styled.label<{ flex: boolean; rowReverse: boolean }>`\n display: inline-flex;\n align-items: center;\n ${({ flex }) =>\n flex &&\n css`\n display: flex;\n justify-content: space-between;\n `}\n ${({ rowReverse }) =>\n css`\n flex-direction: ${rowReverse ? 'row-reverse' : 'row'};\n `}\n cursor: pointer;\n outline: 0;\n\n &[aria-disabled='true'] {\n cursor: auto;\n }\n`\n\nconst SwitchOuter = styled.span`\n display: inline-flex;\n position: relative;\n z-index: 0;\n`\n\nconst SwitchInner = styled.div`\n position: relative;\n box-sizing: border-box;\n width: 28px;\n height: 16px;\n border-radius: 16px;\n border: 2px solid transparent;\n background: ${({ theme }) => theme.color.text4};\n transition: box-shadow 0.2s, background-color 0.2s;\n`\n\nconst SwitchInnerKnob = styled.div`\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n background-color: ${({ theme }) => theme.color.text5};\n border-radius: 50%;\n transform: translateX(0);\n transition: transform 0.2s;\n`\n\nconst SwitchInput = styled.input.attrs({\n type: 'checkbox' as string,\n})`\n position: absolute;\n /* NOTE: this is contained by the GraphicCheckboxOuter */\n z-index: 1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n /* just to control the clickable area if used standalone */\n border-radius: 16px;\n opacity: 0;\n appearance: none;\n outline: none;\n cursor: pointer;\n\n &:checked {\n ~ ${SwitchInner} {\n background-color: ${({ theme }) => theme.color.brand};\n\n ${SwitchInnerKnob} {\n transform: translateX(12px);\n }\n }\n }\n\n &:disabled {\n cursor: auto;\n\n ~ ${SwitchInner} {\n opacity: ${({ theme }) => theme.elementEffect.disabled.opacity};\n }\n }\n\n &:not(:disabled):focus {\n ~ ${SwitchInner} {\n box-shadow: 0 0 0 4px\n ${({ theme }) =>\n applyEffect(theme.color.brand, theme.elementEffect.disabled)};\n }\n }\n`\n","import { useRef } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useElementSize } from '../../foundation/hooks'\n\nexport interface Props {\n children?: React.ReactNode\n icon: React.ReactNode\n /**\n * アイコンを表示。デフォルトがtrueなので、非表示にするときに使います。 (アイコン自体の幅を維持します)\n */\n show?: boolean | 'collapse'\n /**\n * アイコンを前にする\n */\n prefix?: boolean\n /**\n * アイコンの高さが文字の高さよりも大きいケースで有効。アイコンの高さをゼロにしてインラインの高さに関与させないようにします。\n */\n fit?: boolean\n /**\n * `fit`と併用した時にのみ有効な最適化オプション。アイコンの幅の自動計算を行わず指定した数値を利用します。\n */\n width?: number\n /**\n * 親要素のサイズに合わせるのではなく、コンテンツのサイズを優先する\n */\n fixed?: boolean\n}\n\nexport default React.memo(function WithIcon({\n children,\n icon,\n show = true,\n prefix: pre = false,\n width,\n fit = false,\n fixed = false,\n}: Props) {\n const node = fit ? (\n width === undefined ? (\n <AutoWidthIconAnchor show={show} pre={pre}>\n {icon}\n </AutoWidthIconAnchor>\n ) : (\n <IconAnchor width={width} show={show} pre={pre}>\n <Icon>{icon}</Icon>\n </IconAnchor>\n )\n ) : (\n <IconAnchorNaive show={show} pre={pre}>\n <IconNaive>{icon}</IconNaive>\n </IconAnchorNaive>\n )\n\n return (\n <Root>\n {pre && node}\n <Text fixed={fixed}>{children}</Text>\n {!pre && node}\n </Root>\n )\n})\n\nconst Root = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst Text = styled.div<{ fixed: boolean }>`\n ${(p) =>\n !p.fixed &&\n css`\n min-width: 0;\n overflow: hidden;\n `}\n white-space: nowrap;\n text-overflow: ellipsis;\n`\n\nfunction AutoWidthIconAnchor({\n children,\n show,\n pre,\n}: {\n children: React.ReactNode\n show: boolean | 'collapse'\n pre: boolean\n}) {\n const ref = useRef<HTMLDivElement>(null)\n // depsを空配列にしないことで初回だけ同期で幅を計算させるテクニック\n const width = useElementSize(ref, [null])?.width ?? 0\n return (\n <IconAnchor width={width} show={show} pre={pre}>\n <Icon ref={ref}>{children}</Icon>\n </IconAnchor>\n )\n}\n\nconst forceCenteringCss = css`\n > svg {\n display: block;\n }\n`\n\ntype IconAnchorProps = {\n show: boolean | 'collapse'\n pre: boolean\n}\n\nconst iconAnchorCss = css<IconAnchorProps>`\n ${(p) =>\n p.show === 'collapse'\n ? css`\n display: none;\n `\n : css`\n visibility: ${p.show ? 'visible' : 'hidden'};\n `};\n ${(p) =>\n p.pre\n ? css`\n margin-right: 4px;\n `\n : css`\n margin-left: 4px;\n `}\n`\n\nconst IconAnchorNaive = styled.div<IconAnchorProps>`\n display: flex;\n align-items: center;\n\n ${iconAnchorCss}\n`\n\nconst IconNaive = styled.div`\n display: inline-flex;\n\n ${forceCenteringCss}\n`\n\nconst IconAnchor = styled.div<{\n width: number\n show: boolean | 'collapse'\n pre: boolean\n}>`\n display: flex;\n position: relative;\n /* Iconをline-heightに関与させない */\n height: 0;\n /* 横方向の領域は確保する */\n width: ${(p) => p.width}px;\n\n ${iconAnchorCss}\n`\n\nconst Icon = styled.div`\n display: inline-flex;\n position: absolute;\n transform: translateY(-50%);\n\n ${forceCenteringCss}\n`\n","import { useEffect, useState, useCallback, useRef } from 'react'\nimport * as React from 'react'\nimport { animated, AnimatedComponent, useSpring } from 'react-spring'\nimport styled, { css } from 'styled-components'\nimport { useDebounceAnimationState } from '../../foundation/hooks'\nimport { passiveEvents, isEdge } from '../../foundation/support'\nimport { useIsomorphicLayoutEffect } from '../../hooks'\nimport CarouselButton, { Direction } from '../CarouselButton'\n\nexport const GRADIENT_WIDTH = 72\n/**\n * カルーセル系のスクロール量の定数\n *\n * @example\n * const scrollAmount = containerElm.clientWidth * SCROLL_AMOUNT_COEF\n */\nexport const SCROLL_AMOUNT_COEF = 0.75\n\ninterface ScrollProps {\n align?: 'center' | 'left' | 'right'\n offset?: number\n}\n\nexport interface CarouselBaseAppearanceProps {\n buttonOffset?: number\n buttonPadding?: number\n bottomOffset?: number\n defaultScroll?: ScrollProps\n}\n\nexport type CarouselGradientProps =\n | { hasGradient?: false }\n | {\n hasGradient: true\n fadeInGradient?: boolean\n }\n\ntype CarouselAppearanceProps = CarouselBaseAppearanceProps &\n CarouselGradientProps\n\ntype Props = CarouselAppearanceProps & {\n onScroll?: (left: number) => void\n onResize?: (width: number) => void\n children: React.ReactNode\n centerItems?: boolean\n onScrollStateChange?: (canScroll: boolean) => void\n scrollAmountCoef?: number\n}\n\nexport interface CarouselHandlerRef {\n resetScroll(): void\n}\n\nexport default function Carousel({\n buttonOffset = 0,\n buttonPadding = 16,\n bottomOffset = 0,\n defaultScroll: { align = 'left', offset: scrollOffset = 0 } = {},\n onScroll,\n onResize,\n children,\n centerItems,\n onScrollStateChange,\n scrollAmountCoef = SCROLL_AMOUNT_COEF,\n ...options\n}: Props) {\n // スクロール位置を保存する\n // アニメーション中の場合は、アニメーション終了時のスクロール位置が保存される\n const [scrollLeft, setScrollLeft] = useDebounceAnimationState(0)\n // アニメーション中かどうか\n const animation = useRef(false)\n // スクロール可能な領域を保存する\n const [maxScrollLeft, setMaxScrollLeft] = useState(0)\n // 左右のボタンの表示状態を保存する\n const [leftShow, setLeftShow] = useState(false)\n const [rightShow, setRightShow] = useState(false)\n\n // const [props, set, stop] = useSpring(() => ({\n // scroll: 0\n // }))\n const [styles, set] = useSpring(() => ({ scroll: 0 }))\n\n const ref = useRef<HTMLDivElement>(null)\n const visibleAreaRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLUListElement>(null)\n\n const handleRight = useCallback(() => {\n if (visibleAreaRef.current === null) {\n return\n }\n const { clientWidth } = visibleAreaRef.current\n // スクロール領域を超えないように、アニメーションを開始\n // アニメーション中にアニメーションが開始されたときに、アニメーション終了予定の位置から再度計算するようにする\n const scroll = Math.min(\n scrollLeft + clientWidth * scrollAmountCoef,\n maxScrollLeft\n )\n setScrollLeft(scroll, true)\n void set({\n scroll,\n from: { scroll: scrollLeft },\n reset: !animation.current,\n })\n animation.current = true\n }, [\n animation,\n maxScrollLeft,\n scrollLeft,\n set,\n scrollAmountCoef,\n setScrollLeft,\n ])\n\n const handleLeft = useCallback(() => {\n if (visibleAreaRef.current === null) {\n return\n }\n const { clientWidth } = visibleAreaRef.current\n const scroll = Math.max(scrollLeft - clientWidth * scrollAmountCoef, 0)\n setScrollLeft(scroll, true)\n void set({\n scroll,\n from: { scroll: scrollLeft },\n reset: !animation.current,\n })\n animation.current = true\n }, [animation, scrollLeft, set, scrollAmountCoef, setScrollLeft])\n\n // スクロール可能な場合にボタンを表示する\n // scrollLeftが変化したときに処理する (アニメーション開始時 & 手動スクロール時)\n useEffect(() => {\n const newLeftShow = scrollLeft > 0\n const newRightShow = scrollLeft < maxScrollLeft && maxScrollLeft > 0\n if (newLeftShow !== leftShow || newRightShow !== rightShow) {\n setLeftShow(newLeftShow)\n setRightShow(newRightShow)\n onScrollStateChange?.(newLeftShow || newRightShow)\n }\n }, [leftShow, maxScrollLeft, onScrollStateChange, rightShow, scrollLeft])\n\n const handleScroll = useCallback(() => {\n if (ref.current === null) {\n return\n }\n // 手動でスクロールが開始されたときにアニメーションを中断\n if (animation.current) {\n styles.scroll.stop()\n animation.current = false\n }\n // スクロール位置を保存 (アニメーションの基準になる)\n const manualScrollLeft = ref.current.scrollLeft\n // 過剰にsetStateが走らないようにdebounceする\n setScrollLeft(manualScrollLeft)\n }, [animation, setScrollLeft, styles])\n\n // リサイズが起きたときに、アニメーション用のスクロール領域 & ボタンの表示状態 を再計算する\n const handleResize = useCallback(() => {\n if (ref.current === null) {\n return\n }\n const { clientWidth, scrollWidth } = ref.current\n const newMaxScrollLeft = scrollWidth - clientWidth\n setMaxScrollLeft(newMaxScrollLeft)\n if (onResize) {\n onResize(clientWidth)\n }\n }, [onResize])\n\n useIsomorphicLayoutEffect(() => {\n const elm = ref.current\n const innerElm = innerRef.current\n if (elm === null || innerElm === null) {\n return\n }\n\n elm.addEventListener(\n 'wheel',\n handleScroll,\n passiveEvents() && { passive: true }\n )\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(elm)\n\n const resizeObserverInner = new ResizeObserver(handleResize)\n resizeObserverInner.observe(innerElm)\n\n return () => {\n elm.removeEventListener('wheel', handleScroll)\n resizeObserver.disconnect()\n resizeObserverInner.disconnect()\n }\n }, [handleResize, handleScroll])\n\n // 初期スクロールを行う\n useIsomorphicLayoutEffect(() => {\n if (align !== 'left' || scrollOffset !== 0) {\n const scroll = ref.current\n if (scroll !== null) {\n const scrollLength = Math.max(\n 0,\n Math.min(\n align === 'left' && scrollOffset > 0\n ? scrollOffset\n : align === 'center'\n ? maxScrollLeft / 2 + scrollOffset\n : align === 'right' && scrollOffset <= maxScrollLeft\n ? maxScrollLeft - scrollOffset / 2\n : 0,\n maxScrollLeft\n )\n )\n scroll.scrollLeft = scrollLength\n setScrollLeft(scrollLength, true)\n }\n }\n }, [ref.current])\n\n const handleScrollMove = useCallback(() => {\n if (ref.current === null) {\n return\n }\n if (onScroll) {\n onScroll(ref.current.scrollLeft)\n }\n }, [onScroll])\n\n const [disableGradient, setDisableGradient] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n if (isEdge()) {\n setDisableGradient(true)\n }\n }, [])\n\n // NOTE: Edgeではmaskを使うと要素のレンダリングがバグる(場合によっては画像が表示されない)のでグラデーションを無効にする\n if (!disableGradient && options.hasGradient === true) {\n const fadeInGradient = options.fadeInGradient ?? false\n const overflowGradient = !fadeInGradient\n return (\n <Container ref={visibleAreaRef}>\n <GradientContainer fadeInGradient={fadeInGradient}>\n <RightGradient>\n <LeftGradient show={overflowGradient || scrollLeft > 0}>\n <ScrollArea\n ref={ref}\n scrollLeft={styles.scroll}\n onScroll={handleScrollMove}\n >\n <CarouselContainer ref={innerRef} centerItems={centerItems}>\n {children}\n </CarouselContainer>\n </ScrollArea>\n </LeftGradient>\n </RightGradient>\n </GradientContainer>\n <ButtonsContainer>\n <CarouselButton\n direction={Direction.Left}\n show={leftShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n gradient={overflowGradient}\n onClick={handleLeft}\n />\n <CarouselButton\n direction={Direction.Right}\n show={rightShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n gradient\n onClick={handleRight}\n />\n </ButtonsContainer>\n </Container>\n )\n }\n\n return (\n <Container ref={visibleAreaRef}>\n <ScrollArea\n ref={ref}\n scrollLeft={styles.scroll}\n onScroll={handleScrollMove}\n >\n <CarouselContainer ref={innerRef} centerItems={centerItems}>\n {children}\n </CarouselContainer>\n </ScrollArea>\n <ButtonsContainer>\n <CarouselButton\n direction={Direction.Left}\n show={leftShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n onClick={handleLeft}\n />\n <CarouselButton\n direction={Direction.Right}\n show={rightShow}\n offset={buttonOffset}\n bottomOffset={bottomOffset}\n padding={buttonPadding}\n onClick={handleRight}\n />\n </ButtonsContainer>\n </Container>\n )\n}\n\nconst CarouselContainer = styled.ul<{ centerItems?: boolean }>`\n vertical-align: top;\n overflow: hidden;\n list-style: none;\n padding: 0;\n\n /* 最小幅を100%にして親要素にぴったりくっつけることで子要素で要素を均等に割り付けるなどを出来るようにしてある */\n min-width: 100%;\n box-sizing: border-box;\n\n ${({ centerItems = false }) =>\n centerItems\n ? css`\n display: flex;\n width: max-content;\n margin: 0 auto;\n `\n : css`\n display: inline-flex;\n margin: 0;\n `}\n`\n\nconst ButtonsContainer = styled.div`\n opacity: 0;\n transition: 0.4s opacity;\n`\nconst Container = styled.div`\n &:hover ${ButtonsContainer} {\n opacity: 1;\n }\n\n /* CarouselButtonの中にz-index:1があるのでここでコンテキストを切る */\n position: relative;\n z-index: 0;\n`\n\nconst ScrollArea = styled(animated.div)`\n overflow-x: auto;\n padding: 0;\n margin: 0;\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n scrollbar-width: none;\n` as unknown as React.ComponentType<\n Omit<React.ComponentProps<AnimatedComponent<'div'>>, 'css'>\n>\n\nconst GradientContainer = styled.div<{ fadeInGradient: boolean }>`\n /* NOTE: LeftGradientがはみ出るためhidden */\n overflow: hidden;\n ${(p) =>\n !p.fadeInGradient &&\n css`\n margin-left: ${-GRADIENT_WIDTH}px;\n ${CarouselContainer} {\n padding-left: ${GRADIENT_WIDTH}px;\n }\n `}\n\n margin-right: ${-GRADIENT_WIDTH}px;\n /* stylelint-disable-next-line no-duplicate-selectors */\n ${CarouselContainer} {\n padding-right: ${GRADIENT_WIDTH}px;\n }\n`\n\nconst RightGradient = styled.div`\n mask-image: linear-gradient(\n to right,\n #000 calc(100% - ${GRADIENT_WIDTH}px),\n transparent\n );\n`\n\nconst LeftGradient = styled.div<{ show: boolean }>`\n /* NOTE: mask-position が left → negative px の時、right → abs(negative px) の位置に表示されるため */\n margin-right: ${-GRADIENT_WIDTH}px;\n padding-right: ${GRADIENT_WIDTH}px;\n /* NOTE: mask-position に transition をつけたいが vender prefixes 対策で all につける */\n transition: 0.2s all ease-in;\n mask: linear-gradient(to right, transparent, #000 ${GRADIENT_WIDTH}px)\n ${(p) => (p.show ? 0 : -GRADIENT_WIDTH)}px 0;\n`\n","var passiveEventsResult: boolean | undefined // eslint-disable-line no-var\nexport function passiveEvents(): boolean {\n if (passiveEventsResult !== undefined) {\n return passiveEventsResult\n }\n\n passiveEventsResult = false\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n return (passiveEventsResult = true)\n },\n })\n\n window.addEventListener('test', test, options)\n window.removeEventListener('test', test)\n } catch {\n // test fail\n }\n\n return passiveEventsResult\n\n function test() {\n /* empty */\n }\n}\n\nexport const isEdge = () => navigator.userAgent.includes('Edge/')\n","import { useLayoutEffect, useEffect } from 'react'\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import styled, { css } from 'styled-components'\nimport { unreachable } from '../../foundation/utils'\nimport NextIcon, { WedgeDirection } from '../icons/NextIcon'\nimport { applyEffect } from '@charcoal-ui/utils'\n\nexport enum Direction {\n Right = 'right',\n Left = 'left',\n}\n\ninterface Props {\n direction: Direction\n show: boolean\n offset?: number\n padding?: number\n bottomOffset?: number\n gradient?: boolean\n onClick(): void\n}\n\nexport default function CarouselButton({\n direction,\n show,\n offset = 0,\n padding = 0,\n bottomOffset: bottom = 0,\n gradient = false,\n onClick,\n}: Props) {\n const offsetStyle =\n direction === Direction.Left\n ? {\n left: gradient ? offset - 72 : offset,\n paddingLeft: Math.max(padding, 0),\n paddingBottom: bottom,\n }\n : {\n right: gradient ? offset - 72 : offset,\n paddingRight: Math.max(padding, 0),\n paddingBottom: bottom,\n }\n return (\n <Button\n type=\"button\"\n onClick={onClick}\n hide={!show}\n style={offsetStyle}\n css={onlyNonTouchDevice}\n >\n <CarouselButtonIcon>\n <NextIcon\n direction={\n direction === Direction.Right\n ? WedgeDirection.Right\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n direction === Direction.Left\n ? WedgeDirection.Left\n : unreachable()\n }\n />\n </CarouselButtonIcon>\n </Button>\n )\n}\n\nexport const CAROUSEL_BUTTON_SIZE = 40\n\nconst CarouselButtonIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${CAROUSEL_BUTTON_SIZE}px;\n height: ${CAROUSEL_BUTTON_SIZE}px;\n border-radius: 50%;\n background-color: ${({ theme }) => theme.color.surface4};\n transition: 0.4s visibility, 0.4s opacity, 0.2s background-color, 0.2s color;\n color: ${({ theme }) => theme.color.text5};\n`\n\nconst Button = styled.button<{ hide: boolean }>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n padding: 0;\n min-width: 40px;\n border: none;\n outline: 0;\n background: transparent;\n cursor: pointer;\n transition: 0.4s visibility, 0.4s opacity;\n /* つらい */\n /* このコンポーネントはCarouselでしか使われてないのでそっちでコンテキストで切る */\n z-index: 1;\n\n &:hover ${CarouselButtonIcon} {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.hover)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.hover)};\n }\n\n &:active ${CarouselButtonIcon} {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.press)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.press)};\n }\n\n ${(p) =>\n p.hide &&\n css`\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n `}\n`\n\nexport function ScrollHintButton({\n direction,\n onClick,\n}: {\n direction: Direction\n onClick(): void\n}) {\n return (\n <ScrollHintIcon onClick={onClick}>\n <NextIcon\n direction={\n direction === Direction.Right\n ? WedgeDirection.Right\n : // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n direction === Direction.Left\n ? WedgeDirection.Left\n : unreachable()\n }\n />\n </ScrollHintIcon>\n )\n}\n\nconst ScrollHintIcon = styled(CarouselButtonIcon)`\n cursor: pointer;\n\n &:hover {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.hover)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.hover)};\n }\n\n &:active {\n background-color: ${({ theme }) =>\n applyEffect(theme.color.surface4, theme.effect.press)};\n color: ${({ theme }) => applyEffect(theme.color.text5, theme.effect.press)};\n }\n`\n\nconst onlyNonTouchDevice = css`\n @media (hover: none) and (pointer: coarse) {\n display: none;\n }\n`\n","/**\n * Function used to assert a given code path is unreachable\n */\nexport function unreachable(): never\n/**\n * Function used to assert a given code path is unreachable.\n * Very useful for ensuring switches are exhaustive:\n *\n * ```ts\n * switch (a.type) {\n * case Types.A:\n * case Types.B:\n * break\n * default:\n * unreachable(a) // will cause a build error if there was\n * // a Types.C that was not checked\n * }\n * ```\n *\n * @param value Value to be asserted as unreachable\n */\n// NOTE: Uses separate overloads, _not_ `value?: never`, to not allow `undefined` to be passed\n\nexport function unreachable(value: never): never\nexport function unreachable(value?: never): never {\n throw new Error(\n arguments.length === 0\n ? 'unreachable'\n : `unreachable (${JSON.stringify(value)})`\n )\n}\n","import { unreachable } from '../../foundation/utils'\nimport IconBase from './Base'\n\nexport enum WedgeDirection {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\nconst path = `M8.08579 16.5858C7.30474 17.3668 7.30474 18.6332 8.08579 19.4142C8.86684 20.1953 10.1332 20.1953 10.9142 19.4142L18.3284 12L10.9142 4.58579C10.1332 3.80474 8.86684 3.80474 8.08579 4.58579C7.30474 5.36684 7.30474 6.63317 8.08579 7.41421L12.6716 12L8.08579 16.5858Z`\nconst size = 24\n\ninterface Props {\n direction: WedgeDirection\n}\n\nexport default function NextIcon({ direction }: Props) {\n const transform = directionToTransform(direction)\n return (\n <IconBase\n viewBoxSize={size}\n size={size}\n currentColor\n path={path}\n transform={transform}\n />\n )\n}\n\nfunction directionToTransform(direction: WedgeDirection) {\n // \"5 4\" is the center point of the \"0 0 10 8\" viewBox\n switch (direction) {\n case WedgeDirection.Up:\n return 'rotate(270 12 12)'\n case WedgeDirection.Down:\n return 'rotate(90 12 12)'\n case WedgeDirection.Left:\n return 'rotate(180 12 12)'\n case WedgeDirection.Right:\n return undefined\n default:\n return unreachable(direction)\n }\n}\n","import { memo, useCallback, useDebugValue, useMemo } from 'react'\n\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport DotsIcon from '../icons/DotsIcon'\nimport WedgeIcon, { WedgeDirection } from '../icons/WedgeIcon'\nimport { useComponentAbstraction } from '../../_lib/ComponentAbstraction'\n\nfunction usePagerWindow(\n page: number,\n pageCount: number,\n pageRangeDisplayed = 7\n) {\n // ページャーのリンク生成例:\n //\n // < [ 1 ] [*2*] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] >\n //\n // < [ 1 ] [ 2 ] [ 3 ] [*4*] [ 5 ] [ 6 ] [ 7 ] >\n //\n // < [ 1 ] ... [ 4 ] [*5*] [ 6 ] [ 7 ] [ 8 ] >\n //\n // < [ 1 ] ... [ 99 ] [*100*] [ 101 ] [ 102 ] [ 103 ] >\n //\n // < [ 1 ] ... [ 99 ] [ 100 ] [ 101 ] [ 102 ] [*103*]\n //\n // [*1*] [ 2 ] >\n //\n // デザインの意図: 前後移動時のカーソル移動を最小限にする。\n\n if (process.env.NODE_ENV !== 'production') {\n warning((page | 0) === page, `\\`page\\` must be integer (${page})`)\n warning(\n (pageCount | 0) === pageCount,\n `\\`pageCount\\` must be integer (${pageCount})`\n )\n warning(\n (pageRangeDisplayed | 0) === pageRangeDisplayed,\n `\\`pageRangeDisplayed\\` must be integer (${pageRangeDisplayed})`\n )\n warning(pageRangeDisplayed > 2, `\\`windowSize\\` must be greater than 2`)\n }\n\n const window = useMemo(() => {\n const visibleFirstPage = 1\n const visibleLastPage = Math.min(\n pageCount,\n Math.max(page + Math.floor(pageRangeDisplayed / 2), pageRangeDisplayed)\n )\n\n if (visibleLastPage <= pageRangeDisplayed) {\n // 表示範囲が1-7ページなら省略は無い。\n return Array.from(\n { length: 1 + visibleLastPage - visibleFirstPage },\n (_, i) => visibleFirstPage + i\n )\n } else {\n const start = visibleLastPage - (pageRangeDisplayed - 1) + 2\n return [\n // 表示範囲が1-7ページを超えるなら、\n // - 1ページ目は固定で表示する\n visibleFirstPage,\n // - 2ページ目から現在のページの直前までは省略する\n '...' as const,\n ...Array.from(\n { length: 1 + visibleLastPage - start },\n (_, i) => start + i\n ),\n ]\n }\n }, [page, pageCount, pageRangeDisplayed])\n\n useDebugValue(window)\n\n return window\n}\n\ninterface CommonProps {\n page: number\n pageCount: number\n pageRangeDisplayed?: number\n}\n\nexport interface PagerProps extends CommonProps {\n onChange(newPage: number): void\n}\n\n// this pager is just regular buttons; for links use LinkPager\nexport default memo(function Pager({\n page,\n pageCount,\n pageRangeDisplayed,\n onChange,\n}: PagerProps) {\n // TODO: refactor Pager and LinkPager to use a common parent component\n const window = usePagerWindow(page, pageCount, pageRangeDisplayed)\n const makeClickHandler = useCallback(\n (value: number) => () => {\n onChange(value)\n },\n [onChange]\n )\n\n const hasNext = page < pageCount\n const hasPrev = page > 1\n return (\n <PagerContainer>\n <CircleButton\n type=\"button\"\n hidden={!hasPrev}\n disabled={!hasPrev}\n onClick={makeClickHandler(Math.max(1, page - 1))}\n noBackground\n >\n <WedgeIcon size={16} direction={WedgeDirection.Left} />\n </CircleButton>\n {window.map((p) =>\n p === '...' ? (\n <Spacer key={p}>\n <DotsIcon size={20} />\n </Spacer>\n ) : p === page ? (\n // we remove the onClick but don't mark it as disabled to preserve keyboard focus\n // not doing so causes the focus ring to flicker in and out of existence\n <CircleButton key={p} type=\"button\" aria-current>\n <Text>{p}</Text>\n </CircleButton>\n ) : (\n <CircleButton key={p} type=\"button\" onClick={makeClickHandler(p)}>\n <Text>{p}</Text>\n </CircleButton>\n )\n )}\n <CircleButton\n type=\"button\"\n hidden={!hasNext}\n disabled={!hasNext}\n onClick={makeClickHandler(Math.min(pageCount, page + 1))}\n noBackground\n >\n <WedgeIcon size={16} direction={WedgeDirection.Right} />\n </CircleButton>\n </PagerContainer>\n )\n})\n\nexport interface LinkPagerProps extends CommonProps {\n makeUrl(page: number): string\n}\n\nexport function LinkPager({\n page,\n pageCount,\n pageRangeDisplayed,\n makeUrl,\n}: LinkPagerProps) {\n const { Link } = useComponentAbstraction()\n const window = usePagerWindow(page, pageCount, pageRangeDisplayed)\n\n const hasNext = page < pageCount\n const hasPrev = page > 1\n return (\n <PagerContainer>\n <Link to={makeUrl(Math.max(1, page - 1))}>\n <CircleButton hidden={!hasPrev} aria-disabled={!hasPrev} noBackground>\n <WedgeIcon size={16} direction={WedgeDirection.Left} />\n </CircleButton>\n </Link>\n {window.map((p) =>\n p === '...' ? (\n <Spacer key={p}>\n <DotsIcon size={20} subLink />\n </Spacer>\n ) : p === page ? (\n <CircleButton key={p} type=\"button\" aria-current>\n <Text>{p}</Text>\n </CircleButton>\n ) : (\n <Link key={p} to={makeUrl(p)}>\n <CircleButton type=\"button\">\n <Text>{p}</Text>\n </CircleButton>\n </Link>\n )\n )}\n <Link to={makeUrl(Math.min(pageCount, page + 1))}>\n <CircleButton hidden={!hasNext} aria-disabled={!hasNext} noBackground>\n <WedgeIcon size={16} direction={WedgeDirection.Right} />\n </CircleButton>\n </Link>\n </PagerContainer>\n )\n}\n\nconst PagerContainer = styled.nav`\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst CircleButton = styled.button<{ noBackground?: boolean }>`\n font-size: 1rem;\n line-height: calc(1em + 8px);\n text-decoration: none;\n border: none;\n outline: none;\n touch-action: manipulation;\n user-select: none;\n transition: box-shadow 0.2s ease 0s, color 0.2s ease 0s,\n background 0.2s ease 0s, opacity 0.2s ease 0s;\n\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: content-box;\n min-width: 24px;\n min-height: 24px;\n padding: 8px;\n cursor: pointer;\n font-weight: bold;\n /* HACK:\n * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.\n * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.\n */\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-transform: translateZ(0);\n\n &[hidden] {\n visibility: hidden;\n display: block;\n }\n\n border-radius: 48px;\n\n background: transparent;\n color: ${({ theme }) => theme.color.text3};\n\n &:hover {\n background: ${({ theme }) => theme.color.surface3};\n color: ${({ theme }) => theme.color.text2};\n }\n\n &[aria-current] {\n background-color: ${({ theme }) => theme.color.surface6};\n color: ${({ theme }) => theme.color.text5};\n }\n\n &[aria-current]:hover {\n background-color: ${({ theme }) => theme.color.surface6};\n color: ${({ theme }) => theme.color.text5};\n }\n\n ${({ noBackground = false }) =>\n noBackground &&\n css`\n /* stylelint-disable-next-line no-duplicate-selectors */\n &:hover {\n background: transparent;\n }\n `}\n`\n\nconst Spacer = styled(CircleButton).attrs({ type: 'button', disabled: true })`\n && {\n color: ${({ theme }) => theme.color.text3};\n background: none;\n }\n`\n\nconst Text = 'span'\n","import styled from 'styled-components'\n\ninterface Props {\n size?: number | string\n subLink?: boolean\n}\n\nexport { DotsIcon as default }\n\nfunction DotsIcon({ size }: Props) {\n return (\n <StyledSVG viewBox=\"0 0 20 6\" width={size} height={size}>\n <path\n fillRule=\"evenodd\"\n d={`M5,14.5 C3.61928813,14.5 2.5,13.3807119 2.5,12 C2.5,10.6192881 3.61928813,9.5 5,9.5\n C6.38071187,9.5 7.5,10.6192881 7.5,12 C7.5,13.3807119 6.38071187,14.5 5,14.5 Z M12,14.5\n C10.6192881,14.5 9.5,13.3807119 9.5,12 C9.5,10.6192881 10.6192881,9.5 12,9.5\n C13.3807119,9.5 14.5,10.6192881 14.5,12 C14.5,13.3807119 13.3807119,14.5 12,14.5 Z M19,14.5\n C17.6192881,14.5 16.5,13.3807119 16.5,12 C16.5,10.6192881 17.6192881,9.5 19,9.5\n C20.3807119,9.5 21.5,10.6192881 21.5,12 C21.5,13.3807119 20.3807119,14.5 19,14.5 Z`}\n transform=\"translate(-2 -9)\"\n />\n </StyledSVG>\n )\n}\nDotsIcon.defaultProps = {\n size: 16,\n}\n\nconst StyledSVG = styled.svg`\n fill: currentColor;\n`\n","import styled from 'styled-components'\n\nimport { unreachable } from '../../foundation/utils'\n\nexport enum WedgeDirection {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\ninterface Props {\n size?: number | string\n direction: WedgeDirection\n}\n\nexport default function WedgeIcon({ size, direction }: Props) {\n return (\n // NOTE: directionToTransform depends on the value of viewBox\n <svg viewBox=\"0 0 10 8\" width={size} height={size}>\n <StyledPolyline\n strokeWidth=\"2\"\n points=\"1,2 5,6 9,2\"\n transform={directionToTransform(direction)}\n />\n </svg>\n )\n}\nWedgeIcon.defaultProps = {\n size: 16,\n white: false,\n lightGray: false,\n}\n\nfunction directionToTransform(direction: WedgeDirection) {\n // \"5 4\" is the center point of the \"0 0 10 8\" viewBox\n switch (direction) {\n case WedgeDirection.Up:\n return 'rotate(180 5 4)'\n case WedgeDirection.Down:\n return undefined\n case WedgeDirection.Left:\n return 'rotate(90 5 4)'\n case WedgeDirection.Right:\n return 'rotate(-90 5 4)'\n default:\n return unreachable(direction)\n }\n}\n\nconst StyledPolyline = styled.polyline`\n fill: none;\n stroke-linejoin: round;\n stroke-linecap: round;\n stroke: currentColor;\n`\n"],"mappings":"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","names":["React","DefaultLink","forwardRef","to","children","rest","ref","DefaultValue","Link","ComponentAbstractionContext","createContext","components","useComponentAbstraction","useContext","import_jsx_runtime","FilterButton","forwardRef","onClick","children","active","hover","reactive","ref","undefined","FilterIconButton","width","height","FilterLink","props","Link","useComponentAbstraction","buttonCss","css","theme","color","text3","text2","surface3","maxWidth","breakpoint","screen1","padding0Css","ButtonLike","styled","button","withConfig","componentId","PlainElement","span","StyledButtonLike","p","buttonWidth","buttonHeight","Filter","div","import_styled_components","import_styled_components","theme","createTheme","styled","import_styled_components","import_styled_components","import_jsx_runtime","size","viewBoxSize","currentColor","path","transform","fillRule","clipRule","Icon","styled","svg","withConfig","componentId","theme","color","text2","props","IconBasePath","import_jsx_runtime","size","path","Path","styled","withConfig","componentId","theme","color","surface1","import_utils","import_jsx_runtime","children","context","className","styledProps","Container","styled","div","withConfig","componentId","p","theme","o","bg","surface3","borderRadius","padding","vertical","default","horizontal","t","maxWidth","breakpoint","screen1","css","IconWrap","color","text4","Text","font","text2","typography","props","contextToProps","import_react","React","import_styled_components","MAIN_COLUMN_HORIZONTAL_MIN_MARGIN","RESPONSIVE_LEFT_WIDTH","columnSystem","COLUMN_UNIT","GUTTER_UNIT","RESPONSIVE_MAIN_MAX_WIDTH","import_react","import_styled_components","import_utils","useMediaScreen1","useMedia","maxWidth","useTheme","breakpoint","screen1","query","matcher","useMemo","__TEST__","matches","addListener","removeListener","matchMedia","setMatches","useState","callback","e","ReactDOM","flushSync","useLayoutEffect","useDebugValue","toString","measure","ref","getBoundingClientRect","undefined","useElementSize","deps","size","setSize","useReducer","state","next","height","width","watch","setWatch","observer","ResizeObserver","newSize","observe","unobserve","current","length","useDebounceAnimationState","defaultValue","setState","timer","useRef","setDebounceState","useCallback","value","force","requestAnimationFrame","import_foundation","import_utils","import_jsx_runtime","LayoutConfigContext","createContext","wide","center","withLeft","menu","children","header","isHeaderTopMenu","config","HeaderTopMenuContainer","styled","div","withConfig","componentId","theme","maxWidth","breakpoint","screen1","color","surface2","GlobalStyle","createGlobalStyle","background2","background1","LayoutRoot","LeftArea","RESPONSIVE_LEFT_WIDTH","GUTTER_UNIT","screen3","MainArea","p","columnSystem","COLUMN_UNIT","RESPONSIVE_MAIN_MAX_WIDTH","MAIN_COLUMN_HORIZONTAL_MIN_MARGIN","Header","text2","Grid","LayoutItem","forwardRef","span","ref","useContext","StyledLayoutItem","screen4","css","LayoutItemHeader","StyledLayoutItemHeader","LAYOUT_ITEM_BODY_PADDING","x","y","default","column1","narrow","yTop","yBottom","narrowColumn1","LayoutItemBody","horizontal","StyledLayoutItemBody","useLayoutItemBodyPadding","useMediaScreen1","CancelLayoutItemBodyPadding","cancelTop","StyledCancelLayoutItemBodyPadding","import_styled_components","import_react","React","import_styled_components","import_styled_components","import_react","hasChildren","element","isValidElement","Boolean","props","children","childToString","child","JSON","stringify","toString","onlyText","Array","isArray","Children","toArray","reduce","text","newText","concat","TextEllipsis","styled","div","attrs","children","title","onlyText","undefined","withConfig","componentId","props","lineHeight","lineLimit","css","import_utils","import_jsx_runtime","MenuListItemContext","createContext","padding","primary","secondary","onClick","disabled","noHover","gtmClass","children","useContext","undefined","e","Item","styled","div","withConfig","componentId","p","hasSubLabel","sidePadding","noClick","css","theme","color","surface3","o","disabledSelector","Labels","PrimaryText","text2","SecondaryText","text3","MenuListLinkItem","link","linkProps","Link","useComponentAbstraction","props","A","a","MenuListLinkItemWithIcon","icon","text","Icon","MenuListItemWithIcon","IconContainer","MenuListSpacer","MenuListLabel","import_jsx_runtime","links","active","Link","useComponentAbstraction","Container","map","link","index","to","id","undefined","text","LeftMenuContent","styled","div","withConfig","componentId","LinkItem","theme","color","text3","text2","surface3","React","import_styled_components","import_utils","import_jsx_runtime","forwardRef","SwitchCheckbox","gtmClass","flex","rowReverse","children","disabled","props","ref","undefined","Children","styled","span","withConfig","componentId","p","css","Label","label","SwitchOuter","SwitchInner","div","theme","color","text4","SwitchInnerKnob","text5","SwitchInput","input","attrs","type","brand","elementEffect","opacity","applyEffect","import_react","React","import_styled_components","import_jsx_runtime","memo","WithIcon","children","icon","show","prefix","pre","width","fit","fixed","node","undefined","Icon","Text","Root","styled","div","withConfig","componentId","p","css","AutoWidthIconAnchor","ref","useRef","useElementSize","forceCenteringCss","iconAnchorCss","IconAnchorNaive","IconNaive","IconAnchor","import_react","import_styled_components","passiveEventsResult","passiveEvents","undefined","options","Object","defineProperty","get","window","addEventListener","test","removeEventListener","isEdge","navigator","userAgent","includes","import_react","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","import_styled_components","unreachable","value","Error","arguments","length","JSON","stringify","import_jsx_runtime","path","size","direction","transform","directionToTransform","WedgeDirection","undefined","unreachable","import_utils","import_jsx_runtime","direction","show","offset","padding","bottomOffset","bottom","gradient","onClick","offsetStyle","Direction","left","paddingLeft","Math","max","paddingBottom","right","paddingRight","unreachable","CAROUSEL_BUTTON_SIZE","CarouselButtonIcon","styled","div","withConfig","componentId","theme","color","surface4","text5","Button","button","applyEffect","effect","hover","press","p","hide","css","_StyledButton","onlyNonTouchDevice","ScrollHintIcon","styled","CarouselButtonIcon","withConfig","componentId","theme","applyEffect","color","surface4","effect","hover","text5","press","onlyNonTouchDevice","css","import_jsx_runtime","GRADIENT_WIDTH","SCROLL_AMOUNT_COEF","buttonOffset","buttonPadding","bottomOffset","defaultScroll","align","offset","scrollOffset","onScroll","onResize","children","centerItems","onScrollStateChange","scrollAmountCoef","options","scrollLeft","setScrollLeft","useDebounceAnimationState","animation","useRef","maxScrollLeft","setMaxScrollLeft","useState","leftShow","setLeftShow","rightShow","setRightShow","styles","set","useSpring","scroll","ref","visibleAreaRef","innerRef","handleRight","useCallback","current","clientWidth","Math","min","from","reset","handleLeft","max","useEffect","newLeftShow","newRightShow","handleScroll","stop","manualScrollLeft","handleResize","scrollWidth","newMaxScrollLeft","useIsomorphicLayoutEffect","elm","innerElm","addEventListener","passiveEvents","passive","resizeObserver","ResizeObserver","observe","resizeObserverInner","removeEventListener","disconnect","scrollLength","handleScrollMove","disableGradient","setDisableGradient","isEdge","hasGradient","fadeInGradient","overflowGradient","Container","CarouselContainer","styled","ul","withConfig","componentId","css","ButtonsContainer","div","ScrollArea","animated","GradientContainer","p","RightGradient","LeftGradient","show","import_react","import_styled_components","import_styled_components","import_jsx_runtime","DotsIcon","size","defaultProps","StyledSVG","styled","svg","withConfig","componentId","import_styled_components","import_jsx_runtime","size","direction","directionToTransform","WedgeIcon","defaultProps","white","lightGray","WedgeDirection","undefined","unreachable","StyledPolyline","styled","polyline","withConfig","componentId","import_jsx_runtime","usePagerWindow","page","pageCount","pageRangeDisplayed","process","env","NODE_ENV","warning","window","useMemo","visibleFirstPage","visibleLastPage","Math","min","max","floor","Array","from","length","_","i","start","useDebugValue","memo","Pager","onChange","makeClickHandler","useCallback","value","hasNext","hasPrev","map","p","Text","LinkPager","makeUrl","Link","useComponentAbstraction","PagerContainer","styled","nav","withConfig","componentId","CircleButton","button","theme","color","text3","surface3","text2","surface6","text5","noBackground","css","Spacer","attrs","type","disabled"]}