@pearpages/pulp-tokens 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -0
  3. package/dist/tokens.css +914 -0
  4. package/dist/tokens.json +10638 -0
  5. package/package.json +33 -0
  6. package/tokens/component/accordion.json +83 -0
  7. package/tokens/component/alert.json +93 -0
  8. package/tokens/component/badge.json +153 -0
  9. package/tokens/component/button.json +118 -0
  10. package/tokens/component/calendar.json +48 -0
  11. package/tokens/component/card.json +28 -0
  12. package/tokens/component/checkbox.json +77 -0
  13. package/tokens/component/combobox.json +113 -0
  14. package/tokens/component/date-picker.json +145 -0
  15. package/tokens/component/dialog.json +36 -0
  16. package/tokens/component/field.json +23 -0
  17. package/tokens/component/heading.json +44 -0
  18. package/tokens/component/icon-button.json +17 -0
  19. package/tokens/component/icon.json +18 -0
  20. package/tokens/component/inline.json +32 -0
  21. package/tokens/component/listbox.json +37 -0
  22. package/tokens/component/menu.json +101 -0
  23. package/tokens/component/pagination.json +22 -0
  24. package/tokens/component/picker.json +113 -0
  25. package/tokens/component/popover.json +59 -0
  26. package/tokens/component/progress.json +60 -0
  27. package/tokens/component/radio.json +73 -0
  28. package/tokens/component/select.json +106 -0
  29. package/tokens/component/skeleton.json +41 -0
  30. package/tokens/component/slider.json +39 -0
  31. package/tokens/component/spinner.json +33 -0
  32. package/tokens/component/stack.json +32 -0
  33. package/tokens/component/switch.json +77 -0
  34. package/tokens/component/table.json +57 -0
  35. package/tokens/component/tabs.json +31 -0
  36. package/tokens/component/text-field.json +90 -0
  37. package/tokens/component/text.json +31 -0
  38. package/tokens/component/textarea.json +90 -0
  39. package/tokens/component/toast.json +35 -0
  40. package/tokens/component/tooltip.json +49 -0
  41. package/tokens/component/visually-hidden.json +9 -0
  42. package/tokens/primitives/bitepals.json +285 -0
  43. package/tokens/primitives/pulp.json +216 -0
  44. package/tokens/semantic/bitepals.json +727 -0
  45. package/tokens/semantic/pulp.json +728 -0
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@pearpages/pulp-tokens",
3
+ "version": "0.0.0",
4
+ "description": "pulp design tokens. W3C Design Tokens (DTCG) JSON in, CSS custom properties and a resolved JSON manifest out. Two brands, light and dark via light-dark().",
5
+ "license": "MIT",
6
+ "author": "Pere Pages <hello@pearpages.com> (https://pearpages.com)",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/pearpages/pulp.git",
10
+ "directory": "packages/tokens"
11
+ },
12
+ "type": "module",
13
+ "sideEffects": false,
14
+ "files": [
15
+ "dist",
16
+ "tokens"
17
+ ],
18
+ "exports": {
19
+ "./tokens.css": "./dist/tokens.css",
20
+ "./tokens.json": "./dist/tokens.json",
21
+ "./package.json": "./package.json"
22
+ },
23
+ "devDependencies": {
24
+ "publint": "^0.3.24",
25
+ "style-dictionary": "^5.5.3"
26
+ },
27
+ "scripts": {
28
+ "build": "node scripts/build.mjs",
29
+ "check": "node scripts/build.mjs --check",
30
+ "test:run": "node --test \"scripts/*.test.mjs\"",
31
+ "check:package": "publint"
32
+ }
33
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "$description": "Accordion component tokens.",
3
+ "accordion": {
4
+ "border": {
5
+ "$type": "color",
6
+ "$value": "{color.border.default}"
7
+ },
8
+ "radius": {
9
+ "$type": "dimension",
10
+ "$value": "{radius.surface}"
11
+ },
12
+ "trigger": {
13
+ "padding-block": {
14
+ "$type": "dimension",
15
+ "$value": "{space.3}"
16
+ },
17
+ "padding-inline": {
18
+ "$type": "dimension",
19
+ "$value": "{space.3}"
20
+ },
21
+ "font-size": {
22
+ "$type": "dimension",
23
+ "$value": "{font.size.md}"
24
+ },
25
+ "font-weight": {
26
+ "$type": "fontWeight",
27
+ "$value": "{font.weight.medium}"
28
+ },
29
+ "fg": {
30
+ "$type": "color",
31
+ "$value": "{color.text.default}"
32
+ },
33
+ "bg-hover": {
34
+ "$type": "color",
35
+ "$value": "{color.action.primary-quiet}"
36
+ },
37
+ "chevron": {
38
+ "$type": "color",
39
+ "$value": "{color.text.muted}"
40
+ },
41
+ "gap": {
42
+ "$type": "dimension",
43
+ "$value": "{space.3}"
44
+ }
45
+ },
46
+ "panel": {
47
+ "padding-block": {
48
+ "$type": "dimension",
49
+ "$value": "{space.3}"
50
+ },
51
+ "padding-inline": {
52
+ "$type": "dimension",
53
+ "$value": "{space.3}"
54
+ },
55
+ "fg": {
56
+ "$type": "color",
57
+ "$value": "{color.text.default}"
58
+ },
59
+ "font-size": {
60
+ "$type": "dimension",
61
+ "$value": "{font.size.sm}"
62
+ }
63
+ },
64
+ "duration": {
65
+ "$type": "duration",
66
+ "$value": "{motion.duration.fast}"
67
+ },
68
+ "focus": {
69
+ "ring": {
70
+ "$type": "color",
71
+ "$value": "{color.border.focus}"
72
+ },
73
+ "ring-width": {
74
+ "$type": "dimension",
75
+ "$value": "{focus.ring.width}"
76
+ },
77
+ "ring-offset": {
78
+ "$type": "dimension",
79
+ "$value": "{focus.ring.offset}"
80
+ }
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "$description": "Alert component tokens.",
3
+ "alert": {
4
+ "radius": {
5
+ "$type": "dimension",
6
+ "$value": "{radius.surface}"
7
+ },
8
+ "padding": {
9
+ "$type": "dimension",
10
+ "$value": "{space.4}"
11
+ },
12
+ "gap": {
13
+ "$type": "dimension",
14
+ "$value": "{space.3}"
15
+ },
16
+ "border-width": {
17
+ "$type": "dimension",
18
+ "$value": "{size.hairline}"
19
+ },
20
+ "accent-width": {
21
+ "$type": "dimension",
22
+ "$value": "{space.1}"
23
+ },
24
+ "fg": {
25
+ "$type": "color",
26
+ "$value": "{color.text.default}"
27
+ },
28
+ "font-size": {
29
+ "$type": "dimension",
30
+ "$value": "{font.size.sm}"
31
+ },
32
+ "title-font-weight": {
33
+ "$type": "fontWeight",
34
+ "$value": "{font.weight.semibold}"
35
+ },
36
+ "info": {
37
+ "bg": {
38
+ "$type": "color",
39
+ "$value": "{color.status.info-subtle}"
40
+ },
41
+ "accent": {
42
+ "$type": "color",
43
+ "$value": "{color.status.info}"
44
+ },
45
+ "title": {
46
+ "$type": "color",
47
+ "$value": "{color.status.info-text}"
48
+ }
49
+ },
50
+ "success": {
51
+ "bg": {
52
+ "$type": "color",
53
+ "$value": "{color.status.success-subtle}"
54
+ },
55
+ "accent": {
56
+ "$type": "color",
57
+ "$value": "{color.status.success}"
58
+ },
59
+ "title": {
60
+ "$type": "color",
61
+ "$value": "{color.status.success-text}"
62
+ }
63
+ },
64
+ "warning": {
65
+ "bg": {
66
+ "$type": "color",
67
+ "$value": "{color.status.warning-subtle}"
68
+ },
69
+ "accent": {
70
+ "$type": "color",
71
+ "$value": "{color.status.warning}"
72
+ },
73
+ "title": {
74
+ "$type": "color",
75
+ "$value": "{color.status.warning-text}"
76
+ }
77
+ },
78
+ "error": {
79
+ "bg": {
80
+ "$type": "color",
81
+ "$value": "{color.status.error-subtle}"
82
+ },
83
+ "accent": {
84
+ "$type": "color",
85
+ "$value": "{color.status.error}"
86
+ },
87
+ "title": {
88
+ "$type": "color",
89
+ "$value": "{color.status.error-text}"
90
+ }
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,153 @@
1
+ {
2
+ "$description": "Badge component tokens: tone \u00d7 variant onto the status layer.",
3
+ "badge": {
4
+ "radius": {
5
+ "$type": "dimension",
6
+ "$value": "{radius.full}"
7
+ },
8
+ "gap": {
9
+ "$type": "dimension",
10
+ "$value": "{space.1}"
11
+ },
12
+ "padding-block": {
13
+ "$type": "dimension",
14
+ "$value": "{space.1}"
15
+ },
16
+ "padding-inline": {
17
+ "$type": "dimension",
18
+ "sm": {
19
+ "$value": "{space.2}"
20
+ },
21
+ "md": {
22
+ "$value": "{space.3}"
23
+ }
24
+ },
25
+ "font-size": {
26
+ "$type": "dimension",
27
+ "sm": {
28
+ "$value": "{font.size.xs}"
29
+ },
30
+ "md": {
31
+ "$value": "{font.size.sm}"
32
+ }
33
+ },
34
+ "font-weight": {
35
+ "$type": "fontWeight",
36
+ "$value": "{font.weight.medium}"
37
+ },
38
+ "line-height": {
39
+ "$type": "number",
40
+ "$value": "{font.line-height.tight}"
41
+ },
42
+ "neutral": {
43
+ "solid": {
44
+ "bg": {
45
+ "$type": "color",
46
+ "$value": "{color.status.neutral}"
47
+ },
48
+ "fg": {
49
+ "$type": "color",
50
+ "$value": "{color.status.on-neutral}"
51
+ }
52
+ },
53
+ "subtle": {
54
+ "bg": {
55
+ "$type": "color",
56
+ "$value": "{color.status.neutral-subtle}"
57
+ },
58
+ "fg": {
59
+ "$type": "color",
60
+ "$value": "{color.status.neutral-text}"
61
+ }
62
+ }
63
+ },
64
+ "info": {
65
+ "solid": {
66
+ "bg": {
67
+ "$type": "color",
68
+ "$value": "{color.status.info}"
69
+ },
70
+ "fg": {
71
+ "$type": "color",
72
+ "$value": "{color.status.on-info}"
73
+ }
74
+ },
75
+ "subtle": {
76
+ "bg": {
77
+ "$type": "color",
78
+ "$value": "{color.status.info-subtle}"
79
+ },
80
+ "fg": {
81
+ "$type": "color",
82
+ "$value": "{color.status.info-text}"
83
+ }
84
+ }
85
+ },
86
+ "success": {
87
+ "solid": {
88
+ "bg": {
89
+ "$type": "color",
90
+ "$value": "{color.status.success}"
91
+ },
92
+ "fg": {
93
+ "$type": "color",
94
+ "$value": "{color.status.on-success}"
95
+ }
96
+ },
97
+ "subtle": {
98
+ "bg": {
99
+ "$type": "color",
100
+ "$value": "{color.status.success-subtle}"
101
+ },
102
+ "fg": {
103
+ "$type": "color",
104
+ "$value": "{color.status.success-text}"
105
+ }
106
+ }
107
+ },
108
+ "warning": {
109
+ "solid": {
110
+ "bg": {
111
+ "$type": "color",
112
+ "$value": "{color.status.warning}"
113
+ },
114
+ "fg": {
115
+ "$type": "color",
116
+ "$value": "{color.status.on-warning}"
117
+ }
118
+ },
119
+ "subtle": {
120
+ "bg": {
121
+ "$type": "color",
122
+ "$value": "{color.status.warning-subtle}"
123
+ },
124
+ "fg": {
125
+ "$type": "color",
126
+ "$value": "{color.status.warning-text}"
127
+ }
128
+ }
129
+ },
130
+ "error": {
131
+ "solid": {
132
+ "bg": {
133
+ "$type": "color",
134
+ "$value": "{color.status.error}"
135
+ },
136
+ "fg": {
137
+ "$type": "color",
138
+ "$value": "{color.status.on-error}"
139
+ }
140
+ },
141
+ "subtle": {
142
+ "bg": {
143
+ "$type": "color",
144
+ "$value": "{color.status.error-subtle}"
145
+ },
146
+ "fg": {
147
+ "$type": "color",
148
+ "$value": "{color.status.error-text}"
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "$description": "Button component tokens. Brand-independent: every value is a reference into the semantic layer, so a brand never needs to know a Button exists.",
3
+ "button": {
4
+ "radius": {
5
+ "$type": "dimension",
6
+ "$value": "{radius.control}"
7
+ },
8
+ "gap": {
9
+ "$type": "dimension",
10
+ "$value": "{space.2}"
11
+ },
12
+ "font": {
13
+ "family": {
14
+ "$type": "fontFamily",
15
+ "$value": "{font.family.body}"
16
+ },
17
+ "weight": {
18
+ "$type": "fontWeight",
19
+ "$value": "{font.weight.medium}"
20
+ },
21
+ "size": {
22
+ "$type": "dimension",
23
+ "sm": {
24
+ "$value": "{font.size.sm}"
25
+ },
26
+ "md": {
27
+ "$value": "{font.size.md}"
28
+ },
29
+ "lg": {
30
+ "$value": "{font.size.lg}"
31
+ }
32
+ }
33
+ },
34
+ "height": {
35
+ "$type": "dimension",
36
+ "sm": {
37
+ "$value": "{size.control.sm}"
38
+ },
39
+ "md": {
40
+ "$value": "{size.control.md}"
41
+ },
42
+ "lg": {
43
+ "$value": "{size.control.lg}"
44
+ }
45
+ },
46
+ "padding-inline": {
47
+ "$type": "dimension",
48
+ "sm": {
49
+ "$value": "{space.3}"
50
+ },
51
+ "md": {
52
+ "$value": "{space.4}"
53
+ },
54
+ "lg": {
55
+ "$value": "{space.5}"
56
+ }
57
+ },
58
+ "primary": {
59
+ "$type": "color",
60
+ "bg": {
61
+ "$value": "{color.action.primary}"
62
+ },
63
+ "bg-hover": {
64
+ "$value": "{color.action.primary-hover}"
65
+ },
66
+ "bg-active": {
67
+ "$value": "{color.action.primary-active}"
68
+ },
69
+ "fg": {
70
+ "$value": "{color.text.on-action}"
71
+ }
72
+ },
73
+ "secondary": {
74
+ "$type": "color",
75
+ "bg": {
76
+ "$value": "{color.action.secondary}"
77
+ },
78
+ "bg-hover": {
79
+ "$value": "{color.action.secondary-hover}"
80
+ },
81
+ "fg": {
82
+ "$value": "{color.text.default}"
83
+ },
84
+ "border": {
85
+ "$value": "{color.border.default}"
86
+ }
87
+ },
88
+ "ghost": {
89
+ "$type": "color",
90
+ "fg": {
91
+ "$value": "{color.action.text}"
92
+ },
93
+ "bg-hover": {
94
+ "$value": "{color.action.primary-quiet}"
95
+ }
96
+ },
97
+ "focus": {
98
+ "ring": {
99
+ "$type": "color",
100
+ "$value": "{color.border.focus}"
101
+ },
102
+ "ring-width": {
103
+ "$type": "dimension",
104
+ "$value": "{focus.ring.width}"
105
+ },
106
+ "ring-offset": {
107
+ "$type": "dimension",
108
+ "$value": "{focus.ring.offset}"
109
+ }
110
+ },
111
+ "motion": {
112
+ "duration": {
113
+ "$type": "duration",
114
+ "$value": "{motion.duration.fast}"
115
+ }
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$description": "Calendar component tokens: the month grid, its heading and navigation. DatePicker renders it inside its popover.",
3
+ "calendar": {
4
+ "bg": { "$type": "color", "$value": "{color.surface.raised}" },
5
+ "fg": { "$type": "color", "$value": "{color.text.default}" },
6
+ "padding": { "$type": "dimension", "$value": "{space.3}" },
7
+ "gap": { "$type": "dimension", "$value": "{space.2}" },
8
+ "font": {
9
+ "family": { "$type": "fontFamily", "$value": "{font.family.body}" },
10
+ "size": { "$type": "dimension", "$value": "{font.size.sm}" }
11
+ },
12
+ "heading": {
13
+ "font-size": { "$type": "dimension", "$value": "{font.size.md}" },
14
+ "font-weight": { "$type": "fontWeight", "$value": "{font.weight.medium}" }
15
+ },
16
+ "nav": {
17
+ "size": { "$type": "dimension", "$value": "{size.control.sm}" },
18
+ "radius": { "$type": "dimension", "$value": "{radius.control}" },
19
+ "fg": { "$type": "color", "$value": "{color.text.muted}" },
20
+ "fg-hover": { "$type": "color", "$value": "{color.text.default}" },
21
+ "bg-hover": { "$type": "color", "$value": "{color.action.secondary}" }
22
+ },
23
+ "weekday": {
24
+ "fg": { "$type": "color", "$value": "{color.text.muted}" },
25
+ "font-size": { "$type": "dimension", "$value": "{font.size.xs}" },
26
+ "font-weight": { "$type": "fontWeight", "$value": "{font.weight.medium}" }
27
+ },
28
+ "cell": {
29
+ "size": { "$type": "dimension", "$value": "{size.control.sm}" },
30
+ "radius": { "$type": "dimension", "$value": "{radius.control}" },
31
+ "fg": { "$type": "color", "$value": "{color.text.default}" },
32
+ "fg-unavailable": { "$type": "color", "$value": "{color.text.faint}" },
33
+ "fg-today": { "$type": "color", "$value": "{color.action.text}" },
34
+ "bg-hover": { "$type": "color", "$value": "{color.action.secondary}" },
35
+ "bg-selected": { "$type": "color", "$value": "{color.action.primary}" },
36
+ "fg-selected": { "$type": "color", "$value": "{color.text.on-action}" },
37
+ "bg-selected-hover": { "$type": "color", "$value": "{color.action.primary-hover}" }
38
+ },
39
+ "focus": {
40
+ "ring": { "$type": "color", "$value": "{color.border.focus}" },
41
+ "ring-width": { "$type": "dimension", "$value": "{focus.ring.width}" },
42
+ "ring-offset": { "$type": "dimension", "$value": "{focus.ring.offset}" }
43
+ },
44
+ "motion": {
45
+ "duration": { "$type": "duration", "$value": "{motion.duration.fast}" }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$description": "Card component tokens. Brand-independent: every value references the semantic layer.",
3
+ "card": {
4
+ "bg": { "$type": "color", "$value": "{color.surface.raised}" },
5
+ "bg-sunken": { "$type": "color", "$value": "{color.surface.sunken}" },
6
+ "fg": { "$type": "color", "$value": "{color.text.default}" },
7
+ "border": { "$type": "color", "$value": "{color.border.default}" },
8
+ "border-hover": { "$type": "color", "$value": "{color.border.strong}" },
9
+ "radius": { "$type": "dimension", "$value": "{radius.surface}" },
10
+ "shadow": { "$type": "shadow", "$value": "{shadow.raised}" },
11
+ "gap": { "$type": "dimension", "$value": "{space.3}" },
12
+ "padding": {
13
+ "$type": "dimension",
14
+ "sm": { "$value": "{space.3}" },
15
+ "md": { "$value": "{space.4}" },
16
+ "lg": { "$value": "{space.5}" }
17
+ },
18
+ "divider": { "$type": "color", "$value": "{color.border.default}" },
19
+ "focus": {
20
+ "ring": { "$type": "color", "$value": "{color.border.focus}" },
21
+ "ring-width": { "$type": "dimension", "$value": "{focus.ring.width}" },
22
+ "ring-offset": { "$type": "dimension", "$value": "{focus.ring.offset}" }
23
+ },
24
+ "motion": {
25
+ "duration": { "$type": "duration", "$value": "{motion.duration.fast}" }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "$description": "Checkbox component tokens. Semantic references only.",
3
+ "checkbox": {
4
+ "size": {
5
+ "$type": "dimension",
6
+ "sm": {
7
+ "$value": "{size.toggle.sm}"
8
+ },
9
+ "md": {
10
+ "$value": "{size.toggle.md}"
11
+ },
12
+ "lg": {
13
+ "$value": "{size.toggle.lg}"
14
+ }
15
+ },
16
+ "gap": {
17
+ "$type": "dimension",
18
+ "$value": "{space.2}"
19
+ },
20
+ "radius": {
21
+ "$type": "dimension",
22
+ "$value": "{radius.control}"
23
+ },
24
+ "bg": {
25
+ "$type": "color",
26
+ "$value": "{color.surface.raised}"
27
+ },
28
+ "bg-checked": {
29
+ "$type": "color",
30
+ "$value": "{color.action.primary}"
31
+ },
32
+ "bg-checked-hover": {
33
+ "$type": "color",
34
+ "$value": "{color.action.primary-hover}"
35
+ },
36
+ "border": {
37
+ "$type": "color",
38
+ "$value": "{color.border.strong}"
39
+ },
40
+ "border-hover": {
41
+ "$type": "color",
42
+ "$value": "{color.action.primary}"
43
+ },
44
+ "border-invalid": {
45
+ "$type": "color",
46
+ "$value": "{color.status.error}"
47
+ },
48
+ "check": {
49
+ "$type": "color",
50
+ "$value": "{color.text.on-action}"
51
+ },
52
+ "check-width": {
53
+ "$type": "dimension",
54
+ "$value": "{focus.ring.width}"
55
+ },
56
+ "focus": {
57
+ "ring": {
58
+ "$type": "color",
59
+ "$value": "{color.border.focus}"
60
+ },
61
+ "ring-width": {
62
+ "$type": "dimension",
63
+ "$value": "{focus.ring.width}"
64
+ },
65
+ "ring-offset": {
66
+ "$type": "dimension",
67
+ "$value": "{focus.ring.offset}"
68
+ }
69
+ },
70
+ "motion": {
71
+ "duration": {
72
+ "$type": "duration",
73
+ "$value": "{motion.duration.fast}"
74
+ }
75
+ }
76
+ }
77
+ }