from __future__ import annotations class Size: all = [] def __init__( self, xxs: str, xs: str, sm: str, md: str, lg: str, xl: str, xxl: str, name=None ): self.xxs = xxs self.xs = xs self.sm = sm self.md = md self.lg = lg self.xl = xl self.xxl = xxl self.name = name Size.all.append(self) def expand(self) -> list[str]: return [self.xxs, self.xs, self.sm, self.md, self.lg, self.xl, self.xxl] # Radius scales - Based on Canva's radiusElement values radius_none = Size( name="radius_none", xxs="0px", xs="0px", sm="0px", md="0px", lg="0px", xl="0px", xxl="0px", ) radius_sm = Size( name="radius_sm", xxs="4px", # radiusElementSmall xs="4px", sm="4px", md="8px", # radiusElement lg="12px", # radiusElementRelaxed xl="12px", # radiusContainer xxl="16px", # radiusContainerLarge ) # Spacing scales - Based on Canva's baseUnit (8px) multiples spacing_sm = Size( name="spacing_sm", xxs="2px", # space050 (4px) xs="4px", # space1 (8px) sm="8px", # space1 md="12px", # space150 lg="16px", # space2 xl="24px", # space3 xxl="32px", # space4 ) spacing_md = Size( name="spacing_md", xxs="4px", # space1 xs="8px", # space1 sm="12px", # space150 md="16px", # space2 lg="24px", # space3 xl="32px", # space4 xxl="48px", # space6 ) spacing_lg = Size( name="spacing_lg", xxs="8px", # space1 xs="16px", # space2 sm="24px", # space3 md="32px", # space4 lg="48px", # space6 xl="64px", # space8 xxl="96px", # space12 ) # Text sizes - Based on Canva's font size definitions text_sm = Size( name="text_sm", xxs="11px", # fontSizeExtraSmall xs="12px", # fontSizeSmall sm="14px", # fontSizeMedium md="16px", # fontSizeLarge lg="18px", # fontSizeTitleSmall xl="21px", # fontSizeExtraLarge xxl="24px", # fontSizeExtraExtraLarge ) text_md = Size( name="text_md", xxs="12px", # fontSizeSmall xs="14px", # fontSizeMedium sm="16px", # fontSizeLarge md="18px", # fontSizeTitleSmall lg="21px", # fontSizeExtraLarge xl="24px", # fontSizeExtraExtraLarge xxl="32px", # fontSizeTitleLarge ) text_lg = Size( name="text_lg", xxs="14px", # fontSizeMedium xs="16px", # fontSizeLarge sm="18px", # fontSizeTitleSmall md="21px", # fontSizeExtraLarge lg="24px", # fontSizeExtraExtraLarge xl="32px", # fontSizeTitleLarge xxl="48px", # fontSizeTitleExtraLarge )