@snhaman/pollymorph 1.5.0 → 1.6.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/index.d.mts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +603 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +588 -19
- package/dist/index.mjs.map +1 -1
- package/dist/rules.d.mts +19 -9
- package/dist/rules.d.ts +19 -9
- package/dist/rules.js +603 -23
- package/dist/rules.js.map +1 -1
- package/dist/rules.mjs +588 -19
- package/dist/rules.mjs.map +1 -1
- package/dist/tokens-B3FQ_Pbh.d.mts +221 -0
- package/dist/tokens-B3FQ_Pbh.d.ts +221 -0
- package/dist/tokens.d.mts +1 -62
- package/dist/tokens.d.ts +1 -62
- package/dist/tokens.js +558 -11
- package/dist/tokens.js.map +1 -1
- package/dist/tokens.mjs +558 -11
- package/dist/tokens.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/types-C6UlcDOW.d.mts +0 -162
- package/dist/types-C6UlcDOW.d.ts +0 -162
package/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ var require_pollymorph = __commonJS({
|
|
|
10
10
|
$schema: "https://design-tokens.github.io/community-group/format/",
|
|
11
11
|
meta: {
|
|
12
12
|
name: "PollyMorph",
|
|
13
|
-
version: "1.
|
|
13
|
+
version: "1.6.0",
|
|
14
14
|
description: "Elucidata unified design system token file. Consolidates all core primitives and semantic component tokens.",
|
|
15
15
|
generatedAt: "2026-03-18",
|
|
16
16
|
lastAudit: "2026-03-18",
|
|
@@ -44,7 +44,8 @@ var require_pollymorph = __commonJS({
|
|
|
44
44
|
-80
|
|
45
45
|
],
|
|
46
46
|
note: "Full computed hex ramp tokenised in v1.3.0. Each colour has a 'base' key (pure colour) plus 22 tint/shade steps."
|
|
47
|
-
}
|
|
47
|
+
},
|
|
48
|
+
componentRulesSource: "Figma PDS-2.0-Library nodes: 850-601,602,603,605,1026-2068,7763-5244/5245,1916-4113,4718-1770,6228-7796/7063,280-59,447-188,452-304,230-280,289-101,448-191"
|
|
48
49
|
},
|
|
49
50
|
core: {
|
|
50
51
|
color: {
|
|
@@ -1310,16 +1311,562 @@ var require_pollymorph = __commonJS({
|
|
|
1310
1311
|
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."
|
|
1311
1312
|
},
|
|
1312
1313
|
components: {
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1314
|
+
$description: "Component-level rules derived from PDS-2.0-Library Figma specs. Each entry covers variants, states, token values, and composition constraints.",
|
|
1315
|
+
button: {
|
|
1316
|
+
variants: {
|
|
1317
|
+
filled: {
|
|
1318
|
+
description: "Primary action. One per view maximum.",
|
|
1319
|
+
background: "primary.purple.base",
|
|
1320
|
+
text: "white",
|
|
1321
|
+
border: "none",
|
|
1322
|
+
radius: "radius.md",
|
|
1323
|
+
elevation: "none",
|
|
1324
|
+
hover: {
|
|
1325
|
+
background: "primary.purple[-10]"
|
|
1326
|
+
},
|
|
1327
|
+
active: {
|
|
1328
|
+
background: "primary.purple[-20]"
|
|
1329
|
+
},
|
|
1330
|
+
disabled: {
|
|
1331
|
+
background: "primary.purple[80]",
|
|
1332
|
+
text: "white",
|
|
1333
|
+
cursor: "not-allowed"
|
|
1334
|
+
},
|
|
1335
|
+
loading: "Spinner replaces label. Width preserved. No interaction."
|
|
1336
|
+
},
|
|
1337
|
+
outlined: {
|
|
1338
|
+
description: "Secondary action. Can appear alongside ghost.",
|
|
1339
|
+
background: "transparent",
|
|
1340
|
+
border: "1px solid primary.purple.base",
|
|
1341
|
+
text: "primary.purple.base",
|
|
1342
|
+
radius: "radius.md",
|
|
1343
|
+
hover: {
|
|
1344
|
+
background: "primary.purple[95]"
|
|
1345
|
+
},
|
|
1346
|
+
active: {
|
|
1347
|
+
background: "primary.purple[90]"
|
|
1348
|
+
},
|
|
1349
|
+
disabled: {
|
|
1350
|
+
border: "primary.purple[80]",
|
|
1351
|
+
text: "primary.purple[80]",
|
|
1352
|
+
cursor: "not-allowed"
|
|
1353
|
+
}
|
|
1354
|
+
},
|
|
1355
|
+
ghost: {
|
|
1356
|
+
description: "Tertiary action. No border, no background.",
|
|
1357
|
+
background: "transparent",
|
|
1358
|
+
border: "none",
|
|
1359
|
+
text: "primary.purple.base",
|
|
1360
|
+
radius: "radius.md",
|
|
1361
|
+
hover: {
|
|
1362
|
+
background: "primary.purple[95]"
|
|
1363
|
+
},
|
|
1364
|
+
active: {
|
|
1365
|
+
background: "primary.purple[90]"
|
|
1366
|
+
},
|
|
1367
|
+
disabled: {
|
|
1368
|
+
text: "neutral.warm[60]",
|
|
1369
|
+
cursor: "not-allowed"
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
},
|
|
1373
|
+
sizes: {
|
|
1374
|
+
large: {
|
|
1375
|
+
height: "40px",
|
|
1376
|
+
paddingX: "spacing.4",
|
|
1377
|
+
fontSize: "font.size.md",
|
|
1378
|
+
iconGap: "spacing.2"
|
|
1379
|
+
},
|
|
1380
|
+
medium: {
|
|
1381
|
+
height: "32px",
|
|
1382
|
+
paddingX: "spacing.3",
|
|
1383
|
+
fontSize: "font.size.sm",
|
|
1384
|
+
iconGap: "spacing.2"
|
|
1385
|
+
},
|
|
1386
|
+
small: {
|
|
1387
|
+
height: "24px",
|
|
1388
|
+
paddingX: "spacing.2",
|
|
1389
|
+
fontSize: "font.size.xs",
|
|
1390
|
+
iconGap: "spacing.1"
|
|
1391
|
+
},
|
|
1392
|
+
xsmall: {
|
|
1393
|
+
height: "20px",
|
|
1394
|
+
paddingX: "spacing.2",
|
|
1395
|
+
fontSize: "font.size.xxs",
|
|
1396
|
+
iconGap: "spacing.1"
|
|
1397
|
+
}
|
|
1398
|
+
},
|
|
1399
|
+
iconPlacement: "Leading icon left of label, trailing icon right of label. Icon-only: square aspect ratio, tooltip required.",
|
|
1400
|
+
font: "Inter SemiBold (600). No uppercase transform.",
|
|
1401
|
+
radius: "radius.md (6px). Never radius.full for buttons.",
|
|
1402
|
+
composition: "Never stack two Filled buttons side by side. Destructive action uses red Filled variant only in modal footers."
|
|
1403
|
+
},
|
|
1404
|
+
tag: {
|
|
1405
|
+
variants: {
|
|
1406
|
+
filled: "Background: color[90] tint. Text and icon: color.base.",
|
|
1407
|
+
outlined: "Background: transparent. Border: 1px solid color.base. Text: color.base."
|
|
1408
|
+
},
|
|
1409
|
+
colors: {
|
|
1410
|
+
brand: "primary.purple.base filled, white text. Only for Polly/Elucidata-attributed labels.",
|
|
1411
|
+
content: "cyan, pink, blue, green, orange for data category tags.",
|
|
1412
|
+
statusReserved: "red and yellow reserved for status only. Never use for data category tags."
|
|
1413
|
+
},
|
|
1414
|
+
sizes: {
|
|
1415
|
+
medium: {
|
|
1416
|
+
height: "24px",
|
|
1417
|
+
paddingX: "spacing.2",
|
|
1418
|
+
fontSize: "font.size.xs"
|
|
1419
|
+
},
|
|
1420
|
+
small: {
|
|
1421
|
+
height: "20px",
|
|
1422
|
+
paddingX: "spacing.1",
|
|
1423
|
+
fontSize: "font.size.xxs"
|
|
1424
|
+
}
|
|
1425
|
+
},
|
|
1426
|
+
font: "Inter Medium (500). Never bold inside a tag.",
|
|
1427
|
+
radius: "radius.full (pill shape).",
|
|
1428
|
+
closeable: "x icon on right, same color as label. Click removes tag.",
|
|
1429
|
+
truncation: "Tags never wrap. Truncate with ellipsis. Set max-width on parent.",
|
|
1430
|
+
icon: "Optional leading icon, same color as label."
|
|
1431
|
+
},
|
|
1432
|
+
textInput: {
|
|
1433
|
+
states: {
|
|
1434
|
+
default: {
|
|
1435
|
+
border: "1px solid neutral.warm[70]",
|
|
1436
|
+
background: "white",
|
|
1437
|
+
placeholder: "neutral.warm[50]"
|
|
1438
|
+
},
|
|
1439
|
+
focused: {
|
|
1440
|
+
border: "1px solid primary.purple.base",
|
|
1441
|
+
shadow: "none",
|
|
1442
|
+
outline: "none"
|
|
1443
|
+
},
|
|
1444
|
+
filled: {
|
|
1445
|
+
border: "1px solid neutral.warm[70]"
|
|
1446
|
+
},
|
|
1447
|
+
error: {
|
|
1448
|
+
border: "1px solid red.base",
|
|
1449
|
+
trailingIcon: "warning icon in red.base",
|
|
1450
|
+
helperText: "red.base, font.size.xs"
|
|
1451
|
+
},
|
|
1452
|
+
disabled: {
|
|
1453
|
+
background: "neutral.warm[95]",
|
|
1454
|
+
border: "neutral.warm[85]",
|
|
1455
|
+
text: "neutral.warm[60]",
|
|
1456
|
+
cursor: "not-allowed"
|
|
1457
|
+
}
|
|
1458
|
+
},
|
|
1459
|
+
radius: "radius.sm",
|
|
1460
|
+
label: "Always above the field. Inter Medium (500), font.size.sm. Never inside field as permanent placeholder.",
|
|
1461
|
+
helperText: "Below field, neutral.warm[50], font.size.xs. Replaced by error message in error state.",
|
|
1462
|
+
leadingIcon: "Optional. neutral.warm[50] default, primary.purple.base when focused.",
|
|
1463
|
+
trailingIcon: "Password toggle, clear (x), or error indicator.",
|
|
1464
|
+
textarea: "Same border/state rules. Min-height 3 rows. Vertical resize only.",
|
|
1465
|
+
search: "Always has leading search icon. Trailing clear (x) when filled. No floating label.",
|
|
1466
|
+
select: {
|
|
1467
|
+
trailingIcon: "Chevron, rotates 180 degrees when open",
|
|
1468
|
+
menu: {
|
|
1469
|
+
background: "white",
|
|
1470
|
+
radius: "radius.md",
|
|
1471
|
+
elevation: "elevation.md"
|
|
1472
|
+
}
|
|
1473
|
+
}
|
|
1474
|
+
},
|
|
1475
|
+
selectionControl: {
|
|
1476
|
+
radio: {
|
|
1477
|
+
size: "18px",
|
|
1478
|
+
states: {
|
|
1479
|
+
default: {
|
|
1480
|
+
border: "1.5px solid neutral.warm[70]"
|
|
1481
|
+
},
|
|
1482
|
+
hover: {
|
|
1483
|
+
border: "1.5px solid primary.purple.base"
|
|
1484
|
+
},
|
|
1485
|
+
checked: {
|
|
1486
|
+
outerRing: "primary.purple.base",
|
|
1487
|
+
innerDot: "primary.purple.base"
|
|
1488
|
+
},
|
|
1489
|
+
disabled: {
|
|
1490
|
+
border: "neutral.warm[80]",
|
|
1491
|
+
dot: "neutral.warm[70]",
|
|
1492
|
+
cursor: "not-allowed"
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
},
|
|
1496
|
+
checkbox: {
|
|
1497
|
+
size: "18px",
|
|
1498
|
+
radius: "radius.xs",
|
|
1499
|
+
states: {
|
|
1500
|
+
default: {
|
|
1501
|
+
border: "1.5px solid neutral.warm[70]"
|
|
1502
|
+
},
|
|
1503
|
+
hover: {
|
|
1504
|
+
border: "1.5px solid primary.purple.base"
|
|
1505
|
+
},
|
|
1506
|
+
checked: {
|
|
1507
|
+
background: "primary.purple.base",
|
|
1508
|
+
icon: "white checkmark"
|
|
1509
|
+
},
|
|
1510
|
+
indeterminate: {
|
|
1511
|
+
background: "primary.purple.base",
|
|
1512
|
+
icon: "white dash"
|
|
1513
|
+
},
|
|
1514
|
+
disabled: {
|
|
1515
|
+
background: "neutral.warm[90]",
|
|
1516
|
+
border: "neutral.warm[80]",
|
|
1517
|
+
cursor: "not-allowed"
|
|
1518
|
+
},
|
|
1519
|
+
error: {
|
|
1520
|
+
border: "red.base"
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
},
|
|
1524
|
+
label: "Right of control. Inter Regular (400), font.size.sm. Never above or below.",
|
|
1525
|
+
groupSpacing: {
|
|
1526
|
+
vertical: "spacing.2 between items",
|
|
1527
|
+
horizontal: "spacing.4 gap"
|
|
1528
|
+
}
|
|
1317
1529
|
},
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1530
|
+
table: {
|
|
1531
|
+
container: {
|
|
1532
|
+
background: "white",
|
|
1533
|
+
radius: "radius.xl",
|
|
1534
|
+
elevation: "elevation.md"
|
|
1535
|
+
},
|
|
1536
|
+
header: {
|
|
1537
|
+
background: "neutral.warm[97]",
|
|
1538
|
+
font: "Label/Small SemiBold (600)",
|
|
1539
|
+
color: "neutral.warm[50]",
|
|
1540
|
+
sortIcon: "Always visible. Active column: primary.purple.base"
|
|
1541
|
+
},
|
|
1542
|
+
rows: {
|
|
1543
|
+
default: {
|
|
1544
|
+
background: "white",
|
|
1545
|
+
border: "1px solid neutral.warm[90] bottom"
|
|
1546
|
+
},
|
|
1547
|
+
hover: {
|
|
1548
|
+
background: "primary.purple[98]"
|
|
1549
|
+
},
|
|
1550
|
+
selected: {
|
|
1551
|
+
background: "primary.purple[95]",
|
|
1552
|
+
leftAccent: "3px solid primary.purple.base"
|
|
1553
|
+
}
|
|
1554
|
+
},
|
|
1555
|
+
cellTypes: {
|
|
1556
|
+
text: "Left-aligned. Inter Regular (400), font.size.sm, neutral.warm[20].",
|
|
1557
|
+
number: "Right-aligned. JetBrains Mono.",
|
|
1558
|
+
status: "Centered. Tag component.",
|
|
1559
|
+
actions: "Right-aligned. Icon buttons, visible on row hover. Max 3 \u2014 overflow to meatball menu."
|
|
1560
|
+
},
|
|
1561
|
+
sort: "Click cycles: ascending to descending to unsorted.",
|
|
1562
|
+
emptyState: "Centered illustration + headline + optional CTA. Never headers-only without empty state component.",
|
|
1563
|
+
pagination: {
|
|
1564
|
+
rowsPerPage: [
|
|
1565
|
+
10,
|
|
1566
|
+
25,
|
|
1567
|
+
50,
|
|
1568
|
+
100
|
|
1569
|
+
],
|
|
1570
|
+
display: "Showing {start}-{end} of {total}",
|
|
1571
|
+
controls: "Prev/next arrows + page numbers"
|
|
1572
|
+
}
|
|
1573
|
+
},
|
|
1574
|
+
tabs: {
|
|
1575
|
+
containerBorder: "1px solid neutral.warm[85] bottom",
|
|
1576
|
+
indicator: "2px solid primary.purple.base bottom, active tab only",
|
|
1577
|
+
states: {
|
|
1578
|
+
active: {
|
|
1579
|
+
label: "primary.purple.base",
|
|
1580
|
+
font: "Inter SemiBold (600)"
|
|
1581
|
+
},
|
|
1582
|
+
default: {
|
|
1583
|
+
label: "neutral.warm[40]",
|
|
1584
|
+
font: "Inter Medium (500)"
|
|
1585
|
+
},
|
|
1586
|
+
hover: {
|
|
1587
|
+
label: "neutral.warm[20]"
|
|
1588
|
+
},
|
|
1589
|
+
disabled: {
|
|
1590
|
+
label: "neutral.warm[70]",
|
|
1591
|
+
cursor: "not-allowed"
|
|
1592
|
+
}
|
|
1593
|
+
},
|
|
1594
|
+
badge: {
|
|
1595
|
+
default: {
|
|
1596
|
+
background: "neutral.warm[80]",
|
|
1597
|
+
text: "neutral.warm[30]"
|
|
1598
|
+
},
|
|
1599
|
+
active: {
|
|
1600
|
+
background: "primary.purple[90]",
|
|
1601
|
+
text: "primary.purple.base"
|
|
1602
|
+
}
|
|
1603
|
+
},
|
|
1604
|
+
maxVisible: "6 tabs before dropdown overflow. No horizontal scroll.",
|
|
1605
|
+
style: "Indicator line only. Never filled/pill background tabs in main nav context."
|
|
1606
|
+
},
|
|
1607
|
+
sidebarNav: {
|
|
1608
|
+
background: "platform.sidebar.surfaces (#211D33)",
|
|
1609
|
+
item: {
|
|
1610
|
+
default: {
|
|
1611
|
+
icon: "white",
|
|
1612
|
+
label: "neutral.warm[70]",
|
|
1613
|
+
padding: "spacing.3 vertical"
|
|
1614
|
+
},
|
|
1615
|
+
hover: {
|
|
1616
|
+
background: "rgba(255,255,255,0.06)",
|
|
1617
|
+
radius: "radius.sm"
|
|
1618
|
+
},
|
|
1619
|
+
active: {
|
|
1620
|
+
leftAccent: "3px solid primary.purple[60]",
|
|
1621
|
+
label: "white",
|
|
1622
|
+
icon: "primary.purple[60]"
|
|
1623
|
+
}
|
|
1624
|
+
},
|
|
1625
|
+
divider: "1px solid platform.sidebar.stroke (#433B60)",
|
|
1626
|
+
iconSize: "20px. Always use PDS-Icon-Font-20 or SVG. Never emoji or text characters.",
|
|
1627
|
+
notificationBadge: {
|
|
1628
|
+
background: "red.base",
|
|
1629
|
+
text: "white",
|
|
1630
|
+
position: "top-right of icon",
|
|
1631
|
+
maxDisplay: "99+"
|
|
1632
|
+
},
|
|
1633
|
+
collapseBehavior: "Never collapses to icon-only on desktop. Mobile: drawer/overlay."
|
|
1634
|
+
},
|
|
1635
|
+
breadcrumb: {
|
|
1636
|
+
separator: "/ or > in neutral.warm[60], spacing.2 each side",
|
|
1637
|
+
crumbs: {
|
|
1638
|
+
nonCurrent: {
|
|
1639
|
+
color: "primary.purple.base",
|
|
1640
|
+
hoverDecoration: "underline"
|
|
1641
|
+
},
|
|
1642
|
+
current: {
|
|
1643
|
+
color: "neutral.warm[30]",
|
|
1644
|
+
interactive: "false"
|
|
1645
|
+
}
|
|
1646
|
+
},
|
|
1647
|
+
font: "Inter Regular (400), font.size.sm",
|
|
1648
|
+
maxDepth: "4 levels. Collapse middle levels to ellipsis if deeper."
|
|
1649
|
+
},
|
|
1650
|
+
modal: {
|
|
1651
|
+
overlay: "rgba(0,0,0,0.4) full-screen",
|
|
1652
|
+
container: {
|
|
1653
|
+
background: "white",
|
|
1654
|
+
radius: "radius.xl",
|
|
1655
|
+
elevation: "elevation.lg",
|
|
1656
|
+
border: "1px solid neutral.warm[85]"
|
|
1657
|
+
},
|
|
1658
|
+
sizes: {
|
|
1659
|
+
popup: {
|
|
1660
|
+
maxWidth: "480px",
|
|
1661
|
+
scrollable: "false",
|
|
1662
|
+
use: "Confirmations, quick forms"
|
|
1663
|
+
},
|
|
1664
|
+
modal: {
|
|
1665
|
+
maxWidth: "720px",
|
|
1666
|
+
maxHeight: "80vh",
|
|
1667
|
+
bodyScrollable: "true",
|
|
1668
|
+
use: "Complex forms, data views"
|
|
1669
|
+
}
|
|
1670
|
+
},
|
|
1671
|
+
header: {
|
|
1672
|
+
background: "primary.purple[98]",
|
|
1673
|
+
padding: "spacing.4 spacing.5",
|
|
1674
|
+
title: "Inter SemiBold (600), font.size.md, neutral.warm[10]",
|
|
1675
|
+
closeButton: "Ghost icon button, top-right, always present"
|
|
1676
|
+
},
|
|
1677
|
+
body: {
|
|
1678
|
+
background: "white",
|
|
1679
|
+
padding: "spacing.5",
|
|
1680
|
+
scrollbar: "Thin, primary.purple[60] track, visible during scroll only"
|
|
1681
|
+
},
|
|
1682
|
+
footer: {
|
|
1683
|
+
padding: "spacing.4 spacing.5",
|
|
1684
|
+
border: "1px solid neutral.warm[90] top",
|
|
1685
|
+
alignment: "right",
|
|
1686
|
+
buttonPattern: "Tertiary (ghost) + Primary (filled). Destructive: red Filled.",
|
|
1687
|
+
note: "Never ghost for destructive actions."
|
|
1688
|
+
},
|
|
1689
|
+
animation: "200ms fade + subtle scale on open/close",
|
|
1690
|
+
closing: "x button, overlay click (configurable), Escape key",
|
|
1691
|
+
nesting: "Never nest modals. Use multi-step flow within same modal instead."
|
|
1692
|
+
},
|
|
1693
|
+
snackbar: {
|
|
1694
|
+
position: "Bottom-right. Stacks upward if multiple queued.",
|
|
1695
|
+
container: {
|
|
1696
|
+
background: "white",
|
|
1697
|
+
radius: "radius.md",
|
|
1698
|
+
elevation: "elevation.md",
|
|
1699
|
+
border: "1px solid neutral.warm[85]",
|
|
1700
|
+
width: "320px-480px"
|
|
1701
|
+
},
|
|
1702
|
+
variants: {
|
|
1703
|
+
default: {
|
|
1704
|
+
icon: "none or neutral info icon"
|
|
1705
|
+
},
|
|
1706
|
+
success: {
|
|
1707
|
+
icon: "green check-circle, green.base"
|
|
1708
|
+
},
|
|
1709
|
+
error: {
|
|
1710
|
+
icon: "red error-circle, red.base"
|
|
1711
|
+
},
|
|
1712
|
+
warning: {
|
|
1713
|
+
icon: "orange warning-triangle, orange.base"
|
|
1714
|
+
}
|
|
1715
|
+
},
|
|
1716
|
+
sizes: {
|
|
1717
|
+
compact: "Single line: icon + title + optional action + dismiss",
|
|
1718
|
+
expanded: "Icon + title + body text + optional action + dismiss"
|
|
1719
|
+
},
|
|
1720
|
+
content: {
|
|
1721
|
+
title: "Inter SemiBold (600), font.size.sm, neutral.warm[10]. Required.",
|
|
1722
|
+
body: "Inter Regular (400), font.size.sm, neutral.warm[30]. Optional.",
|
|
1723
|
+
action: "One maximum. Right-aligned text link, primary.purple.base. Style: Open / Undo / View.",
|
|
1724
|
+
dismiss: "x ghost icon button, top-right. Always present."
|
|
1725
|
+
},
|
|
1726
|
+
autoDismiss: "Default/Success: 4 seconds. Error/Warning: manual dismiss only.",
|
|
1727
|
+
background: "Always white. Never colored backgrounds \u2014 icon carries semantic meaning.",
|
|
1728
|
+
persistence: "Not for persistent messages. Use top-of-content-area banner for those."
|
|
1729
|
+
},
|
|
1730
|
+
tooltip: {
|
|
1731
|
+
variants: {
|
|
1732
|
+
dark: {
|
|
1733
|
+
background: "neutral.warm[-70]",
|
|
1734
|
+
border: "none",
|
|
1735
|
+
text: "white"
|
|
1736
|
+
},
|
|
1737
|
+
light: {
|
|
1738
|
+
background: "white",
|
|
1739
|
+
border: "1px solid neutral.warm[85]",
|
|
1740
|
+
text: "neutral.warm[10]"
|
|
1741
|
+
}
|
|
1742
|
+
},
|
|
1743
|
+
shared: {
|
|
1744
|
+
radius: "radius.sm",
|
|
1745
|
+
elevation: "elevation.sm",
|
|
1746
|
+
padding: "spacing.1 spacing.2",
|
|
1747
|
+
maxWidth: "200px",
|
|
1748
|
+
font: "Inter Regular (400), font.size.xs"
|
|
1749
|
+
},
|
|
1750
|
+
arrow: "6px triangle pointing toward trigger. Matches tooltip background. 4 directions + alignment variants.",
|
|
1751
|
+
trigger: "Hover or focus. 300ms appear delay. Immediate dismiss on mouse-out.",
|
|
1752
|
+
usage: {
|
|
1753
|
+
dark: "Default for icon-only triggers (sidebar icons, action buttons).",
|
|
1754
|
+
light: "Longer descriptive text.",
|
|
1755
|
+
restriction: "Supplementary labels only. Never for critical task information. Never interactive elements inside \u2014 use hover card instead."
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
hoverCard: {
|
|
1759
|
+
trigger: "Hover over element (table cell, username, tag). 400ms delay.",
|
|
1760
|
+
container: {
|
|
1761
|
+
background: "white",
|
|
1762
|
+
radius: "radius.lg",
|
|
1763
|
+
elevation: "elevation.md",
|
|
1764
|
+
border: "1px solid neutral.warm[85]",
|
|
1765
|
+
width: "220px-320px"
|
|
1766
|
+
},
|
|
1767
|
+
header: "Title: Inter SemiBold (600), font.size.sm. Optional meatball menu icon button on right.",
|
|
1768
|
+
body: "Inter Regular (400), font.size.sm, neutral.warm[20]. Short text, key-value pairs, or small list.",
|
|
1769
|
+
footer: "None. Hover cards are read-only. Use popup for actions.",
|
|
1770
|
+
arrow: "Optional. Use when card needs visual connection to trigger in dense layouts.",
|
|
1771
|
+
dismiss: "On mouse-out (no delay) or when focus leaves."
|
|
1772
|
+
},
|
|
1773
|
+
commentThread: {
|
|
1774
|
+
input: {
|
|
1775
|
+
placeholder: "Enter your comment here.",
|
|
1776
|
+
sendButton: "Icon button, primary.purple.base bg, white arrow icon, trailing. Active only when input non-empty.",
|
|
1777
|
+
sendButtonDisabled: "Muted purple when empty."
|
|
1778
|
+
},
|
|
1779
|
+
postedComment: {
|
|
1780
|
+
avatar: "User initials, primary.purple.base background, white text.",
|
|
1781
|
+
header: "Display name (SemiBold) + timestamp (neutral.warm[50], font.size.xs) on one line.",
|
|
1782
|
+
body: "Inter Regular (400), font.size.sm."
|
|
1783
|
+
},
|
|
1784
|
+
actions: "Thumbs-up + count, reply link. neutral.warm[50] default, primary.purple.base on hover.",
|
|
1785
|
+
nesting: "Max 2 levels. Replies: left-indent with 2px solid neutral.warm[85] left border.",
|
|
1786
|
+
highlighted: {
|
|
1787
|
+
background: "primary.purple[95]",
|
|
1788
|
+
border: "1px dashed primary.purple.base",
|
|
1789
|
+
radius: "radius.md"
|
|
1790
|
+
}
|
|
1791
|
+
},
|
|
1792
|
+
chartColors: {
|
|
1793
|
+
sequence: [
|
|
1794
|
+
{
|
|
1795
|
+
index: 1,
|
|
1796
|
+
color: "secondary.purple (tint)",
|
|
1797
|
+
use: "First data series"
|
|
1798
|
+
},
|
|
1799
|
+
{
|
|
1800
|
+
index: 2,
|
|
1801
|
+
color: "orange.base",
|
|
1802
|
+
use: "Second data series"
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
index: 3,
|
|
1806
|
+
color: "pink.base",
|
|
1807
|
+
use: "Third data series"
|
|
1808
|
+
},
|
|
1809
|
+
{
|
|
1810
|
+
index: 4,
|
|
1811
|
+
color: "cyan.base",
|
|
1812
|
+
use: "Fourth data series"
|
|
1813
|
+
},
|
|
1814
|
+
{
|
|
1815
|
+
index: 5,
|
|
1816
|
+
color: "blue.base",
|
|
1817
|
+
use: "Fifth data series"
|
|
1818
|
+
},
|
|
1819
|
+
{
|
|
1820
|
+
index: 6,
|
|
1821
|
+
color: "neutral.warm.base",
|
|
1822
|
+
use: "Sixth data series"
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
index: 7,
|
|
1826
|
+
color: "green.base",
|
|
1827
|
+
use: "Seventh data series"
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
index: 8,
|
|
1831
|
+
color: "neutral.orange",
|
|
1832
|
+
use: "Eighth data series"
|
|
1833
|
+
},
|
|
1834
|
+
{
|
|
1835
|
+
index: 9,
|
|
1836
|
+
color: "red.base",
|
|
1837
|
+
use: "Ninth data series"
|
|
1838
|
+
}
|
|
1839
|
+
],
|
|
1840
|
+
rules: [
|
|
1841
|
+
"Apply colors in sequence. Do not skip or reorder.",
|
|
1842
|
+
"Each color has a chart tint (~20% lightened) and an offset variant for comparison charts.",
|
|
1843
|
+
"Chart colors for data visualisation only. Never repurpose for UI status.",
|
|
1844
|
+
"More than 9 series: wrap palette at 0.6x opacity. Never invent new colors.",
|
|
1845
|
+
"Minimum 3:1 contrast between adjacent chart segments."
|
|
1846
|
+
]
|
|
1847
|
+
},
|
|
1848
|
+
cliColors: {
|
|
1849
|
+
sqlCLI: {
|
|
1850
|
+
keywords: "secondary.purple[-20]",
|
|
1851
|
+
comments: "orange[-20]",
|
|
1852
|
+
strings: "pink[-30]",
|
|
1853
|
+
numeralsDatetime: "cyan[-20]",
|
|
1854
|
+
atoms: "blue[-20]",
|
|
1855
|
+
generic: "neutral[-40]",
|
|
1856
|
+
identifiers: "green[-30]",
|
|
1857
|
+
brackets: "neutral.orange[-20]",
|
|
1858
|
+
errorText: "red[-40]"
|
|
1859
|
+
},
|
|
1860
|
+
logCLI: {
|
|
1861
|
+
background: "neutral[-70]",
|
|
1862
|
+
debug: "cyan[40]",
|
|
1863
|
+
warning: "orange[50]",
|
|
1864
|
+
error: "pink[90]",
|
|
1865
|
+
critical: "red[0]",
|
|
1866
|
+
info: "green[50]",
|
|
1867
|
+
regularText: "neutral[95]"
|
|
1868
|
+
}
|
|
1869
|
+
}
|
|
1323
1870
|
},
|
|
1324
1871
|
spacing: {
|
|
1325
1872
|
card_padding: "Internal card padding uses spacing.4 (1rem) on all sides.",
|
|
@@ -1394,6 +1941,7 @@ var radiusFull = "9999px";
|
|
|
1394
1941
|
// src/rules.ts
|
|
1395
1942
|
var raw2 = require_pollymorph();
|
|
1396
1943
|
var rules = raw2.rules;
|
|
1944
|
+
var componentRules = raw2.rules.components;
|
|
1397
1945
|
var rulePrimaryPurple = raw2.rules.color.brand.primary_purple;
|
|
1398
1946
|
var rulePrimaryOrange = raw2.rules.color.brand.primary_orange;
|
|
1399
1947
|
var ruleNonBrandAccents = raw2.rules.color.brand.non_brand_accents;
|
|
@@ -1414,11 +1962,21 @@ var ruleFontMixing = raw2.rules.typography.font_families.mixing_rule;
|
|
|
1414
1962
|
var rulePageStructure = raw2.rules.layout.page_structure;
|
|
1415
1963
|
var ruleCards = raw2.rules.layout.cards;
|
|
1416
1964
|
var ruleTables = raw2.rules.layout.tables;
|
|
1417
|
-
var
|
|
1418
|
-
var
|
|
1965
|
+
var ruleButton = raw2.rules.components.button;
|
|
1966
|
+
var ruleTag = raw2.rules.components.tag;
|
|
1967
|
+
var ruleTextInput = raw2.rules.components.textInput;
|
|
1968
|
+
var ruleSelection = raw2.rules.components.selectionControl;
|
|
1969
|
+
var ruleTable = raw2.rules.components.table;
|
|
1419
1970
|
var ruleTabs = raw2.rules.components.tabs;
|
|
1420
|
-
var
|
|
1421
|
-
var
|
|
1971
|
+
var ruleSidebarNav = raw2.rules.components.sidebarNav;
|
|
1972
|
+
var ruleBreadcrumb = raw2.rules.components.breadcrumb;
|
|
1973
|
+
var ruleModal = raw2.rules.components.modal;
|
|
1974
|
+
var ruleSnackbar = raw2.rules.components.snackbar;
|
|
1975
|
+
var ruleTooltip = raw2.rules.components.tooltip;
|
|
1976
|
+
var ruleHoverCard = raw2.rules.components.hoverCard;
|
|
1977
|
+
var ruleCommentThread = raw2.rules.components.commentThread;
|
|
1978
|
+
var ruleChartColors = raw2.rules.components.chartColors;
|
|
1979
|
+
var ruleCLIColors = raw2.rules.components.cliColors;
|
|
1422
1980
|
|
|
1423
1981
|
// src/icons.ts
|
|
1424
1982
|
var icons = [
|
|
@@ -2579,6 +3137,7 @@ export {
|
|
|
2579
3137
|
colorSidebarStroke,
|
|
2580
3138
|
colorWhite,
|
|
2581
3139
|
colorYellow,
|
|
3140
|
+
componentRules,
|
|
2582
3141
|
src_default as default,
|
|
2583
3142
|
fontFamilyBase,
|
|
2584
3143
|
fontFamilyGrotesk,
|
|
@@ -2603,31 +3162,41 @@ export {
|
|
|
2603
3162
|
radiusNone,
|
|
2604
3163
|
radiusSm,
|
|
2605
3164
|
radiusXl,
|
|
2606
|
-
|
|
2607
|
-
|
|
3165
|
+
ruleBreadcrumb,
|
|
3166
|
+
ruleButton,
|
|
3167
|
+
ruleCLIColors,
|
|
2608
3168
|
ruleCardBg,
|
|
2609
3169
|
ruleCards,
|
|
3170
|
+
ruleChartColors,
|
|
3171
|
+
ruleCommentThread,
|
|
2610
3172
|
ruleFontInter,
|
|
2611
3173
|
ruleFontMixing,
|
|
2612
3174
|
ruleFontMono,
|
|
2613
3175
|
ruleFontSpaceGrotesk,
|
|
3176
|
+
ruleHoverCard,
|
|
2614
3177
|
ruleInteractiveLinks,
|
|
3178
|
+
ruleModal,
|
|
2615
3179
|
ruleMutedText,
|
|
2616
3180
|
ruleNonBrandAccents,
|
|
2617
3181
|
rulePageStructure,
|
|
2618
|
-
rulePagination,
|
|
2619
3182
|
rulePlatformSurface,
|
|
2620
3183
|
rulePrimaryOrange,
|
|
2621
3184
|
rulePrimaryPurple,
|
|
2622
|
-
|
|
3185
|
+
ruleSelection,
|
|
2623
3186
|
ruleSidebarBg,
|
|
3187
|
+
ruleSidebarNav,
|
|
2624
3188
|
ruleSidebarStroke,
|
|
3189
|
+
ruleSnackbar,
|
|
2625
3190
|
ruleStatusBlue,
|
|
2626
3191
|
ruleStatusGreen,
|
|
2627
3192
|
ruleStatusRed,
|
|
2628
3193
|
ruleStatusYellow,
|
|
3194
|
+
ruleTable,
|
|
2629
3195
|
ruleTables,
|
|
2630
3196
|
ruleTabs,
|
|
3197
|
+
ruleTag,
|
|
3198
|
+
ruleTextInput,
|
|
3199
|
+
ruleTooltip,
|
|
2631
3200
|
rules,
|
|
2632
3201
|
spacing0,
|
|
2633
3202
|
spacing1,
|