@octaviaflow/themes 1.0.1

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 (46) hide show
  1. package/README.md +122 -0
  2. package/docs/sass.md +189 -0
  3. package/index.scss +11 -0
  4. package/lib/index.js +5634 -0
  5. package/package.json +49 -0
  6. package/scss/_component-tokens.scss +10 -0
  7. package/scss/_config.scss +11 -0
  8. package/scss/_theme.scss +120 -0
  9. package/scss/_themes.scss +8 -0
  10. package/scss/_tokens.scss +8 -0
  11. package/scss/_utilities.scss +18 -0
  12. package/scss/compat/_themes.scss +8 -0
  13. package/scss/compat/_tokens.scss +8 -0
  14. package/scss/compat/generated/_themes.scss +271 -0
  15. package/scss/compat/generated/_tokens.scss +206 -0
  16. package/src/component-tokens/button/index.js +10 -0
  17. package/src/component-tokens/button/tokens.js +132 -0
  18. package/src/component-tokens/notification/index.js +10 -0
  19. package/src/component-tokens/notification/tokens.js +107 -0
  20. package/src/component-tokens/tag/index.js +10 -0
  21. package/src/component-tokens/tag/tokens.js +362 -0
  22. package/src/g10.js +346 -0
  23. package/src/g100.js +349 -0
  24. package/src/g90.js +350 -0
  25. package/src/index.js +42 -0
  26. package/src/tokens/Token.js +37 -0
  27. package/src/tokens/TokenFormat.js +91 -0
  28. package/src/tokens/TokenGroup.js +164 -0
  29. package/src/tokens/TokenSet.js +80 -0
  30. package/src/tokens/components.js +97 -0
  31. package/src/tokens/index.js +71 -0
  32. package/src/tokens/layout.js +42 -0
  33. package/src/tokens/type.js +52 -0
  34. package/src/tokens/v10.js +191 -0
  35. package/src/tokens/v11TokenGroup.js +436 -0
  36. package/src/tokens/v11TokenSet.js +94 -0
  37. package/src/tools.js +80 -0
  38. package/src/v10/g10.js +352 -0
  39. package/src/v10/g100.js +351 -0
  40. package/src/v10/g90.js +353 -0
  41. package/src/v10/index.js +25 -0
  42. package/src/v10/metadata.yml +217 -0
  43. package/src/v10/tokens.js +400 -0
  44. package/src/v10/white.js +355 -0
  45. package/src/white.js +349 -0
  46. package/telemetry.yml +17 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ import { TokenGroup } from './TokenGroup';
12
+
13
+ const color = TokenGroup.create({
14
+ name: 'Color',
15
+ properties: [],
16
+ tokens: [
17
+ 'interactive-01',
18
+ 'interactive-02',
19
+ 'interactive-03',
20
+ 'interactive-04',
21
+ 'ui-background',
22
+ 'ui-01',
23
+ 'ui-02',
24
+ 'ui-03',
25
+ 'ui-04',
26
+ 'ui-05',
27
+ 'text-01',
28
+ 'text-02',
29
+ 'text-03',
30
+ 'text-04',
31
+ 'text-05',
32
+ 'text-error',
33
+ 'icon-01',
34
+ 'icon-02',
35
+ 'icon-03',
36
+ 'link-01',
37
+ 'link-02',
38
+ 'inverse-link',
39
+ 'field-01',
40
+ 'field-02',
41
+ 'inverse-01',
42
+ 'inverse-02',
43
+ 'support-01',
44
+ 'support-02',
45
+ 'support-03',
46
+ 'support-04',
47
+ 'inverse-support-01',
48
+ 'inverse-support-02',
49
+ 'inverse-support-03',
50
+ 'inverse-support-04',
51
+ 'overlay-01',
52
+ 'danger-01',
53
+ 'danger-02',
54
+ 'focus',
55
+ 'inverse-focus-ui',
56
+ 'hover-primary',
57
+ 'active-primary',
58
+ 'hover-primary-text',
59
+ 'hover-secondary',
60
+ 'active-secondary',
61
+ 'hover-tertiary',
62
+ 'active-tertiary',
63
+ 'hover-ui',
64
+ 'hover-light-ui',
65
+ 'hover-selected-ui',
66
+ 'active-ui',
67
+ 'active-light-ui',
68
+ 'selected-ui',
69
+ 'selected-light-ui',
70
+ 'inverse-hover-ui',
71
+ 'hover-danger',
72
+ 'active-danger',
73
+ 'hover-row',
74
+ 'visited-link',
75
+ 'disabled-01',
76
+ 'disabled-02',
77
+ 'disabled-03',
78
+ 'highlight',
79
+ 'decorative-01',
80
+ 'button-separator',
81
+ 'skeleton-01',
82
+ 'skeleton-02',
83
+ // deprecated
84
+ 'brand-01',
85
+ 'brand-02',
86
+ 'brand-03',
87
+ 'active-01',
88
+ 'hover-field',
89
+ 'danger',
90
+ ],
91
+ });
92
+
93
+ const type = TokenGroup.create({
94
+ name: 'Type',
95
+ properties: [],
96
+ tokens: [
97
+ 'caption-01',
98
+ 'caption-02',
99
+ 'label-01',
100
+ 'label-02',
101
+ 'helper-text-01',
102
+ 'helper-text-02',
103
+ 'body-short-01',
104
+ 'body-long-01',
105
+ 'body-short-02',
106
+ 'body-long-02',
107
+ 'code-01',
108
+ 'code-02',
109
+ 'heading-01',
110
+ 'productive-heading-01',
111
+ 'heading-02',
112
+ 'productive-Heading-02',
113
+ 'productive-heading-03',
114
+ 'productive-heading-04',
115
+ 'productive-heading-05',
116
+ 'productive-heading-06',
117
+ 'productive-heading-07',
118
+ 'expressive-heading-01',
119
+ 'expressive-heading-02',
120
+ 'expressive-heading-03',
121
+ 'expressive-heading-04',
122
+ 'expressive-heading-05',
123
+ 'expressive-heading-06',
124
+ 'expressive-paragraph-01',
125
+ 'quotation-01',
126
+ 'quotation-02',
127
+ 'display-01',
128
+ 'display-02',
129
+ 'display-03',
130
+ 'display-04',
131
+ ],
132
+ });
133
+
134
+ const layout = TokenGroup.create({
135
+ name: 'Layout',
136
+ properties: [],
137
+ tokens: [
138
+ 'spacing-01',
139
+ 'spacing-02',
140
+ 'spacing-03',
141
+ 'spacing-04',
142
+ 'spacing-05',
143
+ 'spacing-06',
144
+ 'spacing-07',
145
+ 'spacing-08',
146
+ 'spacing-09',
147
+ 'spacing-10',
148
+ 'spacing-11',
149
+ 'spacing-12',
150
+ 'spacing-13',
151
+ 'layout-01',
152
+ 'layout-02',
153
+ 'layout-03',
154
+ 'layout-04',
155
+ 'layout-05',
156
+ 'layout-06',
157
+ 'layout-07',
158
+ 'fluid-spacing-01',
159
+ 'fluid-spacing-02',
160
+ 'fluid-spacing-03',
161
+ 'fluid-spacing-04',
162
+ 'container-01',
163
+ 'container-02',
164
+ 'container-03',
165
+ 'container-04',
166
+ 'container-05',
167
+ 'icon-size-01',
168
+ 'icon-size-02',
169
+ ],
170
+ });
171
+
172
+ export const v10 = [
173
+ ...color.getTokens().map((token) => {
174
+ return {
175
+ name: token.name,
176
+ type: 'color',
177
+ };
178
+ }),
179
+ ...type.getTokens().map((token) => {
180
+ return {
181
+ name: token.name,
182
+ type: 'type',
183
+ };
184
+ }),
185
+ ...layout.getTokens().map((token) => {
186
+ return {
187
+ name: token.name,
188
+ type: 'layout',
189
+ };
190
+ }),
191
+ ];
@@ -0,0 +1,436 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ import { TokenGroup } from './TokenGroup';
12
+
13
+ export const background = TokenGroup.create({
14
+ name: 'Background',
15
+ properties: ['background'],
16
+ tokens: [
17
+ 'background',
18
+ {
19
+ name: 'background-active',
20
+ state: 'active',
21
+ },
22
+ {
23
+ name: 'background-selected',
24
+ state: 'selected',
25
+ },
26
+ {
27
+ name: 'background-selected-hover',
28
+ state: 'hover',
29
+ },
30
+ {
31
+ name: 'background-hover',
32
+ state: 'hover',
33
+ },
34
+ 'background-brand',
35
+ 'background-inverse',
36
+ {
37
+ state: 'hover',
38
+ name: 'background-inverse-hover',
39
+ },
40
+ ],
41
+ });
42
+
43
+ export const layer = TokenGroup.create({
44
+ name: 'Layer',
45
+ properties: ['background'],
46
+ tokens: [
47
+ {
48
+ name: 'layer-01',
49
+ },
50
+ {
51
+ state: 'active',
52
+ name: 'layer-active-01',
53
+ },
54
+ {
55
+ state: 'hover',
56
+ name: 'layer-hover-01',
57
+ },
58
+ {
59
+ state: 'selected',
60
+ name: 'layer-selected-01',
61
+ },
62
+ {
63
+ state: 'hover',
64
+ name: 'layer-selected-hover-01',
65
+ },
66
+ {
67
+ name: 'layer-02',
68
+ },
69
+ {
70
+ state: 'active',
71
+ name: 'layer-active-02',
72
+ },
73
+ {
74
+ state: 'hover',
75
+ name: 'layer-hover-02',
76
+ },
77
+ {
78
+ state: 'selected',
79
+ name: 'layer-selected-02',
80
+ },
81
+ {
82
+ state: 'hover',
83
+ name: 'layer-selected-hover-02',
84
+ },
85
+ {
86
+ name: 'layer-03',
87
+ },
88
+ {
89
+ state: 'active',
90
+ name: 'layer-active-03',
91
+ },
92
+ {
93
+ state: 'hover',
94
+ name: 'layer-hover-03',
95
+ },
96
+ {
97
+ state: 'selected',
98
+ name: 'layer-selected-03',
99
+ },
100
+ {
101
+ state: 'hover',
102
+ name: 'layer-selected-hover-03',
103
+ },
104
+ {
105
+ name: 'layer-selected-inverse',
106
+ },
107
+ {
108
+ state: 'disabled',
109
+ name: 'layer-selected-disabled',
110
+ },
111
+ {
112
+ name: 'layer-accent-01',
113
+ },
114
+ {
115
+ state: 'active',
116
+ name: 'layer-accent-active-01',
117
+ },
118
+ {
119
+ state: 'hover',
120
+ name: 'layer-accent-hover-01',
121
+ },
122
+ {
123
+ name: 'layer-accent-02',
124
+ },
125
+ {
126
+ state: 'active',
127
+ name: 'layer-accent-active-02',
128
+ },
129
+ {
130
+ state: 'hover',
131
+ name: 'layer-accent-hover-02',
132
+ },
133
+ {
134
+ name: 'layer-accent-03',
135
+ },
136
+ {
137
+ state: 'active',
138
+ name: 'layer-accent-active-03',
139
+ },
140
+ {
141
+ state: 'hover',
142
+ name: 'layer-accent-hover-03',
143
+ },
144
+ ],
145
+ });
146
+
147
+ export const field = TokenGroup.create({
148
+ name: 'Field',
149
+ properties: ['background'],
150
+ tokens: [
151
+ {
152
+ name: 'field-01',
153
+ },
154
+ {
155
+ state: 'hover',
156
+ name: 'field-hover-01',
157
+ },
158
+ {
159
+ name: 'field-02',
160
+ },
161
+ {
162
+ state: 'hover',
163
+ name: 'field-hover-02',
164
+ },
165
+ {
166
+ name: 'field-03',
167
+ },
168
+ {
169
+ state: 'hover',
170
+ name: 'field-hover-03',
171
+ },
172
+ ],
173
+ });
174
+
175
+ export const border = TokenGroup.create({
176
+ name: 'Borders',
177
+ properties: ['border'],
178
+ tokens: [
179
+ {
180
+ name: 'border-subtle-00',
181
+ },
182
+ {
183
+ name: 'border-subtle-01',
184
+ },
185
+ {
186
+ state: 'selected',
187
+ name: 'border-subtle-selected-01',
188
+ },
189
+ {
190
+ name: 'border-subtle-02',
191
+ },
192
+ {
193
+ state: 'selected',
194
+ name: 'border-subtle-selected-02',
195
+ },
196
+ {
197
+ name: 'border-subtle-03',
198
+ },
199
+ {
200
+ state: 'selected',
201
+ name: 'border-subtle-selected-03',
202
+ },
203
+
204
+ // Border strong
205
+ 'border-strong-01',
206
+ 'border-strong-02',
207
+ 'border-strong-03',
208
+
209
+ // Border tile
210
+ 'border-tile-01',
211
+ 'border-tile-02',
212
+ 'border-tile-03',
213
+
214
+ // Border inverse
215
+ 'border-inverse',
216
+
217
+ // Border interactive
218
+ 'border-interactive',
219
+
220
+ {
221
+ state: 'disabled',
222
+ name: 'border-disabled',
223
+ },
224
+ ],
225
+ });
226
+
227
+ export const text = TokenGroup.create({
228
+ name: 'Text',
229
+ properties: ['text'],
230
+ tokens: [
231
+ 'text-primary',
232
+ 'text-secondary',
233
+ 'text-placeholder',
234
+ 'text-helper',
235
+ 'text-error',
236
+ 'text-inverse',
237
+ {
238
+ name: 'text-on-color',
239
+ },
240
+ {
241
+ state: 'disabled',
242
+ name: 'text-on-color-disabled',
243
+ },
244
+
245
+ {
246
+ state: 'disabled',
247
+ name: 'text-disabled',
248
+ },
249
+ ],
250
+ });
251
+
252
+ export const link = TokenGroup.create({
253
+ name: 'Link',
254
+ properties: ['text'],
255
+ tokens: [
256
+ {
257
+ name: 'link-primary',
258
+ },
259
+ {
260
+ state: 'hover',
261
+ name: 'link-primary-hover',
262
+ },
263
+ 'link-secondary',
264
+ {
265
+ state: 'visited',
266
+ name: 'link-inverse-visited',
267
+ },
268
+ 'link-visited',
269
+ 'link-inverse',
270
+ 'link-inverse-active',
271
+ 'link-inverse-hover',
272
+ ],
273
+ });
274
+
275
+ export const icon = TokenGroup.create({
276
+ name: 'Icons',
277
+ properties: ['background', 'fill', 'stroke'],
278
+ tokens: [
279
+ 'icon-primary',
280
+ 'icon-secondary',
281
+ 'icon-inverse',
282
+ {
283
+ name: 'icon-on-color',
284
+ },
285
+ {
286
+ state: 'disabled',
287
+ name: 'icon-on-color-disabled',
288
+ },
289
+ {
290
+ state: 'disabled',
291
+ name: 'icon-disabled',
292
+ },
293
+ 'icon-interactive',
294
+ ],
295
+ });
296
+
297
+ export const support = TokenGroup.create({
298
+ name: 'Support',
299
+ properties: ['background', 'fill', 'stroke'],
300
+ tokens: [
301
+ 'support-error',
302
+ 'support-success',
303
+ 'support-warning',
304
+ 'support-info',
305
+ 'support-error-inverse',
306
+ 'support-success-inverse',
307
+ 'support-warning-inverse',
308
+ 'support-info-inverse',
309
+ 'support-caution-major',
310
+ 'support-caution-minor',
311
+ 'support-caution-undefined',
312
+ ],
313
+ });
314
+
315
+ export const focus = TokenGroup.create({
316
+ name: 'Focus',
317
+ properties: ['border'],
318
+ tokens: ['focus', 'focus-inset', 'focus-inverse'],
319
+ });
320
+
321
+ export const skeleton = TokenGroup.create({
322
+ name: 'Skeleton',
323
+ properties: ['background'],
324
+ tokens: ['skeleton-background', 'skeleton-element'],
325
+ });
326
+
327
+ export const contextual = TokenGroup.create({
328
+ name: 'Contextual',
329
+ properties: [],
330
+ tokens: [
331
+ 'layer',
332
+ 'layer-active',
333
+ 'layer-hover',
334
+ 'layer-selected',
335
+ 'layer-selected-hover',
336
+ 'layer-accent',
337
+ 'layer-accent-hover',
338
+ 'layer-accent-active',
339
+ 'field',
340
+ 'field-hover',
341
+ 'border-subtle',
342
+ 'border-subtle-selected',
343
+ 'border-strong',
344
+ 'border-tile',
345
+ ],
346
+ });
347
+
348
+ export const ai = TokenGroup.create({
349
+ name: 'AI',
350
+ properties: ['background'],
351
+ tokens: [
352
+ // Phase 2
353
+ 'ai-popover-background',
354
+ 'ai-popover-shadow-outer-01',
355
+ 'ai-popover-shadow-outer-02',
356
+ // Linear gradient refactor
357
+ 'ai-inner-shadow',
358
+ 'ai-aura-start-sm',
359
+ 'ai-aura-start',
360
+ 'ai-aura-end',
361
+ 'ai-aura-hover-background',
362
+ 'ai-aura-hover-start',
363
+ 'ai-aura-hover-end',
364
+ 'ai-border-strong',
365
+ 'ai-border-start',
366
+ 'ai-border-end',
367
+ 'ai-drop-shadow',
368
+ 'ai-skeleton-background',
369
+ 'ai-skeleton-element-background',
370
+ 'ai-overlay',
371
+ // Caret tokens
372
+ 'ai-popover-caret-center',
373
+ 'ai-popover-caret-bottom',
374
+ 'ai-popover-caret-bottom-background',
375
+ 'ai-popover-caret-bottom-background-actions',
376
+ // Chat tokens
377
+ 'chat-prompt-background',
378
+ 'chat-prompt-border-start',
379
+ 'chat-prompt-border-end',
380
+ 'chat-bubble-user',
381
+ 'chat-bubble-agent',
382
+ 'chat-bubble-border',
383
+ 'chat-avatar-bot',
384
+ 'chat-avatar-agent',
385
+ 'chat-avatar-user',
386
+ 'chat-shell-background',
387
+ 'chat-header-background',
388
+ // Chat button tokens
389
+ 'chat-button',
390
+ 'chat-button-hover',
391
+ 'chat-button-text-hover',
392
+ 'chat-button-active',
393
+ 'chat-button-selected',
394
+ 'chat-button-text-selected',
395
+ ],
396
+ });
397
+
398
+ export const group = TokenGroup.create({
399
+ name: 'All',
400
+ tokens: [
401
+ background,
402
+ layer,
403
+ field,
404
+
405
+ // Interactive
406
+ {
407
+ name: 'interactive',
408
+ properties: ['background', 'text'],
409
+ },
410
+
411
+ border,
412
+ text,
413
+ link,
414
+ icon,
415
+ support,
416
+ ai,
417
+
418
+ // Misc
419
+ {
420
+ name: 'highlight',
421
+ },
422
+ {
423
+ name: 'overlay',
424
+ properties: ['background'],
425
+ },
426
+ {
427
+ name: 'toggle-off',
428
+ },
429
+ {
430
+ name: 'shadow',
431
+ },
432
+
433
+ focus,
434
+ skeleton,
435
+ ],
436
+ });
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Copyright OctaviaFlow
3
+ * Author: Vishal Kumar
4
+ * Created: 11/November/2025
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ import { TokenSet } from './TokenSet';
12
+ import { background, border, field, layer } from './v11TokenGroup';
13
+
14
+ export const set = TokenSet.create({
15
+ name: 'All',
16
+ tokens: [
17
+ TokenSet.create({
18
+ name: 'Base set',
19
+ tokens: [
20
+ background.getToken('background'),
21
+ background.getToken('background-hover'),
22
+ background.getToken('background-selected'),
23
+ background.getToken('background-selected-hover'),
24
+ border.getToken('border-subtle-00'),
25
+ ],
26
+ }),
27
+ TokenSet.create({
28
+ name: '01 Layer set',
29
+ tokens: [
30
+ layer.getToken('layer-01'),
31
+ layer.getToken('layer-active-01'),
32
+ layer.getToken('layer-hover-01'),
33
+ layer.getToken('layer-selected-hover-01'),
34
+ layer.getToken('layer-accent-01'),
35
+ layer.getToken('layer-accent-active-01'),
36
+ layer.getToken('layer-accent-hover-01'),
37
+
38
+ field.getToken('field-01'),
39
+ field.getToken('field-hover-01'),
40
+
41
+ border.getToken('border-subtle-01'),
42
+ border.getToken('border-subtle-selected-01'),
43
+
44
+ border.getToken('border-strong-01'),
45
+
46
+ border.getToken('border-tile-01'),
47
+ ],
48
+ }),
49
+ TokenSet.create({
50
+ name: '02 Layer set',
51
+ tokens: [
52
+ layer.getToken('layer-02'),
53
+ layer.getToken('layer-active-02'),
54
+ layer.getToken('layer-hover-02'),
55
+ layer.getToken('layer-selected-hover-02'),
56
+ layer.getToken('layer-accent-02'),
57
+ layer.getToken('layer-accent-active-02'),
58
+ layer.getToken('layer-accent-hover-02'),
59
+
60
+ field.getToken('field-02'),
61
+ field.getToken('field-hover-02'),
62
+
63
+ border.getToken('border-subtle-02'),
64
+ border.getToken('border-subtle-selected-02'),
65
+
66
+ border.getToken('border-strong-02'),
67
+
68
+ border.getToken('border-tile-02'),
69
+ ],
70
+ }),
71
+ TokenSet.create({
72
+ name: '03 Layer set',
73
+ tokens: [
74
+ layer.getToken('layer-03'),
75
+ layer.getToken('layer-active-03'),
76
+ layer.getToken('layer-hover-03'),
77
+ layer.getToken('layer-selected-hover-03'),
78
+ layer.getToken('layer-accent-03'),
79
+ layer.getToken('layer-accent-active-03'),
80
+ layer.getToken('layer-accent-hover-03'),
81
+
82
+ field.getToken('field-03'),
83
+ field.getToken('field-hover-03'),
84
+
85
+ border.getToken('border-subtle-03'),
86
+ border.getToken('border-subtle-selected-03'),
87
+
88
+ border.getToken('border-strong-03'),
89
+
90
+ border.getToken('border-tile-03'),
91
+ ],
92
+ }),
93
+ ],
94
+ });