@snhaman/pollymorph 1.4.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.
package/dist/rules.js ADDED
@@ -0,0 +1,1438 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __commonJS = (cb, mod) => function __require() {
7
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
8
+ };
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+
23
+ // pollymorph.json
24
+ var require_pollymorph = __commonJS({
25
+ "pollymorph.json"(exports2, module2) {
26
+ module2.exports = {
27
+ $schema: "https://design-tokens.github.io/community-group/format/",
28
+ meta: {
29
+ name: "PollyMorph",
30
+ version: "1.4.0",
31
+ description: "Elucidata unified design system token file. Consolidates all core primitives and semantic component tokens.",
32
+ generatedAt: "2026-03-18",
33
+ lastAudit: "2026-03-18",
34
+ auditSource: "Figma PDS-2.0-Library (efOu8CmzqQ3zegLcfdQh9P)",
35
+ rulesSource: "Figma design-system-usage-rules-context (2u2sJOu3KyQ4rzyEPo9D4S)",
36
+ openConflicts: [],
37
+ colorScaleSystem: {
38
+ description: "Each primary and secondary colour has a full tint/shade scale in Figma. Positive step numbers (10\u201398) mix the base colour with white. Negative step numbers (-10 to -80) mix with black. Step 0 is the pure base colour. Example: Purple/80 = base purple at 80% opacity over white.",
39
+ steps: [
40
+ 98,
41
+ 95,
42
+ 92,
43
+ 90,
44
+ 85,
45
+ 80,
46
+ 75,
47
+ 70,
48
+ 60,
49
+ 50,
50
+ 40,
51
+ 30,
52
+ 20,
53
+ 10,
54
+ 0,
55
+ -10,
56
+ -20,
57
+ -30,
58
+ -40,
59
+ -50,
60
+ -60,
61
+ -80
62
+ ],
63
+ note: "Full computed hex ramp tokenised in v1.3.0. Each colour has a 'base' key (pure colour) plus 22 tint/shade steps."
64
+ }
65
+ },
66
+ core: {
67
+ color: {
68
+ primary: {
69
+ purple: {
70
+ base: "#8E42EE",
71
+ "98": "#FDFBFF",
72
+ "95": "#F9F6FE",
73
+ "92": "#F6F0FE",
74
+ "90": "#F4ECFD",
75
+ "85": "#EEE3FC",
76
+ "80": "#E8D9FC",
77
+ "75": "#E3D0FB",
78
+ "70": "#DDC6FA",
79
+ "60": "#D2B3F8",
80
+ "50": "#C6A0F6",
81
+ "40": "#BB8EF5",
82
+ "30": "#B07BF3",
83
+ "20": "#A568F1",
84
+ "10": "#9955F0",
85
+ "0": "#8E42EE",
86
+ "-10": "#803BD6",
87
+ "-20": "#7235BE",
88
+ "-30": "#632EA7",
89
+ "-40": "#55288F",
90
+ "-50": "#472177",
91
+ "-60": "#391A5F",
92
+ "-80": "#1C0D30"
93
+ },
94
+ orange: {
95
+ base: "#F78E12",
96
+ "98": "#FFFDFA",
97
+ "95": "#FFF9F3",
98
+ "92": "#FEF6EC",
99
+ "90": "#FEF4E7",
100
+ "85": "#FEEEDB",
101
+ "80": "#FDE8D0",
102
+ "75": "#FDE3C4",
103
+ "70": "#FDDDB8",
104
+ "60": "#FCD2A0",
105
+ "50": "#FBC688",
106
+ "40": "#FABB71",
107
+ "30": "#F9B059",
108
+ "20": "#F9A541",
109
+ "10": "#F8992A",
110
+ "0": "#F78E12",
111
+ "-10": "#DE8010",
112
+ "-20": "#C6720E",
113
+ "-30": "#AD630D",
114
+ "-40": "#94550B",
115
+ "-50": "#7C4709",
116
+ "-60": "#633907",
117
+ "-80": "#311C04"
118
+ },
119
+ pink: {
120
+ base: "#EC4899",
121
+ "98": "#FFFBFD",
122
+ "95": "#FEF6FA",
123
+ "92": "#FDF0F7",
124
+ "90": "#FDEDF5",
125
+ "85": "#FCE4F0",
126
+ "80": "#FBDAEB",
127
+ "75": "#FAD1E6",
128
+ "70": "#F9C8E0",
129
+ "60": "#F7B6D6",
130
+ "50": "#F6A4CC",
131
+ "40": "#F491C2",
132
+ "30": "#F27FB8",
133
+ "20": "#F06DAD",
134
+ "10": "#EE5AA3",
135
+ "0": "#EC4899",
136
+ "-10": "#D4418A",
137
+ "-20": "#BD3A7A",
138
+ "-30": "#A5326B",
139
+ "-40": "#8E2B5C",
140
+ "-50": "#76244C",
141
+ "-60": "#5E1D3D",
142
+ "-80": "#2F0E1F"
143
+ },
144
+ cyan: {
145
+ base: "#06B6D4",
146
+ "98": "#FAFEFE",
147
+ "95": "#F3FBFD",
148
+ "92": "#EBF9FC",
149
+ "90": "#E6F8FB",
150
+ "85": "#DAF4F9",
151
+ "80": "#CDF0F6",
152
+ "75": "#C1EDF4",
153
+ "70": "#B4E9F2",
154
+ "60": "#9BE2EE",
155
+ "50": "#82DAEA",
156
+ "40": "#6AD3E5",
157
+ "30": "#51CCE1",
158
+ "20": "#38C5DD",
159
+ "10": "#1FBDD8",
160
+ "0": "#06B6D4",
161
+ "-10": "#05A4BF",
162
+ "-20": "#0592AA",
163
+ "-30": "#047F94",
164
+ "-40": "#046D7F",
165
+ "-50": "#035B6A",
166
+ "-60": "#024955",
167
+ "-80": "#01242A"
168
+ },
169
+ red: {
170
+ base: "#FF004D",
171
+ "98": "#FFFAFB",
172
+ "95": "#FFF2F6",
173
+ "92": "#FFEBF1",
174
+ "90": "#FFE6ED",
175
+ "85": "#FFD9E4",
176
+ "80": "#FFCCDB",
177
+ "75": "#FFBFD2",
178
+ "70": "#FFB2CA",
179
+ "60": "#FF99B8",
180
+ "50": "#FF80A6",
181
+ "40": "#FF6694",
182
+ "30": "#FF4C82",
183
+ "20": "#FF3371",
184
+ "10": "#FF1A5F",
185
+ "0": "#FF004D",
186
+ "-10": "#E60045",
187
+ "-20": "#CC003E",
188
+ "-30": "#B20036",
189
+ "-40": "#99002E",
190
+ "-50": "#800026",
191
+ "-60": "#66001F",
192
+ "-80": "#33000F"
193
+ },
194
+ blue: {
195
+ base: "#3C5DE2",
196
+ "98": "#FBFCFE",
197
+ "95": "#F5F7FE",
198
+ "92": "#EFF2FD",
199
+ "90": "#ECEFFC",
200
+ "85": "#E2E7FB",
201
+ "80": "#D8DFF9",
202
+ "75": "#CED6F8",
203
+ "70": "#C4CEF6",
204
+ "60": "#B1BEF3",
205
+ "50": "#9EAEF0",
206
+ "40": "#8A9EEE",
207
+ "30": "#768EEB",
208
+ "20": "#637DE8",
209
+ "10": "#506DE5",
210
+ "0": "#3C5DE2",
211
+ "-10": "#3654CB",
212
+ "-20": "#304AB5",
213
+ "-30": "#2A419E",
214
+ "-40": "#243888",
215
+ "-50": "#1E2E71",
216
+ "-60": "#18255A",
217
+ "-80": "#0C132D"
218
+ },
219
+ green: {
220
+ base: "#24CF35",
221
+ "98": "#FBFEFB",
222
+ "95": "#F4FDF5",
223
+ "92": "#EDFBEF",
224
+ "90": "#E9FAEB",
225
+ "85": "#DEF8E1",
226
+ "80": "#D3F5D7",
227
+ "75": "#C8F3CC",
228
+ "70": "#BDF1C2",
229
+ "60": "#A7ECAE",
230
+ "50": "#92E79A",
231
+ "40": "#7CE286",
232
+ "30": "#66DD72",
233
+ "20": "#50D95D",
234
+ "10": "#3AD449",
235
+ "0": "#24CF35",
236
+ "-10": "#20BA30",
237
+ "-20": "#1DA62A",
238
+ "-30": "#199125",
239
+ "-40": "#167C20",
240
+ "-50": "#12681A",
241
+ "-60": "#0E5315",
242
+ "-80": "#07290B"
243
+ },
244
+ yellow: {
245
+ base: "#F7E217",
246
+ "98": "#FFFEFA",
247
+ "95": "#FFFEF3",
248
+ "92": "#FEFDEC",
249
+ "90": "#FEFCE8",
250
+ "85": "#FEFBDC",
251
+ "80": "#FDF9D1",
252
+ "75": "#FDF8C5",
253
+ "70": "#FDF6B9",
254
+ "60": "#FCF3A2",
255
+ "50": "#FBF08B",
256
+ "40": "#FAEE74",
257
+ "30": "#F9EB5D",
258
+ "20": "#F9E845",
259
+ "10": "#F8E52E",
260
+ "0": "#F7E217",
261
+ "-10": "#DECB15",
262
+ "-20": "#C6B512",
263
+ "-30": "#AD9E10",
264
+ "-40": "#94880E",
265
+ "-50": "#7C710C",
266
+ "-60": "#635A09",
267
+ "-80": "#312D05"
268
+ },
269
+ neutral: {
270
+ base: "#808080",
271
+ "98": "#FCFCFC",
272
+ "95": "#F9F9F9",
273
+ "92": "#F5F5F5",
274
+ "90": "#F2F2F2",
275
+ "85": "#ECECEC",
276
+ "80": "#E6E6E6",
277
+ "75": "#DFDFDF",
278
+ "70": "#D9D9D9",
279
+ "60": "#CCCCCC",
280
+ "50": "#C0C0C0",
281
+ "40": "#B3B3B3",
282
+ "30": "#A6A6A6",
283
+ "20": "#999999",
284
+ "10": "#8D8D8D",
285
+ "0": "#808080",
286
+ "-10": "#737373",
287
+ "-20": "#666666",
288
+ "-30": "#5A5A5A",
289
+ "-40": "#4D4D4D",
290
+ "-50": "#404040",
291
+ "-60": "#333333",
292
+ "-80": "#1A1A1A"
293
+ }
294
+ },
295
+ secondary: {
296
+ purple: {
297
+ base: "#936DC3",
298
+ "98": "#FDFCFE",
299
+ "95": "#FAF8FC",
300
+ "92": "#F6F3FA",
301
+ "90": "#F4F0F9",
302
+ "85": "#EFE9F6",
303
+ "80": "#E9E2F3",
304
+ "75": "#E4DAF0",
305
+ "70": "#DFD3ED",
306
+ "60": "#D4C5E7",
307
+ "50": "#C9B6E1",
308
+ "40": "#BEA7DB",
309
+ "30": "#B399D5",
310
+ "20": "#A98ACF",
311
+ "10": "#9E7CC9",
312
+ "0": "#936DC3",
313
+ "-10": "#8462B0",
314
+ "-20": "#76579C",
315
+ "-30": "#674C88",
316
+ "-40": "#584175",
317
+ "-50": "#4A3662",
318
+ "-60": "#3B2C4E",
319
+ "-80": "#1D1627"
320
+ },
321
+ orange: {
322
+ base: "#D98C30",
323
+ "98": "#FEFDFB",
324
+ "95": "#FDF9F5",
325
+ "92": "#FCF6EE",
326
+ "90": "#FBF4EA",
327
+ "85": "#F9EEE0",
328
+ "80": "#F7E8D6",
329
+ "75": "#F6E2CB",
330
+ "70": "#F4DCC1",
331
+ "60": "#F0D1AC",
332
+ "50": "#ECC698",
333
+ "40": "#E8BA83",
334
+ "30": "#E4AE6E",
335
+ "20": "#E1A359",
336
+ "10": "#DD9845",
337
+ "0": "#D98C30",
338
+ "-10": "#C37E2B",
339
+ "-20": "#AE7026",
340
+ "-30": "#986222",
341
+ "-40": "#82541D",
342
+ "-50": "#6C4618",
343
+ "-60": "#573813",
344
+ "-80": "#2B1C0A"
345
+ },
346
+ pink: {
347
+ base: "#D85C99",
348
+ "98": "#FEFCFD",
349
+ "95": "#FDF7FA",
350
+ "92": "#FCF2F7",
351
+ "90": "#FBEFF5",
352
+ "85": "#F9E7F0",
353
+ "80": "#F7DEEB",
354
+ "75": "#F5D6E6",
355
+ "70": "#F3CEE0",
356
+ "60": "#EFBED6",
357
+ "50": "#ECAECC",
358
+ "40": "#E89DC2",
359
+ "30": "#E48DB8",
360
+ "20": "#E07DAD",
361
+ "10": "#DC6CA3",
362
+ "0": "#D85C99",
363
+ "-10": "#C2538A",
364
+ "-20": "#AD4A7A",
365
+ "-30": "#97406B",
366
+ "-40": "#82375C",
367
+ "-50": "#6C2E4C",
368
+ "-60": "#56253D",
369
+ "-80": "#2B121F"
370
+ },
371
+ cyan: {
372
+ base: "#21A3B9",
373
+ "98": "#FBFDFE",
374
+ "95": "#F4FAFC",
375
+ "92": "#EDF8F9",
376
+ "90": "#E9F6F8",
377
+ "85": "#DEF1F4",
378
+ "80": "#D3EDF1",
379
+ "75": "#C8E8EE",
380
+ "70": "#BCE3EA",
381
+ "60": "#A6DAE3",
382
+ "50": "#90D1DC",
383
+ "40": "#7AC8D5",
384
+ "30": "#64BFCE",
385
+ "20": "#4DB5C7",
386
+ "10": "#37ACC0",
387
+ "0": "#21A3B9",
388
+ "-10": "#1E93A6",
389
+ "-20": "#1A8294",
390
+ "-30": "#177282",
391
+ "-40": "#14626F",
392
+ "-50": "#10525C",
393
+ "-60": "#0D414A",
394
+ "-80": "#072125"
395
+ },
396
+ red: {
397
+ base: "#CC3361",
398
+ "98": "#FEFBFC",
399
+ "95": "#FCF5F7",
400
+ "92": "#FBEFF2",
401
+ "90": "#FAEBEF",
402
+ "85": "#F7E0E7",
403
+ "80": "#F5D6DF",
404
+ "75": "#F2CCD8",
405
+ "70": "#F0C2D0",
406
+ "60": "#EBADC0",
407
+ "50": "#E699B0",
408
+ "40": "#E085A0",
409
+ "30": "#DB7090",
410
+ "20": "#D65C81",
411
+ "10": "#D14771",
412
+ "0": "#CC3361",
413
+ "-10": "#B82E57",
414
+ "-20": "#A3294E",
415
+ "-30": "#8F2444",
416
+ "-40": "#7A1F3A",
417
+ "-50": "#661A30",
418
+ "-60": "#521427",
419
+ "-80": "#290A13"
420
+ },
421
+ blue: {
422
+ base: "#6173BD",
423
+ "98": "#FCFCFE",
424
+ "95": "#F7F8FC",
425
+ "92": "#F2F4FA",
426
+ "90": "#EFF1F8",
427
+ "85": "#E7EAF5",
428
+ "80": "#DFE3F2",
429
+ "75": "#D8DCEE",
430
+ "70": "#D0D5EB",
431
+ "60": "#C0C7E5",
432
+ "50": "#B0B9DE",
433
+ "40": "#A0ABD7",
434
+ "30": "#909DD1",
435
+ "20": "#818FCA",
436
+ "10": "#7181C4",
437
+ "0": "#6173BD",
438
+ "-10": "#5768AA",
439
+ "-20": "#4E5C97",
440
+ "-30": "#445084",
441
+ "-40": "#3A4571",
442
+ "-50": "#303A5E",
443
+ "-60": "#272E4C",
444
+ "-80": "#131726"
445
+ }
446
+ },
447
+ neutral: {
448
+ purple: {
449
+ base: "#968AA6",
450
+ "98": "#FDFDFD",
451
+ "95": "#FAF9FB",
452
+ "92": "#F7F6F8",
453
+ "90": "#F4F3F6",
454
+ "85": "#EFEDF2",
455
+ "80": "#EAE8ED",
456
+ "75": "#E5E2E9",
457
+ "70": "#E0DCE4",
458
+ "60": "#D5D0DB",
459
+ "50": "#CAC4D2",
460
+ "40": "#C0B9CA",
461
+ "30": "#B6ADC1",
462
+ "20": "#ABA1B8",
463
+ "10": "#A096AF",
464
+ "0": "#968AA6",
465
+ "-10": "#877C95",
466
+ "-20": "#786E85",
467
+ "-30": "#696174",
468
+ "-40": "#5A5364",
469
+ "-50": "#4B4553",
470
+ "-60": "#3C3742",
471
+ "-80": "#1E1C21"
472
+ },
473
+ orange: {
474
+ base: "#A18768",
475
+ "98": "#FDFDFC",
476
+ "95": "#FAF9F7",
477
+ "92": "#F7F5F3",
478
+ "90": "#F6F3F0",
479
+ "85": "#F1EDE8",
480
+ "80": "#ECE7E1",
481
+ "75": "#E8E1D9",
482
+ "70": "#E3DBD2",
483
+ "60": "#D9CFC3",
484
+ "50": "#D0C3B4",
485
+ "40": "#C7B7A4",
486
+ "30": "#BDAB95",
487
+ "20": "#B49F86",
488
+ "10": "#AA9377",
489
+ "0": "#A18768",
490
+ "-10": "#917A5E",
491
+ "-20": "#816C53",
492
+ "-30": "#715E49",
493
+ "-40": "#61513E",
494
+ "-50": "#504434",
495
+ "-60": "#40362A",
496
+ "-80": "#201B15"
497
+ },
498
+ pink: {
499
+ base: "#AF859A",
500
+ "98": "#FDFDFD",
501
+ "95": "#FBF9FA",
502
+ "92": "#F9F5F7",
503
+ "90": "#F7F3F5",
504
+ "85": "#F3EDF0",
505
+ "80": "#EFE7EB",
506
+ "75": "#EBE0E6",
507
+ "70": "#E7DAE1",
508
+ "60": "#DFCED7",
509
+ "50": "#D7C2CC",
510
+ "40": "#CFB6C2",
511
+ "30": "#C7AAB8",
512
+ "20": "#BF9DAE",
513
+ "10": "#B791A4",
514
+ "0": "#AF859A",
515
+ "-10": "#9E788B",
516
+ "-20": "#8C6A7B",
517
+ "-30": "#7A5D6C",
518
+ "-40": "#69505C",
519
+ "-50": "#58424D",
520
+ "-60": "#46353E",
521
+ "-80": "#231B1F"
522
+ },
523
+ cyan: {
524
+ base: "#3A91A0",
525
+ "98": "#FBFDFD",
526
+ "95": "#F5FAFA",
527
+ "92": "#EFF6F7",
528
+ "90": "#EBF4F6",
529
+ "85": "#E1EEF1",
530
+ "80": "#D8E9EC",
531
+ "75": "#CEE4E7",
532
+ "70": "#C4DEE2",
533
+ "60": "#B0D3D9",
534
+ "50": "#9CC8D0",
535
+ "40": "#89BDC6",
536
+ "30": "#75B2BC",
537
+ "20": "#61A7B3",
538
+ "10": "#4E9CAA",
539
+ "0": "#3A91A0",
540
+ "-10": "#348290",
541
+ "-20": "#2E7480",
542
+ "-30": "#296670",
543
+ "-40": "#235760",
544
+ "-50": "#1D4850",
545
+ "-60": "#173A40",
546
+ "-80": "#0C1D20"
547
+ },
548
+ red: {
549
+ base: "#9F6073",
550
+ "98": "#FDFCFC",
551
+ "95": "#FAF7F8",
552
+ "92": "#F7F2F4",
553
+ "90": "#F5EFF1",
554
+ "85": "#F1E7EA",
555
+ "80": "#ECDFE3",
556
+ "75": "#E7D7DC",
557
+ "70": "#E2CFD5",
558
+ "60": "#D9BFC7",
559
+ "50": "#CFB0B9",
560
+ "40": "#C5A0AB",
561
+ "30": "#BC909D",
562
+ "20": "#B2808F",
563
+ "10": "#A97081",
564
+ "0": "#9F6073",
565
+ "-10": "#8F5668",
566
+ "-20": "#7F4D5C",
567
+ "-30": "#6F4350",
568
+ "-40": "#5F3A45",
569
+ "-50": "#50303A",
570
+ "-60": "#40262E",
571
+ "-80": "#201317"
572
+ },
573
+ blue: {
574
+ base: "#7A82A4",
575
+ "98": "#FCFCFD",
576
+ "95": "#F8F9FA",
577
+ "92": "#F4F5F8",
578
+ "90": "#F2F2F6",
579
+ "85": "#EBECF1",
580
+ "80": "#E4E6ED",
581
+ "75": "#DEE0E8",
582
+ "70": "#D7DAE4",
583
+ "60": "#CACDDB",
584
+ "50": "#BCC0D2",
585
+ "40": "#AFB4C8",
586
+ "30": "#A2A8BF",
587
+ "20": "#959BB6",
588
+ "10": "#878EAD",
589
+ "0": "#7A82A4",
590
+ "-10": "#6E7594",
591
+ "-20": "#626883",
592
+ "-30": "#555B73",
593
+ "-40": "#494E62",
594
+ "-50": "#3D4152",
595
+ "-60": "#313442",
596
+ "-80": "#181A21"
597
+ }
598
+ },
599
+ brand: {
600
+ alt: {
601
+ purple: "#6A42EE",
602
+ dark: "#6A53B3"
603
+ }
604
+ },
605
+ platform: {
606
+ surfaces: {
607
+ _note: "Platform background is a gradient, not a flat colour. Direction defaults to 180deg (top-to-bottom) \u2014 adjust per context.",
608
+ gradient: {
609
+ stops: [
610
+ {
611
+ color: "#EFECF1",
612
+ position: "0%"
613
+ },
614
+ {
615
+ color: "#F6F4F9",
616
+ position: "53%"
617
+ },
618
+ {
619
+ color: "#E1DBE7",
620
+ position: "99%"
621
+ }
622
+ ],
623
+ css: "linear-gradient(180deg, #EFECF1 0%, #F6F4F9 53%, #E1DBE7 99%)"
624
+ }
625
+ },
626
+ sidebar: {
627
+ surfaces: "#211D33",
628
+ stroke: "#433B60",
629
+ secondarySurfaces: "#2C2840"
630
+ }
631
+ },
632
+ standard: {
633
+ white: "#FFFFFF",
634
+ black: "#000000"
635
+ },
636
+ surface: {
637
+ hover: "#f8f5ff",
638
+ active: "#f0ebff",
639
+ disabled: "#f5f5f5"
640
+ }
641
+ },
642
+ elevation: {
643
+ none: "none",
644
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
645
+ md: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
646
+ lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",
647
+ xl: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"
648
+ },
649
+ font: {
650
+ family: {
651
+ grotesk: "'Space Grotesk', sans-serif",
652
+ inter: "'Inter', sans-serif",
653
+ jetbrains: "'JetBrains Mono', monospace",
654
+ icon: "'PDS-Icon-Font-20', sans-serif",
655
+ base: "'Inter', sans-serif"
656
+ },
657
+ size: {
658
+ cli: {
659
+ large: "0.875rem",
660
+ medium: "0.75rem",
661
+ small: "0.6875rem",
662
+ micro: "0.625rem"
663
+ },
664
+ display: {
665
+ large: "3.375rem",
666
+ medium: "2.75rem",
667
+ small: "2.25rem"
668
+ },
669
+ headline: {
670
+ large: "2rem",
671
+ medium: "1.75rem",
672
+ small: "1.5rem"
673
+ },
674
+ title: {
675
+ large: "1.375rem",
676
+ medium: "1rem",
677
+ small: "0.875rem",
678
+ micro: "0.75rem"
679
+ },
680
+ body: {
681
+ large: "1rem",
682
+ medium: "0.875rem",
683
+ small: "0.75rem",
684
+ micro: "0.6875rem"
685
+ },
686
+ label: {
687
+ large: "0.875rem",
688
+ medium: "0.75rem",
689
+ small: "0.6875rem",
690
+ micro: "0.625rem"
691
+ },
692
+ tag: {
693
+ large: "0.875rem",
694
+ medium: "0.75rem",
695
+ small: "0.6875rem",
696
+ micro: "0.625rem"
697
+ },
698
+ slate: {
699
+ _note: "Space Grotesk VW headline-alternative scale. Added from Figma PDS 2.0.",
700
+ large: "2rem",
701
+ medium: "1.75rem",
702
+ small: "1.5rem"
703
+ },
704
+ subject: {
705
+ _note: "Space Grotesk VW title-alternative scale. Added from Figma PDS 2.0.",
706
+ large: "1.375rem",
707
+ medium: "1rem",
708
+ small: "0.875rem",
709
+ micro: "0.75rem"
710
+ },
711
+ icon: {
712
+ _note: "PDS-Icon-Font-20 icon scale. Added from Figma PDS 2.0.",
713
+ large: "1.5rem",
714
+ medium: "1.25rem",
715
+ small: "1rem"
716
+ }
717
+ },
718
+ weight: {
719
+ normal: "400",
720
+ extraThick: "450",
721
+ medium: "500",
722
+ thick: "550",
723
+ semiBold: "600",
724
+ bold: "700"
725
+ },
726
+ height: {
727
+ display: {
728
+ large: "4rem",
729
+ medium: "3.25rem",
730
+ small: "2.75rem"
731
+ },
732
+ headline: {
733
+ large: "2.5rem",
734
+ medium: "2.25rem",
735
+ small: "2rem"
736
+ },
737
+ title: {
738
+ large: "1.75rem",
739
+ medium: "1.5rem",
740
+ small: "1.25rem",
741
+ micro: "1rem"
742
+ },
743
+ body: {
744
+ large: "1.75rem",
745
+ medium: "1.5rem",
746
+ small: "1.25rem",
747
+ micro: "1.125rem"
748
+ },
749
+ label: {
750
+ large: "1.25rem",
751
+ medium: "1rem",
752
+ small: "1rem",
753
+ micro: "0.875rem"
754
+ },
755
+ tag: {
756
+ large: "1.25rem",
757
+ medium: "1rem",
758
+ small: "1rem",
759
+ micro: "0.875rem"
760
+ },
761
+ cli: {
762
+ large: "1.25rem",
763
+ medium: "1rem",
764
+ small: "1rem",
765
+ micro: "0.875rem"
766
+ },
767
+ slate: {
768
+ large: "2.5rem",
769
+ medium: "2.25rem",
770
+ small: "2rem"
771
+ },
772
+ subject: {
773
+ large: "1.75rem",
774
+ medium: "1.5rem",
775
+ small: "1.25rem",
776
+ micro: "1rem"
777
+ },
778
+ icon: {
779
+ large: "1.4375rem",
780
+ medium: "1.25rem",
781
+ small: "1rem"
782
+ }
783
+ },
784
+ letter: {
785
+ spacing: {
786
+ none: "0",
787
+ tight: "-0.1px",
788
+ normal: "0.1px",
789
+ wide: "0.2px",
790
+ wider: "0.35px",
791
+ subtleWide: "0.15px",
792
+ semiWide: "0.3px",
793
+ widest: "0.5px"
794
+ }
795
+ }
796
+ },
797
+ radius: {
798
+ none: "0",
799
+ sm: "0.25rem",
800
+ md: "0.375rem",
801
+ lg: "0.5rem",
802
+ xl: "0.75rem",
803
+ "2xl": "1rem",
804
+ full: "9999px"
805
+ },
806
+ spacing: {
807
+ "0": "0",
808
+ "1": "0.25rem",
809
+ "2": "0.5rem",
810
+ "3": "0.75rem",
811
+ "4": "1rem",
812
+ "5": "1.25rem",
813
+ "6": "1.5rem",
814
+ "8": "2rem",
815
+ "10": "2.5rem",
816
+ "12": "3rem",
817
+ "16": "4rem"
818
+ },
819
+ state: {
820
+ hover: {
821
+ type: "darken",
822
+ amount: 0.15
823
+ },
824
+ active: {
825
+ type: "darken",
826
+ amount: 0.25
827
+ },
828
+ disabled: {
829
+ type: "lighten",
830
+ amount: 0.4
831
+ },
832
+ focus: {
833
+ type: "darken",
834
+ amount: 0.1
835
+ }
836
+ }
837
+ },
838
+ semantic: {
839
+ accordion: {
840
+ panel: {
841
+ border: "0",
842
+ borderwidth: "0"
843
+ },
844
+ header: {
845
+ background: {
846
+ default: "{color.standard.white}",
847
+ hover: "{color.neutral.purple|mix:10:white}",
848
+ active: "{color.standard.white}"
849
+ },
850
+ color: {
851
+ default: "{color.primary.neutral|mix:60:black}",
852
+ hover: "{color.primary.neutral|mix:60:white}",
853
+ active: "{color.primary.neutral|mix:80:black}"
854
+ },
855
+ border: {
856
+ default: "1px solid {color.primary.neutral|mix:10:white}",
857
+ active: "1px solid {color.primary.neutral|mix:8:white}",
858
+ width: "1px",
859
+ style: "solid",
860
+ color: "{color.primary.neutral|mix:10:white}"
861
+ },
862
+ padding: {
863
+ default: "1rem 1rem 1rem 1.25rem"
864
+ },
865
+ margin: {
866
+ bottom: "0"
867
+ },
868
+ radius: "0",
869
+ transition: "background-color 0.3s ease",
870
+ display: "flex",
871
+ alignitems: "center",
872
+ justifycontent: "space-between",
873
+ userselect: "none",
874
+ position: "relative",
875
+ focus: {
876
+ boxshadow: "none"
877
+ }
878
+ },
879
+ title: {
880
+ margin: "0",
881
+ fontsize: "{font.size.title.small}",
882
+ fontweight: "{font.weight.medium}",
883
+ lineheight: "{font.height.title.small}",
884
+ color: {
885
+ default: "{color.primary.neutral|mix:60:black}",
886
+ active: "{color.primary.neutral|mix:80:black}",
887
+ disabled: "{color.primary.neutral|mix:60:white}"
888
+ }
889
+ },
890
+ icon: {
891
+ color: {
892
+ default: "{color.primary.neutral|mix:80:black}",
893
+ hover: "{color.primary.neutral|mix:80:black}",
894
+ active: "{color.neutral.purple|mix:60:black}",
895
+ disabled: "{color.primary.neutral|mix:60:white}"
896
+ },
897
+ transition: "transform 0.2s ease",
898
+ transform: {
899
+ default: "rotate(0deg)",
900
+ closed: "rotate(90deg)",
901
+ active: "rotate(90deg)"
902
+ },
903
+ size: "1.25rem"
904
+ },
905
+ content: {
906
+ background: "{color.standard.white}",
907
+ border: {
908
+ default: "1px solid {color.primary.neutral|mix:10:white}",
909
+ width: "1px",
910
+ style: "solid",
911
+ top: "0",
912
+ right: "0",
913
+ bottom: "1px solid {color.primary.neutral|mix:10:white}",
914
+ left: "0",
915
+ normal: "0"
916
+ },
917
+ padding: {
918
+ default: "1rem 1.25rem"
919
+ },
920
+ fontsize: "{font.size.body.medium}",
921
+ fontweight: "{font.weight.normal}",
922
+ lineheight: "{font.height.body.medium}",
923
+ display: "flex",
924
+ gap: "0.75rem"
925
+ },
926
+ variant: {
927
+ sticky: {
928
+ header: {
929
+ position: "sticky",
930
+ top: "0",
931
+ zindex: "1"
932
+ }
933
+ },
934
+ coscientist: {
935
+ icon: {
936
+ display: "none"
937
+ },
938
+ content: {
939
+ background: "transparent",
940
+ border: "0",
941
+ padding: "0.75rem 0"
942
+ }
943
+ }
944
+ },
945
+ state: {
946
+ disabled: {
947
+ header: {
948
+ cursor: "not-allowed",
949
+ color: "{color.primary.neutral|mix:60:white}",
950
+ background: "{color.standard.white}"
951
+ },
952
+ icon: {
953
+ color: "{color.primary.neutral|mix:60:white}"
954
+ },
955
+ title: {
956
+ color: "{color.primary.neutral|mix:60:white}"
957
+ },
958
+ content: {
959
+ opacity: 0.4
960
+ }
961
+ }
962
+ },
963
+ size: {
964
+ small: {
965
+ header: {
966
+ padding: "0.625rem 0.625rem 0.625rem 0.875rem"
967
+ },
968
+ content: {
969
+ padding: "0.625rem 0.875rem"
970
+ }
971
+ }
972
+ }
973
+ },
974
+ button: {
975
+ base: {
976
+ border: "0",
977
+ borderradius: "0.5rem",
978
+ fontsize: "0.875rem",
979
+ padding: "0",
980
+ transition: "background-color 300ms ease-out"
981
+ },
982
+ icon: {
983
+ fontsize: "1.25rem",
984
+ height: "1.25rem",
985
+ width: "1.25rem",
986
+ lineheight: "1.1875rem",
987
+ alignitems: "center",
988
+ display: "flex",
989
+ justifycontent: "center"
990
+ },
991
+ disabled: {
992
+ backgroundcolor: "{color.primary.neutral|mix:5:white}",
993
+ color: "{color.primary.neutral|mix:25:white}",
994
+ bordercolor: "{color.primary.neutral|mix:25:white}"
995
+ },
996
+ buttoncontainer: {
997
+ flex: "1 0 auto"
998
+ },
999
+ primary: {
1000
+ backgroundcolor: {
1001
+ default: "{color.primary.purple|mix:80:black}",
1002
+ pressed: "{color.primary.purple|mix:60:black}",
1003
+ loading: "{color.primary.purple|mix:60:black}",
1004
+ hover: "{color.primary.purple|mix:60:black}",
1005
+ active: "{color.primary.purple|mix:50:black}",
1006
+ disabled: "{color.primary.neutral|mix:10:white}"
1007
+ },
1008
+ color: {
1009
+ default: "{color.standard.white}",
1010
+ disabled: "{color.primary.neutral|mix:40:white}"
1011
+ },
1012
+ spliticon: {
1013
+ borderleft: {
1014
+ default: "1px solid {color.primary.purple|mix:90:black}",
1015
+ disabled: "1px solid {color.primary.neutral|mix:25:white}"
1016
+ }
1017
+ },
1018
+ focus: {
1019
+ outline: "1px solid {color.primary.purple|mix:60:black}",
1020
+ outlineoffset: "1px"
1021
+ }
1022
+ },
1023
+ secondary: {
1024
+ backgroundcolor: {
1025
+ default: "{color.standard.white}",
1026
+ pressed: "{color.standard.white}",
1027
+ loading: "{color.standard.white}",
1028
+ hover: "{color.primary.purple|mix:5:white}",
1029
+ active: "{color.secondary.purple|mix:30:white}",
1030
+ disabled: "{color.primary.neutral|mix:5:white}"
1031
+ },
1032
+ color: {
1033
+ default: "{color.primary.neutral|mix:60:black}",
1034
+ pressed: "{color.secondary.purple|mix:80:black}",
1035
+ loading: "{color.secondary.purple|mix:80:black}",
1036
+ active: "{color.neutral.purple|mix:60:black}",
1037
+ disabled: "{color.primary.neutral|mix:25:white}"
1038
+ },
1039
+ border: {
1040
+ default: "1px solid {color.neutral.purple|mix:25:white}",
1041
+ pressed: "1px solid {color.neutral.purple|mix:25:white}",
1042
+ loading: "1px solid {color.neutral.purple|mix:25:white}",
1043
+ active: "1px solid {color.neutral.purple|mix:50:white}"
1044
+ },
1045
+ pollyicon: {
1046
+ color: {
1047
+ default: "{color.primary.neutral|mix:90:white}",
1048
+ pressed: "{color.secondary.purple|mix:80:black}",
1049
+ loading: "{color.secondary.purple|mix:80:black}",
1050
+ active: "{color.secondary.purple|mix:80:black}",
1051
+ disabled: "{color.primary.neutral|mix:25:white}"
1052
+ }
1053
+ },
1054
+ spliticon: {
1055
+ borderleft: {
1056
+ default: "1px solid {color.neutral.purple|mix:25:white}",
1057
+ active: "1px solid {color.neutral.purple|mix:50:white}",
1058
+ disabled: "1px solid {color.primary.neutral|mix:25:white}"
1059
+ }
1060
+ },
1061
+ focus: {
1062
+ outline: "1px solid {color.primary.neutral|mix:60:black}",
1063
+ outlineoffset: "1px"
1064
+ }
1065
+ },
1066
+ tertiary: {
1067
+ backgroundcolor: {
1068
+ default: "transparent",
1069
+ pressed: "{color.primary.neutral|mix:5:white}",
1070
+ loading: "{color.primary.neutral|mix:5:white}",
1071
+ hover: "{color.neutral.purple|mix:10:white}",
1072
+ active: "{color.neutral.purple|mix:25:white}",
1073
+ disabled: "{color.primary.neutral|mix:10:white}"
1074
+ },
1075
+ color: {
1076
+ default: "{color.primary.neutral|mix:60:black}",
1077
+ pressed: "{color.secondary.purple|mix:60:black}",
1078
+ loading: "{color.secondary.purple|mix:60:black}",
1079
+ disabled: "{color.primary.neutral|mix:40:white}"
1080
+ },
1081
+ pollyicon: {
1082
+ color: {
1083
+ default: "{color.primary.neutral|mix:90:white}",
1084
+ pressed: "{color.secondary.purple|mix:80:black}",
1085
+ loading: "{color.secondary.purple|mix:80:black}"
1086
+ }
1087
+ },
1088
+ spliticon: {
1089
+ borderleft: {
1090
+ default: "1px solid {color.primary.neutral|mix:25:white}",
1091
+ active: "1px solid {color.neutral.purple|mix:50:white}",
1092
+ disabled: "1px solid {color.primary.neutral|mix:25:white}"
1093
+ }
1094
+ },
1095
+ focus: {
1096
+ outline: "1px solid {color.primary.neutral|mix:60:black}",
1097
+ outlineoffset: "1px"
1098
+ }
1099
+ },
1100
+ elevated: {
1101
+ backgroundcolor: {
1102
+ default: "{color.standard.white}",
1103
+ pressed: "{color.secondary.purple|mix:15:white}",
1104
+ loading: "{color.secondary.purple|mix:15:white}",
1105
+ hover: "{color.primary.purple|mix:5:white}",
1106
+ active: "{color.secondary.purple|mix:30:white}",
1107
+ disabled: "{color.primary.neutral|mix:5:white}"
1108
+ },
1109
+ color: {
1110
+ pressed: "{color.secondary.purple|mix:60:black}",
1111
+ loading: "{color.secondary.purple|mix:60:black}",
1112
+ disabled: "{color.primary.neutral|mix:40:white}"
1113
+ },
1114
+ boxshadow: {
1115
+ default: "{elevation.md}",
1116
+ disabled: "none"
1117
+ },
1118
+ pollyicon: {
1119
+ color: {
1120
+ default: "{color.secondary.purple|mix:80:black}",
1121
+ pressed: "{color.secondary.purple|mix:80:black}",
1122
+ loading: "{color.secondary.purple|mix:80:black}",
1123
+ disabled: "{color.primary.neutral|mix:40:white}"
1124
+ }
1125
+ },
1126
+ spliticon: {
1127
+ borderleft: {
1128
+ default: "1px solid {color.neutral.purple|mix:25:white}",
1129
+ pressed: "1px solid {color.neutral.purple|mix:40:white}",
1130
+ loading: "1px solid {color.neutral.purple|mix:40:white}",
1131
+ disabled: "1px solid {color.primary.neutral|mix:25:white}"
1132
+ }
1133
+ },
1134
+ focus: {
1135
+ outline: "1px solid {color.primary.neutral|mix:60:black}",
1136
+ outlineoffset: "1px"
1137
+ }
1138
+ },
1139
+ tonal: {
1140
+ backgroundcolor: {
1141
+ default: "{color.secondary.purple|mix:15:white}",
1142
+ pressed: "{color.secondary.purple|mix:15:white}",
1143
+ loading: "{color.secondary.purple|mix:15:white}",
1144
+ hover: "{color.secondary.purple|mix:25:white}",
1145
+ selected: "{color.secondary.purple|mix:40:white}",
1146
+ active: "{color.secondary.purple|mix:40:white}",
1147
+ disabled: "{color.primary.neutral|mix:5:white}"
1148
+ },
1149
+ color: {
1150
+ default: "{color.secondary.purple|mix:60:black}",
1151
+ pressed: "{color.secondary.purple|mix:60:black}",
1152
+ loading: "{color.secondary.purple|mix:60:black}",
1153
+ hover: "{color.secondary.purple|mix:80:black}",
1154
+ selected: "{color.neutral.purple|mix:60:black}",
1155
+ active: "{color.neutral.purple|mix:60:black}",
1156
+ disabled: "{color.primary.neutral|mix:40:white}"
1157
+ },
1158
+ pollyicon: {
1159
+ color: {
1160
+ default: "{color.secondary.purple|mix:80:black}",
1161
+ pressed: "{color.secondary.purple|mix:80:black}",
1162
+ loading: "{color.secondary.purple|mix:80:black}",
1163
+ hover: "{color.secondary.purple|mix:60:black}",
1164
+ selected: "{color.neutral.purple|mix:80:black}",
1165
+ active: "{color.neutral.purple|mix:80:black}",
1166
+ disabled: "{color.primary.neutral|mix:40:white}"
1167
+ }
1168
+ },
1169
+ spliticon: {
1170
+ borderleft: {
1171
+ default: "1px solid {color.neutral.purple|mix:40:white}",
1172
+ hover: "1px solid {color.neutral.purple|mix:50:white}",
1173
+ selected: "1px solid {color.neutral.purple|mix:60:white}",
1174
+ active: "1px solid {color.neutral.purple|mix:60:white}",
1175
+ disabled: "1px solid {color.primary.neutral|mix:25:white}"
1176
+ }
1177
+ },
1178
+ focus: {
1179
+ outline: "1px solid {color.primary.neutral|mix:60:black}",
1180
+ outlineoffset: "1px"
1181
+ }
1182
+ },
1183
+ size: {
1184
+ large: {
1185
+ height: "3rem",
1186
+ width: "3rem",
1187
+ spliticon: {
1188
+ padding: "0.75rem 0.625rem"
1189
+ },
1190
+ buttoncontainer: {
1191
+ padding: "0.875rem 1.25rem",
1192
+ icononly: "0.875rem"
1193
+ }
1194
+ },
1195
+ medium: {
1196
+ height: "2.5rem",
1197
+ width: "2.5rem",
1198
+ spliticon: {
1199
+ padding: "0.5rem 0.625rem"
1200
+ },
1201
+ buttoncontainer: {
1202
+ padding: "0.625rem 1rem",
1203
+ icononly: "0.625rem"
1204
+ }
1205
+ },
1206
+ small: {
1207
+ height: "2rem",
1208
+ width: "2rem",
1209
+ spliticon: {
1210
+ padding: "0.375rem"
1211
+ },
1212
+ buttoncontainer: {
1213
+ padding: "0.375rem 0.75rem",
1214
+ icononly: "0.375rem"
1215
+ }
1216
+ }
1217
+ }
1218
+ },
1219
+ card: {
1220
+ bg: {
1221
+ default: "{color.standard.white}",
1222
+ hover: "{color.standard.white}",
1223
+ active: "{color.secondary.purple|mix:10:white}"
1224
+ },
1225
+ border: {
1226
+ default: "{color.secondary.purple|mix:30:white}",
1227
+ active: "{color.secondary.purple}",
1228
+ width: "1px",
1229
+ style: "solid"
1230
+ },
1231
+ radius: {
1232
+ default: "{radius.xl}",
1233
+ small: "{radius.lg}",
1234
+ medium: "{radius.xl}",
1235
+ large: "{radius.2xl}"
1236
+ },
1237
+ padding: {
1238
+ default: "0"
1239
+ },
1240
+ overflow: "hidden",
1241
+ shadow: {
1242
+ hover: "0 4px 12px rgba(0, 0, 0, 0.1)",
1243
+ active: "none"
1244
+ },
1245
+ transition: {
1246
+ boxshadow: "box-shadow 0.3s ease"
1247
+ },
1248
+ state: {
1249
+ hover: {
1250
+ border: "{color.secondary.purple|mix:30:white}"
1251
+ },
1252
+ active: {
1253
+ bg: "{color.secondary.purple|mix:10:white}"
1254
+ },
1255
+ focus: {
1256
+ outline: {
1257
+ color: "{color.standard.black}",
1258
+ width: "1px",
1259
+ style: "solid",
1260
+ offset: "1px"
1261
+ }
1262
+ }
1263
+ },
1264
+ variant: {
1265
+ material: {
1266
+ border: "0"
1267
+ },
1268
+ flat: {
1269
+ borderactive: "1px solid {color.secondary.purple|mix:25:white}"
1270
+ }
1271
+ }
1272
+ }
1273
+ },
1274
+ rules: {
1275
+ $description: "Enforced design usage rules derived from Figma usage-context screens (OA Landing, BRS Table Landing). These govern how AI tools and engineers should apply tokens. Version-controlled alongside tokens.",
1276
+ color: {
1277
+ brand: {
1278
+ primary_purple: "Brand purple (#8E42EE) is the primary interactive color. Use for: primary buttons, active tab indicators, badge fills, interactive link text, logo text, and greeting text. Never use as body text color or as a large-area background.",
1279
+ primary_orange: "Brand orange is a secondary brand accent. Use sparingly to emphasize or highlight \u2014 e.g. a single callout element or CTA highlight per view. Never compete with purple as the dominant brand color on any screen.",
1280
+ non_brand_accents: "Cyan, pink, and blue are non-brand highlight/accent colors permitted for tags, chips, and data labels only. They must never appear in Elucidata or Polly brand-attributed UI (headers, logos, nav, primary CTAs). They will never be the most prominent color on a page.",
1281
+ status_colors: {
1282
+ yellow: "Use for alert or attention states only.",
1283
+ red: "Use for high-alert, error, and destructive states only.",
1284
+ green: "Use for positive and success states only.",
1285
+ blue: "May be used for positive or neutral informational states \u2014 lower urgency than green. Acceptable for informational banners, neutral status chips."
1286
+ }
1287
+ },
1288
+ surface: {
1289
+ sidebar_bg: "Sidebar background is always #211D33. No substitution permitted.",
1290
+ sidebar_nested: "#2C2840 is the only permitted background for nested panels or flyouts within the sidebar layer.",
1291
+ sidebar_stroke: "#433B60 is used exclusively for dividers, borders, and separators inside the dark sidebar. Do not use in the main content area.",
1292
+ platform_surface: "The main platform surface background is the defined gradient (core.color.platform.surface). Never replace with a flat color.",
1293
+ card_bg: "White (#FFFFFF) is the required background for all cards, tables, modals, and data containers on top of the platform surface. No other fill is permitted."
1294
+ },
1295
+ text: {
1296
+ interactive_links: "Purple (#8E42EE) is the only color for inline interactive/clickable text. Do not use blue, underline-only, or any other convention.",
1297
+ informational_count: "Informational count text (e.g. 'Showing 3,501 Datasets') uses the primary purple at reduced visual weight \u2014 not black or gray.",
1298
+ muted_supporting: "Subtitles, descriptions, and placeholders must use a neutral token. Never use brand purple or pure black for muted text."
1299
+ },
1300
+ badges: {
1301
+ brand_badge: "Status badges tied to Polly/Elucidata context (e.g. 'User Data') use #8E42EE fill with white text.",
1302
+ new_badge_rule: "New badge types must be defined as a semantic token before use. No ad hoc badge colors are permitted."
1303
+ }
1304
+ },
1305
+ typography: {
1306
+ font_families: {
1307
+ inter: "Default font for all UI text.",
1308
+ space_grotesk: "Restricted to display-level headings only (Display, Headline, Slate scale). Not for body, labels, or components.",
1309
+ jetbrains_mono: "Strictly for code blocks, CLI output, and monospaced data display.",
1310
+ mixing_rule: "Never mix Inter and Space Grotesk within the same text element or component. Font family switching only occurs at a layout-section boundary."
1311
+ },
1312
+ scale_rules: {
1313
+ page_titles: "Page titles use Headline or Title/Large scale. Must not exceed the defined headline steps.",
1314
+ body_text: "Body copy and card descriptions use Body/Medium or Body/Small. Truncated text uses ellipsis \u2014 never scale down the font size.",
1315
+ badge_tag_text: "Badge/tag text uses Label or Tag scale only. Never Body scale. Minimum size is the Micro step.",
1316
+ table_headers: "Column headers use Label/Small or Tag scale at SemiBold (600) weight. Not uppercase by default unless defined in the table component token.",
1317
+ sidebar_nav_labels: "Navigation labels in the sidebar use Label or Body/Small at Medium (500) weight. Active state does not change font size or weight \u2014 only color and the active indicator change.",
1318
+ section_labels: "Section labels (e.g. 'All User Atlases') use Body/Small or Label at SemiBold (600). Do not use the Headline scale for section labels."
1319
+ }
1320
+ },
1321
+ layout: {
1322
+ page_structure: "All pages use a fixed-width left sidebar plus a scrollable main content area. Sidebar does not collapse to icons on desktop.",
1323
+ platform_surface_scope: "The platform surface gradient is the background of the main content area. All sections and components sit on white cards on top of it.",
1324
+ cards: "Cards always use xl border radius and md elevation. Flat/borderless cards are not permitted outside of explicitly defined flat card variants.",
1325
+ global_header: "The global header sits above content with no elevation. It is separated from content by spacing only \u2014 no shadow.",
1326
+ tables: "Tables are always wrapped in a white container with rounded corners and md elevation. The table itself carries no background fill.",
1327
+ search_bar_placement: "Search bars inside the global header are centered and fill available space between the nav title and action buttons. They never span the full content width."
1328
+ },
1329
+ components: {
1330
+ buttons: {
1331
+ primary: "One primary button per screen. Use for the main action only.",
1332
+ secondary: "Secondary actions (e.g. 'Request a Dataset') use the Secondary/Outlined variant with a purple border. Never use a filled secondary color.",
1333
+ icon_button: "Icon-only action buttons (filter, view toggle, etc.) use the icon button variant with no visible border in default state."
1334
+ },
1335
+ tabs: "Tabs use a bottom-border indicator in #8E42EE for the active state. Inactive tabs have no underline and use neutral text. Filled or pill-style tabs are not permitted in the main nav context.",
1336
+ table_sort: "Sort controls in table headers show the sort icon alongside the label at all times \u2014 not only on hover.",
1337
+ pagination: "Pagination uses the minimal numeric style with previous/next arrows. Always display the total dataset count alongside (e.g. 'Showing 1\u201325 of 345').",
1338
+ sidebar_active_state: "Active sidebar nav item is indicated by a left-side purple pill/accent bar only. No background fill, icon color change, or text weight change. This is the only permitted active state pattern for sidebar nav.",
1339
+ notification_badges: "Notification badges on sidebar icons use the red semantic color token. Small, circular, positioned top-right of the icon."
1340
+ },
1341
+ spacing: {
1342
+ card_padding: "Internal card padding uses spacing.4 (1rem) on all sides.",
1343
+ card_grid_gap: "Gap between cards in a grid layout uses spacing.4 (1rem).",
1344
+ table_rows: "Table row height must not be set as a raw pixel value. Derive from label/body font size plus defined padding tokens."
1345
+ }
1346
+ }
1347
+ };
1348
+ }
1349
+ });
1350
+
1351
+ // src/rules.ts
1352
+ var rules_exports = {};
1353
+ __export(rules_exports, {
1354
+ ruleButtonPrimary: () => ruleButtonPrimary,
1355
+ ruleButtonSecondary: () => ruleButtonSecondary,
1356
+ ruleCardBg: () => ruleCardBg,
1357
+ ruleCards: () => ruleCards,
1358
+ ruleFontInter: () => ruleFontInter,
1359
+ ruleFontMixing: () => ruleFontMixing,
1360
+ ruleFontMono: () => ruleFontMono,
1361
+ ruleFontSpaceGrotesk: () => ruleFontSpaceGrotesk,
1362
+ ruleInteractiveLinks: () => ruleInteractiveLinks,
1363
+ ruleMutedText: () => ruleMutedText,
1364
+ ruleNonBrandAccents: () => ruleNonBrandAccents,
1365
+ rulePageStructure: () => rulePageStructure,
1366
+ rulePagination: () => rulePagination,
1367
+ rulePlatformSurface: () => rulePlatformSurface,
1368
+ rulePrimaryOrange: () => rulePrimaryOrange,
1369
+ rulePrimaryPurple: () => rulePrimaryPurple,
1370
+ ruleSidebarActiveState: () => ruleSidebarActiveState,
1371
+ ruleSidebarBg: () => ruleSidebarBg,
1372
+ ruleSidebarStroke: () => ruleSidebarStroke,
1373
+ ruleStatusBlue: () => ruleStatusBlue,
1374
+ ruleStatusGreen: () => ruleStatusGreen,
1375
+ ruleStatusRed: () => ruleStatusRed,
1376
+ ruleStatusYellow: () => ruleStatusYellow,
1377
+ ruleTables: () => ruleTables,
1378
+ ruleTabs: () => ruleTabs,
1379
+ rules: () => rules
1380
+ });
1381
+ module.exports = __toCommonJS(rules_exports);
1382
+ var raw = require_pollymorph();
1383
+ var rules = raw.rules;
1384
+ var rulePrimaryPurple = raw.rules.color.brand.primary_purple;
1385
+ var rulePrimaryOrange = raw.rules.color.brand.primary_orange;
1386
+ var ruleNonBrandAccents = raw.rules.color.brand.non_brand_accents;
1387
+ var ruleStatusYellow = raw.rules.color.brand.status_colors.yellow;
1388
+ var ruleStatusRed = raw.rules.color.brand.status_colors.red;
1389
+ var ruleStatusGreen = raw.rules.color.brand.status_colors.green;
1390
+ var ruleStatusBlue = raw.rules.color.brand.status_colors.blue;
1391
+ var ruleSidebarBg = raw.rules.color.surface.sidebar_bg;
1392
+ var ruleSidebarStroke = raw.rules.color.surface.sidebar_stroke;
1393
+ var rulePlatformSurface = raw.rules.color.surface.platform_surface;
1394
+ var ruleCardBg = raw.rules.color.surface.card_bg;
1395
+ var ruleInteractiveLinks = raw.rules.color.text.interactive_links;
1396
+ var ruleMutedText = raw.rules.color.text.muted_supporting;
1397
+ var ruleFontInter = raw.rules.typography.font_families.inter;
1398
+ var ruleFontSpaceGrotesk = raw.rules.typography.font_families.space_grotesk;
1399
+ var ruleFontMono = raw.rules.typography.font_families.jetbrains_mono;
1400
+ var ruleFontMixing = raw.rules.typography.font_families.mixing_rule;
1401
+ var rulePageStructure = raw.rules.layout.page_structure;
1402
+ var ruleCards = raw.rules.layout.cards;
1403
+ var ruleTables = raw.rules.layout.tables;
1404
+ var ruleButtonPrimary = raw.rules.components.buttons.primary;
1405
+ var ruleButtonSecondary = raw.rules.components.buttons.secondary;
1406
+ var ruleTabs = raw.rules.components.tabs;
1407
+ var ruleSidebarActiveState = raw.rules.components.sidebar_active_state;
1408
+ var rulePagination = raw.rules.components.pagination;
1409
+ // Annotate the CommonJS export names for ESM import in node:
1410
+ 0 && (module.exports = {
1411
+ ruleButtonPrimary,
1412
+ ruleButtonSecondary,
1413
+ ruleCardBg,
1414
+ ruleCards,
1415
+ ruleFontInter,
1416
+ ruleFontMixing,
1417
+ ruleFontMono,
1418
+ ruleFontSpaceGrotesk,
1419
+ ruleInteractiveLinks,
1420
+ ruleMutedText,
1421
+ ruleNonBrandAccents,
1422
+ rulePageStructure,
1423
+ rulePagination,
1424
+ rulePlatformSurface,
1425
+ rulePrimaryOrange,
1426
+ rulePrimaryPurple,
1427
+ ruleSidebarActiveState,
1428
+ ruleSidebarBg,
1429
+ ruleSidebarStroke,
1430
+ ruleStatusBlue,
1431
+ ruleStatusGreen,
1432
+ ruleStatusRed,
1433
+ ruleStatusYellow,
1434
+ ruleTables,
1435
+ ruleTabs,
1436
+ rules
1437
+ });
1438
+ //# sourceMappingURL=rules.js.map