{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/segmented/style/index.ts"],"sourcesContent":["import type { CSSObject, FullToken, GenerateStyle } from '@antdv/theme';\nimport { genComponentStyleHook, mergeToken, resetComponent, textEllipsis } from '@antdv/theme';\n\nexport interface ComponentToken {}\n\ninterface SegmentedToken extends FullToken<'Segmented'> {\n  segmentedPaddingHorizontal: number\n  segmentedPaddingHorizontalSM: number\n  segmentedContainerPadding: number\n  labelColor: string\n  labelColorHover: string\n  bgColor: string\n  bgColorHover: string\n  bgColorSelected: string\n}\n\n// ============================== Mixins ==============================\nfunction getItemDisabledStyle(cls: string, token: SegmentedToken): CSSObject {\n  return {\n    [`${cls}, ${cls}:hover, ${cls}:focus`]: {\n      color: token.colorTextDisabled,\n      cursor: 'not-allowed',\n    },\n  };\n}\n\nfunction getItemSelectedStyle(token: SegmentedToken): CSSObject {\n  return {\n    backgroundColor: token.bgColorSelected,\n    boxShadow: token.boxShadow,\n  };\n}\n\nconst segmentedTextEllipsisCss: CSSObject = {\n  overflow: 'hidden',\n  // handle text ellipsis\n  ...textEllipsis,\n};\n\n// ============================== Styles ==============================\nconst genSegmentedStyle: GenerateStyle<SegmentedToken> = (token: SegmentedToken) => {\n  const { componentCls } = token;\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n\n      display: 'inline-block',\n      padding: token.segmentedContainerPadding,\n      color: token.labelColor,\n      backgroundColor: token.bgColor,\n      borderRadius: token.borderRadius,\n      transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n\n      [`${componentCls}-group`]: {\n        position: 'relative',\n        display: 'flex',\n        alignItems: 'stretch',\n        justifyItems: 'flex-start',\n        width: '100%',\n      },\n\n      // RTL styles\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      // block styles\n      [`&${componentCls}-block`]: {\n        display: 'flex',\n      },\n\n      [`&${componentCls}-block ${componentCls}-item`]: {\n        flex: 1,\n        minWidth: 0,\n      },\n\n      // item styles\n      [`${componentCls}-item`]: {\n        'position': 'relative',\n        'textAlign': 'center',\n        'cursor': 'pointer',\n        'transition': `color ${token.motionDurationMid} ${token.motionEaseInOut}`,\n        'borderRadius': token.borderRadiusSM,\n\n        '&-selected': {\n          ...getItemSelectedStyle(token),\n          color: token.labelColorHover,\n        },\n\n        '&::after': {\n          content: '\"\"',\n          position: 'absolute',\n          width: '100%',\n          height: '100%',\n          top: 0,\n          insetInlineStart: 0,\n          borderRadius: 'inherit',\n          transition: `background-color ${token.motionDurationMid}`,\n          pointerEvents: 'none',\n        },\n\n        [`&:hover:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)`]: {\n          'color': token.labelColorHover,\n\n          '&::after': {\n            backgroundColor: token.bgColorHover,\n          },\n        },\n\n        '&-label': {\n          minHeight: token.controlHeight - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeight - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontal}px`,\n          ...segmentedTextEllipsisCss,\n        },\n\n        // syntactic sugar to add `icon` for Segmented Item\n        '&-icon + *': {\n          marginInlineStart: token.marginSM / 2,\n        },\n\n        '&-input': {\n          position: 'absolute',\n          insetBlockStart: 0,\n          insetInlineStart: 0,\n          width: 0,\n          height: 0,\n          opacity: 0,\n          pointerEvents: 'none',\n        },\n      },\n\n      // thumb styles\n      [`${componentCls}-thumb`]: {\n        ...getItemSelectedStyle(token),\n\n        position: 'absolute',\n        insetBlockStart: 0,\n        insetInlineStart: 0,\n        width: 0,\n        height: '100%',\n        padding: `${token.paddingXXS}px 0`,\n        borderRadius: token.borderRadiusSM,\n\n        [`& ~ ${componentCls}-item:not(${componentCls}-item-selected):not(${componentCls}-item-disabled)::after`]:\n          {\n            backgroundColor: 'transparent',\n          },\n      },\n\n      // size styles\n      [`&${componentCls}-lg`]: {\n        borderRadius: token.borderRadiusLG,\n        [`${componentCls}-item-label`]: {\n          minHeight: token.controlHeightLG - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeightLG - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontal}px`,\n          fontSize: token.fontSizeLG,\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadius,\n        },\n      },\n\n      [`&${componentCls}-sm`]: {\n        borderRadius: token.borderRadiusSM,\n        [`${componentCls}-item-label`]: {\n          minHeight: token.controlHeightSM - token.segmentedContainerPadding * 2,\n          lineHeight: `${token.controlHeightSM - token.segmentedContainerPadding * 2}px`,\n          padding: `0 ${token.segmentedPaddingHorizontalSM}px`,\n        },\n        [`${componentCls}-item, ${componentCls}-thumb`]: {\n          borderRadius: token.borderRadiusXS,\n        },\n      },\n\n      // disabled styles\n      ...getItemDisabledStyle(`&-disabled ${componentCls}-item`, token),\n      ...getItemDisabledStyle(`${componentCls}-item-disabled`, token),\n\n      // transition effect when `appear-active`\n      [`${componentCls}-thumb-motion-appear-active`]: {\n        transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOut}, width ${token.motionDurationSlow} ${token.motionEaseInOut}`,\n        willChange: 'transform, width',\n      },\n    },\n  };\n};\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Segmented', (token) => {\n  const {\n    lineWidthBold,\n    lineWidth,\n    colorTextLabel,\n    colorText,\n    colorFillSecondary,\n    colorBgLayout,\n    colorBgElevated,\n  } = token;\n\n  const segmentedToken = mergeToken<SegmentedToken>(token, {\n    segmentedPaddingHorizontal: token.controlPaddingHorizontal - lineWidth,\n    segmentedPaddingHorizontalSM: token.controlPaddingHorizontalSM - lineWidth,\n    segmentedContainerPadding: lineWidthBold,\n    labelColor: colorTextLabel,\n    labelColorHover: colorText,\n    bgColor: colorBgLayout,\n    bgColorHover: colorFillSecondary,\n    bgColorSelected: colorBgElevated,\n  });\n  return [genSegmentedStyle(segmentedToken)];\n});\n"],"names":["mergeToken"],"mappings":"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"}