@charcoal-ui/react 3.9.0 → 3.9.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/ComponentAbstraction.tsx","../src/core/SSRProvider.tsx","../src/core/OverlayProvider.tsx","../src/core/CharcoalProvider.tsx","../src/components/Button/index.tsx","../src/_lib/index.ts","../src/components/Button/lib/variantToFont.tsx","../src/components/Button/lib/variantToBackground.tsx","../src/components/Button/StyledButton.tsx","../src/components/Clickable/index.tsx","../src/components/IconButton/index.tsx","../src/components/Radio/index.tsx","../src/components/MultiSelect/index.tsx","../src/components/MultiSelect/context.ts","../src/components/Switch/index.tsx","../src/components/TextField/index.tsx","../src/components/FieldLabel/index.tsx","../src/components/TextField/useFocusWithClick.tsx","../src/components/TextArea/index.tsx","../src/components/Icon/index.tsx","../src/components/Modal/index.tsx","../src/components/Modal/Dialog/index.tsx","../../foundation/src/grid.ts","../src/_lib/useForwardedRef.tsx","../src/components/Modal/ModalBackgroundContext.tsx","../src/components/Modal/useCustomModalOverlay.tsx","../src/components/Modal/ModalPlumbing.tsx","../src/components/LoadingSpinner/index.tsx","../src/components/DropdownSelector/index.tsx","../src/components/DropdownSelector/DropdownPopover.tsx","../src/components/DropdownSelector/Popover/index.tsx","../src/components/DropdownSelector/Popover/usePreventScroll.tsx","../src/components/DropdownSelector/utils/findPreviewRecursive.tsx","../src/components/DropdownSelector/MenuList/index.tsx","../src/components/DropdownSelector/MenuList/MenuListContext.ts","../src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx","../src/components/DropdownSelector/DropdownMenuItem.tsx","../src/components/DropdownSelector/ListItem/index.tsx","../src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx","../src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx","../src/components/DropdownSelector/MenuItem/index.tsx","../src/components/DropdownSelector/MenuItemGroup/index.tsx","../src/components/SegmentedControl/index.tsx","../../../node_modules/@react-stately/form/dist/packages/@react-stately/form/src/index.ts","../../../node_modules/@react-stately/form/dist/packages/@react-stately/form/src/useFormValidationState.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/index.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/useControlledState.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/number.ts","../../../node_modules/@react-stately/radio/dist/packages/@react-stately/radio/src/index.ts","../../../node_modules/@react-stately/radio/dist/packages/@react-stately/radio/src/useRadioGroupState.ts","../src/components/SegmentedControl/RadioGroupContext.tsx","../src/components/Checkbox/index.tsx","../src/components/TagItem/index.tsx"],"sourcesContent":["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","export { SSRProvider } from '@react-aria/ssr'\n","export { OverlayProvider } from '@react-aria/overlays'\n","import * as React from 'react'\nimport { ThemeProvider } from 'styled-components'\nimport ComponentAbstraction, { Components } from './ComponentAbstraction'\nimport { TokenInjector } from '@charcoal-ui/styled'\nimport { ThemeMap } from '@charcoal-ui/styled/src/TokenInjector'\nimport { CharcoalTheme, ThemeColor } from '@charcoal-ui/theme'\n\nimport { OverlayProvider } from './OverlayProvider'\nimport { SSRProvider } from './SSRProvider'\n\nexport type CharcoalProviderProps = React.PropsWithChildren<{\n themeMap: ThemeMap<CharcoalTheme>\n defaultTheme?: CharcoalTheme\n injectTokens?: boolean\n components?: Partial<Components>\n background?: keyof ThemeColor\n}>\n\nexport function CharcoalProvider({\n themeMap,\n defaultTheme = themeMap[':root'],\n components = {},\n injectTokens = true,\n children,\n background,\n}: CharcoalProviderProps) {\n return (\n <SSRProvider>\n <ThemeProvider theme={defaultTheme}>\n {injectTokens && (\n <TokenInjector theme={themeMap} background={background} />\n )}\n <ComponentAbstraction components={components}>\n <OverlayProvider>{children}</OverlayProvider>\n </ComponentAbstraction>\n </ThemeProvider>\n </SSRProvider>\n )\n}\n","import { forwardRef } from 'react'\nimport { ClickableElement, ClickableProps } from '../Clickable'\nimport { variantToFont } from './lib/variantToFont'\nimport { variantToBackground } from './lib/variantToBackground'\nimport { StyledButton } from './StyledButton'\n\nexport type Variant =\n | 'Primary'\n | 'Default'\n | 'Overlay'\n | 'Danger'\n | 'Navigation'\n\nexport type Size = 'S' | 'M'\n\nexport type ButtonProps = Partial<{\n variant: Variant\n size: Size\n fullWidth: boolean\n isActive: boolean\n}> &\n ClickableProps\n\nconst Button = forwardRef<ClickableElement, ButtonProps>(function Button(\n {\n children,\n variant = 'Default',\n size = 'M',\n fullWidth: fixed = false,\n disabled = false,\n isActive = false,\n ...rest\n },\n ref\n) {\n return (\n <StyledButton\n {...rest}\n disabled={disabled}\n $background={variantToBackground(variant)}\n $color={variantToFont(variant)}\n $size={size}\n $fullWidth={fixed}\n $isActive={isActive}\n ref={ref}\n >\n {children}\n </StyledButton>\n )\n})\n\nexport default Button\n","/**\n * 今後ポートされる予定の汎用的な関数群\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// eslint-disable-next-line @typescript-eslint/unified-signatures\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\n/**\n * 複数のrefをマージする。\n *\n * forwardRefで受け取ったrefと、コンポーネント内で定義したrefを同じ要素につけたいケースなどで使う\n */\nexport function mergeRefs<T>(...refs: React.Ref<T>[]): React.RefCallback<T> {\n return (value) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (ref !== null) {\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n }\n}\n\nexport function countCodePointsInString(string: string) {\n // [...string] とするとproduction buildで動かなくなる\n // cf. https://twitter.com/f_subal/status/1497214727511891972\n return Array.from(string).length\n}\n","import { unreachable } from '../../../_lib'\nimport type { Variant } from '..'\n\nexport function variantToFont(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return 'text5'\n case 'Default':\n return 'text2'\n case 'Primary':\n return 'text5'\n case 'Navigation':\n return 'text5'\n case 'Danger':\n return 'text5'\n default:\n return unreachable(variant)\n }\n}\n","import { unreachable } from '../../../_lib'\nimport type { Variant } from '..'\n\nexport function variantToBackground(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return 'surface4'\n case 'Default':\n return 'surface3'\n case 'Primary':\n return 'brand'\n case 'Navigation':\n return 'surface6'\n case 'Danger':\n return 'assertive'\n default:\n return unreachable(variant)\n }\n}\n","import styled, { css } from 'styled-components'\nimport Clickable from '../Clickable'\nimport { variantToFont } from './lib/variantToFont'\nimport { variantToBackground } from './lib/variantToBackground'\nimport type { Size } from '.'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nconst horizontalPaddingSmall = css`\n padding-right: 16px;\n padding-left: 16px;\n`\n\nconst horizontalPaddingMedium = css`\n padding-right: 24px;\n padding-left: 24px;\n`\n\ntype StyledButtonProps = {\n $fullWidth: boolean\n $size: Size\n $background: ReturnType<typeof variantToBackground>\n $color: ReturnType<typeof variantToFont>\n $isActive: boolean\n}\n\nexport const StyledButton = styled(Clickable)<StyledButtonProps>`\n width: ${(p) => (p.$fullWidth ? 'stretch' : 'min-content')};\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n border-radius: 999999px;\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n\n ${(p) => (p.$size === 'M' ? horizontalPaddingMedium : horizontalPaddingSmall)}\n color: var(--charcoal-${(p) => p.$color});\n background-color: var(--charcoal-${(p) => p.$background});\n transition: 0.2s color, 0.2s background-color, 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n\n ${({ $isActive: $active, $color, $background }) =>\n $active\n ? css`\n color: var(--charcoal-${$color}-press);\n background-color: var(--charcoal-${$background}-press);\n `\n : css`\n &:hover {\n color: var(--charcoal-${$color}-hover);\n background-color: var(--charcoal-${$background}-hover);\n }\n &:active {\n color: var(--charcoal-${$color}-press);\n background-color: var(--charcoal-${$background}-press);\n }\n `}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n }\n height: ${(p) => (p.$size === 'M' ? 40 : 32)}px;\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../core/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface BaseProps {\n /**\n * クリックの無効化\n */\n disabled?: boolean\n}\n\ninterface LinkBaseProps {\n /**\n * リンクのURL。指定するとbuttonタグではなくaタグとして描画される\n */\n to: string\n}\n\nexport type ClickableProps =\n | (BaseProps & Omit<React.ComponentPropsWithoutRef<'button'>, 'disabled'>)\n | (BaseProps & LinkBaseProps & Omit<LinkProps, 'to'>)\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n\nconst Clickable = React.forwardRef<ClickableElement, ClickableProps>(\n function Clickable(props, ref) {\n const { Link } = useComponentAbstraction()\n const isLink = 'to' in props\n const as = isLink ? Link : 'button'\n const ariaDisabled = isLink && props.disabled === true ? true : undefined\n let rest = props\n if (isLink) {\n const { disabled, ..._rest } = props\n rest = _rest\n }\n return (\n <StyledClickableDiv\n {...rest}\n ref={ref}\n as={as}\n aria-disabled={ariaDisabled}\n />\n )\n }\n)\nexport default Clickable\n\nconst StyledClickableDiv = styled.div`\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n text-decoration: none;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n`\n","import { forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\nimport type { KnownIconType } from '@charcoal-ui/icons'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\ntype Variant = 'Default' | 'Overlay'\ntype Size = 'XS' | 'S' | 'M'\n\ninterface StyledProps {\n readonly variant?: Variant\n readonly size?: Size\n readonly icon: keyof KnownIconType\n readonly isActive?: boolean\n}\n\nexport type IconButtonProps = StyledProps & ClickableProps\n\nconst IconButton = forwardRef<ClickableElement, IconButtonProps>(\n function IconButtonInner(\n {\n variant = 'Default',\n size = 'M',\n icon,\n isActive = false,\n ...rest\n }: IconButtonProps,\n ref\n ) {\n validateIconSize(size, icon)\n return (\n <StyledIconButton\n {...rest}\n ref={ref}\n $size={size}\n $variant={variant}\n $isActive={isActive}\n >\n <pixiv-icon name={icon} />\n </StyledIconButton>\n )\n }\n)\n\nexport default IconButton\n\ntype StyledIconButtonProps = Required<{\n [key in keyof Pick<\n StyledProps,\n 'size' | 'variant' | 'isActive'\n > as `$${key}`]: StyledProps[key]\n}>\n\nconst StyledIconButton = styled(Clickable).attrs<\n StyledIconButtonProps,\n ReturnType<typeof styledProps>\n>(styledProps)<StyledIconButtonProps>`\n user-select: none;\n\n width: ${(p) => p.$width}px;\n height: ${(p) => p.$height}px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(${({ $font }) => `--charcoal-${$font}`});\n background-color: var(${({ $background }) => `--charcoal-${$background}`});\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${({ $isActive, $background, $font }) =>\n $isActive\n ? css`\n color: var(--charcoal-${$font}-press);\n background-color: var(--charcoal-${$background}-press);\n `\n : css`\n &:hover {\n color: var(--charcoal-${$font}-hover);\n background-color: var(--charcoal-${$background}-hover);\n }\n &:active {\n color: var(--charcoal-${$font}-press);\n background-color: var(--charcoal-${$background}-press);\n }\n `}\n ${focusVisibleFocusRingCss}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n }\n`\n\nfunction styledProps({ $size, $variant }: StyledIconButtonProps) {\n return {\n ...variantToProps($variant),\n ...sizeToProps($size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Default':\n return { $font: 'text3', $background: 'transparent' } as const\n case 'Overlay':\n return { $font: 'text5', $background: 'surface4' } as const\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'XS':\n return {\n $width: 20,\n $height: 20,\n }\n case 'S':\n return {\n $width: 32,\n $height: 32,\n }\n case 'M':\n return {\n $width: 40,\n $height: 40,\n }\n }\n}\n\n/**\n * validates matches of size and icon\n */\nfunction validateIconSize(size: Size, icon: keyof KnownIconType) {\n let requiredIconSize: string\n switch (size) {\n case 'XS':\n requiredIconSize = '16'\n break\n case 'S':\n case 'M':\n requiredIconSize = '24'\n break\n }\n // アイコン名は サイズ/名前\n const result = /^\\d*/u.exec(icon)\n if (result == null) {\n throw new Error('Invalid icon name')\n }\n const [iconSize] = result\n if (iconSize !== requiredIconSize) {\n // eslint-disable-next-line no-console\n console.warn(\n `IconButton with size \"${size}\" expect icon size \"${requiredIconSize}, but got \"${iconSize}\"`\n )\n }\n}\n","import { memo, forwardRef, useCallback, useContext } from 'react'\nimport * as React from 'react'\nimport styled from 'styled-components'\nimport warning from 'warning'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type RadioProps = React.PropsWithChildren<{\n value: string\n disabled?: boolean\n className?: string\n}>\n\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(function RadioInner(\n { value, disabled = false, children, className },\n ref\n) {\n const {\n name,\n selected,\n disabled: isParentDisabled,\n readonly,\n invalid,\n onChange,\n } = useContext(RadioGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`\n )\n\n const isSelected = value === selected\n const isDisabled = disabled || isParentDisabled\n const isReadonly = readonly && !isSelected\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.currentTarget.value)\n },\n [onChange]\n )\n\n return (\n <RadioRoot aria-disabled={isDisabled || isReadonly} className={className}>\n <RadioInput\n name={name}\n value={value}\n checked={isSelected}\n aria-invalid={invalid}\n onChange={handleChange}\n disabled={isDisabled || isReadonly}\n ref={ref}\n />\n {children != null && <RadioLabel>{children}</RadioLabel>}\n </RadioRoot>\n )\n})\n\nexport default memo(Radio)\n\nconst RadioRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: 4px;\n align-items: center;\n cursor: pointer;\n\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n margin: 0;\n padding: 6px;\n\n width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 999999px;\n background-color: var(--charcoal-surface1);\n transition: 0.2s background-color, 0.2s box-shadow;\n\n :disabled {\n cursor: default;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-surface1-hover);\n }\n &:active {\n background-color: var(--charcoal-surface1-press);\n }\n ${focusVisibleFocusRingCss}\n &[aria-invalid='true'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n &:focus {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n }\n }\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: var(--charcoal-text3);\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n background-color: var(--charcoal-text5);\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-brand-hover);\n &::after {\n background-color: var(--charcoal-text5-hover);\n }\n }\n &:active {\n background-color: var(--charcoal-brand-press);\n &::after {\n background-color: var(--charcoal-text5-press);\n }\n }\n }\n }\n }\n`\n\nconst RadioLabel = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nexport type RadioGroupProps = React.PropsWithChildren<{\n className?: string\n value?: string\n label: string\n name: string\n onChange(next: string): void\n disabled?: boolean\n readonly?: boolean\n invalid?: boolean\n}>\n\n// TODO: use (or polyfill) flex gap\nconst StyledRadioGroup = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 8px;\n`\n\ninterface RadioGroupContext {\n name: string\n selected?: string\n disabled: boolean\n readonly: boolean\n invalid: boolean\n onChange: (next: string) => void\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContext>({\n name: undefined as never,\n selected: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n onChange() {\n throw new Error(\n 'Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?'\n )\n },\n})\n\nexport function RadioGroup({\n className,\n value,\n label,\n name,\n onChange,\n disabled,\n readonly,\n invalid,\n children,\n}: RadioGroupProps) {\n const handleChange = useCallback(\n (next: string) => {\n onChange(next)\n },\n [onChange]\n )\n\n return (\n <RadioGroupContext.Provider\n value={{\n name,\n selected: value,\n disabled: disabled ?? false,\n readonly: readonly ?? false,\n invalid: invalid ?? false,\n onChange: handleChange,\n }}\n >\n <StyledRadioGroup\n role=\"radiogroup\"\n aria-orientation=\"vertical\"\n aria-label={label}\n aria-invalid={invalid}\n className={className}\n >\n {children}\n </StyledRadioGroup>\n </RadioGroupContext.Provider>\n )\n}\n","import { ChangeEvent, useCallback, useContext, forwardRef, memo } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport { px } from '@charcoal-ui/utils'\n\nimport { MultiSelectGroupContext } from './context'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type MultiSelectProps = React.PropsWithChildren<{\n value: string\n disabled?: boolean\n variant?: 'default' | 'overlay'\n className?: string\n onChange?: (payload: { value: string; selected: boolean }) => void\n}>\n\nconst MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n function MultiSelectInner(\n {\n value,\n disabled = false,\n onChange,\n variant = 'default',\n className,\n children,\n },\n ref\n ) {\n const {\n name,\n selected,\n disabled: parentDisabled,\n readonly,\n invalid,\n onChange: parentOnChange,\n } = useContext(MultiSelectGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`\n )\n\n const isSelected = selected.includes(value)\n const isDisabled = disabled || parentDisabled || readonly\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!(event.currentTarget instanceof HTMLInputElement)) {\n return\n }\n if (onChange) onChange({ value, selected: event.currentTarget.checked })\n parentOnChange({ value, selected: event.currentTarget.checked })\n },\n [onChange, parentOnChange, value]\n )\n\n return (\n <MultiSelectRoot aria-disabled={isDisabled} className={className}>\n <MultiSelectInput\n {...{\n name,\n value,\n invalid,\n }}\n checked={isSelected}\n disabled={isDisabled}\n onChange={handleChange}\n overlay={variant === 'overlay'}\n aria-invalid={invalid}\n ref={ref}\n />\n <MultiSelectInputOverlay\n overlay={variant === 'overlay'}\n invalid={invalid}\n aria-hidden={true}\n >\n <pixiv-icon name=\"24/Check\" unsafe-non-guideline-scale={16 / 24} />\n </MultiSelectInputOverlay>\n {Boolean(children) && <MultiSelectLabel>{children}</MultiSelectLabel>}\n </MultiSelectRoot>\n )\n }\n)\n\nexport default memo(MultiSelect)\n\nconst MultiSelectRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n gap: ${({ theme }) => px(theme.spacing[4])};\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst MultiSelectLabel = styled.div`\n display: flex;\n align-items: center;\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst MultiSelectInput = styled.input.attrs({ type: 'checkbox' })<{\n invalid: boolean\n overlay: boolean\n}>`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n background-color: var(--charcoal-text3);\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n &:checked {\n background-color: var(--charcoal-brand);\n &:hover {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-brand-hover);\n }\n }\n\n &:active {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-brand-press);\n }\n }\n }\n\n &:hover {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-text3-hover);\n }\n }\n\n &:active {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-text3-press);\n }\n }\n\n ${focusVisibleFocusRingCss}\n\n ${({ invalid, overlay }) =>\n invalid &&\n !overlay &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n ${({ overlay }) =>\n overlay &&\n css`\n background-color: var(--charcoal-surface4);\n `}\n }\n`\n\nconst MultiSelectInputOverlay = styled.div<{\n overlay: boolean\n invalid: boolean\n}>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 999999px;\n color: var(--charcoal-text5);\n transition: 0.2s box-shadow;\n ${({ invalid, overlay }) =>\n invalid &&\n overlay &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n\n ${({ overlay }) =>\n overlay &&\n css`\n border-color: var(--charcoal-text5);\n border-width: 2px;\n border-style: solid;\n `}\n`\n\nexport type MultiSelectGroupProps = React.PropsWithChildren<{\n className?: string\n name: string\n label: string\n selected: string[]\n onChange: (selected: string[]) => void\n disabled?: boolean\n readonly?: boolean\n invalid?: boolean\n}>\n\nexport function MultiSelectGroup({\n className,\n name,\n label,\n selected,\n onChange,\n disabled = false,\n readonly = false,\n invalid = false,\n children,\n}: MultiSelectGroupProps) {\n const handleChange = useCallback(\n (payload: { value: string; selected: boolean }) => {\n const index = selected.indexOf(payload.value)\n\n if (payload.selected) {\n if (index < 0) {\n onChange([...selected, payload.value])\n }\n } else {\n if (index >= 0) {\n onChange([...selected.slice(0, index), ...selected.slice(index + 1)])\n }\n }\n },\n [onChange, selected]\n )\n\n return (\n <MultiSelectGroupContext.Provider\n value={{\n name,\n selected: Array.from(new Set(selected)),\n disabled,\n readonly,\n invalid,\n onChange: handleChange,\n }}\n >\n <div className={className} aria-label={label} data-testid=\"SelectGroup\">\n {children}\n </div>\n </MultiSelectGroupContext.Provider>\n )\n}\n","import { createContext } from 'react'\n\ntype MultiSelectGroupContext = {\n name: string\n selected: string[]\n disabled: boolean\n readonly: boolean\n invalid: boolean\n onChange: ({ value, selected }: { value: string; selected: boolean }) => void\n}\n\nexport const MultiSelectGroupContext = createContext<MultiSelectGroupContext>({\n name: undefined as never,\n selected: [],\n disabled: false,\n readonly: false,\n invalid: false,\n onChange() {\n throw new Error(\n 'Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?'\n )\n },\n})\n","import { useSwitch } from '@react-aria/switch'\nimport type { AriaSwitchProps } from '@react-types/switch'\nimport { useMemo, memo, forwardRef } from 'react'\nimport * as React from 'react'\nimport { useToggleState } from 'react-stately'\nimport styled from 'styled-components'\nimport { useObjectRef } from '@react-aria/utils'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type SwitchProps = {\n name: string\n className?: string\n value?: string\n checked?: boolean\n disabled?: boolean\n onChange(checked: boolean): void\n} & (\n | // children か label は片方が必須\n {\n children: React.ReactNode\n }\n | {\n label: string\n }\n)\n\nconst SwitchCheckbox = forwardRef<HTMLInputElement, SwitchProps>(\n function SwitchCheckboxInner(props, external) {\n const { disabled, className } = props\n\n const ariaSwitchProps: AriaSwitchProps = useMemo(\n () => ({\n ...props,\n\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n isSelected: props.checked,\n }),\n [props]\n )\n\n const state = useToggleState(ariaSwitchProps)\n const ref = useObjectRef<HTMLInputElement>(external)\n const {\n inputProps: { className: _className, type: _type, ...rest },\n } = useSwitch(ariaSwitchProps, state, ref)\n\n return (\n <Label className={className} aria-disabled={disabled}>\n <SwitchInput {...rest} ref={ref} />\n {'children' in props ? (\n // eslint-disable-next-line react/destructuring-assignment\n <LabelInner>{props.children}</LabelInner>\n ) : undefined}\n </Label>\n )\n }\n)\n\nexport default memo(SwitchCheckbox)\n\nconst Label = styled.label`\n display: inline-grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n cursor: pointer;\n outline: 0;\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst LabelInner = styled.div`\n font-size: 14px;\n line-height: 22px;\n color: var(--charcoal-text2);\n margin-left: 4px;\n`\n\nconst SwitchInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n\n transition-property: background-color, box-shadow;\n transition-duration: 0.2s;\n cursor: inherit;\n\n outline: none;\n border-radius: 16px;\n height: 16px;\n margin: 0;\n background-color: var(--charcoal-text4);\n :hover {\n background-color: var(--charcoal-text4-hover);\n }\n :active {\n background-color: var(--charcoal-text4-press);\n }\n ${focusVisibleFocusRingCss}\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n border-radius: 1024px;\n background-color: var(--charcoal-text5);\n :hover {\n background-color: var(--charcoal-text5-hover);\n }\n :active {\n background-color: var(--charcoal-text5-press);\n }\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n :hover {\n background-color: var(--charcoal-brand-hover);\n }\n :active {\n background-color: var(--charcoal-brand-press);\n }\n &::after {\n transform: translateX(12px);\n transition: transform 0.2s;\n }\n }\n`\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport FieldLabel, { FieldLabelProps } from '../FieldLabel'\nimport { countCodePointsInString, mergeRefs } from '../../_lib'\nimport { ReactAreaUseTextFieldCompat } from '../../_lib/compat'\nimport { useFocusWithClick } from './useFocusWithClick'\nimport { mergeProps } from '@react-aria/utils'\n\ntype DOMProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n // react-ariaのhookは、onChangeが`(v: string) => void`想定\n | 'onChange'\n\n // RDFa Attributeとかぶる\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/58d57ca87ac7be0d306c0844dc254e90c150bd0d/types/react/index.d.ts#L1951\n | 'prefix'\n\n // ReactAreaUseTextFieldCompatに書いてあるような事情で、ここにあるイベントハンドラの型をゆるめる\n | keyof ReactAreaUseTextFieldCompat\n>\n\nexport interface TextFieldProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'>,\n DOMProps,\n ReactAreaUseTextFieldCompat {\n readonly prefix?: ReactNode\n readonly suffix?: ReactNode\n\n // <input> 要素は number とか string[] もありうるが、今はこれしか想定してない\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n\n // react-ariaの型定義のせいでHTMLInputElementにできない\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly assistiveText?: string\n readonly invalid?: boolean\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n function SingleLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showLabel = false,\n showCount = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n prefix = null,\n suffix = null,\n ...restProps\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const ariaRef = useRef<HTMLInputElement>(null)\n const [count, setCount] = useState(\n countCodePointsInString(props.value ?? '')\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n onChange?.(value)\n },\n [maxLength, nonControlled, onChange]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const {\n inputProps: ariaInputProps,\n labelProps,\n descriptionProps,\n errorMessageProps,\n } = useTextField(\n {\n inputElementType: 'input',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n const containerRef = useRef(null)\n\n useFocusWithClick(containerRef, ariaRef)\n\n const inputProps = mergeProps(restProps, ariaInputProps)\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledInputContainer\n ref={containerRef}\n invalid={invalid}\n aria-disabled={disabled === true ? true : undefined}\n hasPrefix={prefix != null}\n hasSuffix={suffix != null || showCount}\n >\n {prefix && <PrefixContainer>{prefix}</PrefixContainer>}\n <StyledInput\n ref={mergeRefs(forwardRef, ariaRef)}\n invalid={invalid}\n {...inputProps}\n />\n {(suffix || showCount) && (\n <SuffixContainer>\n {suffix}\n {showCount && (\n <SingleLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </SingleLineCounter>\n )}\n </SuffixContainer>\n )}\n </StyledInputContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n }\n)\n\nexport default TextField\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nexport const TextFieldLabel = styled(FieldLabel)`\n margin-bottom: 8px;\n`\n\nconst StyledInputContainer = styled.div<{\n invalid: boolean\n hasPrefix: boolean\n hasSuffix: boolean\n}>`\n display: grid;\n grid-template-columns: ${(p) =>\n [p.hasPrefix && 'auto', '1fr', p.hasSuffix && 'auto']\n .filter(Boolean)\n .join(' ')};\n height: 40px;\n transition: 0.2s background-color, 0.2s box-shadow;\n color: var(--charcoal-text2);\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n gap: 4px;\n padding: 0 8px;\n line-height: 22px;\n font-size: 14px;\n\n :not(:disabled):not([aria-disabled]):hover,\n [aria-disabled='false']:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n\n :focus-within {\n outline: none;\n box-shadow: 0 0 0 4px\n ${(p) => (p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`)};\n }\n\n ${(p) =>\n p.invalid &&\n css`\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n `}\n`\n\nconst PrefixContainer = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst SuffixContainer = styled.span`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n\nconst StyledInput = styled.input<{\n invalid: boolean\n}>`\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: 0;\n padding-right: 0;\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n background: transparent;\n\n color: var(--charcoal-text2);\n &::placeholder {\n color: var(--charcoal-text3);\n }\n`\n\nconst SingleLineCounter = styled.span`\n line-height: 22px;\n font-size: 14px;\n color: var(--charcoal-text3);\n`\n\nexport const AssistiveText = styled.p<{ invalid: boolean }>`\n font-size: 14px;\n line-height: 22px;\n margin-top: 4px;\n margin-bottom: -4px;\n color: ${(p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`};\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\n\nexport interface FieldLabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n readonly className?: string\n readonly label: string\n readonly subLabel?: React.ReactNode\n readonly required?: boolean\n // TODO: 翻訳用のContextで注入する\n readonly requiredText?: string\n}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel(\n {\n style,\n className,\n label,\n required = false,\n requiredText,\n subLabel,\n ...labelProps\n },\n ref\n ) {\n return (\n <FieldLabelWrapper style={style} className={className}>\n <Label ref={ref} {...labelProps}>\n {label}\n </Label>\n {required && <RequiredText>{requiredText}</RequiredText>}\n <SubLabelClickable>\n <span>{subLabel}</span>\n </SubLabelClickable>\n </FieldLabelWrapper>\n )\n }\n)\n\nexport default FieldLabel\n\nconst Label = styled.label`\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n display: flow-root;\n color: var(--charcoal-text1);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst RequiredText = styled.span`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst SubLabelClickable = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text3);\n transition: 0.2s color, 0.2s box-shadow;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n color: var(--charcoal-text3-hover);\n }\n &:active {\n color: var(--charcoal-text3-press);\n }\n &:active,\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);\n }\n }\n`\n\nconst FieldLabelWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n\n > ${RequiredText} {\n margin-left: 4px;\n }\n\n > ${SubLabelClickable} {\n margin-left: auto;\n }\n`\n","import { useEffect } from 'react'\nimport * as React from 'react'\n\nexport function useFocusWithClick(\n containerRef: React.RefObject<HTMLDivElement>,\n inputRef: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n) {\n useEffect(() => {\n const el = containerRef.current\n if (el) {\n const handleDown = (e: MouseEvent) => {\n if (e.target !== inputRef.current) {\n inputRef.current?.focus()\n }\n }\n el.addEventListener('click', handleDown)\n return () => {\n el.removeEventListener('click', handleDown)\n }\n }\n })\n}\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { forwardRef, useCallback, useEffect, useRef, useState } from 'react'\nimport styled, { css } from 'styled-components'\nimport { FieldLabelProps } from '../FieldLabel'\nimport { countCodePointsInString, mergeRefs } from '../../_lib'\nimport { ReactAreaUseTextFieldCompat } from '../../_lib/compat'\nimport { AssistiveText, TextFieldLabel } from '../TextField'\nimport { useFocusWithClick } from '../TextField/useFocusWithClick'\nimport { mergeProps } from '@react-aria/utils'\n\ntype DOMProps = Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n // react-ariaのhookは、onChangeが`(v: string) => void`想定\n | 'onChange'\n // ReactAreaUseTextFieldCompatに書いてあるような事情で、ここにあるイベントハンドラの型をゆるめる\n | keyof ReactAreaUseTextFieldCompat\n>\n\nexport interface TextAreaProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'>,\n DOMProps,\n ReactAreaUseTextFieldCompat {\n readonly autoHeight?: boolean\n readonly rows?: number\n\n // <input> 要素は number とか string[] もありうるが、今はこれしか想定してない\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n\n // react-ariaの型定義のせいでHTMLTextAreaElementにできない\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly assistiveText?: string\n readonly invalid?: boolean\n}\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextAreaInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showCount = false,\n showLabel = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n autoHeight = false,\n rows: initialRows = 4,\n ...restProps\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const ariaRef = useRef<HTMLTextAreaElement>(null)\n const [count, setCount] = useState(\n countCodePointsInString(props.value ?? '')\n )\n const [rows, setRows] = useState(initialRows)\n\n const syncHeight = useCallback(\n (textarea: HTMLTextAreaElement) => {\n const rows = (`${textarea.value}\\n`.match(/\\n/gu)?.length ?? 0) || 1\n setRows(initialRows <= rows ? rows : initialRows)\n },\n [initialRows]\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n onChange?.(value)\n },\n [autoHeight, maxLength, nonControlled, onChange, syncHeight]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const {\n inputProps: ariaInputProps,\n labelProps,\n descriptionProps,\n errorMessageProps,\n } = useTextField(\n {\n inputElementType: 'textarea',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n }, [autoHeight, syncHeight])\n\n const containerRef = useRef(null)\n\n useFocusWithClick(containerRef, ariaRef)\n\n const inputProps = mergeProps(restProps, ariaInputProps)\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledTextareaContainer\n ref={containerRef}\n invalid={invalid}\n rows={showCount ? rows + 1 : rows}\n aria-disabled={disabled === true ? 'true' : undefined}\n >\n <StyledTextarea\n ref={mergeRefs(textareaRef, forwardRef, ariaRef)}\n rows={rows}\n noBottomPadding={showCount}\n {...inputProps}\n />\n {showCount && (\n <MultiLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </MultiLineCounter>\n )}\n </StyledTextareaContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n }\n)\n\nexport default TextArea\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nconst StyledTextareaContainer = styled.div<{ rows: number; invalid: boolean }>`\n position: relative;\n overflow: hidden;\n\n color: var(--charcoal-text2);\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n ${({ rows }) => css`\n height: calc(22px * ${rows} + 18px);\n `};\n\n :not([aria-disabled]):hover,\n [aria-disabled='false']:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n :focus-within {\n outline: none;\n box-shadow: 0 0 0 4px\n ${(p) => (p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`)};\n }\n\n ${(p) =>\n p.invalid &&\n css`\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n `}\n`\n\nconst StyledTextarea = styled.textarea<{ noBottomPadding: boolean }>`\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n box-sizing: border-box;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) calc(8px / 0.875)\n ${(p) => (p.noBottomPadding ? 0 : '')};\n\n ${({ rows = 1, noBottomPadding }) => css`\n height: calc(22px / 0.875 * ${rows} + ${noBottomPadding ? 9 : 20}px);\n `};\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n color: var(--charcoal-text3);\n }\n`\n\nconst MultiLineCounter = styled.span`\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n line-height: 22px;\n font-size: 14px;\n color: var(--charcoal-text3);\n`\n","import * as React from 'react'\n\nimport '@charcoal-ui/icons'\nimport type { PixivIcon, Props } from '@charcoal-ui/icons'\n\nexport interface OwnProps {\n unsafeNonGuidelineScale?: number\n className?: string\n}\n\nexport interface IconProps\n extends OwnProps,\n React.PropsWithoutRef<\n Omit<Props, 'class' | 'unsafe-non-guideline-scale' | 'css'>\n > {}\n\nconst Icon = React.forwardRef<PixivIcon, IconProps>(function IconInner(\n { name, scale, unsafeNonGuidelineScale, className, ...rest },\n ref\n) {\n return (\n <pixiv-icon\n ref={ref}\n name={name}\n scale={scale}\n unsafe-non-guideline-scale={unsafeNonGuidelineScale}\n class={className}\n {...rest}\n />\n )\n})\n\nexport default Icon\n","import { useContext, forwardRef, memo } from 'react'\nimport * as React from 'react'\nimport { AriaModalOverlayProps, Overlay } from '@react-aria/overlays'\nimport styled, { css, useTheme } from 'styled-components'\nimport { AriaDialogProps } from '@react-types/dialog'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { useMedia } from '@charcoal-ui/styled'\nimport { animated, useTransition, easings } from 'react-spring'\nimport Button, { ButtonProps } from '../Button'\nimport IconButton from '../IconButton'\nimport { useObjectRef } from '@react-aria/utils'\nimport { Dialog } from './Dialog'\nimport { ModalBackgroundContext } from './ModalBackgroundContext'\nimport { useCharcoalModalOverlay } from './useCustomModalOverlay'\n\nexport type BottomSheet = boolean | 'full'\nexport type Size = 'S' | 'M' | 'L'\n\nexport type ModalProps = AriaModalOverlayProps &\n AriaDialogProps & {\n children: React.ReactNode\n zIndex?: number\n title: string\n size?: Size\n bottomSheet?: BottomSheet\n isOpen: boolean\n onClose: () => void\n className?: string\n\n /**\n * https://github.com/adobe/react-spectrum/issues/3787\n * Next.jsで使用する際に発生するエラーの一時的な回避策でdocument.bodyを指定する必要がある\n */\n portalContainer?: HTMLElement\n }\n\nconst DEFAULT_Z_INDEX = 10\n\n/**\n * モーダルコンポーネント。\n *\n * @example アプリケーションルートで `<OverlayProvider>` ないし `<CharcoalProvider>` で囲った上で利用する\n * ```tsx\n * import {\n * OverlayProvider,\n * Modal,\n * ModalHeader,\n * ModalBody,\n * ModalButtons\n * } from '@charcoal-ui/react'\n *\n * <OverlayProvider>\n * <App>\n * <Modal title=\"Title\" isOpen={state.isOpen} onClose={() => state.close()} isDismissable>\n * <ModalHeader />\n * <ModalBody>\n * ...\n * <ModalButtons>...</ModalButtons>\n * </ModalBody>\n * </Modal>\n * </App>\n * </OverlayProvider>\n * ```\n */\nconst Modal = forwardRef<HTMLDivElement, ModalProps>(function ModalInner(\n { children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props },\n external\n) {\n const {\n title,\n size = 'M',\n bottomSheet = false,\n isDismissable,\n onClose,\n className,\n isOpen = false,\n } = props\n\n const ref = useObjectRef<HTMLDivElement>(external)\n\n const { modalProps, underlayProps } = useCharcoalModalOverlay(\n {\n ...props,\n isKeyboardDismissDisabled:\n isDismissable === undefined || isDismissable === false,\n },\n {\n onClose,\n isOpen,\n },\n ref\n )\n\n const theme = useTheme()\n const isMobile = useMedia(maxWidth(theme.breakpoint.screen1)) ?? false\n const transitionEnabled = isMobile && bottomSheet !== false\n const showDismiss = !isMobile || bottomSheet !== true\n\n const transition = useTransition(isOpen, {\n from: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n overflow: 'hidden',\n },\n enter: {\n transform: 'translateY(0%)',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n },\n update: {\n overflow: 'auto',\n },\n leave: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n overflow: 'hidden',\n },\n config: transitionEnabled\n ? { duration: 400, easing: easings.easeOutQuart }\n : { duration: 0 },\n })\n\n const bgRef = React.useRef<HTMLElement>(null)\n\n const handleClick = React.useCallback(\n (e: MouseEvent) => {\n if (e.currentTarget === e.target) {\n onClose()\n }\n },\n [onClose]\n )\n\n return transition(\n ({ backgroundColor, overflow, transform }, item) =>\n item && (\n <Overlay portalContainer={portalContainer}>\n <ModalBackground\n ref={bgRef}\n zIndex={zIndex}\n {...underlayProps}\n style={transitionEnabled ? { backgroundColor, overflow } : {}}\n $bottomSheet={bottomSheet}\n onClick={handleClick}\n >\n <ModalBackgroundContext.Provider value={bgRef.current}>\n <Dialog\n ref={ref}\n {...modalProps}\n style={transitionEnabled ? { transform } : {}}\n size={size}\n bottomSheet={bottomSheet}\n className={className}\n >\n <ModalContext.Provider\n value={{\n titleProps: {},\n title,\n close: onClose,\n showDismiss,\n bottomSheet,\n }}\n >\n {children}\n {isDismissable === true && (\n <ModalCrossButton\n size=\"S\"\n icon=\"24/Close\"\n onClick={onClose}\n />\n )}\n </ModalContext.Provider>\n </Dialog>\n </ModalBackgroundContext.Provider>\n </ModalBackground>\n </Overlay>\n )\n )\n})\n\nexport default memo(Modal)\n\nexport const ModalContext = React.createContext<{\n /**\n * @deprecated\n */\n titleProps: React.HTMLAttributes<HTMLElement>\n title: string\n close?: () => void\n showDismiss: boolean\n bottomSheet: BottomSheet\n}>({\n titleProps: {},\n title: '',\n close: undefined,\n showDismiss: true,\n bottomSheet: false,\n})\n\nconst ModalBackground = animated(styled.div<{\n zIndex: number\n $bottomSheet: BottomSheet\n}>`\n z-index: ${({ zIndex }) => zIndex};\n overflow: auto;\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n width: -webkit-fill-available;\n width: -moz-available;\n height: 100%;\n justify-content: center;\n padding: 40px 0;\n box-sizing: border-box;\n\n background-color: var(--charcoal-surface4);\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.$bottomSheet !== false &&\n css`\n padding: 0;\n `}\n }\n`)\n\nconst ModalCrossButton = styled(IconButton)`\n position: absolute;\n top: 8px;\n right: 8px;\n\n color: var(--charcoal-text3);\n transition: 0.2s color;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n color: var(--charcoal-text3-hover);\n }\n &:active {\n color: var(--charcoal-text3-press);\n }\n }\n`\n\nexport function ModalTitle(props: React.HTMLAttributes<HTMLHeadingElement>) {\n const { titleProps, title } = useContext(ModalContext)\n return (\n <ModalHeading {...titleProps} {...props}>\n {title}\n </ModalHeading>\n )\n}\n\nconst ModalHeading = styled.h3`\n margin: 0;\n font-weight: inherit;\n font-size: inherit;\n`\n\nexport function ModalDismissButton({ children, ...props }: ButtonProps) {\n const { close, showDismiss } = useContext(ModalContext)\n\n if (!showDismiss) {\n return null\n }\n\n return (\n <Button {...props} onClick={close} fullWidth>\n {children}\n </Button>\n )\n}\n","import { forwardRef } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useDialog } from '@react-aria/dialog'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { unreachable } from '../../../_lib'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { animated } from 'react-spring'\nimport { useForwardedRef } from '../../../_lib/useForwardedRef'\nimport { Size, BottomSheet } from '..'\n\nexport const Dialog = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof AnimatedStyledDialogDiv>\n>(function Dialog(props, forwardRef) {\n const ref = useForwardedRef(forwardRef)\n const { dialogProps } = useDialog(\n {\n role: 'dialog',\n },\n ref\n )\n\n return (\n <AnimatedStyledDialogDiv\n {...props}\n role={dialogProps.role}\n tabIndex={dialogProps.tabIndex}\n aria-labelledby={dialogProps['aria-labelledby']}\n onBlur={dialogProps.onBlur}\n ref={ref}\n />\n )\n})\n\nconst AnimatedStyledDialogDiv = animated(styled.div<{\n size: Size\n bottomSheet: BottomSheet\n}>`\n margin: auto;\n position: relative;\n height: fit-content;\n width: ${(p) => {\n switch (p.size) {\n case 'S': {\n return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n case 'M': {\n return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n case 'L': {\n return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n default: {\n return unreachable(p.size)\n }\n }\n }}px;\n\n background-color: var(--charcoal-surface1);\n border-radius: 24px;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n max-width: 440px;\n width: calc(100% - 48px);\n ${(p) =>\n p.bottomSheet !== false &&\n css`\n max-width: unset;\n width: 100%;\n border-radius: 0;\n margin: auto 0 0 0;\n ${p.bottomSheet === 'full' &&\n css`\n min-height: 100%;\n `}\n `}\n }\n :focus {\n outline: none;\n }\n`)\n","/**\n * Unit for grid column (px)\n */\nexport const COLUMN_UNIT = 80\n\n/**\n * Unit for grid gutter width (px)\n */\nexport const GUTTER_UNIT = 24\n\n// TODO: Grid definition with breakpoint\n\n/**\n * Calculate px occupied by the span of the columns with gutter gap\n *\n * @param span column span count\n */\nexport function columnSystem(span: number, column: number, gutter: number) {\n return span * column + (span - 1) * gutter\n}\n","import * as React from 'react'\n\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>) {\n const innerRef = React.useRef<T>(null)\n\n React.useEffect(() => {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\n\n return innerRef\n}\n","import * as React from 'react'\n\n/**\n * ModalBackgroundのElementが入ったコンテキスト\n */\nexport const ModalBackgroundContext = React.createContext<HTMLElement | null>(\n null\n)\n","import * as React from 'react'\nimport {\n AriaModalOverlayProps,\n ModalOverlayAria,\n ariaHideOutside,\n useOverlay,\n useOverlayFocusContain,\n} from '@react-aria/overlays'\n\n/**\n * We want to enable scrolling on the modal background,\n * but `useModalOverlay` (specifically, `useOverlay` within it) detects pointer events on the scrollbar.\n * Therefore, to prevent this issue, we need to override `shouldCloseOnInteractOutside` in `useModalOverlay`.\n */\nexport function useCharcoalModalOverlay(\n props: AriaModalOverlayProps,\n state: { isOpen: boolean; onClose: () => void },\n ref: React.RefObject<HTMLElement>\n): ModalOverlayAria {\n const { overlayProps, underlayProps } = useOverlay(\n {\n ...props,\n isOpen: state.isOpen,\n onClose: state.onClose,\n shouldCloseOnInteractOutside: () => false,\n },\n ref\n )\n\n useOverlayFocusContain()\n\n React.useEffect(() => {\n if (state.isOpen && ref.current) {\n return ariaHideOutside([ref.current])\n }\n }, [state.isOpen, ref])\n\n return {\n modalProps: overlayProps,\n underlayProps,\n }\n}\n","import { BottomSheet, ModalContext, ModalTitle } from '.'\nimport styled, { css } from 'styled-components'\nimport { useContext } from 'react'\nimport { maxWidth } from '@charcoal-ui/utils'\n\nexport function ModalHeader() {\n const modalCtx = useContext(ModalContext)\n return (\n <ModalHeaderRoot $bottomSheet={modalCtx.bottomSheet}>\n <StyledModalTitle />\n </ModalHeaderRoot>\n )\n}\n\nconst ModalHeaderRoot = styled.div<{\n $bottomSheet: BottomSheet\n}>`\n height: 64px;\n display: grid;\n align-content: center;\n justify-content: center;\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.$bottomSheet !== false &&\n css`\n height: 48px;\n `}\n }\n`\n\nconst StyledModalTitle = styled(ModalTitle)`\n color: var(--charcoal-text1);\n font-size: 16px;\n line-height: 24px;\n font-weight: bold;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nexport const ModalAlign = styled.div`\n padding-left: 16px;\n padding-right: 16px;\n`\n\nexport const ModalBody = styled.div`\n padding-bottom: 40px;\n`\n\nexport const ModalButtons = styled.div`\n display: grid;\n grid-auto-flow: row;\n grid-row-gap: 8px;\n\n padding-top: 16px;\n padding-left: 16px;\n padding-right: 16px;\n`\n","import { forwardRef, useImperativeHandle, useRef, memo } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nexport type LoadingSpinnerProps = {\n readonly size?: number\n readonly padding?: number\n readonly transparent?: boolean\n readonly className?: string\n}\n\nconst LoadingSpinner = forwardRef<HTMLDivElement, LoadingSpinnerProps>(\n function LoadingSpinnerInner(\n { size = 48, padding = 16, transparent = false, className },\n ref\n ) {\n return (\n <LoadingSpinnerRoot\n size={size}\n padding={padding}\n transparent={transparent}\n className={className}\n ref={ref}\n >\n <LoadingSpinnerIcon />\n </LoadingSpinnerRoot>\n )\n }\n)\n\nexport default memo(LoadingSpinner)\n\nconst LoadingSpinnerRoot = styled.div.attrs({ role: 'progressbar' })<{\n size: number\n padding: number\n transparent: boolean\n}>`\n box-sizing: content-box;\n margin: auto;\n padding: ${(props) => props.padding}px;\n border-radius: 8px;\n font-size: ${(props) => props.size}px;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n opacity: 0.84;\n color: var(--charcoal-text4);\n background-color: ${({ transparent }) =>\n `var(--charcoal-${transparent ? 'transparent' : 'background1'})`};\n`\n\nconst scaleOut = keyframes`\n from {\n transform: scale(0);\n opacity: 1;\n }\n\n to {\n transform: scale(1);\n opacity: 0;\n }\n`\n\nconst Icon = styled.div.attrs({ role: 'presentation' })<{ once: boolean }>`\n width: 1em;\n height: 1em;\n border-radius: 1em;\n background-color: currentColor;\n animation: ${scaleOut} 1s both ease-out;\n animation-iteration-count: ${(p) => (p.once ? 1 : 'infinite')};\n\n &[data-reset-animation] {\n animation: none;\n }\n`\n\ntype Props = {\n once?: boolean\n}\n\nexport interface LoadingSpinnerIconHandler {\n restart(): void\n}\n\nexport const LoadingSpinnerIcon = forwardRef<LoadingSpinnerIconHandler, Props>(\n function LoadingSpinnerIcon({ once = false }, ref) {\n const iconRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => ({\n restart: () => {\n if (!iconRef.current) {\n return\n }\n iconRef.current.dataset.resetAnimation = 'true'\n // Force reflow hack!\n void iconRef.current.offsetWidth\n delete iconRef.current.dataset.resetAnimation\n },\n }))\n\n return <Icon ref={iconRef} once={once} />\n }\n)\n","import { ReactNode, useState, useRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { disabledSelector } from '@charcoal-ui/utils'\nimport Icon from '../Icon'\nimport FieldLabel from '../FieldLabel'\nimport { DropdownPopover } from './DropdownPopover'\nimport { findPreviewRecursive } from './utils/findPreviewRecursive'\nimport MenuList, { MenuListChildren } from './MenuList'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type DropdownSelectorProps = {\n label: string\n value: string\n disabled?: boolean\n placeholder?: string\n showLabel?: boolean\n invalid?: boolean\n assistiveText?: string\n required?: boolean\n requiredText?: string\n subLabel?: ReactNode\n children: MenuListChildren\n onChange: (value: string) => void\n}\n\nconst defaultRequiredText = '*必須'\n\nexport default function DropdownSelector(props: DropdownSelectorProps) {\n const triggerRef = useRef<HTMLButtonElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const preview = findPreviewRecursive(props.children, props.value)\n\n return (\n <DropdownSelectorRoot aria-disabled={props.disabled}>\n {props.showLabel === true && (\n <DropdownFieldLabel\n label={props.label}\n required={props.required}\n requiredText={props.requiredText ?? defaultRequiredText}\n subLabel={props.subLabel}\n />\n )}\n <DropdownButton\n invalid={props.invalid}\n disabled={props.disabled}\n onClick={() => {\n if (props.disabled === true) return\n setIsOpen(true)\n }}\n ref={triggerRef}\n type=\"button\"\n $active={isOpen}\n >\n <DropdownButtonText>\n {props.placeholder !== undefined && preview === undefined\n ? props.placeholder\n : preview}\n </DropdownButtonText>\n <DropdownButtonIcon name=\"16/Menu\" />\n </DropdownButton>\n {isOpen && (\n <DropdownPopover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n triggerRef={triggerRef}\n value={props.value}\n >\n <MenuList\n value={props.value}\n onChange={(v) => {\n props.onChange(v)\n setIsOpen(false)\n }}\n >\n {props.children}\n </MenuList>\n </DropdownPopover>\n )}\n {props.assistiveText !== undefined && (\n <AssertiveText invalid={props.invalid}>\n {props.assistiveText}\n </AssertiveText>\n )}\n </DropdownSelectorRoot>\n )\n}\n\nconst DropdownSelectorRoot = styled.div`\n display: inline-block;\n width: 100%;\n\n ${disabledSelector} {\n cursor: default;\n opacity: 0.32;\n }\n`\n\nconst DropdownFieldLabel = styled(FieldLabel)`\n width: 100%;\n margin-bottom: 8px;\n`\n\nconst DropdownButton = styled.button<{ invalid?: boolean; $active?: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n height: 40px;\n width: 100%;\n box-sizing: border-box;\n border: none;\n cursor: pointer;\n gap: 4px;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n padding-right: 8px;\n padding-left: 8px;\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n\n transition: 0.2s box-shadow, 0.2s background-color;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n ${({ $active }) =>\n $active === true\n ? css`\n background-color: var(--charcoal-surface3-press);\n `\n : css`\n &:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n &:active {\n background-color: var(--charcoal-surface3-press);\n }\n `}\n }\n\n ${({ invalid }) =>\n invalid === true &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n`\n\nconst DropdownButtonText = styled.span`\n text-align: left;\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nconst DropdownButtonIcon = styled(Icon)`\n color: var(--charcoal-text2);\n`\n\nconst AssertiveText = styled.div<{ invalid?: boolean }>`\n margin-top: 8px;\n font-size: 14px;\n color: var(--charcoal-text2);\n line-height: 22px;\n display: flow-root;\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n\n ${({ invalid }) =>\n invalid === true &&\n css`\n color: var(--charcoal-assertive);\n `}\n`\n","import { Key, useEffect, useRef } from 'react'\nimport Popover, { PopoverProps } from './Popover'\n\ntype DropdownPopoverProps = PopoverProps & {\n value?: Key\n}\n\n/**\n * DropdownSelectorの選択肢をを表示するためのPopover\n * triggerRefの要素と同じ幅になる\n * 表示の際にvalueが等しいDropdownMenuItemを中央に表示する\n */\nexport function DropdownPopover({ children, ...props }: DropdownPopoverProps) {\n const ref = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (props.isOpen && ref.current && props.triggerRef.current) {\n ref.current.style.width = `${props.triggerRef.current.clientWidth}px`\n }\n }, [props.triggerRef, props.isOpen])\n\n useEffect(() => {\n if (props.isOpen && props.value !== undefined) {\n // windowのスクロールを維持したまま選択肢をPopoverの中心に表示する\n const windowScrollY = window.scrollY\n const windowScrollX = window.scrollX\n const selectedElement = document.querySelector(\n `[data-key=\"${props.value.toString()}\"]`\n ) as HTMLElement | undefined\n selectedElement?.focus()\n window.scrollTo(windowScrollX, windowScrollY)\n }\n }, [props.value, props.isOpen])\n\n return (\n <Popover\n isOpen={props.isOpen}\n onClose={props.onClose}\n popoverRef={ref}\n triggerRef={props.triggerRef}\n >\n {children}\n </Popover>\n )\n}\n","import { RefObject, useContext, useRef } from 'react'\nimport { ReactNode } from 'react'\nimport { DismissButton, Overlay, usePopover } from '@react-aria/overlays'\nimport styled from 'styled-components'\nimport { ModalBackgroundContext } from '../../Modal/ModalBackgroundContext'\nimport { usePreventScroll } from './usePreventScroll'\n\nexport type PopoverProps = {\n isOpen: boolean\n onClose: () => void\n children: ReactNode\n triggerRef: RefObject<Element>\n popoverRef?: RefObject<HTMLDivElement>\n}\n\nconst _empty = () => null\n\n/**\n * 画面の全面に動的に開くことができるコンテナ要素\n * 外の要素をクリックしたり、内部からフォーカスを移動した場合に自動的に閉じる\n *\n * triggerRefの付近に画面内に収まるように表示される\n */\nexport default function Popover(props: PopoverProps) {\n const defaultPopoverRef = useRef<HTMLDivElement>(null)\n const finalPopoverRef =\n props.popoverRef === undefined ? defaultPopoverRef : props.popoverRef\n const { popoverProps, underlayProps } = usePopover(\n {\n triggerRef: props.triggerRef,\n popoverRef: finalPopoverRef,\n containerPadding: 16,\n },\n {\n close: props.onClose,\n isOpen: props.isOpen,\n // never used\n open: _empty,\n setOpen: _empty,\n toggle: _empty,\n }\n )\n\n const modalBackground = useContext(ModalBackgroundContext)\n usePreventScroll(modalBackground, props.isOpen)\n\n if (!props.isOpen) return null\n\n return (\n <Overlay portalContainer={document.body}>\n <div\n {...underlayProps}\n style={{\n position: 'fixed',\n zIndex:\n typeof popoverProps.style?.zIndex === 'number'\n ? popoverProps.style.zIndex - 1\n : 99999,\n inset: 0,\n }}\n />\n <DropdownPopoverDiv {...popoverProps} ref={finalPopoverRef}>\n <DismissButton onDismiss={() => props.onClose()} />\n {props.children}\n <DismissButton onDismiss={() => props.onClose()} />\n </DropdownPopoverDiv>\n </Overlay>\n )\n}\n\nconst DropdownPopoverDiv = styled.div`\n margin: 4px 0;\n list-style: none;\n overflow: auto;\n max-height: inherit;\n background-color: var(--charcoal-background1);\n border: solid 1px var(--charcoal-border-default);\n border-radius: 8px;\n padding-top: 8px;\n padding-bottom: 8px;\n`\n","import { useEffect } from 'react'\n\nexport function usePreventScroll(element: HTMLElement | null, isOpen: boolean) {\n useEffect(() => {\n if (isOpen && element) {\n const defaultPaddingRight = element.style.paddingRight\n const defaultOverflow = element.style.overflow\n element.style.paddingRight = `${\n window.innerWidth - element.clientWidth\n }px`\n element.style.overflow = 'hidden'\n return () => {\n element.style.paddingRight = defaultPaddingRight\n element.style.overflow = defaultOverflow\n }\n }\n }, [element, isOpen])\n}\n","import { ReactNode } from 'react'\nimport * as React from 'react'\n\n/**\n * DropdownSelectorの選択中の要素をレンダリングするため、\n * 選択中のMenuItemを再帰的に探索しReactNodeを返す。\n *\n * @param children\n * @param value\n * @param values\n * @returns\n */\nexport function findPreviewRecursive(\n children: ReactNode,\n value: string\n): ReactNode | undefined {\n const childArray = React.Children.toArray(children)\n for (let i = 0; i < childArray.length; i++) {\n const child = childArray[i]\n if (React.isValidElement(child)) {\n if ('value' in child.props) {\n const childValue = (child.props as { value: string }).value\n if (childValue === value && 'children' in child.props) {\n const children = (child.props as { children: ReactNode }).children\n return children\n }\n }\n if ('children' in child.props) {\n const children = findPreviewRecursive(\n (child.props as { children: ReactNode }).children,\n value\n )\n if (children !== undefined) {\n return children\n }\n }\n }\n }\n}\n","import { useRef } from 'react'\nimport styled from 'styled-components'\nimport { MenuListContext } from './MenuListContext'\nimport { getValuesRecursive } from './internals/getValuesRecursive'\nimport MenuItem from '../MenuItem'\nimport { Divider } from '../Divider'\nimport MenuItemGroup from '../MenuItemGroup'\n\ntype MenuListChild = React.ReactElement<\n typeof MenuItem | typeof MenuItemGroup | typeof Divider\n>\n\nexport type MenuListChildren = MenuListChild | MenuListChild[]\n\nexport type MenuListProps = {\n children: MenuListChildren\n value?: string\n onChange?: (v: string) => void\n}\n\n/**\n * 上下キーでフォーカス移動でき、エンターキーで選択できるリストの項目\n * 基本的に`<MenuItem>`, `<MenuGroup>`と合わせて使用する\n */\nexport default function MenuList(props: MenuListProps) {\n const root = useRef(null)\n const values: string[] = []\n getValuesRecursive(props.children, values)\n\n return (\n <StyledUl ref={root}>\n <MenuListContext.Provider\n value={{\n value: props.value ?? '',\n root,\n values,\n setValue: (v) => {\n props.onChange?.(v)\n },\n }}\n >\n {props.children}\n </MenuListContext.Provider>\n </StyledUl>\n )\n}\n\nconst StyledUl = styled.ul`\n padding: 0;\n margin: 0;\n`\n","import { RefObject, createContext } from 'react'\n\ntype MenuListContextType = {\n root?: RefObject<HTMLUListElement>\n value?: string\n values?: string[]\n setValue: (v: string) => void\n}\n\nexport const MenuListContext = createContext<MenuListContextType>({\n root: undefined,\n value: '',\n values: [],\n setValue: (_v: string) => {\n // empty\n },\n})\n","import * as React from 'react'\nimport MenuItem from '../../MenuItem'\nimport { MenuListChildren } from '..'\nimport MenuItemGroup from '../../MenuItemGroup'\n\n/**\n * valueというpropsを持つ子要素の値を再起的に探索して配列にする\n *\n * @param children\n * @param value\n * @param values\n * @returns\n */\nexport function getValuesRecursive(\n children: MenuListChildren,\n values: string[] = []\n) {\n const childArray = React.Children.toArray(children)\n for (let i = 0; i < childArray.length; i++) {\n const child = childArray[i]\n if (React.isValidElement(child)) {\n const props = child.props as {\n value?: never\n children?: React.ReactElement<typeof MenuItem | typeof MenuItemGroup>[]\n }\n if ('value' in props && typeof props.value === 'string') {\n const childValue = props.value\n values.push(childValue)\n }\n if ('children' in props && props.children) {\n getValuesRecursive(props.children, values)\n }\n }\n }\n}\n","import styled from 'styled-components'\nimport MenuItem, { MenuItemProps } from './MenuItem'\nimport { MenuListContext } from './MenuList/MenuListContext'\nimport { useContext } from 'react'\nimport Icon from '../Icon'\n\nexport type DropdownMenuItemProps = Omit<MenuItemProps<'div'>, 'as'>\n\n/**\n * DropdownSelectorの選択肢として使うMenuItem\n */\nexport default function DropdownMenuItem(props: DropdownMenuItemProps) {\n const { value: ctxValue } = useContext(MenuListContext)\n const isSelected = props.value === ctxValue\n const { children, ...rest } = props\n\n return (\n <MenuItem {...rest}>\n {isSelected && <Text2ColorIcon name=\"16/Check\" />}\n <StyledSpan isSelected={isSelected}>{props.children}</StyledSpan>\n </MenuItem>\n )\n}\n\n/**\n * アイコンがない時を考慮して20px(16pxのwidthと4pxのgap)の余白をとる\n */\nconst StyledSpan = styled.span<{ isSelected?: boolean }>`\n font-size: 14px;\n line-height: 22px;\n color: var(--charcoal-text2);\n padding: 9px 0;\n\n display: flex;\n align-items: center;\n width: 100%;\n margin-left: ${({ isSelected }) => (isSelected === true ? 0 : 20)}px;\n`\n\nconst Text2ColorIcon = styled(Icon)`\n color: var(--charcoal-text2);\n padding-right: 4px;\n`\n","import { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nexport type CustomJSXElement =\n | keyof JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.JSXElementConstructor<any>\n\nexport type ListItemProps<T extends CustomJSXElement = 'div'> = {\n children?: ReactNode\n as?: T\n} & Omit<React.ComponentProps<T>, 'children'>\n\n/**\n * リストのある要素を示すコンポーネント\n *\n * asを用いて拡張することができる\n * @example\n * ```\n * <ListItem as=\"a\" href=\"#\">Link</ListItem>\n * <ListItem as={NextLink} href=\"#\">NextLink</ListItem>\n * ```\n */\nexport default function ListItem<T extends CustomJSXElement = 'div'>(\n props: ListItemProps<T>\n) {\n const { children, ...rest } = props\n return (\n <StyledLi role=\"option\">\n <ItemDiv {...rest}>{props.children}</ItemDiv>\n </StyledLi>\n )\n}\n\nconst StyledLi = styled.li`\n list-style: none;\n`\n\nconst ItemDiv = styled.div`\n display: flex;\n align-items: center;\n min-height: 40px;\n cursor: pointer;\n outline: none;\n\n padding-right: 16px;\n padding-left: 16px;\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n\n :hover,\n :focus,\n :focus-within {\n background-color: var(--charcoal-surface3);\n }\n`\n","import { useCallback, useContext } from 'react'\nimport { handleFocusByKeyBoard } from './handleFocusByKeyBoard'\nimport { MenuListContext } from '../../MenuList/MenuListContext'\n\n/**\n * MenuListContextに含まれるvalue間で上下キーでfocusを移動できる\n * EnterキーでMenuListContextに値を設定する\n * 上記2つの処理を含む処理(handleKeyDown)と、Enterキーを押下した処理(setContextValue)を配列で返す\n * @param value\n * @returns\n */\nexport function useMenuItemHandleKeyDown(\n value?: string\n): [(e: React.KeyboardEvent<HTMLDivElement>) => void, () => void] {\n const { setValue, root, values } = useContext(MenuListContext)\n const setContextValue = useCallback(() => {\n if (value !== undefined) setValue(value)\n }, [value, setValue])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n setContextValue()\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n // prevent scroll\n e.preventDefault()\n if (!values || value === undefined) return\n const index = values.indexOf(value)\n if (index === -1) return\n\n const focusValue =\n e.key === 'ArrowUp'\n ? // prev or last\n index - 1 < 0\n ? values[values.length - 1]\n : values[index - 1]\n : // next or first\n index + 1 >= values.length\n ? values[0]\n : values[index + 1]\n\n const next = root?.current?.querySelector(`[data-key='${focusValue}']`)\n\n if (next instanceof HTMLElement) {\n next.focus({ preventScroll: true })\n if (root?.current?.parentElement) {\n handleFocusByKeyBoard(next, root.current.parentElement)\n }\n }\n }\n },\n [setContextValue, value, root, values]\n )\n return [handleKeyDown, setContextValue]\n}\n","/**\n * elementをparentのスクロールビューに入るようにスクロールする\n * parentがスクロール可能でなければelementが見えるようにスクロールする\n *\n * @param element\n * @param parent\n */\nexport function handleFocusByKeyBoard(element: Element, parent: HTMLElement) {\n const isScrollable = parent.scrollHeight > parent.clientHeight\n if (isScrollable) {\n const rect = element.getBoundingClientRect()\n const parentRect = parent.getBoundingClientRect()\n if (rect.bottom > parentRect.bottom) {\n parent.scrollTo({\n top: parent.scrollTop + rect.bottom - parentRect.bottom,\n })\n } else if (rect.top < parentRect.top) {\n parent.scrollTo({\n top: parent.scrollTop - (parentRect.top - rect.top),\n })\n }\n } else {\n scrollIfNeeded(element)\n }\n}\n\n/**\n * 要素が画面外にあればスクロールする、画面内にあればスクロールしない\n * @param element\n */\nfunction scrollIfNeeded(element: Element) {\n const elementRect = element.getBoundingClientRect()\n const isVisible =\n elementRect.top >= 0 &&\n elementRect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight)\n\n if (!isVisible) {\n element.scrollIntoView({\n block: 'nearest',\n })\n }\n}\n","import ListItem, { CustomJSXElement, ListItemProps } from '../ListItem'\nimport { useMenuItemHandleKeyDown } from './internals/useMenuItemHandleKeyDown'\n\nexport type MenuItemProps<T extends CustomJSXElement = never> = {\n value?: string\n disabled?: boolean\n} & ListItemProps<T>\n\n/**\n * 上下キーでフォーカス移動でき、エンターキーで選択できるリストの項目\n * 基本的に`<MenuList>`, `<MenuGroup>`と合わせて使用する\n */\nexport default function MenuItem<T extends CustomJSXElement>(\n props: MenuItemProps<T>\n) {\n const { children, as, ...rest } = props\n const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value)\n return (\n <ListItem\n {...rest}\n as={as as CustomJSXElement}\n data-key={props.value}\n onKeyDown={handleKeyDown}\n onClick={props.disabled === true ? undefined : setContextValue}\n tabIndex={-1}\n aria-disabled={props.disabled}\n >\n {props.children}\n </ListItem>\n )\n}\n","import styled from 'styled-components'\nimport MenuItem from '../MenuItem'\nimport { Divider } from '../Divider'\n\ntype MenuItemGroupChild = React.ReactElement<typeof MenuItem | typeof Divider>\n\nexport type MenuItemGroupProps = {\n text: string\n children: MenuItemGroupChild | MenuItemGroupChild[]\n}\n\n/**\n * 項目のリストを分類する見出しをつけるコンテナ要素\n */\nexport default function MenuItemGroup(props: MenuItemGroupProps) {\n return (\n <StyledLi role=\"presentation\">\n <TextSpan>{props.text}</TextSpan>\n <StyledUl role=\"group\">{props.children}</StyledUl>\n </StyledLi>\n )\n}\n\nconst TextSpan = styled.span`\n display: block;\n color: var(--charcoal-text3);\n font-size: 12px;\n font-weight: bold;\n padding: 12px 0 8px 16px;\n`\n\nconst StyledUl = styled.ul`\n padding-left: 0;\n margin: 0;\n box-sizing: border-box;\n list-style: none;\n overflow: hidden;\n`\n\nconst StyledLi = styled.li`\n display: block;\n`\n","import { ReactNode, forwardRef, memo, useMemo, useRef } from 'react'\nimport * as React from 'react'\nimport { useRadioGroupState } from '@react-stately/radio'\nimport {\n AriaRadioGroupProps,\n AriaRadioProps,\n useRadio,\n useRadioGroup,\n} from '@react-aria/radio'\nimport styled, { css } from 'styled-components'\n\nimport { RadioProvider, useRadioContext } from './RadioGroupContext'\n\ntype SegmentedControlItem = {\n label: React.ReactNode\n value: string\n disabled?: boolean\n}\n\nexport type SegmentedControlProps = {\n readonly id?: string\n readonly name?: string\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly required?: boolean\n readonly className?: string\n\n readonly value?: string\n readonly defaultValue?: string\n\n readonly data: string[] | SegmentedControlItem[]\n\n readonly onChange?: (value: string) => void\n}\n\nconst SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControlInner(props, ref) {\n const ariaRadioGroupProps = useMemo<AriaRadioGroupProps>(\n () => ({\n ...props,\n isDisabled: props.disabled,\n isReadOnly: props.readonly,\n isRequired: props.required,\n 'aria-label': props.name,\n }),\n [props]\n )\n const state = useRadioGroupState(ariaRadioGroupProps)\n const { radioGroupProps } = useRadioGroup(ariaRadioGroupProps, state)\n const segmentedControlItems = useMemo<SegmentedControlItem[]>(() => {\n return props.data.map((d) =>\n typeof d === 'string' ? { value: d, label: d } : d\n )\n }, [props.data])\n\n return (\n <SegmentedControlRoot\n ref={ref}\n {...radioGroupProps}\n className={props.className}\n >\n <RadioProvider value={state}>\n {segmentedControlItems.map((item) => (\n <Segmented\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.label}\n </Segmented>\n ))}\n </RadioProvider>\n </SegmentedControlRoot>\n )\n }\n)\n\nexport default memo(SegmentedControl)\n\ntype RadioProps = {\n value: string\n disabled?: boolean\n children?: ReactNode\n}\n\nconst Segmented = (props: RadioProps) => {\n const state = useRadioContext()\n const ref = useRef<HTMLInputElement>(null)\n const ariaRadioProps = useMemo<AriaRadioProps>(\n () => ({\n value: props.value,\n isDisabled: props.disabled,\n children: props.children,\n }),\n [props]\n )\n\n const { inputProps, isDisabled, isSelected } = useRadio(\n ariaRadioProps,\n state,\n ref\n )\n\n return (\n <SegmentedRoot\n aria-disabled={isDisabled || state.isReadOnly}\n checked={isSelected}\n >\n <SegmentedInput {...inputProps} ref={ref} />\n <RadioLabel>\n <SegmentedLabelInner>{props.children}</SegmentedLabelInner>\n </RadioLabel>\n </SegmentedRoot>\n )\n}\n\nconst SegmentedControlRoot = styled.div`\n display: inline-flex;\n align-items: center;\n\n background-color: var(--charcoal-surface3);\n border-radius: 16px;\n`\n\nconst SegmentedRoot = styled.label<{ checked?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n height: 32px;\n\n padding-right: 16px;\n padding-left: 16px;\n border-radius: 16px;\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: default;\n opacity: 0.32;\n }\n color: var(--charcoal-text2);\n\n ${({ checked = false }) =>\n checked &&\n css`\n background-color: var(--charcoal-brand);\n color: var(--charcoal-text5);\n `}\n`\nconst SegmentedInput = styled.input`\n position: absolute;\n\n height: 0px;\n width: 0px;\n padding: 0;\n margin: 0;\n\n appearance: none;\n box-sizing: border-box;\n overflow: hidden;\n white-space: nowrap;\n opacity: 0;\n`\n\nconst RadioLabel = styled.div`\n background: transparent;\n display: flex;\n align-items: center;\n height: 22px;\n`\nconst SegmentedLabelInner = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {FormValidationContext, useFormValidationState, DEFAULT_VALIDATION_RESULT, VALID_VALIDITY_STATE, privateValidationStateProp, mergeValidation} from './useFormValidationState';\nexport type {FormValidationState} from './useFormValidationState';\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createContext, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Validation, ValidationErrors, ValidationFunction, ValidationResult} from '@react-types/shared';\n\nexport const VALID_VALIDITY_STATE: ValidityState = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true\n};\n\nconst CUSTOM_VALIDITY_STATE: ValidityState = {\n ...VALID_VALIDITY_STATE,\n customError: true,\n valid: false\n};\n\nexport const DEFAULT_VALIDATION_RESULT: ValidationResult = {\n isInvalid: false,\n validationDetails: VALID_VALIDITY_STATE,\n validationErrors: []\n};\n\nexport const FormValidationContext = createContext<ValidationErrors>({});\n\nexport const privateValidationStateProp = '__formValidationState' + Date.now();\n\ninterface FormValidationProps<T> extends Validation<T> {\n builtinValidation?: ValidationResult,\n name?: string | string[],\n value: T\n}\n\nexport interface FormValidationState {\n /** Realtime validation results, updated as the user edits the value. */\n realtimeValidation: ValidationResult,\n /** Currently displayed validation results, updated when the user commits their changes. */\n displayValidation: ValidationResult,\n /** Updates the current validation result. Not displayed to the user until `commitValidation` is called. */\n updateValidation(result: ValidationResult): void,\n /** Resets the displayed validation state to valid when the user resets the form. */\n resetValidation(): void,\n /** Commits the realtime validation so it is displayed to the user. */\n commitValidation(): void\n}\n\nexport function useFormValidationState<T>(props: FormValidationProps<T>): FormValidationState {\n // Private prop for parent components to pass state to children.\n if (props[privateValidationStateProp]) {\n let {realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation} = props[privateValidationStateProp] as FormValidationState;\n return {realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation};\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useFormValidationStateImpl(props);\n}\n\nfunction useFormValidationStateImpl<T>(props: FormValidationProps<T>): FormValidationState {\n let {isInvalid, validationState, name, value, builtinValidation, validate, validationBehavior = 'aria'} = props;\n\n // backward compatibility.\n if (validationState) {\n isInvalid ||= validationState === 'invalid';\n }\n\n // If the isInvalid prop is true, update validation result in realtime (controlled).\n let controlledError: ValidationResult | null = isInvalid ? {\n isInvalid: true,\n validationErrors: [],\n validationDetails: CUSTOM_VALIDITY_STATE\n } : null;\n\n // Perform custom client side validation.\n let clientError: ValidationResult | null = useMemo(() => getValidationResult(runValidate(validate, value)), [validate, value]);\n\n if (builtinValidation?.validationDetails.valid) {\n builtinValidation = null;\n }\n\n // Get relevant server errors from the form.\n let serverErrors = useContext(FormValidationContext);\n let serverErrorMessages = useMemo(() => {\n if (name) {\n return Array.isArray(name) ? name.flatMap(name => asArray(serverErrors[name])) : asArray(serverErrors[name]);\n }\n return [];\n }, [serverErrors, name]);\n\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = useState(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = useState(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n\n let serverError: ValidationResult | null = useMemo(() =>\n getValidationResult(isServerErrorCleared ? [] : serverErrorMessages),\n [isServerErrorCleared, serverErrorMessages]\n );\n\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = useRef(DEFAULT_VALIDATION_RESULT);\n let [currentValidity, setCurrentValidity] = useState(DEFAULT_VALIDATION_RESULT);\n\n let lastError = useRef(DEFAULT_VALIDATION_RESULT);\n let commitValidation = () => {\n if (!commitQueued) {\n return;\n }\n\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n\n let [commitQueued, setCommitQueued] = useState(false);\n useEffect(commitValidation);\n\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation = controlledError || serverError || clientError || builtinValidation || DEFAULT_VALIDATION_RESULT;\n let displayValidation = validationBehavior === 'native'\n ? controlledError || serverError || currentValidity\n : controlledError || serverError || clientError || builtinValidation || currentValidity;\n\n return {\n realtimeValidation,\n displayValidation,\n updateValidation(value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !isEqualValidation(currentValidity, value)) {\n setCurrentValidity(value);\n } else {\n nextValidation.current = value;\n }\n },\n resetValidation() {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = DEFAULT_VALIDATION_RESULT;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') {\n setCommitQueued(false);\n }\n\n setServerErrorCleared(true);\n },\n commitValidation() {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') {\n setCommitQueued(true);\n }\n setServerErrorCleared(true);\n }\n };\n}\n\nfunction asArray<T>(v: T | T[]): T[] {\n if (!v) {\n return [];\n }\n\n return Array.isArray(v) ? v : [v];\n}\n\nfunction runValidate<T>(validate: ValidationFunction<T>, value: T): string[] {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') {\n return asArray(e);\n }\n }\n\n return [];\n}\n\nfunction getValidationResult(errors: string[]): ValidationResult | null {\n return errors.length ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: CUSTOM_VALIDITY_STATE\n } : null;\n}\n\nfunction isEqualValidation(a: ValidationResult | null, b: ValidationResult | null): boolean {\n if (a === b) {\n return true;\n }\n\n return a && b\n && a.isInvalid === b.isInvalid\n && a.validationErrors.length === b.validationErrors.length\n && a.validationErrors.every((a, i) => a === b.validationErrors[i])\n && Object.entries(a.validationDetails).every(([k, v]) => b.validationDetails[k] === v);\n}\n\nexport function mergeValidation(...results: ValidationResult[]): ValidationResult {\n let errors = new Set<string>();\n let isInvalid = false;\n let validationDetails = {\n ...VALID_VALIDITY_STATE\n };\n\n for (let v of results) {\n for (let e of v.validationErrors) {\n errors.add(e);\n }\n\n // Only these properties apply for checkboxes.\n isInvalid ||= v.isInvalid;\n for (let key in validationDetails) {\n validationDetails[key] ||= v.validationDetails[key];\n }\n }\n\n validationDetails.valid = !isInvalid;\n return {\n isInvalid,\n validationErrors: [...errors],\n validationDetails\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport {useControlledState} from './useControlledState';\nexport {clamp, snapValueToStep, toFixedNumber} from './number';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef, useState} from 'react';\n\nexport function useControlledState<T, C = T>(value: Exclude<T, undefined>, defaultValue: Exclude<T, undefined> | undefined, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(value: Exclude<T, undefined> | undefined, defaultValue: Exclude<T, undefined>, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(value: T, defaultValue: T, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void] {\n let [stateValue, setStateValue] = useState(value || defaultValue);\n\n let isControlledRef = useRef(value !== undefined);\n let isControlled = value !== undefined;\n useEffect(() => {\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n }\n isControlledRef.current = isControlled;\n }, [isControlled]);\n\n let currentValue = isControlled ? value : stateValue;\n let setValue = useCallback((value, ...args) => {\n let onChangeCaller = (value, ...onChangeArgs) => {\n if (onChange) {\n if (!Object.is(currentValue, value)) {\n onChange(value, ...onChangeArgs);\n }\n }\n if (!isControlled) {\n // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n }\n };\n\n if (typeof value === 'function') {\n console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs) => {\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) {\n return interceptedValue;\n }\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) {\n setStateValue(value);\n }\n onChangeCaller(value, ...args);\n }\n }, [isControlled, currentValue, onChange]);\n\n return [currentValue, setValue];\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */\nexport function clamp(value: number, min: number = -Infinity, max: number = Infinity): number {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\n\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n let remainder = ((value - (isNaN(min) ? 0 : min)) % step);\n let snappedValue = Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder;\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = min + Math.floor((max - min) / step) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(max / step) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n let string = step.toString();\n let index = string.indexOf('.');\n let precision = index >= 0 ? string.length - index : 0;\n\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n snappedValue = Math.round(snappedValue * pow) / pow;\n }\n\n return snappedValue;\n}\n\n/* Takes a value and rounds off to the number of digits. */\nexport function toFixedNumber(value: number, digits: number, base: number = 10): number {\n const pow = Math.pow(base, digits);\n\n return Math.round(value * pow) / pow;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {useRadioGroupState} from './useRadioGroupState';\n\nexport type {RadioGroupProps} from '@react-types/radio';\nexport type {RadioGroupState} from './useRadioGroupState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FormValidationState, useFormValidationState} from '@react-stately/form';\nimport {RadioGroupProps} from '@react-types/radio';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useState} from 'react';\nimport {ValidationState} from '@react-types/shared';\n\nexport interface RadioGroupState extends FormValidationState {\n /**\n * The name for the group, used for native form submission.\n * @deprecated\n * @private\n */\n readonly name: string,\n\n /** Whether the radio group is disabled. */\n readonly isDisabled: boolean,\n\n /** Whether the radio group is read only. */\n readonly isReadOnly: boolean,\n\n /** Whether the radio group is required. */\n readonly isRequired: boolean,\n\n /**\n * Whether the radio group is valid or invalid.\n * @deprecated Use `isInvalid` instead.\n */\n readonly validationState: ValidationState | null,\n\n /** Whether the radio group is invalid. */\n readonly isInvalid: boolean,\n\n /** The currently selected value. */\n readonly selectedValue: string | null,\n\n /** Sets the selected value. */\n setSelectedValue(value: string | null): void,\n\n /** The value of the last focused radio. */\n readonly lastFocusedValue: string | null,\n\n /** Sets the last focused value. */\n setLastFocusedValue(value: string | null): void\n}\n\nlet instance = Math.round(Math.random() * 10000000000);\nlet i = 0;\n\n/**\n * Provides state management for a radio group component. Provides a name for the group,\n * and manages selection and focus state.\n */\nexport function useRadioGroupState(props: RadioGroupProps): RadioGroupState {\n // Preserved here for backward compatibility. React Aria now generates the name instead of stately.\n let name = useMemo(() => props.name || `radio-group-${instance}-${++i}`, [props.name]);\n let [selectedValue, setSelected] = useControlledState(props.value, props.defaultValue ?? null, props.onChange);\n let [lastFocusedValue, setLastFocusedValue] = useState<string | null>(null);\n\n let validation = useFormValidationState({\n ...props,\n value: selectedValue\n });\n\n let setSelectedValue = (value) => {\n if (!props.isReadOnly && !props.isDisabled) {\n setSelected(value);\n validation.commitValidation();\n }\n };\n\n let isInvalid = validation.displayValidation.isInvalid;\n\n return {\n ...validation,\n name,\n selectedValue: selectedValue,\n setSelectedValue,\n lastFocusedValue,\n setLastFocusedValue,\n isDisabled: props.isDisabled || false,\n isReadOnly: props.isReadOnly || false,\n isRequired: props.isRequired || false,\n validationState: props.validationState || (isInvalid ? 'invalid' : null),\n isInvalid\n };\n}\n","import { createContext, useContext } from 'react'\nimport * as React from 'react'\nimport type { RadioGroupState } from '@react-stately/radio'\n\nconst RadioContext = createContext<RadioGroupState | null>(null)\n\ntype RadioProviderProps = React.PropsWithChildren<{\n value: RadioGroupState\n}>\nexport const RadioProvider: React.FC<RadioProviderProps> = ({\n value,\n children,\n}) => {\n return <RadioContext.Provider value={value}>{children}</RadioContext.Provider>\n}\nexport const useRadioContext = () => {\n const state = useContext(RadioContext)\n\n if (state === null)\n throw new Error('`<RadioProvider>` is not likely mounted.')\n\n return state\n}\n","import { forwardRef, memo, useMemo } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useCheckbox } from '@react-aria/checkbox'\nimport { useObjectRef } from '@react-aria/utils'\nimport { useToggleState } from 'react-stately'\n\nimport type { AriaCheckboxProps } from '@react-types/checkbox'\nimport Icon from '../Icon'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\ntype CheckboxLabelProps =\n | {\n children: React.ReactNode\n }\n | {\n label: string\n }\n\nexport type CheckboxProps = CheckboxLabelProps & {\n readonly id?: string\n readonly name?: string\n readonly className?: string\n\n readonly checked?: boolean\n readonly defaultChecked?: boolean\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly invalid?: boolean\n\n readonly onClick?: () => void\n readonly onChange?: (isSelected: boolean) => void\n readonly onBlur?: () => void\n readonly onFocus?: () => void\n}\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner({ invalid = false, ...props }, ref) {\n const ariaCheckboxProps = useMemo<AriaCheckboxProps>(\n () => ({\n ...props,\n isInValid: invalid,\n isSelected: props.checked,\n defaultSelected: props.defaultChecked,\n validationState: invalid ? 'invalid' : 'valid',\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n }),\n [invalid, props]\n )\n const state = useToggleState(ariaCheckboxProps)\n const objectRef = useObjectRef(ref)\n\n const { inputProps } = useCheckbox(ariaCheckboxProps, state, objectRef)\n const isDisabled = (props.disabled ?? false) || (props.readonly ?? false)\n\n return (\n <InputRoot aria-disabled={isDisabled} className={props.className}>\n <CheckboxRoot>\n <CheckboxInput\n type=\"checkbox\"\n {...inputProps}\n readOnly={props.readonly}\n />\n <CheckboxInputOverlay aria-hidden={true} checked={inputProps.checked}>\n <Icon name=\"24/Check\" unsafeNonGuidelineScale={2 / 3} />\n </CheckboxInputOverlay>\n </CheckboxRoot>\n\n {'children' in props && <InputLabel>{props.children}</InputLabel>}\n </InputRoot>\n )\n }\n)\n\nexport default memo(Checkbox)\n\nconst hiddenCss = css`\n visibility: hidden;\n`\n\nconst InputRoot = styled.label`\n position: relative;\n display: flex;\n\n cursor: pointer;\n\n gap: 4px;\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: default;\n opacity: 0.32;\n }\n`\n\nconst CheckboxRoot = styled.div`\n position: relative;\n`\n\nconst CheckboxInput = styled.input`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n cursor: pointer;\n margin: 0;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n transition: 0.2s box-shadow, 0.2s background-color;\n\n &:disabled {\n cursor: default;\n }\n &:read-only {\n cursor: default;\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-brand-hover);\n }\n &:active {\n background-color: var(--charcoal-brand-press);\n }\n }\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n &[aria-invalid='true'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n }\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: var(--charcoal-text4);\n }\n }\n`\n\nconst CheckboxInputOverlay = styled.div<{ checked?: boolean }>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: var(--charcoal-text5);\n\n ${({ checked }) => checked !== true && hiddenCss};\n`\n\nconst InputLabel = styled.div`\n color: var(--charcoal-text2);\n font-size: 14px;\n /** checkbox の height が 20px なのでcheckbox と text が揃っているように見せるために行ボックスの高さを 20px にしている */\n line-height: 20px;\n`\n","import { forwardRef, memo, useMemo, ComponentPropsWithoutRef } from 'react'\nimport { useObjectRef } from '@react-aria/utils'\nimport styled, { css } from 'styled-components'\nimport { px } from '@charcoal-ui/utils'\nimport { AriaButtonProps, useButton } from '@react-aria/button'\nimport Icon from '../Icon'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nconst sizeMap = {\n S: 32,\n M: 40,\n}\n\nexport type TagItemProps = {\n label: string\n translatedLabel?: string\n bgColor?: string\n bgImage?: string\n status?: 'default' | 'active' | 'inactive'\n size?: keyof typeof sizeMap\n disabled?: boolean\n className?: string\n} & Pick<ComponentPropsWithoutRef<'a'>, 'href' | 'target' | 'rel' | 'onClick'>\n\nconst TagItem = forwardRef<HTMLAnchorElement, TagItemProps>(\n function TagItemInner(\n {\n label,\n translatedLabel,\n bgColor = '#7ACCB1',\n bgImage,\n size = 'M',\n disabled,\n status = 'default',\n className,\n ...props\n },\n _ref\n ) {\n const ref = useObjectRef(_ref)\n const ariaButtonProps = useMemo<AriaButtonProps<'a'>>(\n () => ({\n elementType: 'a',\n isDisabled: disabled,\n ...props,\n }),\n [disabled, props]\n )\n\n const { buttonProps } = useButton(ariaButtonProps, ref)\n const hasTranslatedLabel =\n translatedLabel !== undefined && translatedLabel.length > 0\n\n return (\n <TagItemRoot\n ref={ref}\n size={hasTranslatedLabel ? 'M' : size}\n status={status}\n {...buttonProps}\n className={className}\n >\n <Background bgColor={bgColor} bgImage={bgImage} status={status} />\n\n <Inner>\n <LabelWrapper isTranslate={hasTranslatedLabel}>\n {hasTranslatedLabel && (\n <TranslatedLabel>\n <Label>{translatedLabel}</Label>\n </TranslatedLabel>\n )}\n <Label>{label}</Label>\n </LabelWrapper>\n {status === 'active' && <Icon name=\"16/Remove\" />}\n </Inner>\n </TagItemRoot>\n )\n }\n)\n\nexport default memo(TagItem)\n\ntype TagItemRootProps = Pick<TagItemProps, 'status'> &\n Required<Pick<TagItemProps, 'size'>>\n\ntype Horizontal = {\n left: number\n right: number\n}\nconst horizontalPadding = ({ left, right }: Horizontal) => css`\n padding-right: ${px(right)};\n padding-left: ${px(left)};\n`\nconst tagItemRootSize = (size: TagItemProps['size']) => {\n switch (size) {\n case 'M':\n return horizontalPadding({ left: 24, right: 24 })\n case 'S':\n return horizontalPadding({ left: 16, right: 16 })\n }\n}\nconst activeTagItemRoot = horizontalPadding({ left: 16, right: 8 })\n\nconst TagItemRoot = styled.a<TagItemRootProps>`\n isolation: isolate;\n position: relative;\n height: ${({ size }) => sizeMap[size]}px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n border-radius: 4px;\n ${({ size, status }) => status !== 'active' && tagItemRootSize(size)}\n ${({ status }) => status === 'active' && activeTagItemRoot}\n color: ${({ status }) =>\n status === 'inactive' ? 'var(--charcoal-text2)' : 'var(--charcoal-text5)'};\n\n transition: 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst Background = styled.div<\n Pick<TagItemProps, 'bgColor' | 'bgImage' | 'status'>\n>`\n position: absolute;\n z-index: 1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n background-color: ${({ bgColor }) => bgColor};\n ${({ status }) =>\n status === 'inactive' &&\n css`\n background-color: var(--charcoal-surface3);\n `}\n\n ${({ bgImage }) =>\n bgImage !== undefined &&\n css`\n background-color: var(--charcoal-surface4);\n\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-position: center;\n background-size: cover;\n background-image: url(${bgImage});\n mix-blend-mode: overlay;\n }\n `}\n`\n\nconst Inner = styled.div`\n display: inline-flex;\n gap: 8px;\n align-items: center;\n z-index: 2;\n`\n\nconst labelCSS = css`\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\nconst translateLabelCSS = css`\n display: flex;\n align-items: center;\n flex-direction: column;\n font-size: 10px;\n`\nconst LabelWrapper = styled.div<{ isTranslate?: boolean }>`\n ${({ isTranslate }) => (isTranslate ?? false ? translateLabelCSS : labelCSS)}\n`\n\nconst Label = styled.span`\n max-width: 152px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`\n\nconst TranslatedLabel = styled.div`\n font-size: 12px;\n line-height: 20px;\n font-weight: bold;\n display: flow-root;\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n"],"mappings":"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","names":["useContext","React","DefaultLink","forwardRef","to","children","rest","ref","DefaultValue","Link","ComponentAbstractionContext","createContext","components","useComponentAbstraction","SSRProvider","OverlayProvider","ThemeProvider","TokenInjector","jsx","CharcoalProvider","themeMap","defaultTheme","components","injectTokens","children","background","forwardRef","unreachable","value","Error","arguments","length","JSON","stringify","mergeRefs","refs","ref","current","countCodePointsInString","string","Array","from","variantToFont","variant","unreachable","variantToBackground","variant","unreachable","styled","css","React","styled","disabledSelector","jsx","Clickable","forwardRef","props","ref","Link","useComponentAbstraction","isLink","as","ariaDisabled","disabled","undefined","rest","_rest","StyledClickableDiv","styled","div","withConfig","componentId","focusVisibleFocusRingCss","horizontalPaddingSmall","css","horizontalPaddingMedium","StyledButton","styled","Clickable","withConfig","componentId","p","$fullWidth","$size","$color","$background","$isActive","$active","jsx","Button","forwardRef","children","variant","size","fullWidth","fixed","disabled","isActive","rest","ref","variantToBackground","variantToFont","forwardRef","styled","css","focusVisibleFocusRingCss","jsx","IconButton","forwardRef","IconButtonInner","variant","size","icon","isActive","rest","ref","validateIconSize","StyledIconButton","styled","Clickable","attrs","styledProps","withConfig","componentId","p","$width","$height","$font","$background","$isActive","css","$size","$variant","variantToProps","sizeToProps","requiredIconSize","result","exec","Error","iconSize","console","warn","memo","forwardRef","useCallback","useContext","React","styled","warning","focusVisibleFocusRingCss","jsx","jsxs","Radio","RadioInner","value","disabled","children","className","ref","name","selected","isParentDisabled","readonly","invalid","onChange","RadioGroupContext","undefined","isSelected","isDisabled","isReadonly","handleChange","e","currentTarget","RadioRoot","label","withConfig","componentId","RadioInput","input","attrs","type","RadioLabel","div","StyledRadioGroup","createContext","Error","RadioGroup","next","useCallback","useContext","forwardRef","memo","styled","css","warning","px","createContext","MultiSelectGroupContext","name","undefined","selected","disabled","readonly","invalid","onChange","Error","focusVisibleFocusRingCss","jsx","jsxs","MultiSelect","forwardRef","MultiSelectInner","value","disabled","onChange","variant","className","children","ref","name","selected","parentDisabled","readonly","invalid","parentOnChange","useContext","MultiSelectGroupContext","warning","undefined","isSelected","includes","isDisabled","handleChange","useCallback","event","currentTarget","HTMLInputElement","checked","Boolean","memo","MultiSelectRoot","styled","label","withConfig","componentId","theme","px","spacing","MultiSelectLabel","div","MultiSelectInput","input","attrs","type","overlay","css","MultiSelectInputOverlay","MultiSelectGroup","payload","index","indexOf","slice","Array","from","Set","useSwitch","useMemo","memo","forwardRef","useToggleState","styled","useObjectRef","focusVisibleFocusRingCss","jsx","jsxs","SwitchCheckbox","SwitchCheckboxInner","props","external","disabled","className","ariaSwitchProps","undefined","label","isDisabled","isSelected","checked","state","ref","inputProps","_className","type","_type","rest","children","Label","withConfig","componentId","LabelInner","div","SwitchInput","input","attrs","useTextField","useVisuallyHidden","useCallback","useEffect","useRef","useState","React","styled","css","React","styled","jsx","jsxs","FieldLabel","forwardRef","style","className","label","required","requiredText","subLabel","labelProps","ref","Label","withConfig","componentId","RequiredText","span","SubLabelClickable","div","FieldLabelWrapper","useEffect","useFocusWithClick","containerRef","inputRef","el","current","handleDown","e","target","focus","addEventListener","removeEventListener","mergeProps","jsx","jsxs","TextField","forwardRef","SingleLineTextFieldInner","onChange","props","className","showLabel","showCount","label","requiredText","subLabel","disabled","required","invalid","assistiveText","maxLength","prefix","suffix","restProps","visuallyHiddenProps","useVisuallyHidden","ariaRef","useRef","count","setCount","useState","countCodePointsInString","value","nonControlled","undefined","handleChange","useCallback","useEffect","inputProps","ariaInputProps","labelProps","descriptionProps","errorMessageProps","useTextField","inputElementType","isDisabled","isRequired","validationState","description","errorMessage","containerRef","useFocusWithClick","mergeRefs","length","TextFieldRoot","styled","div","withConfig","componentId","p","opacity","theme","elementEffect","TextFieldLabel","FieldLabel","StyledInputContainer","hasPrefix","hasSuffix","filter","Boolean","join","css","PrefixContainer","SuffixContainer","span","StyledInput","input","SingleLineCounter","AssistiveText","useTextField","useVisuallyHidden","forwardRef","useCallback","useEffect","useRef","useState","styled","css","mergeProps","jsx","jsxs","TextArea","forwardRef","TextAreaInner","onChange","props","className","showCount","showLabel","label","requiredText","subLabel","disabled","required","invalid","assistiveText","maxLength","autoHeight","rows","initialRows","restProps","visuallyHiddenProps","useVisuallyHidden","textareaRef","useRef","ariaRef","count","setCount","useState","countCodePointsInString","value","setRows","syncHeight","useCallback","textarea","match","length","nonControlled","undefined","handleChange","current","useEffect","inputProps","ariaInputProps","labelProps","descriptionProps","errorMessageProps","useTextField","inputElementType","isDisabled","isRequired","validationState","description","errorMessage","containerRef","useFocusWithClick","TextFieldRoot","mergeRefs","styled","div","withConfig","componentId","p","opacity","theme","elementEffect","StyledTextareaContainer","css","StyledTextarea","noBottomPadding","MultiLineCounter","span","React","jsx","Icon","forwardRef","IconInner","name","scale","unsafeNonGuidelineScale","className","rest","ref","useContext","forwardRef","memo","React","Overlay","styled","css","useTheme","maxWidth","useMedia","animated","useTransition","easings","useObjectRef","forwardRef","styled","css","useDialog","COLUMN_UNIT","GUTTER_UNIT","columnSystem","span","column","gutter","maxWidth","animated","React","useForwardedRef","ref","innerRef","useRef","useEffect","current","jsx","Dialog","forwardRef","props","ref","useForwardedRef","dialogProps","useDialog","role","tabIndex","onBlur","AnimatedStyledDialogDiv","animated","styled","div","withConfig","componentId","p","size","columnSystem","COLUMN_UNIT","GUTTER_UNIT","unreachable","theme","maxWidth","breakpoint","screen1","bottomSheet","css","React","ModalBackgroundContext","createContext","React","ariaHideOutside","useOverlay","useOverlayFocusContain","useCharcoalModalOverlay","props","state","ref","overlayProps","underlayProps","isOpen","onClose","shouldCloseOnInteractOutside","useEffect","current","modalProps","jsx","jsxs","DEFAULT_Z_INDEX","Modal","forwardRef","ModalInner","children","zIndex","portalContainer","props","external","title","size","bottomSheet","isDismissable","onClose","className","isOpen","ref","useObjectRef","modalProps","underlayProps","useCharcoalModalOverlay","isKeyboardDismissDisabled","undefined","theme","useTheme","isMobile","useMedia","maxWidth","breakpoint","screen1","transitionEnabled","showDismiss","transition","useTransition","from","transform","backgroundColor","overflow","enter","update","leave","config","duration","easing","easings","easeOutQuart","bgRef","useRef","handleClick","useCallback","e","currentTarget","target","item","current","titleProps","close","memo","ModalContext","createContext","ModalBackground","animated","styled","div","withConfig","componentId","p","$bottomSheet","css","ModalCrossButton","IconButton","ModalTitle","useContext","ModalHeading","h3","styled","css","useContext","maxWidth","jsx","ModalHeader","modalCtx","ModalContext","bottomSheet","ModalHeaderRoot","div","withConfig","componentId","theme","breakpoint","screen1","p","$bottomSheet","StyledModalTitle","ModalTitle","ModalAlign","ModalBody","ModalButtons","forwardRef","useImperativeHandle","useRef","memo","styled","keyframes","jsx","LoadingSpinner","LoadingSpinnerInner","size","padding","transparent","className","ref","LoadingSpinnerRoot","div","attrs","role","withConfig","componentId","props","scaleOut","Icon","p","once","LoadingSpinnerIcon","iconRef","restart","current","dataset","resetAnimation","offsetWidth","useState","useRef","styled","css","disabledSelector","useEffect","useRef","useContext","useRef","DismissButton","Overlay","usePopover","styled","useEffect","usePreventScroll","element","isOpen","defaultPaddingRight","style","paddingRight","defaultOverflow","overflow","window","innerWidth","clientWidth","jsx","jsxs","_empty","props","defaultPopoverRef","useRef","finalPopoverRef","popoverRef","undefined","popoverProps","underlayProps","usePopover","triggerRef","containerPadding","close","onClose","isOpen","open","setOpen","toggle","modalBackground","useContext","ModalBackgroundContext","usePreventScroll","Overlay","document","body","position","zIndex","style","inset","children","DropdownPopoverDiv","styled","div","withConfig","componentId","jsx","DropdownPopover","children","props","ref","useRef","useEffect","isOpen","current","triggerRef","style","width","clientWidth","value","undefined","windowScrollY","window","scrollY","windowScrollX","scrollX","selectedElement","document","querySelector","toString","focus","scrollTo","onClose","React","findPreviewRecursive","children","value","childArray","Children","toArray","i","length","child","isValidElement","props","childValue","undefined","useRef","styled","createContext","MenuListContext","root","undefined","value","values","setValue","_v","React","getValuesRecursive","children","values","childArray","Children","toArray","i","length","child","isValidElement","props","value","childValue","push","jsx","props","root","useRef","values","getValuesRecursive","children","value","setValue","v","onChange","StyledUl","styled","ul","withConfig","componentId","focusVisibleFocusRingCss","jsx","jsxs","defaultRequiredText","props","triggerRef","useRef","isOpen","setIsOpen","useState","preview","findPreviewRecursive","children","value","disabled","showLabel","label","required","requiredText","subLabel","invalid","placeholder","undefined","v","onChange","assistiveText","DropdownSelectorRoot","styled","div","withConfig","componentId","disabledSelector","DropdownFieldLabel","FieldLabel","DropdownButton","button","$active","css","DropdownButtonText","span","DropdownButtonIcon","Icon","AssertiveText","styled","styled","jsx","props","children","rest","StyledLi","li","withConfig","componentId","ItemDiv","div","useCallback","useContext","handleFocusByKeyBoard","element","parent","isScrollable","scrollHeight","clientHeight","rect","getBoundingClientRect","parentRect","bottom","scrollTo","top","scrollTop","scrollIfNeeded","elementRect","isVisible","window","innerHeight","document","documentElement","scrollIntoView","block","useMenuItemHandleKeyDown","value","setValue","root","values","useContext","MenuListContext","setContextValue","useCallback","undefined","handleKeyDown","e","key","preventDefault","index","indexOf","focusValue","length","next","current","querySelector","HTMLElement","focus","preventScroll","parentElement","handleFocusByKeyBoard","jsx","props","children","as","rest","handleKeyDown","setContextValue","useMenuItemHandleKeyDown","value","disabled","undefined","useContext","jsx","jsxs","props","value","ctxValue","useContext","MenuListContext","isSelected","children","rest","StyledSpan","styled","span","withConfig","componentId","Text2ColorIcon","Icon","styled","jsx","jsxs","props","StyledLi","text","StyledUl","children","TextSpan","span","withConfig","componentId","ul","li","forwardRef","memo","useMemo","useRef","$e5be200c675c3b3a$export$aca958c65c314e6c","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","valid","$e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE","$e5be200c675c3b3a$export$dad6ae84456c676a","isInvalid","validationDetails","validationErrors","$e5be200c675c3b3a$export$571b5131b7e65c11","$jcIOw$createContext","$e5be200c675c3b3a$export$a763b9476acd3eb","Date","now","$e5be200c675c3b3a$export$fc1a364ae1f3ff10","props","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","$e5be200c675c3b3a$var$useFormValidationStateImpl","validationState","name","value","builtinValidation","validate","validationBehavior","controlledError","clientError","$jcIOw$useMemo","$e5be200c675c3b3a$var$getValidationResult","$e5be200c675c3b3a$var$runValidate","serverErrors","$jcIOw$useContext","serverErrorMessages","Array","isArray","flatMap","$e5be200c675c3b3a$var$asArray","lastServerErrors","setLastServerErrors","$jcIOw$useState","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","$jcIOw$useRef","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","error","current","$e5be200c675c3b3a$var$isEqualValidation","$jcIOw$useEffect","v","e","errors","length","a","b","every","i","Object","entries","k","$458b0a5536c1a7cf$export$40bfa8c7b0832715","value","defaultValue","onChange","stateValue","setStateValue","$6imuh$useState","isControlledRef","$6imuh$useRef","undefined","isControlled","$6imuh$useEffect","wasControlled","current","console","warn","currentValue","setValue","$6imuh$useCallback","args","onChangeCaller","onChangeArgs","Object","is","updateFunction","oldValue","functionArgs","interceptedValue","$a54cdc5c1942b639$var$instance","Math","round","random","$a54cdc5c1942b639$var$i","$a54cdc5c1942b639$export$bca9d026f8e704eb","props","name","$fQ2SF$useMemo","_props_defaultValue","selectedValue","setSelected","$fQ2SF$useControlledState","value","defaultValue","onChange","lastFocusedValue","setLastFocusedValue","$fQ2SF$useState","validation","$fQ2SF$useFormValidationState","setSelectedValue","isReadOnly","isDisabled","commitValidation","isInvalid","displayValidation","isRequired","validationState","useRadio","useRadioGroup","styled","css","createContext","useContext","jsx","RadioContext","RadioProvider","value","children","useRadioContext","state","Error","jsx","jsxs","SegmentedControl","forwardRef","SegmentedControlInner","props","ref","ariaRadioGroupProps","useMemo","isDisabled","disabled","isReadOnly","readonly","isRequired","required","name","state","useRadioGroupState","radioGroupProps","useRadioGroup","segmentedControlItems","data","map","d","value","label","className","item","memo","Segmented","useRadioContext","useRef","ariaRadioProps","children","inputProps","isSelected","useRadio","RadioLabel","SegmentedControlRoot","styled","div","withConfig","componentId","SegmentedRoot","checked","css","SegmentedInput","input","SegmentedLabelInner","forwardRef","memo","useMemo","styled","css","useCheckbox","useObjectRef","useToggleState","focusVisibleFocusRingCss","jsx","jsxs","Checkbox","forwardRef","CheckboxInner","invalid","props","ref","ariaCheckboxProps","useMemo","isInValid","isSelected","checked","defaultSelected","defaultChecked","validationState","undefined","label","isDisabled","disabled","state","useToggleState","objectRef","useObjectRef","inputProps","useCheckbox","readonly","className","children","memo","hiddenCss","css","InputRoot","styled","withConfig","componentId","CheckboxRoot","div","CheckboxInput","input","CheckboxInputOverlay","InputLabel","forwardRef","memo","useMemo","useObjectRef","styled","css","px","useButton","focusVisibleFocusRingCss","jsx","jsxs","sizeMap","S","M","TagItem","forwardRef","TagItemInner","label","translatedLabel","bgColor","bgImage","size","disabled","status","className","props","_ref","ref","useObjectRef","ariaButtonProps","useMemo","elementType","isDisabled","buttonProps","useButton","hasTranslatedLabel","undefined","length","Label","memo","horizontalPadding","left","right","css","px","tagItemRootSize","activeTagItemRoot","TagItemRoot","styled","a","withConfig","componentId","Background","div","Inner","labelCSS","translateLabelCSS","LabelWrapper","isTranslate","span","TranslatedLabel"]}
1
+ {"version":3,"sources":["../src/core/ComponentAbstraction.tsx","../src/core/SSRProvider.tsx","../src/core/OverlayProvider.tsx","../src/core/CharcoalProvider.tsx","../src/components/Button/index.tsx","../src/_lib/index.ts","../src/components/Button/lib/variantToFont.tsx","../src/components/Button/lib/variantToBackground.tsx","../src/components/Button/StyledButton.tsx","../src/components/Clickable/index.tsx","../src/components/IconButton/index.tsx","../src/components/Radio/index.tsx","../src/components/MultiSelect/index.tsx","../src/components/MultiSelect/context.ts","../src/components/Switch/index.tsx","../src/components/TextField/index.tsx","../src/components/FieldLabel/index.tsx","../src/components/TextField/useFocusWithClick.tsx","../src/components/TextArea/index.tsx","../src/components/Icon/index.tsx","../src/components/Modal/index.tsx","../src/components/Modal/Dialog/index.tsx","../../foundation/src/grid.ts","../src/_lib/useForwardedRef.tsx","../src/components/Modal/ModalBackgroundContext.tsx","../src/components/Modal/useCustomModalOverlay.tsx","../src/components/Modal/ModalPlumbing.tsx","../src/components/LoadingSpinner/index.tsx","../src/components/DropdownSelector/index.tsx","../src/components/DropdownSelector/DropdownPopover.tsx","../src/components/DropdownSelector/Popover/index.tsx","../src/components/DropdownSelector/Popover/usePreventScroll.tsx","../src/components/DropdownSelector/utils/findPreviewRecursive.tsx","../src/components/DropdownSelector/MenuList/index.tsx","../src/components/DropdownSelector/MenuList/MenuListContext.ts","../src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx","../src/components/DropdownSelector/DropdownMenuItem.tsx","../src/components/DropdownSelector/ListItem/index.tsx","../src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx","../src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx","../src/components/DropdownSelector/MenuItem/index.tsx","../src/components/DropdownSelector/MenuItemGroup/index.tsx","../src/components/SegmentedControl/index.tsx","../../../node_modules/@react-stately/form/dist/packages/@react-stately/form/src/index.ts","../../../node_modules/@react-stately/form/dist/packages/@react-stately/form/src/useFormValidationState.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/index.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/useControlledState.ts","../../../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/number.ts","../../../node_modules/@react-stately/radio/dist/packages/@react-stately/radio/src/index.ts","../../../node_modules/@react-stately/radio/dist/packages/@react-stately/radio/src/useRadioGroupState.ts","../src/components/SegmentedControl/RadioGroupContext.tsx","../src/components/Checkbox/index.tsx","../src/components/TagItem/index.tsx"],"sourcesContent":["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","export { SSRProvider } from '@react-aria/ssr'\n","export { OverlayProvider } from '@react-aria/overlays'\n","import * as React from 'react'\nimport { ThemeProvider } from 'styled-components'\nimport ComponentAbstraction, { Components } from './ComponentAbstraction'\nimport { TokenInjector } from '@charcoal-ui/styled'\nimport { ThemeMap } from '@charcoal-ui/styled/src/TokenInjector'\nimport { CharcoalTheme, ThemeColor } from '@charcoal-ui/theme'\n\nimport { OverlayProvider } from './OverlayProvider'\nimport { SSRProvider } from './SSRProvider'\n\nexport type CharcoalProviderProps = React.PropsWithChildren<{\n themeMap: ThemeMap<CharcoalTheme>\n defaultTheme?: CharcoalTheme\n injectTokens?: boolean\n components?: Partial<Components>\n background?: keyof ThemeColor\n}>\n\nexport function CharcoalProvider({\n themeMap,\n defaultTheme = themeMap[':root'],\n components = {},\n injectTokens = true,\n children,\n background,\n}: CharcoalProviderProps) {\n return (\n <SSRProvider>\n <ThemeProvider theme={defaultTheme}>\n {injectTokens && (\n <TokenInjector theme={themeMap} background={background} />\n )}\n <ComponentAbstraction components={components}>\n <OverlayProvider>{children}</OverlayProvider>\n </ComponentAbstraction>\n </ThemeProvider>\n </SSRProvider>\n )\n}\n","import { forwardRef } from 'react'\nimport { ClickableElement, ClickableProps } from '../Clickable'\nimport { variantToFont } from './lib/variantToFont'\nimport { variantToBackground } from './lib/variantToBackground'\nimport { StyledButton } from './StyledButton'\n\nexport type Variant =\n | 'Primary'\n | 'Default'\n | 'Overlay'\n | 'Danger'\n | 'Navigation'\n\nexport type Size = 'S' | 'M'\n\nexport type ButtonProps = Partial<{\n variant: Variant\n size: Size\n fullWidth: boolean\n isActive: boolean\n}> &\n ClickableProps\n\nconst Button = forwardRef<ClickableElement, ButtonProps>(function Button(\n {\n children,\n variant = 'Default',\n size = 'M',\n fullWidth: fixed = false,\n disabled = false,\n isActive = false,\n ...rest\n },\n ref\n) {\n return (\n <StyledButton\n {...rest}\n disabled={disabled}\n $background={variantToBackground(variant)}\n $color={variantToFont(variant)}\n $size={size}\n $fullWidth={fixed}\n $isActive={isActive}\n ref={ref}\n >\n {children}\n </StyledButton>\n )\n})\n\nexport default Button\n","/**\n * 今後ポートされる予定の汎用的な関数群\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// eslint-disable-next-line @typescript-eslint/unified-signatures\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\n/**\n * 複数のrefをマージする。\n *\n * forwardRefで受け取ったrefと、コンポーネント内で定義したrefを同じ要素につけたいケースなどで使う\n */\nexport function mergeRefs<T>(...refs: React.Ref<T>[]): React.RefCallback<T> {\n return (value) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (ref !== null) {\n ;(ref as React.MutableRefObject<T | null>).current = value\n }\n }\n }\n}\n\nexport function countCodePointsInString(string: string) {\n // [...string] とするとproduction buildで動かなくなる\n // cf. https://twitter.com/f_subal/status/1497214727511891972\n return Array.from(string).length\n}\n","import { unreachable } from '../../../_lib'\nimport type { Variant } from '..'\n\nexport function variantToFont(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return 'text5'\n case 'Default':\n return 'text2'\n case 'Primary':\n return 'text5'\n case 'Navigation':\n return 'text5'\n case 'Danger':\n return 'text5'\n default:\n return unreachable(variant)\n }\n}\n","import { unreachable } from '../../../_lib'\nimport type { Variant } from '..'\n\nexport function variantToBackground(variant: Variant) {\n switch (variant) {\n case 'Overlay':\n return 'surface4'\n case 'Default':\n return 'surface3'\n case 'Primary':\n return 'brand'\n case 'Navigation':\n return 'surface6'\n case 'Danger':\n return 'assertive'\n default:\n return unreachable(variant)\n }\n}\n","import styled, { css } from 'styled-components'\nimport Clickable from '../Clickable'\nimport { variantToFont } from './lib/variantToFont'\nimport { variantToBackground } from './lib/variantToBackground'\nimport type { Size } from '.'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nconst horizontalPaddingSmall = css`\n padding-right: 16px;\n padding-left: 16px;\n`\n\nconst horizontalPaddingMedium = css`\n padding-right: 24px;\n padding-left: 24px;\n`\n\ntype StyledButtonProps = {\n $fullWidth: boolean\n $size: Size\n $background: ReturnType<typeof variantToBackground>\n $color: ReturnType<typeof variantToFont>\n $isActive: boolean\n}\n\nexport const StyledButton = styled(Clickable)<StyledButtonProps>`\n width: ${(p) => (p.$fullWidth ? 'stretch' : 'min-content')};\n display: inline-grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n border-radius: 999999px;\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n\n ${(p) => (p.$size === 'M' ? horizontalPaddingMedium : horizontalPaddingSmall)}\n color: var(--charcoal-${(p) => p.$color});\n background-color: var(--charcoal-${(p) => p.$background});\n transition: 0.2s color, 0.2s background-color, 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n\n ${({ $isActive: $active, $color, $background }) =>\n $active\n ? css`\n color: var(--charcoal-${$color}-press);\n background-color: var(--charcoal-${$background}-press);\n `\n : css`\n &:hover {\n color: var(--charcoal-${$color}-hover);\n background-color: var(--charcoal-${$background}-hover);\n }\n &:active {\n color: var(--charcoal-${$color}-press);\n background-color: var(--charcoal-${$background}-press);\n }\n `}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n }\n height: ${(p) => (p.$size === 'M' ? 40 : 32)}px;\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\nimport {\n LinkProps,\n useComponentAbstraction,\n} from '../../core/ComponentAbstraction'\nimport { disabledSelector } from '@charcoal-ui/utils'\n\ninterface BaseProps {\n /**\n * クリックの無効化\n */\n disabled?: boolean\n}\n\ninterface LinkBaseProps {\n /**\n * リンクのURL。指定するとbuttonタグではなくaタグとして描画される\n */\n to: string\n}\n\nexport type ClickableProps =\n | (BaseProps & Omit<React.ComponentPropsWithoutRef<'button'>, 'disabled'>)\n | (BaseProps & LinkBaseProps & Omit<LinkProps, 'to'>)\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n\nconst Clickable = React.forwardRef<ClickableElement, ClickableProps>(\n function Clickable(props, ref) {\n const { Link } = useComponentAbstraction()\n const isLink = 'to' in props\n const as = isLink ? Link : 'button'\n const ariaDisabled = isLink && props.disabled === true ? true : undefined\n let rest = props\n if (isLink) {\n const { disabled, ..._rest } = props\n rest = _rest\n }\n return (\n <StyledClickableDiv\n {...rest}\n ref={ref}\n as={as}\n aria-disabled={ariaDisabled}\n />\n )\n }\n)\nexport default Clickable\n\nconst StyledClickableDiv = styled.div`\n cursor: pointer;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n /* Reset button appearance */\n appearance: none;\n background: transparent;\n padding: 0;\n border-style: none;\n outline: none;\n color: inherit;\n text-rendering: inherit;\n letter-spacing: inherit;\n word-spacing: inherit;\n text-decoration: none;\n\n &:focus {\n outline: none;\n }\n\n /* Change the font styles in all browsers. */\n font: inherit;\n\n /* Remove the margin in Firefox and Safari. */\n margin: 0;\n\n /* Show the overflow in Edge. */\n overflow: visible;\n\n /* Remove the inheritance of text transform in Firefox. */\n text-transform: none;\n\n /* Remove the inner border and padding in Firefox. */\n &::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n`\n","import { forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport Clickable, { ClickableElement, ClickableProps } from '../Clickable'\nimport type { KnownIconType } from '@charcoal-ui/icons'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\ntype Variant = 'Default' | 'Overlay'\ntype Size = 'XS' | 'S' | 'M'\n\ninterface StyledProps {\n readonly variant?: Variant\n readonly size?: Size\n readonly icon: keyof KnownIconType\n readonly isActive?: boolean\n}\n\nexport type IconButtonProps = StyledProps & ClickableProps\n\nconst IconButton = forwardRef<ClickableElement, IconButtonProps>(\n function IconButtonInner(\n {\n variant = 'Default',\n size = 'M',\n icon,\n isActive = false,\n ...rest\n }: IconButtonProps,\n ref\n ) {\n validateIconSize(size, icon)\n return (\n <StyledIconButton\n {...rest}\n ref={ref}\n $size={size}\n $variant={variant}\n $isActive={isActive}\n >\n <pixiv-icon name={icon} />\n </StyledIconButton>\n )\n }\n)\n\nexport default IconButton\n\ntype StyledIconButtonProps = Required<{\n [key in keyof Pick<\n StyledProps,\n 'size' | 'variant' | 'isActive'\n > as `$${key}`]: StyledProps[key]\n}>\n\nconst StyledIconButton = styled(Clickable).attrs<\n StyledIconButtonProps,\n ReturnType<typeof styledProps>\n>(styledProps)<StyledIconButtonProps>`\n user-select: none;\n\n width: ${(p) => p.$width}px;\n height: ${(p) => p.$height}px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(${({ $font }) => `--charcoal-${$font}`});\n background-color: var(${({ $background }) => `--charcoal-${$background}`});\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${({ $isActive, $background, $font }) =>\n $isActive\n ? css`\n color: var(--charcoal-${$font}-press);\n background-color: var(--charcoal-${$background}-press);\n `\n : css`\n &:hover {\n color: var(--charcoal-${$font}-hover);\n background-color: var(--charcoal-${$background}-hover);\n }\n &:active {\n color: var(--charcoal-${$font}-press);\n background-color: var(--charcoal-${$background}-press);\n }\n `}\n ${focusVisibleFocusRingCss}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n }\n`\n\nfunction styledProps({ $size, $variant }: StyledIconButtonProps) {\n return {\n ...variantToProps($variant),\n ...sizeToProps($size),\n }\n}\n\nfunction variantToProps(variant: Variant) {\n switch (variant) {\n case 'Default':\n return { $font: 'text3', $background: 'transparent' } as const\n case 'Overlay':\n return { $font: 'text5', $background: 'surface4' } as const\n }\n}\n\nfunction sizeToProps(size: Size) {\n switch (size) {\n case 'XS':\n return {\n $width: 20,\n $height: 20,\n }\n case 'S':\n return {\n $width: 32,\n $height: 32,\n }\n case 'M':\n return {\n $width: 40,\n $height: 40,\n }\n }\n}\n\n/**\n * validates matches of size and icon\n */\nfunction validateIconSize(size: Size, icon: keyof KnownIconType) {\n let requiredIconSize: string\n switch (size) {\n case 'XS':\n requiredIconSize = '16'\n break\n case 'S':\n case 'M':\n requiredIconSize = '24'\n break\n }\n // アイコン名は サイズ/名前\n const result = /^\\d*/u.exec(icon)\n if (result == null) {\n throw new Error('Invalid icon name')\n }\n const [iconSize] = result\n if (iconSize !== requiredIconSize) {\n // eslint-disable-next-line no-console\n console.warn(\n `IconButton with size \"${size}\" expect icon size \"${requiredIconSize}, but got \"${iconSize}\"`\n )\n }\n}\n","import { memo, forwardRef, useCallback, useContext } from 'react'\nimport * as React from 'react'\nimport styled from 'styled-components'\nimport warning from 'warning'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type RadioProps = React.PropsWithChildren<{\n value: string\n disabled?: boolean\n className?: string\n}>\n\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(function RadioInner(\n { value, disabled = false, children, className },\n ref\n) {\n const {\n name,\n selected,\n disabled: isParentDisabled,\n readonly,\n invalid,\n onChange,\n } = useContext(RadioGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`\n )\n\n const isSelected = value === selected\n const isDisabled = disabled || isParentDisabled\n const isReadonly = readonly && !isSelected\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.currentTarget.value)\n },\n [onChange]\n )\n\n return (\n <RadioRoot aria-disabled={isDisabled || isReadonly} className={className}>\n <RadioInput\n name={name}\n value={value}\n checked={isSelected}\n aria-invalid={invalid}\n onChange={handleChange}\n disabled={isDisabled || isReadonly}\n ref={ref}\n />\n {children != null && <RadioLabel>{children}</RadioLabel>}\n </RadioRoot>\n )\n})\n\nexport default memo(Radio)\n\nconst RadioRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n grid-gap: 4px;\n align-items: center;\n cursor: pointer;\n\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n /** Make prior to browser default style */\n &[type='radio'] {\n appearance: none;\n display: block;\n box-sizing: border-box;\n\n margin: 0;\n padding: 6px;\n\n width: 20px;\n height: 20px;\n cursor: pointer;\n border-radius: 999999px;\n background-color: var(--charcoal-surface1);\n transition: 0.2s background-color, 0.2s box-shadow;\n\n :disabled {\n cursor: default;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-surface1-hover);\n }\n &:active {\n background-color: var(--charcoal-surface1-press);\n }\n ${focusVisibleFocusRingCss}\n &[aria-invalid='true'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n &:focus {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n }\n }\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: var(--charcoal-text3);\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n &::after {\n content: '';\n display: block;\n width: 8px;\n height: 8px;\n pointer-events: none;\n background-color: var(--charcoal-text5);\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-brand-hover);\n &::after {\n background-color: var(--charcoal-text5-hover);\n }\n }\n &:active {\n background-color: var(--charcoal-brand-press);\n &::after {\n background-color: var(--charcoal-text5-press);\n }\n }\n }\n }\n }\n`\n\nconst RadioLabel = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nexport type RadioGroupProps = React.PropsWithChildren<{\n className?: string\n value?: string\n label: string\n name: string\n onChange(next: string): void\n disabled?: boolean\n readonly?: boolean\n invalid?: boolean\n}>\n\n// TODO: use (or polyfill) flex gap\nconst StyledRadioGroup = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-gap: 8px;\n`\n\ninterface RadioGroupContext {\n name: string\n selected?: string\n disabled: boolean\n readonly: boolean\n invalid: boolean\n onChange: (next: string) => void\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContext>({\n name: undefined as never,\n selected: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n onChange() {\n throw new Error(\n 'Cannot find onChange() handler. Perhaps you forgot to wrap with <RadioGroup> ?'\n )\n },\n})\n\nexport function RadioGroup({\n className,\n value,\n label,\n name,\n onChange,\n disabled,\n readonly,\n invalid,\n children,\n}: RadioGroupProps) {\n const handleChange = useCallback(\n (next: string) => {\n onChange(next)\n },\n [onChange]\n )\n\n return (\n <RadioGroupContext.Provider\n value={{\n name,\n selected: value,\n disabled: disabled ?? false,\n readonly: readonly ?? false,\n invalid: invalid ?? false,\n onChange: handleChange,\n }}\n >\n <StyledRadioGroup\n role=\"radiogroup\"\n aria-orientation=\"vertical\"\n aria-label={label}\n aria-invalid={invalid}\n className={className}\n >\n {children}\n </StyledRadioGroup>\n </RadioGroupContext.Provider>\n )\n}\n","import { ChangeEvent, useCallback, useContext, forwardRef, memo } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport warning from 'warning'\nimport { px } from '@charcoal-ui/utils'\n\nimport { MultiSelectGroupContext } from './context'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type MultiSelectProps = React.PropsWithChildren<{\n value: string\n disabled?: boolean\n variant?: 'default' | 'overlay'\n className?: string\n onChange?: (payload: { value: string; selected: boolean }) => void\n}>\n\nconst MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n function MultiSelectInner(\n {\n value,\n disabled = false,\n onChange,\n variant = 'default',\n className,\n children,\n },\n ref\n ) {\n const {\n name,\n selected,\n disabled: parentDisabled,\n readonly,\n invalid,\n onChange: parentOnChange,\n } = useContext(MultiSelectGroupContext)\n\n warning(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n name !== undefined,\n `\"name\" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`\n )\n\n const isSelected = selected.includes(value)\n const isDisabled = disabled || parentDisabled || readonly\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!(event.currentTarget instanceof HTMLInputElement)) {\n return\n }\n if (onChange) onChange({ value, selected: event.currentTarget.checked })\n parentOnChange({ value, selected: event.currentTarget.checked })\n },\n [onChange, parentOnChange, value]\n )\n\n return (\n <MultiSelectRoot aria-disabled={isDisabled} className={className}>\n <MultiSelectInput\n {...{\n name,\n value,\n invalid,\n }}\n checked={isSelected}\n disabled={isDisabled}\n onChange={handleChange}\n overlay={variant === 'overlay'}\n aria-invalid={invalid}\n ref={ref}\n />\n <MultiSelectInputOverlay\n overlay={variant === 'overlay'}\n invalid={invalid}\n aria-hidden={true}\n >\n <pixiv-icon name=\"24/Check\" unsafe-non-guideline-scale={16 / 24} />\n </MultiSelectInputOverlay>\n {Boolean(children) && <MultiSelectLabel>{children}</MultiSelectLabel>}\n </MultiSelectRoot>\n )\n }\n)\n\nexport default memo(MultiSelect)\n\nconst MultiSelectRoot = styled.label`\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n position: relative;\n cursor: pointer;\n gap: ${({ theme }) => px(theme.spacing[4])};\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst MultiSelectLabel = styled.div`\n display: flex;\n align-items: center;\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst MultiSelectInput = styled.input.attrs({ type: 'checkbox' })<{\n invalid: boolean\n overlay: boolean\n}>`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n width: 20px;\n height: 20px;\n margin: 0;\n background-color: var(--charcoal-text3);\n border-radius: 999999px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n &:checked {\n background-color: var(--charcoal-brand);\n &:hover {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-brand-hover);\n }\n }\n\n &:active {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-brand-press);\n }\n }\n }\n\n &:hover {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-text3-hover);\n }\n }\n\n &:active {\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n background-color: var(--charcoal-text3-press);\n }\n }\n\n ${focusVisibleFocusRingCss}\n\n ${({ invalid, overlay }) =>\n invalid &&\n !overlay &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n ${({ overlay }) =>\n overlay &&\n css`\n background-color: var(--charcoal-surface4);\n `}\n }\n`\n\nconst MultiSelectInputOverlay = styled.div<{\n overlay: boolean\n invalid: boolean\n}>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 999999px;\n color: var(--charcoal-text5);\n transition: 0.2s box-shadow;\n ${({ invalid, overlay }) =>\n invalid &&\n overlay &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n\n ${({ overlay }) =>\n overlay &&\n css`\n border-color: var(--charcoal-text5);\n border-width: 2px;\n border-style: solid;\n `}\n`\n\nexport type MultiSelectGroupProps = React.PropsWithChildren<{\n className?: string\n name: string\n label: string\n selected: string[]\n onChange: (selected: string[]) => void\n disabled?: boolean\n readonly?: boolean\n invalid?: boolean\n}>\n\nexport function MultiSelectGroup({\n className,\n name,\n label,\n selected,\n onChange,\n disabled = false,\n readonly = false,\n invalid = false,\n children,\n}: MultiSelectGroupProps) {\n const handleChange = useCallback(\n (payload: { value: string; selected: boolean }) => {\n const index = selected.indexOf(payload.value)\n\n if (payload.selected) {\n if (index < 0) {\n onChange([...selected, payload.value])\n }\n } else {\n if (index >= 0) {\n onChange([...selected.slice(0, index), ...selected.slice(index + 1)])\n }\n }\n },\n [onChange, selected]\n )\n\n return (\n <MultiSelectGroupContext.Provider\n value={{\n name,\n selected: Array.from(new Set(selected)),\n disabled,\n readonly,\n invalid,\n onChange: handleChange,\n }}\n >\n <div className={className} aria-label={label} data-testid=\"SelectGroup\">\n {children}\n </div>\n </MultiSelectGroupContext.Provider>\n )\n}\n","import { createContext } from 'react'\n\ntype MultiSelectGroupContext = {\n name: string\n selected: string[]\n disabled: boolean\n readonly: boolean\n invalid: boolean\n onChange: ({ value, selected }: { value: string; selected: boolean }) => void\n}\n\nexport const MultiSelectGroupContext = createContext<MultiSelectGroupContext>({\n name: undefined as never,\n selected: [],\n disabled: false,\n readonly: false,\n invalid: false,\n onChange() {\n throw new Error(\n 'Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?'\n )\n },\n})\n","import { useSwitch } from '@react-aria/switch'\nimport type { AriaSwitchProps } from '@react-types/switch'\nimport { useMemo, memo, forwardRef } from 'react'\nimport * as React from 'react'\nimport { useToggleState } from 'react-stately'\nimport styled from 'styled-components'\nimport { useObjectRef } from '@react-aria/utils'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type SwitchProps = {\n name: string\n className?: string\n value?: string\n checked?: boolean\n disabled?: boolean\n onChange(checked: boolean): void\n} & (\n | // children か label は片方が必須\n {\n children: React.ReactNode\n }\n | {\n label: string\n }\n)\n\nconst SwitchCheckbox = forwardRef<HTMLInputElement, SwitchProps>(\n function SwitchCheckboxInner(props, external) {\n const { disabled, className } = props\n\n const ariaSwitchProps: AriaSwitchProps = useMemo(\n () => ({\n ...props,\n\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n isSelected: props.checked,\n }),\n [props]\n )\n\n const state = useToggleState(ariaSwitchProps)\n const ref = useObjectRef<HTMLInputElement>(external)\n const {\n inputProps: { className: _className, type: _type, ...rest },\n } = useSwitch(ariaSwitchProps, state, ref)\n\n return (\n <Label className={className} aria-disabled={disabled}>\n <SwitchInput {...rest} ref={ref} />\n {'children' in props ? (\n // eslint-disable-next-line react/destructuring-assignment\n <LabelInner>{props.children}</LabelInner>\n ) : undefined}\n </Label>\n )\n }\n)\n\nexport default memo(SwitchCheckbox)\n\nconst Label = styled.label`\n display: inline-grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n cursor: pointer;\n outline: 0;\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst LabelInner = styled.div`\n font-size: 14px;\n line-height: 22px;\n color: var(--charcoal-text2);\n margin-left: 4px;\n`\n\nconst SwitchInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n width: 28px;\n border: 2px solid transparent;\n\n transition-property: background-color, box-shadow;\n transition-duration: 0.2s;\n cursor: inherit;\n\n outline: none;\n border-radius: 16px;\n height: 16px;\n margin: 0;\n background-color: var(--charcoal-text4);\n :hover {\n background-color: var(--charcoal-text4-hover);\n }\n :active {\n background-color: var(--charcoal-text4-press);\n }\n ${focusVisibleFocusRingCss}\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n width: 12px;\n height: 12px;\n transform: translateX(0);\n transition: transform 0.2s;\n border-radius: 1024px;\n background-color: var(--charcoal-text5);\n :hover {\n background-color: var(--charcoal-text5-hover);\n }\n :active {\n background-color: var(--charcoal-text5-press);\n }\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n :hover {\n background-color: var(--charcoal-brand-hover);\n }\n :active {\n background-color: var(--charcoal-brand-press);\n }\n &::after {\n transform: translateX(12px);\n transition: transform 0.2s;\n }\n }\n`\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport FieldLabel, { FieldLabelProps } from '../FieldLabel'\nimport { countCodePointsInString, mergeRefs } from '../../_lib'\nimport { ReactAreaUseTextFieldCompat } from '../../_lib/compat'\nimport { useFocusWithClick } from './useFocusWithClick'\nimport { mergeProps } from '@react-aria/utils'\n\ntype DOMProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n // react-ariaのhookは、onChangeが`(v: string) => void`想定\n | 'onChange'\n\n // RDFa Attributeとかぶる\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/58d57ca87ac7be0d306c0844dc254e90c150bd0d/types/react/index.d.ts#L1951\n | 'prefix'\n\n // ReactAreaUseTextFieldCompatに書いてあるような事情で、ここにあるイベントハンドラの型をゆるめる\n | keyof ReactAreaUseTextFieldCompat\n>\n\nexport interface TextFieldProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'>,\n DOMProps,\n ReactAreaUseTextFieldCompat {\n readonly prefix?: ReactNode\n readonly suffix?: ReactNode\n\n // <input> 要素は number とか string[] もありうるが、今はこれしか想定してない\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n\n // react-ariaの型定義のせいでHTMLInputElementにできない\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly assistiveText?: string\n readonly invalid?: boolean\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n function SingleLineTextFieldInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showLabel = false,\n showCount = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n prefix = null,\n suffix = null,\n ...restProps\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const ariaRef = useRef<HTMLInputElement>(null)\n const [count, setCount] = useState(\n countCodePointsInString(props.value ?? '')\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n onChange?.(value)\n },\n [maxLength, nonControlled, onChange]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const {\n inputProps: ariaInputProps,\n labelProps,\n descriptionProps,\n errorMessageProps,\n } = useTextField(\n {\n inputElementType: 'input',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n const containerRef = useRef(null)\n\n useFocusWithClick(containerRef, ariaRef)\n\n const inputProps = mergeProps(restProps, ariaInputProps)\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledInputContainer\n ref={containerRef}\n invalid={invalid}\n aria-disabled={disabled === true ? true : undefined}\n hasPrefix={prefix != null}\n hasSuffix={suffix != null || showCount}\n >\n {prefix && <PrefixContainer>{prefix}</PrefixContainer>}\n <StyledInput\n ref={mergeRefs(forwardRef, ariaRef)}\n invalid={invalid}\n {...inputProps}\n />\n {(suffix || showCount) && (\n <SuffixContainer>\n {suffix}\n {showCount && (\n <SingleLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </SingleLineCounter>\n )}\n </SuffixContainer>\n )}\n </StyledInputContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n }\n)\n\nexport default TextField\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nexport const TextFieldLabel = styled(FieldLabel)`\n margin-bottom: 8px;\n`\n\nconst StyledInputContainer = styled.div<{\n invalid: boolean\n hasPrefix: boolean\n hasSuffix: boolean\n}>`\n display: grid;\n grid-template-columns: ${(p) =>\n [p.hasPrefix && 'auto', '1fr', p.hasSuffix && 'auto']\n .filter(Boolean)\n .join(' ')};\n height: 40px;\n transition: 0.2s background-color, 0.2s box-shadow;\n color: var(--charcoal-text2);\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n gap: 4px;\n padding: 0 8px;\n line-height: 22px;\n font-size: 14px;\n\n :not(:disabled):not([aria-disabled]):hover,\n [aria-disabled='false']:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n\n :focus-within {\n outline: none;\n box-shadow: 0 0 0 4px\n ${(p) => (p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`)};\n }\n\n ${(p) =>\n p.invalid &&\n css`\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n `}\n`\n\nconst PrefixContainer = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst SuffixContainer = styled.span`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n\nconst StyledInput = styled.input<{\n invalid: boolean\n}>`\n border: none;\n box-sizing: border-box;\n outline: none;\n font-family: inherit;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n height: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding-left: 0;\n padding-right: 0;\n border-radius: calc(4px / 0.875);\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n background: transparent;\n\n color: var(--charcoal-text2);\n &::placeholder {\n color: var(--charcoal-text3);\n }\n`\n\nconst SingleLineCounter = styled.span`\n line-height: 22px;\n font-size: 14px;\n color: var(--charcoal-text3);\n`\n\nexport const AssistiveText = styled.p<{ invalid: boolean }>`\n font-size: 14px;\n line-height: 22px;\n margin-top: 4px;\n margin-bottom: -4px;\n color: ${(p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`};\n`\n","import * as React from 'react'\nimport styled from 'styled-components'\n\nexport interface FieldLabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n readonly className?: string\n readonly label: string\n readonly subLabel?: React.ReactNode\n readonly required?: boolean\n // TODO: 翻訳用のContextで注入する\n readonly requiredText?: string\n}\n\nconst FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel(\n {\n style,\n className,\n label,\n required = false,\n requiredText,\n subLabel,\n ...labelProps\n },\n ref\n ) {\n return (\n <FieldLabelWrapper style={style} className={className}>\n <Label ref={ref} {...labelProps}>\n {label}\n </Label>\n {required && <RequiredText>{requiredText}</RequiredText>}\n <SubLabelClickable>\n <span>{subLabel}</span>\n </SubLabelClickable>\n </FieldLabelWrapper>\n )\n }\n)\n\nexport default FieldLabel\n\nconst Label = styled.label`\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n display: flow-root;\n color: var(--charcoal-text1);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst RequiredText = styled.span`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nconst SubLabelClickable = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text3);\n transition: 0.2s color, 0.2s box-shadow;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n color: var(--charcoal-text3-hover);\n }\n &:active {\n color: var(--charcoal-text3-press);\n }\n &:active,\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);\n }\n }\n`\n\nconst FieldLabelWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n\n > ${RequiredText} {\n margin-left: 4px;\n }\n\n > ${SubLabelClickable} {\n margin-left: auto;\n }\n`\n","import { useEffect } from 'react'\nimport * as React from 'react'\n\nexport function useFocusWithClick(\n containerRef: React.RefObject<HTMLDivElement>,\n inputRef: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n) {\n useEffect(() => {\n const el = containerRef.current\n if (el) {\n const handleDown = (e: MouseEvent) => {\n if (e.target !== inputRef.current) {\n inputRef.current?.focus()\n }\n }\n el.addEventListener('click', handleDown)\n return () => {\n el.removeEventListener('click', handleDown)\n }\n }\n })\n}\n","import { useTextField } from '@react-aria/textfield'\nimport { useVisuallyHidden } from '@react-aria/visually-hidden'\nimport { forwardRef, useCallback, useEffect, useRef, useState } from 'react'\nimport styled, { css } from 'styled-components'\nimport { FieldLabelProps } from '../FieldLabel'\nimport { countCodePointsInString, mergeRefs } from '../../_lib'\nimport { ReactAreaUseTextFieldCompat } from '../../_lib/compat'\nimport { AssistiveText, TextFieldLabel } from '../TextField'\nimport { useFocusWithClick } from '../TextField/useFocusWithClick'\nimport { mergeProps } from '@react-aria/utils'\n\ntype DOMProps = Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n // react-ariaのhookは、onChangeが`(v: string) => void`想定\n | 'onChange'\n // ReactAreaUseTextFieldCompatに書いてあるような事情で、ここにあるイベントハンドラの型をゆるめる\n | keyof ReactAreaUseTextFieldCompat\n>\n\nexport interface TextAreaProps\n extends Pick<FieldLabelProps, 'label' | 'requiredText' | 'subLabel'>,\n DOMProps,\n ReactAreaUseTextFieldCompat {\n readonly autoHeight?: boolean\n readonly rows?: number\n\n // <input> 要素は number とか string[] もありうるが、今はこれしか想定してない\n readonly defaultValue?: string\n readonly value?: string\n readonly onChange?: (value: string) => void\n\n // react-ariaの型定義のせいでHTMLTextAreaElementにできない\n readonly onKeyDown?: (event: React.KeyboardEvent<Element>) => void\n readonly onFocus?: (event: React.FocusEvent<Element>) => void\n readonly onBlur?: (event: React.FocusEvent<Element>) => void\n\n readonly showCount?: boolean\n readonly showLabel?: boolean\n readonly assistiveText?: string\n readonly invalid?: boolean\n}\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextAreaInner({ onChange, ...props }, forwardRef) {\n const {\n className,\n showCount = false,\n showLabel = false,\n label,\n requiredText,\n subLabel,\n disabled = false,\n required,\n invalid = false,\n assistiveText,\n maxLength,\n autoHeight = false,\n rows: initialRows = 4,\n ...restProps\n } = props\n\n const { visuallyHiddenProps } = useVisuallyHidden()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const ariaRef = useRef<HTMLTextAreaElement>(null)\n const [count, setCount] = useState(\n countCodePointsInString(props.value ?? '')\n )\n const [rows, setRows] = useState(initialRows)\n\n const syncHeight = useCallback(\n (textarea: HTMLTextAreaElement) => {\n const rows = (`${textarea.value}\\n`.match(/\\n/gu)?.length ?? 0) || 1\n setRows(initialRows <= rows ? rows : initialRows)\n },\n [initialRows]\n )\n\n const nonControlled = props.value === undefined\n const handleChange = useCallback(\n (value: string) => {\n const count = countCodePointsInString(value)\n if (maxLength !== undefined && count > maxLength) {\n return\n }\n if (nonControlled) {\n setCount(count)\n }\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n onChange?.(value)\n },\n [autoHeight, maxLength, nonControlled, onChange, syncHeight]\n )\n\n useEffect(() => {\n setCount(countCodePointsInString(props.value ?? ''))\n }, [props.value])\n\n const {\n inputProps: ariaInputProps,\n labelProps,\n descriptionProps,\n errorMessageProps,\n } = useTextField(\n {\n inputElementType: 'textarea',\n isDisabled: disabled,\n isRequired: required,\n validationState: invalid ? 'invalid' : 'valid',\n description: !invalid && assistiveText,\n errorMessage: invalid && assistiveText,\n onChange: handleChange,\n ...props,\n },\n ariaRef\n )\n\n useEffect(() => {\n if (autoHeight && textareaRef.current !== null) {\n syncHeight(textareaRef.current)\n }\n }, [autoHeight, syncHeight])\n\n const containerRef = useRef(null)\n\n useFocusWithClick(containerRef, ariaRef)\n\n const inputProps = mergeProps(restProps, ariaInputProps)\n\n return (\n <TextFieldRoot className={className} isDisabled={disabled}>\n <TextFieldLabel\n label={label}\n requiredText={requiredText}\n required={required}\n subLabel={subLabel}\n {...labelProps}\n {...(!showLabel ? visuallyHiddenProps : {})}\n />\n <StyledTextareaContainer\n ref={containerRef}\n invalid={invalid}\n rows={showCount ? rows + 1 : rows}\n aria-disabled={disabled === true ? 'true' : undefined}\n >\n <StyledTextarea\n ref={mergeRefs(textareaRef, forwardRef, ariaRef)}\n rows={rows}\n noBottomPadding={showCount}\n {...inputProps}\n />\n {showCount && (\n <MultiLineCounter>\n {maxLength !== undefined ? `${count}/${maxLength}` : count}\n </MultiLineCounter>\n )}\n </StyledTextareaContainer>\n {assistiveText != null && assistiveText.length !== 0 && (\n <AssistiveText\n invalid={invalid}\n {...(invalid ? errorMessageProps : descriptionProps)}\n >\n {assistiveText}\n </AssistiveText>\n )}\n </TextFieldRoot>\n )\n }\n)\n\nexport default TextArea\n\nconst TextFieldRoot = styled.div<{ isDisabled: boolean }>`\n display: flex;\n flex-direction: column;\n\n ${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}\n`\n\nconst StyledTextareaContainer = styled.div<{ rows: number; invalid: boolean }>`\n position: relative;\n overflow: hidden;\n\n color: var(--charcoal-text2);\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n transition: 0.2s background-color, 0.2s box-shadow;\n\n ${({ rows }) => css`\n height: calc(22px * ${rows} + 18px);\n `};\n\n :not([aria-disabled]):hover,\n [aria-disabled='false']:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n :focus-within {\n outline: none;\n box-shadow: 0 0 0 4px\n ${(p) => (p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`)};\n }\n\n ${(p) =>\n p.invalid &&\n css`\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n `}\n`\n\nconst StyledTextarea = styled.textarea<{ noBottomPadding: boolean }>`\n border: none;\n outline: none;\n resize: none;\n font-family: inherit;\n color: inherit;\n box-sizing: border-box;\n\n /* Prevent zooming for iOS Safari */\n transform-origin: top left;\n transform: scale(0.875);\n width: calc(100% / 0.875);\n font-size: calc(14px / 0.875);\n line-height: calc(22px / 0.875);\n padding: calc(9px / 0.875) calc(8px / 0.875)\n ${(p) => (p.noBottomPadding ? 0 : '')};\n\n ${({ rows = 1, noBottomPadding }) => css`\n height: calc(22px / 0.875 * ${rows} + ${noBottomPadding ? 9 : 20}px);\n `};\n\n /* Display box-shadow for iOS Safari */\n appearance: none;\n\n background: none;\n\n &::placeholder {\n color: var(--charcoal-text3);\n }\n`\n\nconst MultiLineCounter = styled.span`\n position: absolute;\n bottom: 9px;\n right: 8px;\n\n line-height: 22px;\n font-size: 14px;\n color: var(--charcoal-text3);\n`\n","import * as React from 'react'\n\nimport '@charcoal-ui/icons'\nimport type { PixivIcon, Props } from '@charcoal-ui/icons'\n\nexport interface OwnProps {\n unsafeNonGuidelineScale?: number\n className?: string\n}\n\nexport interface IconProps\n extends OwnProps,\n React.PropsWithoutRef<\n Omit<Props, 'class' | 'unsafe-non-guideline-scale' | 'css'>\n > {}\n\nconst Icon = React.forwardRef<PixivIcon, IconProps>(function IconInner(\n { name, scale, unsafeNonGuidelineScale, className, ...rest },\n ref\n) {\n return (\n <pixiv-icon\n ref={ref}\n name={name}\n scale={scale}\n unsafe-non-guideline-scale={unsafeNonGuidelineScale}\n class={className}\n {...rest}\n />\n )\n})\n\nexport default Icon\n","import { useContext, forwardRef, memo } from 'react'\nimport * as React from 'react'\nimport { AriaModalOverlayProps, Overlay } from '@react-aria/overlays'\nimport styled, { css, useTheme } from 'styled-components'\nimport { AriaDialogProps } from '@react-types/dialog'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { useMedia } from '@charcoal-ui/styled'\nimport { animated, useTransition, easings } from 'react-spring'\nimport Button, { ButtonProps } from '../Button'\nimport IconButton from '../IconButton'\nimport { useObjectRef } from '@react-aria/utils'\nimport { Dialog } from './Dialog'\nimport { ModalBackgroundContext } from './ModalBackgroundContext'\nimport { useCharcoalModalOverlay } from './useCustomModalOverlay'\n\nexport type BottomSheet = boolean | 'full'\nexport type Size = 'S' | 'M' | 'L'\n\nexport type ModalProps = AriaModalOverlayProps &\n AriaDialogProps & {\n children: React.ReactNode\n zIndex?: number\n title: string\n size?: Size\n bottomSheet?: BottomSheet\n isOpen: boolean\n onClose: () => void\n className?: string\n\n /**\n * https://github.com/adobe/react-spectrum/issues/3787\n * Next.jsで使用する際に発生するエラーの一時的な回避策でdocument.bodyを指定する必要がある\n */\n portalContainer?: HTMLElement\n }\n\nconst DEFAULT_Z_INDEX = 10\n\n/**\n * モーダルコンポーネント。\n *\n * @example アプリケーションルートで `<OverlayProvider>` ないし `<CharcoalProvider>` で囲った上で利用する\n * ```tsx\n * import {\n * OverlayProvider,\n * Modal,\n * ModalHeader,\n * ModalBody,\n * ModalButtons\n * } from '@charcoal-ui/react'\n *\n * <OverlayProvider>\n * <App>\n * <Modal title=\"Title\" isOpen={state.isOpen} onClose={() => state.close()} isDismissable>\n * <ModalHeader />\n * <ModalBody>\n * ...\n * <ModalButtons>...</ModalButtons>\n * </ModalBody>\n * </Modal>\n * </App>\n * </OverlayProvider>\n * ```\n */\nconst Modal = forwardRef<HTMLDivElement, ModalProps>(function ModalInner(\n { children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props },\n external\n) {\n const {\n title,\n size = 'M',\n bottomSheet = false,\n isDismissable,\n onClose,\n className,\n isOpen = false,\n } = props\n\n const ref = useObjectRef<HTMLDivElement>(external)\n\n const { modalProps, underlayProps } = useCharcoalModalOverlay(\n {\n ...props,\n isKeyboardDismissDisabled:\n isDismissable === undefined || isDismissable === false,\n },\n {\n onClose,\n isOpen,\n },\n ref\n )\n\n const theme = useTheme()\n const isMobile = useMedia(maxWidth(theme.breakpoint.screen1)) ?? false\n const transitionEnabled = isMobile && bottomSheet !== false\n const showDismiss = !isMobile || bottomSheet !== true\n\n const transition = useTransition(isOpen, {\n from: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n overflow: 'hidden',\n },\n enter: {\n transform: 'translateY(0%)',\n backgroundColor: 'rgba(0, 0, 0, 0.4)',\n },\n update: {\n overflow: 'auto',\n },\n leave: {\n transform: 'translateY(100%)',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n overflow: 'hidden',\n },\n config: transitionEnabled\n ? { duration: 400, easing: easings.easeOutQuart }\n : { duration: 0 },\n })\n\n const bgRef = React.useRef<HTMLElement>(null)\n\n const handleClick = React.useCallback(\n (e: MouseEvent) => {\n if (e.currentTarget === e.target) {\n onClose()\n }\n },\n [onClose]\n )\n\n return transition(\n ({ backgroundColor, overflow, transform }, item) =>\n item && (\n <Overlay portalContainer={portalContainer}>\n <ModalBackground\n ref={bgRef}\n zIndex={zIndex}\n {...underlayProps}\n style={transitionEnabled ? { backgroundColor, overflow } : {}}\n $bottomSheet={bottomSheet}\n onClick={handleClick}\n >\n <ModalBackgroundContext.Provider value={bgRef.current}>\n <Dialog\n ref={ref}\n {...modalProps}\n style={transitionEnabled ? { transform } : {}}\n size={size}\n bottomSheet={bottomSheet}\n className={className}\n >\n <ModalContext.Provider\n value={{\n titleProps: {},\n title,\n close: onClose,\n showDismiss,\n bottomSheet,\n }}\n >\n {children}\n {isDismissable === true && (\n <ModalCrossButton\n size=\"S\"\n icon=\"24/Close\"\n onClick={onClose}\n />\n )}\n </ModalContext.Provider>\n </Dialog>\n </ModalBackgroundContext.Provider>\n </ModalBackground>\n </Overlay>\n )\n )\n})\n\nexport default memo(Modal)\n\nexport const ModalContext = React.createContext<{\n /**\n * @deprecated\n */\n titleProps: React.HTMLAttributes<HTMLElement>\n title: string\n close?: () => void\n showDismiss: boolean\n bottomSheet: BottomSheet\n}>({\n titleProps: {},\n title: '',\n close: undefined,\n showDismiss: true,\n bottomSheet: false,\n})\n\nconst ModalBackground = animated(styled.div<{\n zIndex: number\n $bottomSheet: BottomSheet\n}>`\n z-index: ${({ zIndex }) => zIndex};\n overflow: auto;\n display: flex;\n position: fixed;\n top: 0;\n left: 0;\n width: -webkit-fill-available;\n width: -moz-available;\n height: 100%;\n justify-content: center;\n padding: 40px 0;\n box-sizing: border-box;\n\n background-color: var(--charcoal-surface4);\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.$bottomSheet !== false &&\n css`\n padding: 0;\n `}\n }\n`)\n\nconst ModalCrossButton = styled(IconButton)`\n position: absolute;\n top: 8px;\n right: 8px;\n\n color: var(--charcoal-text3);\n transition: 0.2s color;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n color: var(--charcoal-text3-hover);\n }\n &:active {\n color: var(--charcoal-text3-press);\n }\n }\n`\n\nexport function ModalTitle(props: React.HTMLAttributes<HTMLHeadingElement>) {\n const { titleProps, title } = useContext(ModalContext)\n return (\n <ModalHeading {...titleProps} {...props}>\n {title}\n </ModalHeading>\n )\n}\n\nconst ModalHeading = styled.h3`\n margin: 0;\n font-weight: inherit;\n font-size: inherit;\n`\n\nexport function ModalDismissButton({ children, ...props }: ButtonProps) {\n const { close, showDismiss } = useContext(ModalContext)\n\n if (!showDismiss) {\n return null\n }\n\n return (\n <Button {...props} onClick={close} fullWidth>\n {children}\n </Button>\n )\n}\n","import { forwardRef } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useDialog } from '@react-aria/dialog'\nimport { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'\nimport { unreachable } from '../../../_lib'\nimport { maxWidth } from '@charcoal-ui/utils'\nimport { animated } from 'react-spring'\nimport { useForwardedRef } from '../../../_lib/useForwardedRef'\nimport { Size, BottomSheet } from '..'\n\nexport const Dialog = forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof AnimatedStyledDialogDiv>\n>(function Dialog(props, forwardRef) {\n const ref = useForwardedRef(forwardRef)\n const { dialogProps } = useDialog(\n {\n role: 'dialog',\n },\n ref\n )\n\n return (\n <AnimatedStyledDialogDiv\n {...props}\n role={dialogProps.role}\n tabIndex={dialogProps.tabIndex}\n aria-labelledby={dialogProps['aria-labelledby']}\n onBlur={dialogProps.onBlur}\n ref={ref}\n />\n )\n})\n\nconst AnimatedStyledDialogDiv = animated(styled.div<{\n size: Size\n bottomSheet: BottomSheet\n}>`\n margin: auto;\n position: relative;\n height: fit-content;\n width: ${(p) => {\n switch (p.size) {\n case 'S': {\n return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n case 'M': {\n return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n case 'L': {\n return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2\n }\n default: {\n return unreachable(p.size)\n }\n }\n }}px;\n\n background-color: var(--charcoal-surface1);\n border-radius: 24px;\n\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n max-width: 440px;\n width: calc(100% - 48px);\n ${(p) =>\n p.bottomSheet !== false &&\n css`\n max-width: unset;\n width: 100%;\n border-radius: 0;\n margin: auto 0 0 0;\n ${p.bottomSheet === 'full' &&\n css`\n min-height: 100%;\n `}\n `}\n }\n :focus {\n outline: none;\n }\n`)\n","/**\n * Unit for grid column (px)\n */\nexport const COLUMN_UNIT = 80\n\n/**\n * Unit for grid gutter width (px)\n */\nexport const GUTTER_UNIT = 24\n\n// TODO: Grid definition with breakpoint\n\n/**\n * Calculate px occupied by the span of the columns with gutter gap\n *\n * @param span column span count\n */\nexport function columnSystem(span: number, column: number, gutter: number) {\n return span * column + (span - 1) * gutter\n}\n","import * as React from 'react'\n\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>) {\n const innerRef = React.useRef<T>(null)\n\n React.useEffect(() => {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\n\n return innerRef\n}\n","import * as React from 'react'\n\n/**\n * ModalBackgroundのElementが入ったコンテキスト\n */\nexport const ModalBackgroundContext = React.createContext<HTMLElement | null>(\n null\n)\n","import * as React from 'react'\nimport {\n AriaModalOverlayProps,\n ModalOverlayAria,\n ariaHideOutside,\n useOverlay,\n useOverlayFocusContain,\n usePreventScroll,\n} from '@react-aria/overlays'\n\n/**\n * We want to enable scrolling on the modal background,\n * but `useModalOverlay` (specifically, `useOverlay` within it) detects pointer events on the scrollbar.\n * Therefore, to prevent this issue, we need to override `shouldCloseOnInteractOutside` in `useModalOverlay`.\n */\nexport function useCharcoalModalOverlay(\n props: AriaModalOverlayProps,\n state: { isOpen: boolean; onClose: () => void },\n ref: React.RefObject<HTMLElement>\n): ModalOverlayAria {\n const { overlayProps, underlayProps } = useOverlay(\n {\n ...props,\n isOpen: state.isOpen,\n onClose: state.onClose,\n shouldCloseOnInteractOutside: () => false,\n },\n ref\n )\n\n usePreventScroll({\n isDisabled: !state.isOpen,\n })\n\n useOverlayFocusContain()\n\n React.useEffect(() => {\n if (state.isOpen && ref.current) {\n return ariaHideOutside([ref.current])\n }\n }, [state.isOpen, ref])\n\n return {\n modalProps: overlayProps,\n underlayProps,\n }\n}\n","import { BottomSheet, ModalContext, ModalTitle } from '.'\nimport styled, { css } from 'styled-components'\nimport { useContext } from 'react'\nimport { maxWidth } from '@charcoal-ui/utils'\n\nexport function ModalHeader() {\n const modalCtx = useContext(ModalContext)\n return (\n <ModalHeaderRoot $bottomSheet={modalCtx.bottomSheet}>\n <StyledModalTitle />\n </ModalHeaderRoot>\n )\n}\n\nconst ModalHeaderRoot = styled.div<{\n $bottomSheet: BottomSheet\n}>`\n height: 64px;\n display: grid;\n align-content: center;\n justify-content: center;\n @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {\n ${(p) =>\n p.$bottomSheet !== false &&\n css`\n height: 48px;\n `}\n }\n`\n\nconst StyledModalTitle = styled(ModalTitle)`\n color: var(--charcoal-text1);\n font-size: 16px;\n line-height: 24px;\n font-weight: bold;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n\nexport const ModalAlign = styled.div`\n padding-left: 16px;\n padding-right: 16px;\n`\n\nexport const ModalBody = styled.div`\n padding-bottom: 40px;\n`\n\nexport const ModalButtons = styled.div`\n display: grid;\n grid-auto-flow: row;\n grid-row-gap: 8px;\n\n padding-top: 16px;\n padding-left: 16px;\n padding-right: 16px;\n`\n","import { forwardRef, useImperativeHandle, useRef, memo } from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nexport type LoadingSpinnerProps = {\n readonly size?: number\n readonly padding?: number\n readonly transparent?: boolean\n readonly className?: string\n}\n\nconst LoadingSpinner = forwardRef<HTMLDivElement, LoadingSpinnerProps>(\n function LoadingSpinnerInner(\n { size = 48, padding = 16, transparent = false, className },\n ref\n ) {\n return (\n <LoadingSpinnerRoot\n size={size}\n padding={padding}\n transparent={transparent}\n className={className}\n ref={ref}\n >\n <LoadingSpinnerIcon />\n </LoadingSpinnerRoot>\n )\n }\n)\n\nexport default memo(LoadingSpinner)\n\nconst LoadingSpinnerRoot = styled.div.attrs({ role: 'progressbar' })<{\n size: number\n padding: number\n transparent: boolean\n}>`\n box-sizing: content-box;\n margin: auto;\n padding: ${(props) => props.padding}px;\n border-radius: 8px;\n font-size: ${(props) => props.size}px;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n opacity: 0.84;\n color: var(--charcoal-text4);\n background-color: ${({ transparent }) =>\n `var(--charcoal-${transparent ? 'transparent' : 'background1'})`};\n`\n\nconst scaleOut = keyframes`\n from {\n transform: scale(0);\n opacity: 1;\n }\n\n to {\n transform: scale(1);\n opacity: 0;\n }\n`\n\nconst Icon = styled.div.attrs({ role: 'presentation' })<{ once: boolean }>`\n width: 1em;\n height: 1em;\n border-radius: 1em;\n background-color: currentColor;\n animation: ${scaleOut} 1s both ease-out;\n animation-iteration-count: ${(p) => (p.once ? 1 : 'infinite')};\n\n &[data-reset-animation] {\n animation: none;\n }\n`\n\ntype Props = {\n once?: boolean\n}\n\nexport interface LoadingSpinnerIconHandler {\n restart(): void\n}\n\nexport const LoadingSpinnerIcon = forwardRef<LoadingSpinnerIconHandler, Props>(\n function LoadingSpinnerIcon({ once = false }, ref) {\n const iconRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(ref, () => ({\n restart: () => {\n if (!iconRef.current) {\n return\n }\n iconRef.current.dataset.resetAnimation = 'true'\n // Force reflow hack!\n void iconRef.current.offsetWidth\n delete iconRef.current.dataset.resetAnimation\n },\n }))\n\n return <Icon ref={iconRef} once={once} />\n }\n)\n","import { ReactNode, useState, useRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { disabledSelector } from '@charcoal-ui/utils'\nimport Icon from '../Icon'\nimport FieldLabel from '../FieldLabel'\nimport { DropdownPopover } from './DropdownPopover'\nimport { findPreviewRecursive } from './utils/findPreviewRecursive'\nimport MenuList, { MenuListChildren } from './MenuList'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nexport type DropdownSelectorProps = {\n label: string\n value: string\n disabled?: boolean\n placeholder?: string\n showLabel?: boolean\n invalid?: boolean\n assistiveText?: string\n required?: boolean\n requiredText?: string\n subLabel?: ReactNode\n children: MenuListChildren\n onChange: (value: string) => void\n}\n\nconst defaultRequiredText = '*必須'\n\nexport default function DropdownSelector(props: DropdownSelectorProps) {\n const triggerRef = useRef<HTMLButtonElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const preview = findPreviewRecursive(props.children, props.value)\n\n return (\n <DropdownSelectorRoot aria-disabled={props.disabled}>\n {props.showLabel === true && (\n <DropdownFieldLabel\n label={props.label}\n required={props.required}\n requiredText={props.requiredText ?? defaultRequiredText}\n subLabel={props.subLabel}\n />\n )}\n <DropdownButton\n invalid={props.invalid}\n disabled={props.disabled}\n onClick={() => {\n if (props.disabled === true) return\n setIsOpen(true)\n }}\n ref={triggerRef}\n type=\"button\"\n $active={isOpen}\n >\n <DropdownButtonText>\n {props.placeholder !== undefined && preview === undefined\n ? props.placeholder\n : preview}\n </DropdownButtonText>\n <DropdownButtonIcon name=\"16/Menu\" />\n </DropdownButton>\n {isOpen && (\n <DropdownPopover\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n triggerRef={triggerRef}\n value={props.value}\n >\n <MenuList\n value={props.value}\n onChange={(v) => {\n props.onChange(v)\n setIsOpen(false)\n }}\n >\n {props.children}\n </MenuList>\n </DropdownPopover>\n )}\n {props.assistiveText !== undefined && (\n <AssertiveText invalid={props.invalid}>\n {props.assistiveText}\n </AssertiveText>\n )}\n </DropdownSelectorRoot>\n )\n}\n\nconst DropdownSelectorRoot = styled.div`\n display: inline-block;\n width: 100%;\n\n ${disabledSelector} {\n cursor: default;\n opacity: 0.32;\n }\n`\n\nconst DropdownFieldLabel = styled(FieldLabel)`\n width: 100%;\n margin-bottom: 8px;\n`\n\nconst DropdownButton = styled.button<{ invalid?: boolean; $active?: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n height: 40px;\n width: 100%;\n box-sizing: border-box;\n border: none;\n cursor: pointer;\n gap: 4px;\n\n ${disabledSelector} {\n cursor: default;\n }\n\n padding-right: 8px;\n padding-left: 8px;\n background-color: var(--charcoal-surface3);\n border-radius: 4px;\n\n transition: 0.2s box-shadow, 0.2s background-color;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n ${({ $active }) =>\n $active === true\n ? css`\n background-color: var(--charcoal-surface3-press);\n `\n : css`\n &:hover {\n background-color: var(--charcoal-surface3-hover);\n }\n &:active {\n background-color: var(--charcoal-surface3-press);\n }\n `}\n }\n\n ${({ invalid }) =>\n invalid === true &&\n css`\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n `}\n`\n\nconst DropdownButtonText = styled.span`\n text-align: left;\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n color: var(--charcoal-text2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nconst DropdownButtonIcon = styled(Icon)`\n color: var(--charcoal-text2);\n`\n\nconst AssertiveText = styled.div<{ invalid?: boolean }>`\n margin-top: 8px;\n font-size: 14px;\n color: var(--charcoal-text2);\n line-height: 22px;\n display: flow-root;\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n\n ${({ invalid }) =>\n invalid === true &&\n css`\n color: var(--charcoal-assertive);\n `}\n`\n","import { Key, useEffect, useRef } from 'react'\nimport Popover, { PopoverProps } from './Popover'\n\ntype DropdownPopoverProps = PopoverProps & {\n value?: Key\n}\n\n/**\n * DropdownSelectorの選択肢をを表示するためのPopover\n * triggerRefの要素と同じ幅になる\n * 表示の際にvalueが等しいDropdownMenuItemを中央に表示する\n */\nexport function DropdownPopover({ children, ...props }: DropdownPopoverProps) {\n const ref = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (props.isOpen && ref.current && props.triggerRef.current) {\n ref.current.style.width = `${props.triggerRef.current.clientWidth}px`\n }\n }, [props.triggerRef, props.isOpen])\n\n useEffect(() => {\n if (props.isOpen && props.value !== undefined) {\n // windowのスクロールを維持したまま選択肢をPopoverの中心に表示する\n const windowScrollY = window.scrollY\n const windowScrollX = window.scrollX\n const selectedElement = document.querySelector(\n `[data-key=\"${props.value.toString()}\"]`\n ) as HTMLElement | undefined\n selectedElement?.focus()\n window.scrollTo(windowScrollX, windowScrollY)\n }\n }, [props.value, props.isOpen])\n\n return (\n <Popover\n isOpen={props.isOpen}\n onClose={props.onClose}\n popoverRef={ref}\n triggerRef={props.triggerRef}\n >\n {children}\n </Popover>\n )\n}\n","import { RefObject, useContext, useRef } from 'react'\nimport { ReactNode } from 'react'\nimport { DismissButton, Overlay, usePopover } from '@react-aria/overlays'\nimport styled from 'styled-components'\nimport { ModalBackgroundContext } from '../../Modal/ModalBackgroundContext'\nimport { usePreventScroll } from './usePreventScroll'\n\nexport type PopoverProps = {\n isOpen: boolean\n onClose: () => void\n children: ReactNode\n triggerRef: RefObject<Element>\n popoverRef?: RefObject<HTMLDivElement>\n}\n\nconst _empty = () => null\n\n/**\n * 画面の全面に動的に開くことができるコンテナ要素\n * 外の要素をクリックしたり、内部からフォーカスを移動した場合に自動的に閉じる\n *\n * triggerRefの付近に画面内に収まるように表示される\n */\nexport default function Popover(props: PopoverProps) {\n const defaultPopoverRef = useRef<HTMLDivElement>(null)\n const finalPopoverRef =\n props.popoverRef === undefined ? defaultPopoverRef : props.popoverRef\n const { popoverProps, underlayProps } = usePopover(\n {\n triggerRef: props.triggerRef,\n popoverRef: finalPopoverRef,\n containerPadding: 16,\n },\n {\n close: props.onClose,\n isOpen: props.isOpen,\n // never used\n open: _empty,\n setOpen: _empty,\n toggle: _empty,\n }\n )\n\n const modalBackground = useContext(ModalBackgroundContext)\n usePreventScroll(modalBackground, props.isOpen)\n\n if (!props.isOpen) return null\n\n return (\n <Overlay portalContainer={document.body}>\n <div\n {...underlayProps}\n style={{\n position: 'fixed',\n zIndex:\n typeof popoverProps.style?.zIndex === 'number'\n ? popoverProps.style.zIndex - 1\n : 99999,\n inset: 0,\n }}\n />\n <DropdownPopoverDiv {...popoverProps} ref={finalPopoverRef}>\n <DismissButton onDismiss={() => props.onClose()} />\n {props.children}\n <DismissButton onDismiss={() => props.onClose()} />\n </DropdownPopoverDiv>\n </Overlay>\n )\n}\n\nconst DropdownPopoverDiv = styled.div`\n margin: 4px 0;\n list-style: none;\n overflow: auto;\n max-height: inherit;\n background-color: var(--charcoal-background1);\n border: solid 1px var(--charcoal-border-default);\n border-radius: 8px;\n padding-top: 8px;\n padding-bottom: 8px;\n`\n","import { useEffect } from 'react'\n\nexport function usePreventScroll(element: HTMLElement | null, isOpen: boolean) {\n useEffect(() => {\n if (isOpen && element) {\n const defaultPaddingRight = element.style.paddingRight\n const defaultOverflow = element.style.overflow\n element.style.paddingRight = `${\n window.innerWidth - element.clientWidth\n }px`\n element.style.overflow = 'hidden'\n return () => {\n element.style.paddingRight = defaultPaddingRight\n element.style.overflow = defaultOverflow\n }\n }\n }, [element, isOpen])\n}\n","import { ReactNode } from 'react'\nimport * as React from 'react'\n\n/**\n * DropdownSelectorの選択中の要素をレンダリングするため、\n * 選択中のMenuItemを再帰的に探索しReactNodeを返す。\n *\n * @param children\n * @param value\n * @param values\n * @returns\n */\nexport function findPreviewRecursive(\n children: ReactNode,\n value: string\n): ReactNode | undefined {\n const childArray = React.Children.toArray(children)\n for (let i = 0; i < childArray.length; i++) {\n const child = childArray[i]\n if (React.isValidElement(child)) {\n if ('value' in child.props) {\n const childValue = (child.props as { value: string }).value\n if (childValue === value && 'children' in child.props) {\n const children = (child.props as { children: ReactNode }).children\n return children\n }\n }\n if ('children' in child.props) {\n const children = findPreviewRecursive(\n (child.props as { children: ReactNode }).children,\n value\n )\n if (children !== undefined) {\n return children\n }\n }\n }\n }\n}\n","import { useRef } from 'react'\nimport styled from 'styled-components'\nimport { MenuListContext } from './MenuListContext'\nimport { getValuesRecursive } from './internals/getValuesRecursive'\nimport MenuItem from '../MenuItem'\nimport { Divider } from '../Divider'\nimport MenuItemGroup from '../MenuItemGroup'\n\ntype MenuListChild = React.ReactElement<\n typeof MenuItem | typeof MenuItemGroup | typeof Divider\n>\n\nexport type MenuListChildren = MenuListChild | MenuListChild[]\n\nexport type MenuListProps = {\n children: MenuListChildren\n value?: string\n onChange?: (v: string) => void\n}\n\n/**\n * 上下キーでフォーカス移動でき、エンターキーで選択できるリストの項目\n * 基本的に`<MenuItem>`, `<MenuGroup>`と合わせて使用する\n */\nexport default function MenuList(props: MenuListProps) {\n const root = useRef(null)\n const values: string[] = []\n getValuesRecursive(props.children, values)\n\n return (\n <StyledUl ref={root}>\n <MenuListContext.Provider\n value={{\n value: props.value ?? '',\n root,\n values,\n setValue: (v) => {\n props.onChange?.(v)\n },\n }}\n >\n {props.children}\n </MenuListContext.Provider>\n </StyledUl>\n )\n}\n\nconst StyledUl = styled.ul`\n padding: 0;\n margin: 0;\n`\n","import { RefObject, createContext } from 'react'\n\ntype MenuListContextType = {\n root?: RefObject<HTMLUListElement>\n value?: string\n values?: string[]\n setValue: (v: string) => void\n}\n\nexport const MenuListContext = createContext<MenuListContextType>({\n root: undefined,\n value: '',\n values: [],\n setValue: (_v: string) => {\n // empty\n },\n})\n","import * as React from 'react'\nimport MenuItem from '../../MenuItem'\nimport { MenuListChildren } from '..'\nimport MenuItemGroup from '../../MenuItemGroup'\n\n/**\n * valueというpropsを持つ子要素の値を再起的に探索して配列にする\n *\n * @param children\n * @param value\n * @param values\n * @returns\n */\nexport function getValuesRecursive(\n children: MenuListChildren,\n values: string[] = []\n) {\n const childArray = React.Children.toArray(children)\n for (let i = 0; i < childArray.length; i++) {\n const child = childArray[i]\n if (React.isValidElement(child)) {\n const props = child.props as {\n value?: never\n children?: React.ReactElement<typeof MenuItem | typeof MenuItemGroup>[]\n }\n if ('value' in props && typeof props.value === 'string') {\n const childValue = props.value\n values.push(childValue)\n }\n if ('children' in props && props.children) {\n getValuesRecursive(props.children, values)\n }\n }\n }\n}\n","import styled from 'styled-components'\nimport MenuItem, { MenuItemProps } from './MenuItem'\nimport { MenuListContext } from './MenuList/MenuListContext'\nimport { useContext } from 'react'\nimport Icon from '../Icon'\n\nexport type DropdownMenuItemProps = Omit<MenuItemProps<'div'>, 'as'>\n\n/**\n * DropdownSelectorの選択肢として使うMenuItem\n */\nexport default function DropdownMenuItem(props: DropdownMenuItemProps) {\n const { value: ctxValue } = useContext(MenuListContext)\n const isSelected = props.value === ctxValue\n const { children, ...rest } = props\n\n return (\n <MenuItem {...rest}>\n {isSelected && <Text2ColorIcon name=\"16/Check\" />}\n <StyledSpan isSelected={isSelected}>{props.children}</StyledSpan>\n </MenuItem>\n )\n}\n\n/**\n * アイコンがない時を考慮して20px(16pxのwidthと4pxのgap)の余白をとる\n */\nconst StyledSpan = styled.span<{ isSelected?: boolean }>`\n font-size: 14px;\n line-height: 22px;\n color: var(--charcoal-text2);\n padding: 9px 0;\n\n display: flex;\n align-items: center;\n width: 100%;\n margin-left: ${({ isSelected }) => (isSelected === true ? 0 : 20)}px;\n`\n\nconst Text2ColorIcon = styled(Icon)`\n color: var(--charcoal-text2);\n padding-right: 4px;\n`\n","import { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nexport type CustomJSXElement =\n | keyof JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.JSXElementConstructor<any>\n\nexport type ListItemProps<T extends CustomJSXElement = 'div'> = {\n children?: ReactNode\n as?: T\n} & Omit<React.ComponentProps<T>, 'children'>\n\n/**\n * リストのある要素を示すコンポーネント\n *\n * asを用いて拡張することができる\n * @example\n * ```\n * <ListItem as=\"a\" href=\"#\">Link</ListItem>\n * <ListItem as={NextLink} href=\"#\">NextLink</ListItem>\n * ```\n */\nexport default function ListItem<T extends CustomJSXElement = 'div'>(\n props: ListItemProps<T>\n) {\n const { children, ...rest } = props\n return (\n <StyledLi role=\"option\">\n <ItemDiv {...rest}>{props.children}</ItemDiv>\n </StyledLi>\n )\n}\n\nconst StyledLi = styled.li`\n list-style: none;\n`\n\nconst ItemDiv = styled.div`\n display: flex;\n align-items: center;\n min-height: 40px;\n cursor: pointer;\n outline: none;\n\n padding-right: 16px;\n padding-left: 16px;\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n\n :hover,\n :focus,\n :focus-within {\n background-color: var(--charcoal-surface3);\n }\n`\n","import { useCallback, useContext } from 'react'\nimport { handleFocusByKeyBoard } from './handleFocusByKeyBoard'\nimport { MenuListContext } from '../../MenuList/MenuListContext'\n\n/**\n * MenuListContextに含まれるvalue間で上下キーでfocusを移動できる\n * EnterキーでMenuListContextに値を設定する\n * 上記2つの処理を含む処理(handleKeyDown)と、Enterキーを押下した処理(setContextValue)を配列で返す\n * @param value\n * @returns\n */\nexport function useMenuItemHandleKeyDown(\n value?: string\n): [(e: React.KeyboardEvent<HTMLDivElement>) => void, () => void] {\n const { setValue, root, values } = useContext(MenuListContext)\n const setContextValue = useCallback(() => {\n if (value !== undefined) setValue(value)\n }, [value, setValue])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter') {\n setContextValue()\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n // prevent scroll\n e.preventDefault()\n if (!values || value === undefined) return\n const index = values.indexOf(value)\n if (index === -1) return\n\n const focusValue =\n e.key === 'ArrowUp'\n ? // prev or last\n index - 1 < 0\n ? values[values.length - 1]\n : values[index - 1]\n : // next or first\n index + 1 >= values.length\n ? values[0]\n : values[index + 1]\n\n const next = root?.current?.querySelector(`[data-key='${focusValue}']`)\n\n if (next instanceof HTMLElement) {\n next.focus({ preventScroll: true })\n if (root?.current?.parentElement) {\n handleFocusByKeyBoard(next, root.current.parentElement)\n }\n }\n }\n },\n [setContextValue, value, root, values]\n )\n return [handleKeyDown, setContextValue]\n}\n","/**\n * elementをparentのスクロールビューに入るようにスクロールする\n * parentがスクロール可能でなければelementが見えるようにスクロールする\n *\n * @param element\n * @param parent\n */\nexport function handleFocusByKeyBoard(element: Element, parent: HTMLElement) {\n const isScrollable = parent.scrollHeight > parent.clientHeight\n if (isScrollable) {\n const rect = element.getBoundingClientRect()\n const parentRect = parent.getBoundingClientRect()\n if (rect.bottom > parentRect.bottom) {\n parent.scrollTo({\n top: parent.scrollTop + rect.bottom - parentRect.bottom,\n })\n } else if (rect.top < parentRect.top) {\n parent.scrollTo({\n top: parent.scrollTop - (parentRect.top - rect.top),\n })\n }\n } else {\n scrollIfNeeded(element)\n }\n}\n\n/**\n * 要素が画面外にあればスクロールする、画面内にあればスクロールしない\n * @param element\n */\nfunction scrollIfNeeded(element: Element) {\n const elementRect = element.getBoundingClientRect()\n const isVisible =\n elementRect.top >= 0 &&\n elementRect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight)\n\n if (!isVisible) {\n element.scrollIntoView({\n block: 'nearest',\n })\n }\n}\n","import ListItem, { CustomJSXElement, ListItemProps } from '../ListItem'\nimport { useMenuItemHandleKeyDown } from './internals/useMenuItemHandleKeyDown'\n\nexport type MenuItemProps<T extends CustomJSXElement = never> = {\n value?: string\n disabled?: boolean\n} & ListItemProps<T>\n\n/**\n * 上下キーでフォーカス移動でき、エンターキーで選択できるリストの項目\n * 基本的に`<MenuList>`, `<MenuGroup>`と合わせて使用する\n */\nexport default function MenuItem<T extends CustomJSXElement>(\n props: MenuItemProps<T>\n) {\n const { children, as, ...rest } = props\n const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value)\n return (\n <ListItem\n {...rest}\n as={as as CustomJSXElement}\n data-key={props.value}\n onKeyDown={handleKeyDown}\n onClick={props.disabled === true ? undefined : setContextValue}\n tabIndex={-1}\n aria-disabled={props.disabled}\n >\n {props.children}\n </ListItem>\n )\n}\n","import styled from 'styled-components'\nimport MenuItem from '../MenuItem'\nimport { Divider } from '../Divider'\n\ntype MenuItemGroupChild = React.ReactElement<typeof MenuItem | typeof Divider>\n\nexport type MenuItemGroupProps = {\n text: string\n children: MenuItemGroupChild | MenuItemGroupChild[]\n}\n\n/**\n * 項目のリストを分類する見出しをつけるコンテナ要素\n */\nexport default function MenuItemGroup(props: MenuItemGroupProps) {\n return (\n <StyledLi role=\"presentation\">\n <TextSpan>{props.text}</TextSpan>\n <StyledUl role=\"group\">{props.children}</StyledUl>\n </StyledLi>\n )\n}\n\nconst TextSpan = styled.span`\n display: block;\n color: var(--charcoal-text3);\n font-size: 12px;\n font-weight: bold;\n padding: 12px 0 8px 16px;\n`\n\nconst StyledUl = styled.ul`\n padding-left: 0;\n margin: 0;\n box-sizing: border-box;\n list-style: none;\n overflow: hidden;\n`\n\nconst StyledLi = styled.li`\n display: block;\n`\n","import { ReactNode, forwardRef, memo, useMemo, useRef } from 'react'\nimport * as React from 'react'\nimport { useRadioGroupState } from '@react-stately/radio'\nimport {\n AriaRadioGroupProps,\n AriaRadioProps,\n useRadio,\n useRadioGroup,\n} from '@react-aria/radio'\nimport styled, { css } from 'styled-components'\n\nimport { RadioProvider, useRadioContext } from './RadioGroupContext'\n\ntype SegmentedControlItem = {\n label: React.ReactNode\n value: string\n disabled?: boolean\n}\n\nexport type SegmentedControlProps = {\n readonly id?: string\n readonly name?: string\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly required?: boolean\n readonly className?: string\n\n readonly value?: string\n readonly defaultValue?: string\n\n readonly data: string[] | SegmentedControlItem[]\n\n readonly onChange?: (value: string) => void\n}\n\nconst SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControlInner(props, ref) {\n const ariaRadioGroupProps = useMemo<AriaRadioGroupProps>(\n () => ({\n ...props,\n isDisabled: props.disabled,\n isReadOnly: props.readonly,\n isRequired: props.required,\n 'aria-label': props.name,\n }),\n [props]\n )\n const state = useRadioGroupState(ariaRadioGroupProps)\n const { radioGroupProps } = useRadioGroup(ariaRadioGroupProps, state)\n const segmentedControlItems = useMemo<SegmentedControlItem[]>(() => {\n return props.data.map((d) =>\n typeof d === 'string' ? { value: d, label: d } : d\n )\n }, [props.data])\n\n return (\n <SegmentedControlRoot\n ref={ref}\n {...radioGroupProps}\n className={props.className}\n >\n <RadioProvider value={state}>\n {segmentedControlItems.map((item) => (\n <Segmented\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n >\n {item.label}\n </Segmented>\n ))}\n </RadioProvider>\n </SegmentedControlRoot>\n )\n }\n)\n\nexport default memo(SegmentedControl)\n\ntype RadioProps = {\n value: string\n disabled?: boolean\n children?: ReactNode\n}\n\nconst Segmented = (props: RadioProps) => {\n const state = useRadioContext()\n const ref = useRef<HTMLInputElement>(null)\n const ariaRadioProps = useMemo<AriaRadioProps>(\n () => ({\n value: props.value,\n isDisabled: props.disabled,\n children: props.children,\n }),\n [props]\n )\n\n const { inputProps, isDisabled, isSelected } = useRadio(\n ariaRadioProps,\n state,\n ref\n )\n\n return (\n <SegmentedRoot\n aria-disabled={isDisabled || state.isReadOnly}\n checked={isSelected}\n >\n <SegmentedInput {...inputProps} ref={ref} />\n <RadioLabel>\n <SegmentedLabelInner>{props.children}</SegmentedLabelInner>\n </RadioLabel>\n </SegmentedRoot>\n )\n}\n\nconst SegmentedControlRoot = styled.div`\n display: inline-flex;\n align-items: center;\n\n background-color: var(--charcoal-surface3);\n border-radius: 16px;\n`\n\nconst SegmentedRoot = styled.label<{ checked?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n height: 32px;\n\n padding-right: 16px;\n padding-left: 16px;\n border-radius: 16px;\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: default;\n opacity: 0.32;\n }\n color: var(--charcoal-text2);\n\n ${({ checked = false }) =>\n checked &&\n css`\n background-color: var(--charcoal-brand);\n color: var(--charcoal-text5);\n `}\n`\nconst SegmentedInput = styled.input`\n position: absolute;\n\n height: 0px;\n width: 0px;\n padding: 0;\n margin: 0;\n\n appearance: none;\n box-sizing: border-box;\n overflow: hidden;\n white-space: nowrap;\n opacity: 0;\n`\n\nconst RadioLabel = styled.div`\n background: transparent;\n display: flex;\n align-items: center;\n height: 22px;\n`\nconst SegmentedLabelInner = styled.div`\n font-size: 14px;\n line-height: 22px;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {FormValidationContext, useFormValidationState, DEFAULT_VALIDATION_RESULT, VALID_VALIDITY_STATE, privateValidationStateProp, mergeValidation} from './useFormValidationState';\nexport type {FormValidationState} from './useFormValidationState';\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createContext, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {Validation, ValidationErrors, ValidationFunction, ValidationResult} from '@react-types/shared';\n\nexport const VALID_VALIDITY_STATE: ValidityState = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true\n};\n\nconst CUSTOM_VALIDITY_STATE: ValidityState = {\n ...VALID_VALIDITY_STATE,\n customError: true,\n valid: false\n};\n\nexport const DEFAULT_VALIDATION_RESULT: ValidationResult = {\n isInvalid: false,\n validationDetails: VALID_VALIDITY_STATE,\n validationErrors: []\n};\n\nexport const FormValidationContext = createContext<ValidationErrors>({});\n\nexport const privateValidationStateProp = '__formValidationState' + Date.now();\n\ninterface FormValidationProps<T> extends Validation<T> {\n builtinValidation?: ValidationResult,\n name?: string | string[],\n value: T\n}\n\nexport interface FormValidationState {\n /** Realtime validation results, updated as the user edits the value. */\n realtimeValidation: ValidationResult,\n /** Currently displayed validation results, updated when the user commits their changes. */\n displayValidation: ValidationResult,\n /** Updates the current validation result. Not displayed to the user until `commitValidation` is called. */\n updateValidation(result: ValidationResult): void,\n /** Resets the displayed validation state to valid when the user resets the form. */\n resetValidation(): void,\n /** Commits the realtime validation so it is displayed to the user. */\n commitValidation(): void\n}\n\nexport function useFormValidationState<T>(props: FormValidationProps<T>): FormValidationState {\n // Private prop for parent components to pass state to children.\n if (props[privateValidationStateProp]) {\n let {realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation} = props[privateValidationStateProp] as FormValidationState;\n return {realtimeValidation, displayValidation, updateValidation, resetValidation, commitValidation};\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useFormValidationStateImpl(props);\n}\n\nfunction useFormValidationStateImpl<T>(props: FormValidationProps<T>): FormValidationState {\n let {isInvalid, validationState, name, value, builtinValidation, validate, validationBehavior = 'aria'} = props;\n\n // backward compatibility.\n if (validationState) {\n isInvalid ||= validationState === 'invalid';\n }\n\n // If the isInvalid prop is true, update validation result in realtime (controlled).\n let controlledError: ValidationResult | null = isInvalid ? {\n isInvalid: true,\n validationErrors: [],\n validationDetails: CUSTOM_VALIDITY_STATE\n } : null;\n\n // Perform custom client side validation.\n let clientError: ValidationResult | null = useMemo(() => getValidationResult(runValidate(validate, value)), [validate, value]);\n\n if (builtinValidation?.validationDetails.valid) {\n builtinValidation = null;\n }\n\n // Get relevant server errors from the form.\n let serverErrors = useContext(FormValidationContext);\n let serverErrorMessages = useMemo(() => {\n if (name) {\n return Array.isArray(name) ? name.flatMap(name => asArray(serverErrors[name])) : asArray(serverErrors[name]);\n }\n return [];\n }, [serverErrors, name]);\n\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = useState(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = useState(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n\n let serverError: ValidationResult | null = useMemo(() =>\n getValidationResult(isServerErrorCleared ? [] : serverErrorMessages),\n [isServerErrorCleared, serverErrorMessages]\n );\n\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = useRef(DEFAULT_VALIDATION_RESULT);\n let [currentValidity, setCurrentValidity] = useState(DEFAULT_VALIDATION_RESULT);\n\n let lastError = useRef(DEFAULT_VALIDATION_RESULT);\n let commitValidation = () => {\n if (!commitQueued) {\n return;\n }\n\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n\n let [commitQueued, setCommitQueued] = useState(false);\n useEffect(commitValidation);\n\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation = controlledError || serverError || clientError || builtinValidation || DEFAULT_VALIDATION_RESULT;\n let displayValidation = validationBehavior === 'native'\n ? controlledError || serverError || currentValidity\n : controlledError || serverError || clientError || builtinValidation || currentValidity;\n\n return {\n realtimeValidation,\n displayValidation,\n updateValidation(value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !isEqualValidation(currentValidity, value)) {\n setCurrentValidity(value);\n } else {\n nextValidation.current = value;\n }\n },\n resetValidation() {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = DEFAULT_VALIDATION_RESULT;\n if (!isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') {\n setCommitQueued(false);\n }\n\n setServerErrorCleared(true);\n },\n commitValidation() {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') {\n setCommitQueued(true);\n }\n setServerErrorCleared(true);\n }\n };\n}\n\nfunction asArray<T>(v: T | T[]): T[] {\n if (!v) {\n return [];\n }\n\n return Array.isArray(v) ? v : [v];\n}\n\nfunction runValidate<T>(validate: ValidationFunction<T>, value: T): string[] {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') {\n return asArray(e);\n }\n }\n\n return [];\n}\n\nfunction getValidationResult(errors: string[]): ValidationResult | null {\n return errors.length ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: CUSTOM_VALIDITY_STATE\n } : null;\n}\n\nfunction isEqualValidation(a: ValidationResult | null, b: ValidationResult | null): boolean {\n if (a === b) {\n return true;\n }\n\n return a && b\n && a.isInvalid === b.isInvalid\n && a.validationErrors.length === b.validationErrors.length\n && a.validationErrors.every((a, i) => a === b.validationErrors[i])\n && Object.entries(a.validationDetails).every(([k, v]) => b.validationDetails[k] === v);\n}\n\nexport function mergeValidation(...results: ValidationResult[]): ValidationResult {\n let errors = new Set<string>();\n let isInvalid = false;\n let validationDetails = {\n ...VALID_VALIDITY_STATE\n };\n\n for (let v of results) {\n for (let e of v.validationErrors) {\n errors.add(e);\n }\n\n // Only these properties apply for checkboxes.\n isInvalid ||= v.isInvalid;\n for (let key in validationDetails) {\n validationDetails[key] ||= v.validationDetails[key];\n }\n }\n\n validationDetails.valid = !isInvalid;\n return {\n isInvalid,\n validationErrors: [...errors],\n validationDetails\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport {useControlledState} from './useControlledState';\nexport {clamp, snapValueToStep, toFixedNumber} from './number';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef, useState} from 'react';\n\nexport function useControlledState<T, C = T>(value: Exclude<T, undefined>, defaultValue: Exclude<T, undefined> | undefined, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(value: Exclude<T, undefined> | undefined, defaultValue: Exclude<T, undefined>, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState<T, C = T>(value: T, defaultValue: T, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void] {\n let [stateValue, setStateValue] = useState(value || defaultValue);\n\n let isControlledRef = useRef(value !== undefined);\n let isControlled = value !== undefined;\n useEffect(() => {\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n }\n isControlledRef.current = isControlled;\n }, [isControlled]);\n\n let currentValue = isControlled ? value : stateValue;\n let setValue = useCallback((value, ...args) => {\n let onChangeCaller = (value, ...onChangeArgs) => {\n if (onChange) {\n if (!Object.is(currentValue, value)) {\n onChange(value, ...onChangeArgs);\n }\n }\n if (!isControlled) {\n // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n }\n };\n\n if (typeof value === 'function') {\n console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs) => {\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) {\n return interceptedValue;\n }\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) {\n setStateValue(value);\n }\n onChangeCaller(value, ...args);\n }\n }, [isControlled, currentValue, onChange]);\n\n return [currentValue, setValue];\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */\nexport function clamp(value: number, min: number = -Infinity, max: number = Infinity): number {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\n\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n let remainder = ((value - (isNaN(min) ? 0 : min)) % step);\n let snappedValue = Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder;\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = min + Math.floor((max - min) / step) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(max / step) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n let string = step.toString();\n let index = string.indexOf('.');\n let precision = index >= 0 ? string.length - index : 0;\n\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n snappedValue = Math.round(snappedValue * pow) / pow;\n }\n\n return snappedValue;\n}\n\n/* Takes a value and rounds off to the number of digits. */\nexport function toFixedNumber(value: number, digits: number, base: number = 10): number {\n const pow = Math.pow(base, digits);\n\n return Math.round(value * pow) / pow;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport {useRadioGroupState} from './useRadioGroupState';\n\nexport type {RadioGroupProps} from '@react-types/radio';\nexport type {RadioGroupState} from './useRadioGroupState';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FormValidationState, useFormValidationState} from '@react-stately/form';\nimport {RadioGroupProps} from '@react-types/radio';\nimport {useControlledState} from '@react-stately/utils';\nimport {useMemo, useState} from 'react';\nimport {ValidationState} from '@react-types/shared';\n\nexport interface RadioGroupState extends FormValidationState {\n /**\n * The name for the group, used for native form submission.\n * @deprecated\n * @private\n */\n readonly name: string,\n\n /** Whether the radio group is disabled. */\n readonly isDisabled: boolean,\n\n /** Whether the radio group is read only. */\n readonly isReadOnly: boolean,\n\n /** Whether the radio group is required. */\n readonly isRequired: boolean,\n\n /**\n * Whether the radio group is valid or invalid.\n * @deprecated Use `isInvalid` instead.\n */\n readonly validationState: ValidationState | null,\n\n /** Whether the radio group is invalid. */\n readonly isInvalid: boolean,\n\n /** The currently selected value. */\n readonly selectedValue: string | null,\n\n /** Sets the selected value. */\n setSelectedValue(value: string | null): void,\n\n /** The value of the last focused radio. */\n readonly lastFocusedValue: string | null,\n\n /** Sets the last focused value. */\n setLastFocusedValue(value: string | null): void\n}\n\nlet instance = Math.round(Math.random() * 10000000000);\nlet i = 0;\n\n/**\n * Provides state management for a radio group component. Provides a name for the group,\n * and manages selection and focus state.\n */\nexport function useRadioGroupState(props: RadioGroupProps): RadioGroupState {\n // Preserved here for backward compatibility. React Aria now generates the name instead of stately.\n let name = useMemo(() => props.name || `radio-group-${instance}-${++i}`, [props.name]);\n let [selectedValue, setSelected] = useControlledState(props.value, props.defaultValue ?? null, props.onChange);\n let [lastFocusedValue, setLastFocusedValue] = useState<string | null>(null);\n\n let validation = useFormValidationState({\n ...props,\n value: selectedValue\n });\n\n let setSelectedValue = (value) => {\n if (!props.isReadOnly && !props.isDisabled) {\n setSelected(value);\n validation.commitValidation();\n }\n };\n\n let isInvalid = validation.displayValidation.isInvalid;\n\n return {\n ...validation,\n name,\n selectedValue: selectedValue,\n setSelectedValue,\n lastFocusedValue,\n setLastFocusedValue,\n isDisabled: props.isDisabled || false,\n isReadOnly: props.isReadOnly || false,\n isRequired: props.isRequired || false,\n validationState: props.validationState || (isInvalid ? 'invalid' : null),\n isInvalid\n };\n}\n","import { createContext, useContext } from 'react'\nimport * as React from 'react'\nimport type { RadioGroupState } from '@react-stately/radio'\n\nconst RadioContext = createContext<RadioGroupState | null>(null)\n\ntype RadioProviderProps = React.PropsWithChildren<{\n value: RadioGroupState\n}>\nexport const RadioProvider: React.FC<RadioProviderProps> = ({\n value,\n children,\n}) => {\n return <RadioContext.Provider value={value}>{children}</RadioContext.Provider>\n}\nexport const useRadioContext = () => {\n const state = useContext(RadioContext)\n\n if (state === null)\n throw new Error('`<RadioProvider>` is not likely mounted.')\n\n return state\n}\n","import { forwardRef, memo, useMemo } from 'react'\nimport * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useCheckbox } from '@react-aria/checkbox'\nimport { useObjectRef } from '@react-aria/utils'\nimport { useToggleState } from 'react-stately'\n\nimport type { AriaCheckboxProps } from '@react-types/checkbox'\nimport Icon from '../Icon'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\ntype CheckboxLabelProps =\n | {\n children: React.ReactNode\n }\n | {\n label: string\n }\n\nexport type CheckboxProps = CheckboxLabelProps & {\n readonly id?: string\n readonly name?: string\n readonly className?: string\n\n readonly checked?: boolean\n readonly defaultChecked?: boolean\n readonly disabled?: boolean\n readonly readonly?: boolean\n readonly invalid?: boolean\n\n readonly onClick?: () => void\n readonly onChange?: (isSelected: boolean) => void\n readonly onBlur?: () => void\n readonly onFocus?: () => void\n}\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function CheckboxInner({ invalid = false, ...props }, ref) {\n const ariaCheckboxProps = useMemo<AriaCheckboxProps>(\n () => ({\n ...props,\n isInValid: invalid,\n isSelected: props.checked,\n defaultSelected: props.defaultChecked,\n validationState: invalid ? 'invalid' : 'valid',\n // children がいない場合は aria-label をつけないといけない\n 'aria-label': 'children' in props ? undefined : props.label,\n isDisabled: props.disabled,\n }),\n [invalid, props]\n )\n const state = useToggleState(ariaCheckboxProps)\n const objectRef = useObjectRef(ref)\n\n const { inputProps } = useCheckbox(ariaCheckboxProps, state, objectRef)\n const isDisabled = (props.disabled ?? false) || (props.readonly ?? false)\n\n return (\n <InputRoot aria-disabled={isDisabled} className={props.className}>\n <CheckboxRoot>\n <CheckboxInput\n type=\"checkbox\"\n {...inputProps}\n readOnly={props.readonly}\n />\n <CheckboxInputOverlay aria-hidden={true} checked={inputProps.checked}>\n <Icon name=\"24/Check\" unsafeNonGuidelineScale={2 / 3} />\n </CheckboxInputOverlay>\n </CheckboxRoot>\n\n {'children' in props && <InputLabel>{props.children}</InputLabel>}\n </InputRoot>\n )\n }\n)\n\nexport default memo(Checkbox)\n\nconst hiddenCss = css`\n visibility: hidden;\n`\n\nconst InputRoot = styled.label`\n position: relative;\n display: flex;\n\n cursor: pointer;\n\n gap: 4px;\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: default;\n opacity: 0.32;\n }\n`\n\nconst CheckboxRoot = styled.div`\n position: relative;\n`\n\nconst CheckboxInput = styled.input`\n &[type='checkbox'] {\n appearance: none;\n display: block;\n cursor: pointer;\n margin: 0;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n transition: 0.2s box-shadow, 0.2s background-color;\n\n &:disabled {\n cursor: default;\n }\n &:read-only {\n cursor: default;\n }\n\n &:checked {\n background-color: var(--charcoal-brand);\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n &:hover {\n background-color: var(--charcoal-brand-hover);\n }\n &:active {\n background-color: var(--charcoal-brand-press);\n }\n }\n }\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n &[aria-invalid='true'] {\n box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);\n }\n }\n\n &:not(:checked) {\n border-width: 2px;\n border-style: solid;\n border-color: var(--charcoal-text4);\n }\n }\n`\n\nconst CheckboxInputOverlay = styled.div<{ checked?: boolean }>`\n position: absolute;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: var(--charcoal-text5);\n\n ${({ checked }) => checked !== true && hiddenCss};\n`\n\nconst InputLabel = styled.div`\n color: var(--charcoal-text2);\n font-size: 14px;\n /** checkbox の height が 20px なのでcheckbox と text が揃っているように見せるために行ボックスの高さを 20px にしている */\n line-height: 20px;\n`\n","import { forwardRef, memo, useMemo, ComponentPropsWithoutRef } from 'react'\nimport { useObjectRef } from '@react-aria/utils'\nimport styled, { css } from 'styled-components'\nimport { px } from '@charcoal-ui/utils'\nimport { AriaButtonProps, useButton } from '@react-aria/button'\nimport Icon from '../Icon'\nimport { focusVisibleFocusRingCss } from '@charcoal-ui/styled'\n\nconst sizeMap = {\n S: 32,\n M: 40,\n}\n\nexport type TagItemProps = {\n label: string\n translatedLabel?: string\n bgColor?: string\n bgImage?: string\n status?: 'default' | 'active' | 'inactive'\n size?: keyof typeof sizeMap\n disabled?: boolean\n className?: string\n} & Pick<ComponentPropsWithoutRef<'a'>, 'href' | 'target' | 'rel' | 'onClick'>\n\nconst TagItem = forwardRef<HTMLAnchorElement, TagItemProps>(\n function TagItemInner(\n {\n label,\n translatedLabel,\n bgColor = '#7ACCB1',\n bgImage,\n size = 'M',\n disabled,\n status = 'default',\n className,\n ...props\n },\n _ref\n ) {\n const ref = useObjectRef(_ref)\n const ariaButtonProps = useMemo<AriaButtonProps<'a'>>(\n () => ({\n elementType: 'a',\n isDisabled: disabled,\n ...props,\n }),\n [disabled, props]\n )\n\n const { buttonProps } = useButton(ariaButtonProps, ref)\n const hasTranslatedLabel =\n translatedLabel !== undefined && translatedLabel.length > 0\n\n return (\n <TagItemRoot\n ref={ref}\n size={hasTranslatedLabel ? 'M' : size}\n status={status}\n {...buttonProps}\n className={className}\n >\n <Background bgColor={bgColor} bgImage={bgImage} status={status} />\n\n <Inner>\n <LabelWrapper isTranslate={hasTranslatedLabel}>\n {hasTranslatedLabel && (\n <TranslatedLabel>\n <Label>{translatedLabel}</Label>\n </TranslatedLabel>\n )}\n <Label>{label}</Label>\n </LabelWrapper>\n {status === 'active' && <Icon name=\"16/Remove\" />}\n </Inner>\n </TagItemRoot>\n )\n }\n)\n\nexport default memo(TagItem)\n\ntype TagItemRootProps = Pick<TagItemProps, 'status'> &\n Required<Pick<TagItemProps, 'size'>>\n\ntype Horizontal = {\n left: number\n right: number\n}\nconst horizontalPadding = ({ left, right }: Horizontal) => css`\n padding-right: ${px(right)};\n padding-left: ${px(left)};\n`\nconst tagItemRootSize = (size: TagItemProps['size']) => {\n switch (size) {\n case 'M':\n return horizontalPadding({ left: 24, right: 24 })\n case 'S':\n return horizontalPadding({ left: 16, right: 16 })\n }\n}\nconst activeTagItemRoot = horizontalPadding({ left: 16, right: 8 })\n\nconst TagItemRoot = styled.a<TagItemRootProps>`\n isolation: isolate;\n position: relative;\n height: ${({ size }) => sizeMap[size]}px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-decoration: none;\n cursor: pointer;\n overflow: hidden;\n border-radius: 4px;\n ${({ size, status }) => status !== 'active' && tagItemRootSize(size)}\n ${({ status }) => status === 'active' && activeTagItemRoot}\n color: ${({ status }) =>\n status === 'inactive' ? 'var(--charcoal-text2)' : 'var(--charcoal-text5)'};\n\n transition: 0.2s box-shadow;\n\n &:not(:disabled):not([aria-disabled]),\n &[aria-disabled='false'] {\n ${focusVisibleFocusRingCss}\n }\n\n &:disabled,\n &[aria-disabled]:not([aria-disabled='false']) {\n opacity: 0.32;\n cursor: default;\n }\n`\n\nconst Background = styled.div<\n Pick<TagItemProps, 'bgColor' | 'bgImage' | 'status'>\n>`\n position: absolute;\n z-index: 1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n background-color: ${({ bgColor }) => bgColor};\n ${({ status }) =>\n status === 'inactive' &&\n css`\n background-color: var(--charcoal-surface3);\n `}\n\n ${({ bgImage }) =>\n bgImage !== undefined &&\n css`\n background-color: var(--charcoal-surface4);\n\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-position: center;\n background-size: cover;\n background-image: url(${bgImage});\n mix-blend-mode: overlay;\n }\n `}\n`\n\nconst Inner = styled.div`\n display: inline-flex;\n gap: 8px;\n align-items: center;\n z-index: 2;\n`\n\nconst labelCSS = css`\n font-size: 14px;\n line-height: 22px;\n font-weight: bold;\n display: flow-root;\n\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\nconst translateLabelCSS = css`\n display: flex;\n align-items: center;\n flex-direction: column;\n font-size: 10px;\n`\nconst LabelWrapper = styled.div<{ isTranslate?: boolean }>`\n ${({ isTranslate }) => (isTranslate ?? false ? translateLabelCSS : labelCSS)}\n`\n\nconst Label = styled.span`\n max-width: 152px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n`\n\nconst TranslatedLabel = styled.div`\n font-size: 12px;\n line-height: 20px;\n font-weight: bold;\n display: flow-root;\n &::before {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-top: -4px;\n }\n &::after {\n display: block;\n width: 0;\n height: 0;\n content: '';\n margin-bottom: -4px;\n }\n`\n"],"mappings":"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","names":["useContext","React","DefaultLink","forwardRef","to","children","rest","ref","DefaultValue","Link","ComponentAbstractionContext","createContext","components","useComponentAbstraction","SSRProvider","OverlayProvider","ThemeProvider","TokenInjector","jsx","CharcoalProvider","themeMap","defaultTheme","components","injectTokens","children","background","forwardRef","unreachable","value","Error","arguments","length","JSON","stringify","mergeRefs","refs","ref","current","countCodePointsInString","string","Array","from","variantToFont","variant","unreachable","variantToBackground","variant","unreachable","styled","css","React","styled","disabledSelector","jsx","Clickable","forwardRef","props","ref","Link","useComponentAbstraction","isLink","as","ariaDisabled","disabled","undefined","rest","_rest","StyledClickableDiv","styled","div","withConfig","componentId","focusVisibleFocusRingCss","horizontalPaddingSmall","css","horizontalPaddingMedium","StyledButton","styled","Clickable","withConfig","componentId","p","$fullWidth","$size","$color","$background","$isActive","$active","jsx","Button","forwardRef","children","variant","size","fullWidth","fixed","disabled","isActive","rest","ref","variantToBackground","variantToFont","forwardRef","styled","css","focusVisibleFocusRingCss","jsx","IconButton","forwardRef","IconButtonInner","variant","size","icon","isActive","rest","ref","validateIconSize","StyledIconButton","styled","Clickable","attrs","styledProps","withConfig","componentId","p","$width","$height","$font","$background","$isActive","css","$size","$variant","variantToProps","sizeToProps","requiredIconSize","result","exec","Error","iconSize","console","warn","memo","forwardRef","useCallback","useContext","React","styled","warning","focusVisibleFocusRingCss","jsx","jsxs","Radio","RadioInner","value","disabled","children","className","ref","name","selected","isParentDisabled","readonly","invalid","onChange","RadioGroupContext","undefined","isSelected","isDisabled","isReadonly","handleChange","e","currentTarget","RadioRoot","label","withConfig","componentId","RadioInput","input","attrs","type","RadioLabel","div","StyledRadioGroup","createContext","Error","RadioGroup","next","useCallback","useContext","forwardRef","memo","styled","css","warning","px","createContext","MultiSelectGroupContext","name","undefined","selected","disabled","readonly","invalid","onChange","Error","focusVisibleFocusRingCss","jsx","jsxs","MultiSelect","forwardRef","MultiSelectInner","value","disabled","onChange","variant","className","children","ref","name","selected","parentDisabled","readonly","invalid","parentOnChange","useContext","MultiSelectGroupContext","warning","undefined","isSelected","includes","isDisabled","handleChange","useCallback","event","currentTarget","HTMLInputElement","checked","Boolean","memo","MultiSelectRoot","styled","label","withConfig","componentId","theme","px","spacing","MultiSelectLabel","div","MultiSelectInput","input","attrs","type","overlay","css","MultiSelectInputOverlay","MultiSelectGroup","payload","index","indexOf","slice","Array","from","Set","useSwitch","useMemo","memo","forwardRef","useToggleState","styled","useObjectRef","focusVisibleFocusRingCss","jsx","jsxs","SwitchCheckbox","SwitchCheckboxInner","props","external","disabled","className","ariaSwitchProps","undefined","label","isDisabled","isSelected","checked","state","ref","inputProps","_className","type","_type","rest","children","Label","withConfig","componentId","LabelInner","div","SwitchInput","input","attrs","useTextField","useVisuallyHidden","useCallback","useEffect","useRef","useState","React","styled","css","React","styled","jsx","jsxs","FieldLabel","forwardRef","style","className","label","required","requiredText","subLabel","labelProps","ref","Label","withConfig","componentId","RequiredText","span","SubLabelClickable","div","FieldLabelWrapper","useEffect","useFocusWithClick","containerRef","inputRef","el","current","handleDown","e","target","focus","addEventListener","removeEventListener","mergeProps","jsx","jsxs","TextField","forwardRef","SingleLineTextFieldInner","onChange","props","className","showLabel","showCount","label","requiredText","subLabel","disabled","required","invalid","assistiveText","maxLength","prefix","suffix","restProps","visuallyHiddenProps","useVisuallyHidden","ariaRef","useRef","count","setCount","useState","countCodePointsInString","value","nonControlled","undefined","handleChange","useCallback","useEffect","inputProps","ariaInputProps","labelProps","descriptionProps","errorMessageProps","useTextField","inputElementType","isDisabled","isRequired","validationState","description","errorMessage","containerRef","useFocusWithClick","mergeRefs","length","TextFieldRoot","styled","div","withConfig","componentId","p","opacity","theme","elementEffect","TextFieldLabel","FieldLabel","StyledInputContainer","hasPrefix","hasSuffix","filter","Boolean","join","css","PrefixContainer","SuffixContainer","span","StyledInput","input","SingleLineCounter","AssistiveText","useTextField","useVisuallyHidden","forwardRef","useCallback","useEffect","useRef","useState","styled","css","mergeProps","jsx","jsxs","TextArea","forwardRef","TextAreaInner","onChange","props","className","showCount","showLabel","label","requiredText","subLabel","disabled","required","invalid","assistiveText","maxLength","autoHeight","rows","initialRows","restProps","visuallyHiddenProps","useVisuallyHidden","textareaRef","useRef","ariaRef","count","setCount","useState","countCodePointsInString","value","setRows","syncHeight","useCallback","textarea","match","length","nonControlled","undefined","handleChange","current","useEffect","inputProps","ariaInputProps","labelProps","descriptionProps","errorMessageProps","useTextField","inputElementType","isDisabled","isRequired","validationState","description","errorMessage","containerRef","useFocusWithClick","TextFieldRoot","mergeRefs","styled","div","withConfig","componentId","p","opacity","theme","elementEffect","StyledTextareaContainer","css","StyledTextarea","noBottomPadding","MultiLineCounter","span","React","jsx","Icon","forwardRef","IconInner","name","scale","unsafeNonGuidelineScale","className","rest","ref","useContext","forwardRef","memo","React","Overlay","styled","css","useTheme","maxWidth","useMedia","animated","useTransition","easings","useObjectRef","forwardRef","styled","css","useDialog","COLUMN_UNIT","GUTTER_UNIT","columnSystem","span","column","gutter","maxWidth","animated","React","useForwardedRef","ref","innerRef","useRef","useEffect","current","jsx","Dialog","forwardRef","props","ref","useForwardedRef","dialogProps","useDialog","role","tabIndex","onBlur","AnimatedStyledDialogDiv","animated","styled","div","withConfig","componentId","p","size","columnSystem","COLUMN_UNIT","GUTTER_UNIT","unreachable","theme","maxWidth","breakpoint","screen1","bottomSheet","css","React","ModalBackgroundContext","createContext","React","ariaHideOutside","useOverlay","useOverlayFocusContain","usePreventScroll","useCharcoalModalOverlay","props","state","ref","overlayProps","underlayProps","isOpen","onClose","shouldCloseOnInteractOutside","isDisabled","useEffect","current","modalProps","jsx","jsxs","DEFAULT_Z_INDEX","Modal","forwardRef","ModalInner","children","zIndex","portalContainer","props","external","title","size","bottomSheet","isDismissable","onClose","className","isOpen","ref","useObjectRef","modalProps","underlayProps","useCharcoalModalOverlay","isKeyboardDismissDisabled","undefined","theme","useTheme","isMobile","useMedia","maxWidth","breakpoint","screen1","transitionEnabled","showDismiss","transition","useTransition","from","transform","backgroundColor","overflow","enter","update","leave","config","duration","easing","easings","easeOutQuart","bgRef","useRef","handleClick","useCallback","e","currentTarget","target","item","current","titleProps","close","memo","ModalContext","createContext","ModalBackground","animated","styled","div","withConfig","componentId","p","$bottomSheet","css","ModalCrossButton","IconButton","ModalTitle","useContext","ModalHeading","h3","styled","css","useContext","maxWidth","jsx","ModalHeader","modalCtx","ModalContext","bottomSheet","ModalHeaderRoot","div","withConfig","componentId","theme","breakpoint","screen1","p","$bottomSheet","StyledModalTitle","ModalTitle","ModalAlign","ModalBody","ModalButtons","forwardRef","useImperativeHandle","useRef","memo","styled","keyframes","jsx","LoadingSpinner","LoadingSpinnerInner","size","padding","transparent","className","ref","LoadingSpinnerRoot","div","attrs","role","withConfig","componentId","props","scaleOut","Icon","p","once","LoadingSpinnerIcon","iconRef","restart","current","dataset","resetAnimation","offsetWidth","useState","useRef","styled","css","disabledSelector","useEffect","useRef","useContext","useRef","DismissButton","Overlay","usePopover","styled","useEffect","usePreventScroll","element","isOpen","defaultPaddingRight","style","paddingRight","defaultOverflow","overflow","window","innerWidth","clientWidth","jsx","jsxs","_empty","props","defaultPopoverRef","useRef","finalPopoverRef","popoverRef","undefined","popoverProps","underlayProps","usePopover","triggerRef","containerPadding","close","onClose","isOpen","open","setOpen","toggle","modalBackground","useContext","ModalBackgroundContext","usePreventScroll","Overlay","document","body","position","zIndex","style","inset","children","DropdownPopoverDiv","styled","div","withConfig","componentId","jsx","DropdownPopover","children","props","ref","useRef","useEffect","isOpen","current","triggerRef","style","width","clientWidth","value","undefined","windowScrollY","window","scrollY","windowScrollX","scrollX","selectedElement","document","querySelector","toString","focus","scrollTo","onClose","React","findPreviewRecursive","children","value","childArray","Children","toArray","i","length","child","isValidElement","props","childValue","undefined","useRef","styled","createContext","MenuListContext","root","undefined","value","values","setValue","_v","React","getValuesRecursive","children","values","childArray","Children","toArray","i","length","child","isValidElement","props","value","childValue","push","jsx","props","root","useRef","values","getValuesRecursive","children","value","setValue","v","onChange","StyledUl","styled","ul","withConfig","componentId","focusVisibleFocusRingCss","jsx","jsxs","defaultRequiredText","props","triggerRef","useRef","isOpen","setIsOpen","useState","preview","findPreviewRecursive","children","value","disabled","showLabel","label","required","requiredText","subLabel","invalid","placeholder","undefined","v","onChange","assistiveText","DropdownSelectorRoot","styled","div","withConfig","componentId","disabledSelector","DropdownFieldLabel","FieldLabel","DropdownButton","button","$active","css","DropdownButtonText","span","DropdownButtonIcon","Icon","AssertiveText","styled","styled","jsx","props","children","rest","StyledLi","li","withConfig","componentId","ItemDiv","div","useCallback","useContext","handleFocusByKeyBoard","element","parent","isScrollable","scrollHeight","clientHeight","rect","getBoundingClientRect","parentRect","bottom","scrollTo","top","scrollTop","scrollIfNeeded","elementRect","isVisible","window","innerHeight","document","documentElement","scrollIntoView","block","useMenuItemHandleKeyDown","value","setValue","root","values","useContext","MenuListContext","setContextValue","useCallback","undefined","handleKeyDown","e","key","preventDefault","index","indexOf","focusValue","length","next","current","querySelector","HTMLElement","focus","preventScroll","parentElement","handleFocusByKeyBoard","jsx","props","children","as","rest","handleKeyDown","setContextValue","useMenuItemHandleKeyDown","value","disabled","undefined","useContext","jsx","jsxs","props","value","ctxValue","useContext","MenuListContext","isSelected","children","rest","StyledSpan","styled","span","withConfig","componentId","Text2ColorIcon","Icon","styled","jsx","jsxs","props","StyledLi","text","StyledUl","children","TextSpan","span","withConfig","componentId","ul","li","forwardRef","memo","useMemo","useRef","$e5be200c675c3b3a$export$aca958c65c314e6c","badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","valid","$e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE","$e5be200c675c3b3a$export$dad6ae84456c676a","isInvalid","validationDetails","validationErrors","$e5be200c675c3b3a$export$571b5131b7e65c11","$jcIOw$createContext","$e5be200c675c3b3a$export$a763b9476acd3eb","Date","now","$e5be200c675c3b3a$export$fc1a364ae1f3ff10","props","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","$e5be200c675c3b3a$var$useFormValidationStateImpl","validationState","name","value","builtinValidation","validate","validationBehavior","controlledError","clientError","$jcIOw$useMemo","$e5be200c675c3b3a$var$getValidationResult","$e5be200c675c3b3a$var$runValidate","serverErrors","$jcIOw$useContext","serverErrorMessages","Array","isArray","flatMap","$e5be200c675c3b3a$var$asArray","lastServerErrors","setLastServerErrors","$jcIOw$useState","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","$jcIOw$useRef","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","error","current","$e5be200c675c3b3a$var$isEqualValidation","$jcIOw$useEffect","v","e","errors","length","a","b","every","i","Object","entries","k","$458b0a5536c1a7cf$export$40bfa8c7b0832715","value","defaultValue","onChange","stateValue","setStateValue","$6imuh$useState","isControlledRef","$6imuh$useRef","undefined","isControlled","$6imuh$useEffect","wasControlled","current","console","warn","currentValue","setValue","$6imuh$useCallback","args","onChangeCaller","onChangeArgs","Object","is","updateFunction","oldValue","functionArgs","interceptedValue","$a54cdc5c1942b639$var$instance","Math","round","random","$a54cdc5c1942b639$var$i","$a54cdc5c1942b639$export$bca9d026f8e704eb","props","name","$fQ2SF$useMemo","_props_defaultValue","selectedValue","setSelected","$fQ2SF$useControlledState","value","defaultValue","onChange","lastFocusedValue","setLastFocusedValue","$fQ2SF$useState","validation","$fQ2SF$useFormValidationState","setSelectedValue","isReadOnly","isDisabled","commitValidation","isInvalid","displayValidation","isRequired","validationState","useRadio","useRadioGroup","styled","css","createContext","useContext","jsx","RadioContext","RadioProvider","value","children","useRadioContext","state","Error","jsx","jsxs","SegmentedControl","forwardRef","SegmentedControlInner","props","ref","ariaRadioGroupProps","useMemo","isDisabled","disabled","isReadOnly","readonly","isRequired","required","name","state","useRadioGroupState","radioGroupProps","useRadioGroup","segmentedControlItems","data","map","d","value","label","className","item","memo","Segmented","useRadioContext","useRef","ariaRadioProps","children","inputProps","isSelected","useRadio","RadioLabel","SegmentedControlRoot","styled","div","withConfig","componentId","SegmentedRoot","checked","css","SegmentedInput","input","SegmentedLabelInner","forwardRef","memo","useMemo","styled","css","useCheckbox","useObjectRef","useToggleState","focusVisibleFocusRingCss","jsx","jsxs","Checkbox","forwardRef","CheckboxInner","invalid","props","ref","ariaCheckboxProps","useMemo","isInValid","isSelected","checked","defaultSelected","defaultChecked","validationState","undefined","label","isDisabled","disabled","state","useToggleState","objectRef","useObjectRef","inputProps","useCheckbox","readonly","className","children","memo","hiddenCss","css","InputRoot","styled","withConfig","componentId","CheckboxRoot","div","CheckboxInput","input","CheckboxInputOverlay","InputLabel","forwardRef","memo","useMemo","useObjectRef","styled","css","px","useButton","focusVisibleFocusRingCss","jsx","jsxs","sizeMap","S","M","TagItem","forwardRef","TagItemInner","label","translatedLabel","bgColor","bgImage","size","disabled","status","className","props","_ref","ref","useObjectRef","ariaButtonProps","useMemo","elementType","isDisabled","buttonProps","useButton","hasTranslatedLabel","undefined","length","Label","memo","horizontalPadding","left","right","css","px","tagItemRootSize","activeTagItemRoot","TagItemRoot","styled","a","withConfig","componentId","Background","div","Inner","labelCSS","translateLabelCSS","LabelWrapper","isTranslate","span","TranslatedLabel"]}