genComponentStyleHook.d.ts 1.5 KB

1234567891011121314151617181920212223242526
  1. import type { CSSInterpolation } from '../../_util/cssinjs';
  2. import type { UseComponentStyleResult } from '../internal';
  3. import type { ComponentTokenMap, GlobalToken } from '../interface';
  4. import type { Ref } from 'vue';
  5. export type OverrideTokenWithoutDerivative = ComponentTokenMap;
  6. export type OverrideComponent = keyof OverrideTokenWithoutDerivative;
  7. export type GlobalTokenWithComponent<ComponentName extends OverrideComponent> = GlobalToken & ComponentTokenMap[ComponentName];
  8. export interface StyleInfo<ComponentName extends OverrideComponent> {
  9. hashId: string;
  10. prefixCls: string;
  11. rootPrefixCls: string;
  12. iconPrefixCls: string;
  13. overrideComponentToken: ComponentTokenMap[ComponentName];
  14. }
  15. export type TokenWithCommonCls<T> = T & {
  16. /** Wrap component class with `.` prefix */
  17. componentCls: string;
  18. /** Origin prefix which do not have `.` prefix */
  19. prefixCls: string;
  20. /** Wrap icon class with `.` prefix */
  21. iconCls: string;
  22. /** Wrap ant prefixCls class with `.` prefix */
  23. antCls: string;
  24. };
  25. export type FullToken<ComponentName extends OverrideComponent> = TokenWithCommonCls<GlobalTokenWithComponent<ComponentName>>;
  26. export default function genComponentStyleHook<ComponentName extends OverrideComponent>(component: ComponentName, styleFn: (token: FullToken<ComponentName>, info: StyleInfo<ComponentName>) => CSSInterpolation, getDefaultToken?: OverrideTokenWithoutDerivative[ComponentName] | ((token: GlobalToken) => OverrideTokenWithoutDerivative[ComponentName])): (_prefixCls?: Ref<string>) => UseComponentStyleResult;