File size: 2,722 Bytes
14e59b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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
)