# Atomic Styles
Elementor Core AdvancedAn atomic style is a reusable class definition: it has an identifier, a user-facing label, and one or more variants. Each variant targets a responsive breakpoint and pseudo-state (meta) and holds a flat map of style props. Prop values are usually typed objects ($$type + value); see atomic prop values. The id is what ties the style to the data layer and to the generated CSS class; for some sources (for example global classes) the visible class name may follow the label instead.
# JSON Structure
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"label": "Primary button",
"type": "class",
"variants": [
{
"meta": {
"breakpoint": "desktop",
"state": null
},
"props": {
"color": {
"$$type": "color",
"value": "#111111"
}
}
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# JSON Values
| Argument | Type | Description |
|---|---|---|
id | string | Stable id for the style (often aligned with the CSS class used in markup). |
label | string | Name shown in the UI; may also drive the public class name depending on where the style is stored. |
type | string | Style kind; class means a class-based rule (for example .e-{id}). |
variants | array | One object per breakpoint/state combination; each entry has meta and props. Duplicate meta combinations must not appear on the same style. |
# Example: breakpoints, states, and prop variety
Variants are keyed by meta.breakpoint and meta.state. Together they let one class describe a default look on desktop, a hover override on that same breakpoint, and a different default on mobile—each as its own object in variants. meta.state is usually null for the normal (non-pseudo) state; another entry with state: "hover" layers interaction styling. Props you omit in a variant are not set for that breakpoint/state pair, so narrow variants (for example hover only changing the background) stay small.
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"label": "Promo banner",
"type": "class",
"variants": [
{
"meta": {
"breakpoint": "desktop",
"state": null
},
"props": {
"color": {
"$$type": "color",
"value": "#1a1a1a"
},
"background": {
"$$type": "background",
"value": {
"color": {
"$$type": "color",
"value": "#eef6ff"
}
}
},
"padding": {
"$$type": "dimensions",
"value": {
"block-start": {
"$$type": "size",
"value": {
"unit": "px",
"size": 12
}
},
"block-end": {
"$$type": "size",
"value": {
"unit": "px",
"size": 12
}
},
"inline-start": {
"$$type": "size",
"value": {
"unit": "px",
"size": 16
}
},
"inline-end": {
"$$type": "size",
"value": {
"unit": "px",
"size": 16
}
}
}
},
"font-size": {
"$$type": "size",
"value": {
"unit": "px",
"size": 16
}
}
}
},
{
"meta": {
"breakpoint": "desktop",
"state": "hover"
},
"props": {
"background": {
"$$type": "background",
"value": {
"color": {
"$$type": "color",
"value": "#dbeafe"
}
}
}
}
},
{
"meta": {
"breakpoint": "mobile",
"state": null
},
"props": {
"font-size": {
"$$type": "size",
"value": {
"unit": "px",
"size": 18
}
}
}
}
]
}
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