@inversestudio/design-tokens 1.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.
@@ -0,0 +1,183 @@
1
+ {
2
+ "ids": {
3
+ "spacing": {
4
+ "0_13x": "2px",
5
+ "0_25x": "4px",
6
+ "0_38x": "6px",
7
+ "0_5x": "8px",
8
+ "0_75x": "12px",
9
+ "1x": "16px",
10
+ "1_25x": "20px",
11
+ "1_5x": "24px",
12
+ "2x": "32px",
13
+ "2_5x": "40px"
14
+ },
15
+ "dimension": {
16
+ "element": {
17
+ "1x": "16px",
18
+ "1_5x": "24px",
19
+ "2x": "32px",
20
+ "3x": "48px",
21
+ "3_5x": "56px",
22
+ "4_5x": "72px"
23
+ },
24
+ "icon": {
25
+ "1x": "16px",
26
+ "1_25x": "20px",
27
+ "1_5x": "24px"
28
+ }
29
+ },
30
+ "core": {
31
+ "color": {
32
+ "neutral": {
33
+ "50": "#ffffff",
34
+ "100": "#fafafb",
35
+ "200": "#f5f5f8",
36
+ "300": "#ebebef",
37
+ "400": "#e0e1e4",
38
+ "500": "#c5c6cb",
39
+ "600": "#adaeb3",
40
+ "700": "#8e9099",
41
+ "800": "#707784",
42
+ "900": "#4d5057",
43
+ "950": "#2d2f35",
44
+ "1000": "#101114"
45
+ },
46
+ "blue": {
47
+ "50": "#e6edfb",
48
+ "100": "#d1def8",
49
+ "200": "#c3d8ff",
50
+ "300": "#a2bae9",
51
+ "400": "#7eaaff",
52
+ "500": "#5c8fe8",
53
+ "600": "#4a7ad4",
54
+ "700": "#3a64b8",
55
+ "800": "#27447c",
56
+ "900": "#1e3560",
57
+ "950": "#142442",
58
+ "1000": "#0b1526"
59
+ },
60
+ "red": {
61
+ "50": "#fef2f2",
62
+ "100": "#fee2e2",
63
+ "200": "#fecaca",
64
+ "300": "#fca5a5",
65
+ "400": "#f87171",
66
+ "500": "#ef4444",
67
+ "600": "#dc2626",
68
+ "700": "#b91c1c",
69
+ "800": "#991b1b",
70
+ "900": "#7f1d1d",
71
+ "950": "#5c1414",
72
+ "1000": "#350a0a"
73
+ },
74
+ "green": {
75
+ "50": "#ecfdf5",
76
+ "100": "#d1fae5",
77
+ "200": "#a7f3d0",
78
+ "300": "#6ee7b7",
79
+ "400": "#34d399",
80
+ "500": "#10b981",
81
+ "600": "#059669",
82
+ "700": "#047857",
83
+ "800": "#065f46",
84
+ "900": "#064e3b",
85
+ "950": "#043b2c",
86
+ "1000": "#022419"
87
+ },
88
+ "transparent": "#00000000"
89
+ },
90
+ "font-size": {
91
+ "base": "16px"
92
+ },
93
+ "font": "Tomato Grotesk",
94
+ "lineHeight": {
95
+ "base": "16px *1"
96
+ },
97
+ "sizing": {
98
+ "REM": "16px",
99
+ "base": "16px"
100
+ },
101
+ "borderRadius": {
102
+ "base": "16px"
103
+ },
104
+ "borderWidth": {
105
+ "slim": "1px",
106
+ "thick": "2px"
107
+ }
108
+ },
109
+ "typography": {
110
+ "label": {
111
+ "1x": {
112
+ "fontFamily": "Tomato Grotesk",
113
+ "fontSize": "16px",
114
+ "lineHeight": "16px *1",
115
+ "fontWeight": "600"
116
+ }
117
+ }
118
+ },
119
+ "borderRadius": {
120
+ "0_25x": "4px",
121
+ "full": "1600px"
122
+ },
123
+ "border": {
124
+ "focused": {
125
+ "color": "#7eaaff",
126
+ "width": "2px",
127
+ "style": "solid"
128
+ },
129
+ "primary": {
130
+ "color": "#2d2f35",
131
+ "width": "2px",
132
+ "style": "solid"
133
+ },
134
+ "disabled": {
135
+ "color": "#adaeb3",
136
+ "width": "2px",
137
+ "style": "solid"
138
+ },
139
+ "transparent": {
140
+ "color": "#00000000",
141
+ "width": "2px",
142
+ "style": "solid"
143
+ }
144
+ },
145
+ "color": {
146
+ "element": {
147
+ "primary": {
148
+ "default": "#4d5057",
149
+ "hover": "#4d5057",
150
+ "active": "#101114",
151
+ "onPrimary": "#ffffff"
152
+ },
153
+ "secondary": {
154
+ "default": "#00000000",
155
+ "hover": "#e6edfb",
156
+ "active": "#d1def8",
157
+ "onSecondary": "#2d2f35"
158
+ },
159
+ "primaryInverted": {
160
+ "default": "#ffffff",
161
+ "hover": "#fafafb",
162
+ "active": "#f5f5f8",
163
+ "onPrimaryAccent": "#101114"
164
+ },
165
+ "primaryAccentInverted": {
166
+ "default": "#101114",
167
+ "hover": "#2d2f35",
168
+ "active": "#4d5057",
169
+ "onPrimaryAccentInverted": "#ffffff"
170
+ },
171
+ "disabled": "#adaeb3",
172
+ "onDisabled": "#707784"
173
+ },
174
+ "border": {
175
+ "primary": "#2d2f35",
176
+ "disabled": "#adaeb3",
177
+ "muted": "#e0e1e4",
178
+ "subtle": "#f5f5f8",
179
+ "focus": "#7eaaff"
180
+ }
181
+ }
182
+ }
183
+ }
@@ -0,0 +1,183 @@
1
+ {
2
+ "ids": {
3
+ "spacing": {
4
+ "0_13x": "2px",
5
+ "0_25x": "4px",
6
+ "0_38x": "6px",
7
+ "0_5x": "8px",
8
+ "0_75x": "12px",
9
+ "1x": "16px",
10
+ "1_25x": "20px",
11
+ "1_5x": "24px",
12
+ "2x": "32px",
13
+ "2_5x": "40px"
14
+ },
15
+ "dimension": {
16
+ "element": {
17
+ "1x": "16px",
18
+ "1_5x": "24px",
19
+ "2x": "32px",
20
+ "3x": "48px",
21
+ "3_5x": "56px",
22
+ "4_5x": "72px"
23
+ },
24
+ "icon": {
25
+ "1x": "16px",
26
+ "1_25x": "20px",
27
+ "1_5x": "24px"
28
+ }
29
+ },
30
+ "core": {
31
+ "color": {
32
+ "neutral": {
33
+ "50": "#ffffff",
34
+ "100": "#fafafb",
35
+ "200": "#f5f5f8",
36
+ "300": "#ebebef",
37
+ "400": "#e0e1e4",
38
+ "500": "#c5c6cb",
39
+ "600": "#adaeb3",
40
+ "700": "#8e9099",
41
+ "800": "#707784",
42
+ "900": "#4d5057",
43
+ "950": "#2d2f35",
44
+ "1000": "#101114"
45
+ },
46
+ "blue": {
47
+ "50": "#e6edfb",
48
+ "100": "#d1def8",
49
+ "200": "#c3d8ff",
50
+ "300": "#a2bae9",
51
+ "400": "#7eaaff",
52
+ "500": "#5c8fe8",
53
+ "600": "#4a7ad4",
54
+ "700": "#3a64b8",
55
+ "800": "#27447c",
56
+ "900": "#1e3560",
57
+ "950": "#142442",
58
+ "1000": "#0b1526"
59
+ },
60
+ "red": {
61
+ "50": "#fef2f2",
62
+ "100": "#fee2e2",
63
+ "200": "#fecaca",
64
+ "300": "#fca5a5",
65
+ "400": "#f87171",
66
+ "500": "#ef4444",
67
+ "600": "#dc2626",
68
+ "700": "#b91c1c",
69
+ "800": "#991b1b",
70
+ "900": "#7f1d1d",
71
+ "950": "#5c1414",
72
+ "1000": "#350a0a"
73
+ },
74
+ "green": {
75
+ "50": "#ecfdf5",
76
+ "100": "#d1fae5",
77
+ "200": "#a7f3d0",
78
+ "300": "#6ee7b7",
79
+ "400": "#34d399",
80
+ "500": "#10b981",
81
+ "600": "#059669",
82
+ "700": "#047857",
83
+ "800": "#065f46",
84
+ "900": "#064e3b",
85
+ "950": "#043b2c",
86
+ "1000": "#022419"
87
+ },
88
+ "transparent": "#00000000"
89
+ },
90
+ "font-size": {
91
+ "base": "16px"
92
+ },
93
+ "font": "Tomato Grotesk",
94
+ "lineHeight": {
95
+ "base": "16px *1"
96
+ },
97
+ "sizing": {
98
+ "REM": "16px",
99
+ "base": "16px"
100
+ },
101
+ "borderRadius": {
102
+ "base": "16px"
103
+ },
104
+ "borderWidth": {
105
+ "slim": "1px",
106
+ "thick": "2px"
107
+ }
108
+ },
109
+ "typography": {
110
+ "label": {
111
+ "1x": {
112
+ "fontFamily": "Tomato Grotesk",
113
+ "fontSize": "16px",
114
+ "lineHeight": "16px *1",
115
+ "fontWeight": "600"
116
+ }
117
+ }
118
+ },
119
+ "borderRadius": {
120
+ "0_25x": "4px",
121
+ "full": "1600px"
122
+ },
123
+ "border": {
124
+ "focused": {
125
+ "color": "#7eaaff",
126
+ "width": "2px",
127
+ "style": "solid"
128
+ },
129
+ "primary": {
130
+ "color": "#2d2f35",
131
+ "width": "2px",
132
+ "style": "solid"
133
+ },
134
+ "disabled": {
135
+ "color": "#adaeb3",
136
+ "width": "2px",
137
+ "style": "solid"
138
+ },
139
+ "transparent": {
140
+ "color": "#00000000",
141
+ "width": "2px",
142
+ "style": "solid"
143
+ }
144
+ },
145
+ "color": {
146
+ "element": {
147
+ "primary": {
148
+ "default": "#4d5057",
149
+ "hover": "#4d5057",
150
+ "active": "#101114",
151
+ "onPrimary": "#ffffff"
152
+ },
153
+ "secondary": {
154
+ "default": "#00000000",
155
+ "hover": "#e6edfb",
156
+ "active": "#d1def8",
157
+ "onSecondary": "#2d2f35"
158
+ },
159
+ "primaryInverted": {
160
+ "default": "#ffffff",
161
+ "hover": "#fafafb",
162
+ "active": "#f5f5f8",
163
+ "onPrimaryAccent": "#101114"
164
+ },
165
+ "primaryAccentInverted": {
166
+ "default": "#101114",
167
+ "hover": "#2d2f35",
168
+ "active": "#4d5057",
169
+ "onPrimaryAccentInverted": "#ffffff"
170
+ },
171
+ "disabled": "#adaeb3",
172
+ "onDisabled": "#707784"
173
+ },
174
+ "border": {
175
+ "primary": "#2d2f35",
176
+ "disabled": "#adaeb3",
177
+ "muted": "#e0e1e4",
178
+ "subtle": "#f5f5f8",
179
+ "focus": "#7eaaff"
180
+ }
181
+ }
182
+ }
183
+ }
@@ -0,0 +1,59 @@
1
+ // IDS Design Tokens - Utility Mixins
2
+ // Generated by Style Dictionary
3
+ // Do not edit directly
4
+
5
+ /// Apply a token as a CSS custom property
6
+ /// @param {String} $property - CSS property name
7
+ /// @param {String} $token - Token name (without -- prefix)
8
+ @mixin ids-token($property, $token) {
9
+ #{$property}: var(--#{$token});
10
+ }
11
+
12
+ /// Apply spacing token
13
+ /// @param {String} $property - CSS property (padding, margin, gap, etc.)
14
+ /// @param {String} $size - Size multiplier (0-5x, 0-25x, 1x, etc.)
15
+ @mixin ids-spacing($property, $size) {
16
+ #{$property}: var(--ids-spacing-#{$size});
17
+ }
18
+
19
+ /// Apply color token
20
+ /// @param {String} $property - CSS property (color, background-color, etc.)
21
+ /// @param {String} $color - Color token path (e.g., 'element-primary-default')
22
+ @mixin ids-color($property, $color) {
23
+ #{$property}: var(--ids-color-#{$color});
24
+ }
25
+
26
+ /// Apply typography composite
27
+ /// @param {String} $style - Typography style (label-1x, etc.)
28
+ @mixin ids-typography($style) {
29
+ font-family: var(--ids-typography-#{$style}-font-family);
30
+ font-size: var(--ids-typography-#{$style}-font-size);
31
+ line-height: var(--ids-typography-#{$style}-line-height);
32
+ font-weight: var(--ids-typography-#{$style}-font-weight);
33
+ }
34
+
35
+ /// Apply border token
36
+ /// @param {String} $style - Border style (focused, primary, disabled)
37
+ @mixin ids-border($style) {
38
+ border: var(--ids-border-#{$style});
39
+ }
40
+
41
+ /// Apply border radius
42
+ /// @param {String} $size - Radius size (0-25x, full)
43
+ @mixin ids-radius($size) {
44
+ border-radius: var(--ids-border-radius-#{$size});
45
+ }
46
+
47
+ /// Theme-aware property (changes based on data-theme attribute)
48
+ /// @param {String} $property - CSS property
49
+ /// @param {String} $light-token - Token for light theme
50
+ /// @param {String} $dark-token - Token for dark theme (optional, defaults to light)
51
+ @mixin ids-themed($property, $light-token, $dark-token: null) {
52
+ #{$property}: var(--#{$light-token});
53
+
54
+ @if $dark-token {
55
+ [data-theme="dark"] & {
56
+ #{$property}: var(--#{$dark-token});
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,171 @@
1
+ //
2
+ // IDS Design Tokens - dark Theme
3
+ // Generated by Style Dictionary
4
+ // Do not edit directly
5
+ //
6
+
7
+ $ids-core-color-neutral-50: #ffffff;
8
+ $ids-core-color-neutral-100: #fafafb;
9
+ $ids-core-color-neutral-200: #f5f5f8;
10
+ $ids-core-color-neutral-300: #ebebef;
11
+ $ids-core-color-neutral-400: #e0e1e4;
12
+ $ids-core-color-neutral-500: #c5c6cb;
13
+ $ids-core-color-neutral-600: #adaeb3;
14
+ $ids-core-color-neutral-700: #8e9099;
15
+ $ids-core-color-neutral-800: #707784;
16
+ $ids-core-color-neutral-900: #4d5057;
17
+ $ids-core-color-neutral-950: #2d2f35;
18
+ $ids-core-color-neutral-1000: #101114;
19
+ $ids-core-color-blue-50: #e6edfb;
20
+ $ids-core-color-blue-100: #d1def8;
21
+ $ids-core-color-blue-200: #c3d8ff;
22
+ $ids-core-color-blue-300: #a2bae9;
23
+ $ids-core-color-blue-400: #7eaaff;
24
+ $ids-core-color-blue-500: #5c8fe8;
25
+ $ids-core-color-blue-600: #4a7ad4;
26
+ $ids-core-color-blue-700: #3a64b8;
27
+ $ids-core-color-blue-800: #27447c;
28
+ $ids-core-color-blue-900: #1e3560;
29
+ $ids-core-color-blue-950: #142442;
30
+ $ids-core-color-blue-1000: #0b1526;
31
+ $ids-core-color-red-50: #fef2f2;
32
+ $ids-core-color-red-100: #fee2e2;
33
+ $ids-core-color-red-200: #fecaca;
34
+ $ids-core-color-red-300: #fca5a5;
35
+ $ids-core-color-red-400: #f87171;
36
+ $ids-core-color-red-500: #ef4444;
37
+ $ids-core-color-red-600: #dc2626;
38
+ $ids-core-color-red-700: #b91c1c;
39
+ $ids-core-color-red-800: #991b1b;
40
+ $ids-core-color-red-900: #7f1d1d;
41
+ $ids-core-color-red-950: #5c1414;
42
+ $ids-core-color-red-1000: #350a0a;
43
+ $ids-core-color-green-50: #ecfdf5;
44
+ $ids-core-color-green-100: #d1fae5;
45
+ $ids-core-color-green-200: #a7f3d0;
46
+ $ids-core-color-green-300: #6ee7b7;
47
+ $ids-core-color-green-400: #34d399;
48
+ $ids-core-color-green-500: #10b981;
49
+ $ids-core-color-green-600: #059669;
50
+ $ids-core-color-green-700: #047857;
51
+ $ids-core-color-green-800: #065f46;
52
+ $ids-core-color-green-900: #064e3b;
53
+ $ids-core-color-green-950: #043b2c;
54
+ $ids-core-color-green-1000: #022419;
55
+ $ids-core-color-transparent: #00000000;
56
+ $ids-core-sizing-rem: 16px;
57
+ $ids-core-sizing-base: 16px;
58
+ $ids-core-font-size-base: 16px;
59
+ $ids-core-font: Tomato Grotesk;
60
+ $ids-core-lineheight-base: 16px *1;
61
+ $ids-core-borderradius-base: 16px;
62
+ $ids-core-borderwidth-slim: 1px;
63
+ $ids-core-borderwidth-thick: 2px;
64
+ $ids-spacing-0-13x: 2px;
65
+ $ids-spacing-0-25x: 4px;
66
+ $ids-spacing-0-38x: 6px;
67
+ $ids-spacing-0-5x: 8px;
68
+ $ids-spacing-0-75x: 12px;
69
+ $ids-spacing-1x: 16px;
70
+ $ids-spacing-1-25x: 20px;
71
+ $ids-spacing-1-5x: 24px;
72
+ $ids-spacing-2x: 32px;
73
+ $ids-spacing-2-5x: 40px;
74
+ $ids-dimension-element-1x: 16px;
75
+ $ids-dimension-element-1-5x: 24px;
76
+ $ids-dimension-element-2x: 32px;
77
+ $ids-dimension-element-3x: 48px;
78
+ $ids-dimension-element-3-5x: 56px;
79
+ $ids-dimension-element-4-5x: 72px;
80
+ $ids-dimension-icon-1x: 16px;
81
+ $ids-dimension-icon-1-25x: 20px;
82
+ $ids-dimension-icon-1-5x: 24px;
83
+
84
+ // Token map for programmatic access
85
+ $ids-tokens: (
86
+ 'ids-core-color-neutral-50': $ids-core-color-neutral-50,
87
+ 'ids-core-color-neutral-100': $ids-core-color-neutral-100,
88
+ 'ids-core-color-neutral-200': $ids-core-color-neutral-200,
89
+ 'ids-core-color-neutral-300': $ids-core-color-neutral-300,
90
+ 'ids-core-color-neutral-400': $ids-core-color-neutral-400,
91
+ 'ids-core-color-neutral-500': $ids-core-color-neutral-500,
92
+ 'ids-core-color-neutral-600': $ids-core-color-neutral-600,
93
+ 'ids-core-color-neutral-700': $ids-core-color-neutral-700,
94
+ 'ids-core-color-neutral-800': $ids-core-color-neutral-800,
95
+ 'ids-core-color-neutral-900': $ids-core-color-neutral-900,
96
+ 'ids-core-color-neutral-950': $ids-core-color-neutral-950,
97
+ 'ids-core-color-neutral-1000': $ids-core-color-neutral-1000,
98
+ 'ids-core-color-blue-50': $ids-core-color-blue-50,
99
+ 'ids-core-color-blue-100': $ids-core-color-blue-100,
100
+ 'ids-core-color-blue-200': $ids-core-color-blue-200,
101
+ 'ids-core-color-blue-300': $ids-core-color-blue-300,
102
+ 'ids-core-color-blue-400': $ids-core-color-blue-400,
103
+ 'ids-core-color-blue-500': $ids-core-color-blue-500,
104
+ 'ids-core-color-blue-600': $ids-core-color-blue-600,
105
+ 'ids-core-color-blue-700': $ids-core-color-blue-700,
106
+ 'ids-core-color-blue-800': $ids-core-color-blue-800,
107
+ 'ids-core-color-blue-900': $ids-core-color-blue-900,
108
+ 'ids-core-color-blue-950': $ids-core-color-blue-950,
109
+ 'ids-core-color-blue-1000': $ids-core-color-blue-1000,
110
+ 'ids-core-color-red-50': $ids-core-color-red-50,
111
+ 'ids-core-color-red-100': $ids-core-color-red-100,
112
+ 'ids-core-color-red-200': $ids-core-color-red-200,
113
+ 'ids-core-color-red-300': $ids-core-color-red-300,
114
+ 'ids-core-color-red-400': $ids-core-color-red-400,
115
+ 'ids-core-color-red-500': $ids-core-color-red-500,
116
+ 'ids-core-color-red-600': $ids-core-color-red-600,
117
+ 'ids-core-color-red-700': $ids-core-color-red-700,
118
+ 'ids-core-color-red-800': $ids-core-color-red-800,
119
+ 'ids-core-color-red-900': $ids-core-color-red-900,
120
+ 'ids-core-color-red-950': $ids-core-color-red-950,
121
+ 'ids-core-color-red-1000': $ids-core-color-red-1000,
122
+ 'ids-core-color-green-50': $ids-core-color-green-50,
123
+ 'ids-core-color-green-100': $ids-core-color-green-100,
124
+ 'ids-core-color-green-200': $ids-core-color-green-200,
125
+ 'ids-core-color-green-300': $ids-core-color-green-300,
126
+ 'ids-core-color-green-400': $ids-core-color-green-400,
127
+ 'ids-core-color-green-500': $ids-core-color-green-500,
128
+ 'ids-core-color-green-600': $ids-core-color-green-600,
129
+ 'ids-core-color-green-700': $ids-core-color-green-700,
130
+ 'ids-core-color-green-800': $ids-core-color-green-800,
131
+ 'ids-core-color-green-900': $ids-core-color-green-900,
132
+ 'ids-core-color-green-950': $ids-core-color-green-950,
133
+ 'ids-core-color-green-1000': $ids-core-color-green-1000,
134
+ 'ids-core-color-transparent': $ids-core-color-transparent,
135
+ 'ids-core-sizing-rem': $ids-core-sizing-rem,
136
+ 'ids-core-sizing-base': $ids-core-sizing-base,
137
+ 'ids-core-font-size-base': $ids-core-font-size-base,
138
+ 'ids-core-font': $ids-core-font,
139
+ 'ids-core-lineheight-base': $ids-core-lineheight-base,
140
+ 'ids-core-borderradius-base': $ids-core-borderradius-base,
141
+ 'ids-core-borderwidth-slim': $ids-core-borderwidth-slim,
142
+ 'ids-core-borderwidth-thick': $ids-core-borderwidth-thick,
143
+ 'ids-spacing-0-13x': $ids-spacing-0-13x,
144
+ 'ids-spacing-0-25x': $ids-spacing-0-25x,
145
+ 'ids-spacing-0-38x': $ids-spacing-0-38x,
146
+ 'ids-spacing-0-5x': $ids-spacing-0-5x,
147
+ 'ids-spacing-0-75x': $ids-spacing-0-75x,
148
+ 'ids-spacing-1x': $ids-spacing-1x,
149
+ 'ids-spacing-1-25x': $ids-spacing-1-25x,
150
+ 'ids-spacing-1-5x': $ids-spacing-1-5x,
151
+ 'ids-spacing-2x': $ids-spacing-2x,
152
+ 'ids-spacing-2-5x': $ids-spacing-2-5x,
153
+ 'ids-dimension-element-1x': $ids-dimension-element-1x,
154
+ 'ids-dimension-element-1-5x': $ids-dimension-element-1-5x,
155
+ 'ids-dimension-element-2x': $ids-dimension-element-2x,
156
+ 'ids-dimension-element-3x': $ids-dimension-element-3x,
157
+ 'ids-dimension-element-3-5x': $ids-dimension-element-3-5x,
158
+ 'ids-dimension-element-4-5x': $ids-dimension-element-4-5x,
159
+ 'ids-dimension-icon-1x': $ids-dimension-icon-1x,
160
+ 'ids-dimension-icon-1-25x': $ids-dimension-icon-1-25x,
161
+ 'ids-dimension-icon-1-5x': $ids-dimension-icon-1-5x
162
+ );
163
+
164
+ // Utility function to get token value
165
+ @function ids-token($name) {
166
+ @if map-has-key($ids-tokens, $name) {
167
+ @return map-get($ids-tokens, $name);
168
+ }
169
+ @warn "Token '#{$name}' not found.";
170
+ @return null;
171
+ }