@x12i/tokens 1.0.0 → 1.1.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 @@
1
+ {"version":3,"sources":["../src/generated/base.ts","../src/generated/component.ts","../src/generated/density-comfortable.ts","../src/generated/density-compact.ts","../src/generated/density-default.ts","../src/generated/theme-dark.ts","../src/generated/theme-hc.ts","../src/generated/theme-light.ts","../src/index.ts"],"names":[],"mappings":";AACO,IAAM,IAAA,GAAO;AAAA,EAClB,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,GAAA,EAAK,KAAA;AAAA,MACL,GAAA,EAAK,KAAA;AAAA,MACL,SAAA,EAAW,KAAA;AAAA,MACX,UAAA,EAAY,KAAA;AAAA,MACZ,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,aAAA,EAAe;AAAA,MACb,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK;AAAA,OACP;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK;AAAA;AACP,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA,IACA,WAAA,EAAa;AAAA,MACX,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK;AAAA;AACP,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ,kIAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAU;AAAA,MACR,SAAA,EAAW,GAAA;AAAA,MACX,QAAA,EAAU,GAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,KAAA;AAAA,IACX,OAAA,EAAS,KAAA;AAAA,IACT,SAAA,EAAW,MAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,MAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,SAAA,EAAW;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc,MAAA;AAAA,MACd,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,MAAA;AAAA,IACX,MAAA,EAAQ,OAAA;AAAA,IACR,MAAA,EAAQ,OAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,4BAAA;AAAA,IACZ,OAAA,EAAS,0BAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,GAAA,EAAK;AAAA,IACH,MAAA,EAAQ,CAAA;AAAA,IACR,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,GAAA;AAAA,IACX,OAAA,EAAS,GAAA;AAAA,IACT,OAAA,EAAS,GAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACb;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,OAAA;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX;;;AC9SO,IAAM,SAAA,GAAY;AAAA,EACvB,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,KAAA;AAAA,MACN,IAAA,EAAM,KAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO;AAAA,MACL,QAAA,EAAU;AAAA;AACZ;AAEJ;;;AC7BO,IAAM,kBAAA,GAAqB;AAAA,EAChC,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW;AAAA,MACT,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO;AAAA;AACT;AAEJ;;;ACtBO,IAAM,cAAA,GAAiB;AAAA,EAC5B,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW;AAAA,MACT,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,KAAA;AAAA,QACN,IAAA,EAAM,KAAA;AAAA,QACN,IAAA,EAAM,KAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO;AAAA;AACT;AAEJ;;;ACtBO,IAAM,cAAA,GAAiB;AAAA,EAC5B,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW;AAAA,MACT,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,KAAA;AAAA,QACN,IAAA,EAAM,KAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO;AAAA;AACT;AAEJ;;;ACtBO,IAAM,IAAA,GAAO;AAAA,EAClB,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,SAAA,EAAW,SAAA;AAAA,MACX,WAAA,EAAa,SAAA;AAAA,MACb,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,SAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,WAAA,EAAa,SAAA;AAAA,MACb,aAAA,EAAe;AAAA,QACb,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK;AAAA,OACP;AAAA,MACA,MAAA,EAAQ,SAAA;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,2BAAA;AAAA,IACV,SAAA,EAAW,4BAAA;AAAA,IACX,OAAA,EAAS,6BAAA;AAAA,IACT,OAAA,EAAS;AAAA;AAEb;;;ACjFO,IAAM,EAAA,GAAK;AAAA,EAChB,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,SAAA,EAAW,SAAA;AAAA,MACX,WAAA,EAAa,SAAA;AAAA,MACb,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,SAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,WAAA,EAAa,SAAA;AAAA,MACb,aAAA,EAAe;AAAA,QACb,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK;AAAA,OACP;AAAA,MACA,MAAA,EAAQ,SAAA;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,2BAAA;AAAA,IACV,SAAA,EAAW,2BAAA;AAAA,IACX,OAAA,EAAS,2BAAA;AAAA,IACT,OAAA,EAAS;AAAA;AAEb;;;ACjFO,IAAM,KAAA,GAAQ;AAAA,EACnB,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,SAAA,EAAW,SAAA;AAAA,MACX,WAAA,EAAa,SAAA;AAAA,MACb,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,SAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,SAAA,EAAW;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,YAAA,EAAc,SAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,SAAA;AAAA,MACT,WAAA,EAAa,SAAA;AAAA,MACb,aAAA,EAAe;AAAA,QACb,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK,SAAA;AAAA,QACL,GAAA,EAAK;AAAA,OACP;AAAA,MACA,MAAA,EAAQ,SAAA;AAAA,MACR,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,2BAAA;AAAA,IACV,SAAA,EAAW,6BAAA;AAAA,IACX,OAAA,EAAS,8BAAA;AAAA,IACT,OAAA,EAAS;AAAA;AAEb;;;AC7DO,IAAM,cAAA,GAAiB;AAGvB,IAAM,eAAA,GAAkB;AAGxB,IAAM,iBAAA,GAAoB;AAG1B,IAAM,iBAAA,GAAoB;AAG1B,IAAM,mBAAA,GAAsB;AAE5B,IAAM,UAAA,GAAa,CAAC,OAAA,EAAS,MAAA,EAAQ,IAAI;AACzC,IAAM,YAAA,GAAe,CAAC,SAAA,EAAW,SAAA,EAAW,aAAa;AAMzD,IAAM,MAAA,GAAS,EAAE,KAAA,EAAO,IAAA,EAAM,EAAA;AAG9B,IAAM,SAAA,GAAY;AAAA,EACvB,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,WAAA,EAAa;AACf;AAuBA,IAAM,OAAA,GAAU,CAAC,OAAA,KACf,OAAA,CAAQ,QAAQ,oBAAA,EAAsB,OAAO,EAAE,WAAA,EAAY;AAGtD,SAAS,WAAW,IAAA,EAAyB;AAClD,EAAA,OAAO,CAAA,EAAA,EAAK,cAAc,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AACtE;AAGO,SAAS,MAAA,CAAO,MAAiB,QAAA,EAA2B;AACjE,EAAA,MAAM,IAAA,GAAO,WAAW,IAAI,CAAA;AAC5B,EAAA,OAAO,QAAA,KAAa,SAAY,CAAA,IAAA,EAAO,IAAI,MAAM,CAAA,IAAA,EAAO,IAAI,KAAK,QAAQ,CAAA,CAAA,CAAA;AAC3E","file":"chunk-W3FHW2SE.js","sourcesContent":["// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const base = {\n \"border\": {\n \"width\": {\n \"1\": \"1px\",\n \"2\": \"2px\",\n \"default\": \"1px\",\n \"emphasis\": \"2px\",\n \"focus\": \"2px\"\n }\n },\n \"color\": {\n \"black\": \"#000000\",\n \"white\": \"#ffffff\",\n \"neutral\": {\n \"1\": \"#07090e\",\n \"2\": \"#0f1217\",\n \"3\": \"#181b20\",\n \"4\": \"#24262c\",\n \"5\": \"#32353c\",\n \"6\": \"#44484e\",\n \"7\": \"#5d6067\",\n \"8\": \"#777a82\",\n \"9\": \"#92959d\",\n \"10\": \"#b0b4bc\",\n \"11\": \"#e7ebf4\",\n \"12\": \"#f8faff\"\n },\n \"accent\": {\n \"1\": \"#0a0c25\",\n \"2\": \"#12163a\",\n \"3\": \"#1d2059\",\n \"4\": \"#282d74\",\n \"5\": \"#373e94\",\n \"6\": \"#444cb2\",\n \"7\": \"#5057dc\",\n \"8\": \"#5d67ee\",\n \"9\": \"#6e7cfd\",\n \"10\": \"#8b9bff\",\n \"11\": \"#e1e7ff\",\n \"12\": \"#f4f6ff\"\n },\n \"success\": {\n \"1\": \"#011408\",\n \"2\": \"#00220f\",\n \"3\": \"#003219\",\n \"4\": \"#004424\",\n \"5\": \"#005a31\",\n \"6\": \"#006d3c\",\n \"7\": \"#008148\",\n \"8\": \"#009253\",\n \"9\": \"#19a661\",\n \"10\": \"#59bc81\",\n \"11\": \"#d0f2da\",\n \"12\": \"#effaf2\"\n },\n \"warning\": {\n \"1\": \"#180d00\",\n \"2\": \"#271700\",\n \"3\": \"#3a2400\",\n \"4\": \"#4d3200\",\n \"5\": \"#654200\",\n \"6\": \"#7b5100\",\n \"7\": \"#916100\",\n \"8\": \"#a46e00\",\n \"9\": \"#bb7e00\",\n \"10\": \"#d09945\",\n \"11\": \"#fae4c7\",\n \"12\": \"#fdf6ec\"\n },\n \"danger\": {\n \"1\": \"#210505\",\n \"2\": \"#340909\",\n \"3\": \"#4f0a0d\",\n \"4\": \"#691214\",\n \"5\": \"#861d1f\",\n \"6\": \"#a12628\",\n \"7\": \"#c51d28\",\n \"8\": \"#d73337\",\n \"9\": \"#e9504d\",\n \"10\": \"#f97770\",\n \"11\": \"#ffdfdc\",\n \"12\": \"#fff4f3\"\n },\n \"info\": {\n \"1\": \"#00121d\",\n \"2\": \"#001e2d\",\n \"3\": \"#002d42\",\n \"4\": \"#003d58\",\n \"5\": \"#005172\",\n \"6\": \"#00628a\",\n \"7\": \"#0075a3\",\n \"8\": \"#0084b8\",\n \"9\": \"#0097d2\",\n \"10\": \"#4cb0e5\",\n \"11\": \"#d0edff\",\n \"12\": \"#eef9ff\"\n },\n \"categorical\": {\n \"light\": {\n \"1\": \"#2971c6\",\n \"2\": \"#ac5700\",\n \"3\": \"#008758\",\n \"4\": \"#a8488d\",\n \"5\": \"#867000\",\n \"6\": \"#00818c\",\n \"7\": \"#b94642\",\n \"8\": \"#8059bb\"\n },\n \"dark\": {\n \"1\": \"#70adfb\",\n \"2\": \"#e99355\",\n \"3\": \"#53c48e\",\n \"4\": \"#e189c5\",\n \"5\": \"#c5a93b\",\n \"6\": \"#00c1d0\",\n \"7\": \"#f28881\",\n \"8\": \"#b897f0\"\n }\n },\n \"sequential\": {\n \"1\": \"#e9f3ff\",\n \"2\": \"#bcd9ff\",\n \"3\": \"#8ebfff\",\n \"4\": \"#5ea4fd\",\n \"5\": \"#478ade\",\n \"6\": \"#3f72b2\",\n \"7\": \"#3f5b7f\",\n \"8\": \"#384453\",\n \"9\": \"#242f3d\"\n },\n \"diverging\": {\n \"1\": \"#2a6cba\",\n \"2\": \"#5e8dc9\",\n \"3\": \"#8dadd7\",\n \"4\": \"#bdcee3\",\n \"5\": \"#eeeeee\",\n \"6\": \"#dfc7b7\",\n \"7\": \"#cea081\",\n \"8\": \"#bb7949\",\n \"9\": \"#a45300\"\n }\n },\n \"font\": {\n \"family\": {\n \"sans\": \"Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans Hebrew', 'Noto Sans Arabic', 'Helvetica Neue', Arial, sans-serif\",\n \"mono\": \"'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace\"\n },\n \"weight\": {\n \"regular\": 400,\n \"medium\": 500,\n \"semibold\": 600\n },\n \"size\": {\n \"12\": \"12px\",\n \"13\": \"13px\",\n \"14\": \"14px\",\n \"16\": \"16px\",\n \"20\": \"20px\",\n \"24\": \"24px\",\n \"30\": \"30px\",\n \"48\": \"48px\"\n },\n \"lineHeight\": {\n \"16\": \"16px\",\n \"20\": \"20px\",\n \"22\": \"22px\",\n \"24\": \"24px\",\n \"28\": \"28px\",\n \"32\": \"32px\",\n \"38\": \"38px\",\n \"56\": \"56px\"\n }\n },\n \"radius\": {\n \"2\": \"2px\",\n \"4\": \"4px\",\n \"6\": \"6px\",\n \"8\": \"8px\",\n \"12\": \"12px\",\n \"16\": \"16px\",\n \"full\": \"9999px\",\n \"control\": \"6px\",\n \"panel\": \"8px\",\n \"overlay\": \"12px\",\n \"pill\": \"9999px\"\n },\n \"size\": {\n \"12\": \"12px\",\n \"16\": \"16px\",\n \"20\": \"20px\",\n \"24\": \"24px\",\n \"28\": \"28px\",\n \"32\": \"32px\",\n \"40\": \"40px\",\n \"44\": \"44px\",\n \"48\": \"48px\",\n \"56\": \"56px\",\n \"icon\": {\n \"xs\": \"12px\",\n \"sm\": \"16px\",\n \"md\": \"20px\",\n \"lg\": \"24px\"\n },\n \"target\": {\n \"min\": \"24px\",\n \"touch\": \"44px\"\n }\n },\n \"space\": {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"2\": \"8px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"0-5\": \"2px\"\n },\n \"text\": {\n \"display\": {\n \"size\": \"48px\",\n \"lineHeight\": \"56px\",\n \"weight\": 600\n },\n \"h1\": {\n \"size\": \"30px\",\n \"lineHeight\": \"38px\",\n \"weight\": 600\n },\n \"h2\": {\n \"size\": \"24px\",\n \"lineHeight\": \"32px\",\n \"weight\": 600\n },\n \"h3\": {\n \"size\": \"20px\",\n \"lineHeight\": \"28px\",\n \"weight\": 600\n },\n \"h4\": {\n \"size\": \"16px\",\n \"lineHeight\": \"24px\",\n \"weight\": 600\n },\n \"body\": {\n \"size\": \"14px\",\n \"lineHeight\": \"22px\",\n \"weight\": 400\n },\n \"label\": {\n \"size\": \"13px\",\n \"lineHeight\": \"20px\",\n \"weight\": 500\n },\n \"caption\": {\n \"size\": \"12px\",\n \"lineHeight\": \"16px\",\n \"weight\": 400\n },\n \"code\": {\n \"size\": \"13px\",\n \"lineHeight\": \"20px\",\n \"weight\": 400\n }\n },\n \"icon\": {\n \"strokeWidth\": 1.5\n },\n \"duration\": {\n \"instant\": \"90ms\",\n \"fast\": \"150ms\",\n \"base\": \"240ms\",\n \"slow\": \"400ms\"\n },\n \"easing\": {\n \"standard\": \"cubic-bezier(0.2, 0, 0, 1)\",\n \"enter\": \"cubic-bezier(0, 0, 0, 1)\",\n \"exit\": \"cubic-bezier(0.3, 0, 1, 1)\"\n },\n \"z\": {\n \"base\": 0,\n \"sticky\": 10,\n \"dropdown\": 100,\n \"overlay\": 200,\n \"modal\": 300,\n \"toast\": 400,\n \"tooltip\": 500\n },\n \"breakpoint\": {\n \"xs\": \"480px\",\n \"sm\": \"640px\",\n \"md\": \"768px\",\n \"lg\": \"1024px\",\n \"xl\": \"1280px\",\n \"2xl\": \"1536px\"\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const component = {\n \"button\": {\n \"height\": {\n \"xs\": \"24px\",\n \"sm\": \"28px\",\n \"md\": \"32px\",\n \"lg\": \"40px\",\n \"xl\": \"48px\"\n },\n \"paddingInline\": {\n \"xs\": \"8px\",\n \"sm\": \"8px\",\n \"md\": \"12px\",\n \"lg\": \"16px\",\n \"xl\": \"20px\"\n },\n \"gap\": \"8px\"\n },\n \"badge\": {\n \"height\": {\n \"sm\": \"16px\",\n \"md\": \"20px\"\n }\n },\n \"grid\": {\n \"row\": {\n \"height\": \"40px\"\n }\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const densityComfortable = {\n \"size\": {\n \"control\": {\n \"xs\": \"28px\",\n \"sm\": \"32px\",\n \"md\": \"40px\",\n \"lg\": \"48px\",\n \"xl\": \"56px\"\n }\n },\n \"space\": {\n \"control\": {\n \"inline\": {\n \"xs\": \"12px\",\n \"sm\": \"12px\",\n \"md\": \"16px\",\n \"lg\": \"20px\",\n \"xl\": \"24px\"\n },\n \"gap\": \"12px\"\n }\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const densityCompact = {\n \"size\": {\n \"control\": {\n \"xs\": \"20px\",\n \"sm\": \"24px\",\n \"md\": \"28px\",\n \"lg\": \"32px\",\n \"xl\": \"40px\"\n }\n },\n \"space\": {\n \"control\": {\n \"inline\": {\n \"xs\": \"4px\",\n \"sm\": \"4px\",\n \"md\": \"8px\",\n \"lg\": \"12px\",\n \"xl\": \"16px\"\n },\n \"gap\": \"4px\"\n }\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const densityDefault = {\n \"size\": {\n \"control\": {\n \"xs\": \"24px\",\n \"sm\": \"28px\",\n \"md\": \"32px\",\n \"lg\": \"40px\",\n \"xl\": \"48px\"\n }\n },\n \"space\": {\n \"control\": {\n \"inline\": {\n \"xs\": \"8px\",\n \"sm\": \"8px\",\n \"md\": \"12px\",\n \"lg\": \"16px\",\n \"xl\": \"20px\"\n },\n \"gap\": \"8px\"\n }\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const dark = {\n \"color\": {\n \"accent\": {\n \"default\": \"#5d67ee\",\n \"hover\": \"#5057dc\",\n \"active\": \"#444cb2\",\n \"subtle\": \"#1d2059\",\n \"on-accent\": \"#ffffff\"\n },\n \"bg\": {\n \"canvas\": \"#07090e\",\n \"surface\": \"#0f1217\",\n \"raised\": \"#181b20\",\n \"overlay\": \"#24262c\",\n \"inverse\": \"#f8faff\"\n },\n \"border\": {\n \"subtle\": \"#24262c\",\n \"default\": \"#777a82\",\n \"strong\": \"#92959d\",\n \"focus\": \"#6e7cfd\"\n },\n \"text\": {\n \"primary\": \"#f8faff\",\n \"secondary\": \"#b0b4bc\",\n \"tertiary\": \"#92959d\",\n \"disabled\": \"#44484e\",\n \"inverse\": \"#07090e\",\n \"link\": \"#8b9bff\"\n },\n \"status\": {\n \"success\": {\n \"background\": \"#00220f\",\n \"foreground\": \"#59bc81\",\n \"border\": \"#006d3c\"\n },\n \"warning\": {\n \"background\": \"#271700\",\n \"foreground\": \"#d09945\",\n \"border\": \"#7b5100\"\n },\n \"danger\": {\n \"background\": \"#340909\",\n \"foreground\": \"#f97770\",\n \"border\": \"#a12628\"\n },\n \"info\": {\n \"background\": \"#001e2d\",\n \"foreground\": \"#4cb0e5\",\n \"border\": \"#00628a\"\n }\n },\n \"chart\": {\n \"axis\": \"#b0b4bc\",\n \"grid\": \"#24262c\",\n \"muted\": \"#777a82\",\n \"reference\": \"#92959d\",\n \"categorical\": {\n \"1\": \"#70adfb\",\n \"2\": \"#e99355\",\n \"3\": \"#53c48e\",\n \"4\": \"#e189c5\",\n \"5\": \"#c5a93b\",\n \"6\": \"#00c1d0\",\n \"7\": \"#f28881\",\n \"8\": \"#b897f0\"\n },\n \"good\": \"#009253\",\n \"warning\": \"#a46e00\",\n \"critical\": \"#d73337\"\n },\n \"selection\": \"#282d74\",\n \"highlight\": \"#4d3200\",\n \"scrim\": \"rgba(0, 0, 0, 0.7)\"\n },\n \"shadow\": {\n \"raised\": \"0px 0px 0px 1px #ffffff14\",\n \"overlay\": \"0px 8px 24px 0px #00000080\",\n \"modal\": \"0px 16px 48px 0px #000000a6\",\n \"toast\": \"0px 8px 24px 0px #00000080\"\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const hc = {\n \"color\": {\n \"accent\": {\n \"default\": \"#8b9bff\",\n \"hover\": \"#e1e7ff\",\n \"active\": \"#f4f6ff\",\n \"subtle\": \"#0a0c25\",\n \"on-accent\": \"#000000\"\n },\n \"bg\": {\n \"canvas\": \"#000000\",\n \"surface\": \"#000000\",\n \"raised\": \"#07090e\",\n \"overlay\": \"#0f1217\",\n \"inverse\": \"#ffffff\"\n },\n \"border\": {\n \"subtle\": \"#777a82\",\n \"default\": \"#b0b4bc\",\n \"strong\": \"#ffffff\",\n \"focus\": \"#d09945\"\n },\n \"text\": {\n \"primary\": \"#ffffff\",\n \"secondary\": \"#e7ebf4\",\n \"tertiary\": \"#b0b4bc\",\n \"disabled\": \"#777a82\",\n \"inverse\": \"#000000\",\n \"link\": \"#8b9bff\"\n },\n \"status\": {\n \"success\": {\n \"background\": \"#000000\",\n \"foreground\": \"#59bc81\",\n \"border\": \"#59bc81\"\n },\n \"warning\": {\n \"background\": \"#000000\",\n \"foreground\": \"#d09945\",\n \"border\": \"#d09945\"\n },\n \"danger\": {\n \"background\": \"#000000\",\n \"foreground\": \"#f97770\",\n \"border\": \"#f97770\"\n },\n \"info\": {\n \"background\": \"#000000\",\n \"foreground\": \"#4cb0e5\",\n \"border\": \"#4cb0e5\"\n }\n },\n \"chart\": {\n \"axis\": \"#e7ebf4\",\n \"grid\": \"#44484e\",\n \"muted\": \"#92959d\",\n \"reference\": \"#b0b4bc\",\n \"categorical\": {\n \"1\": \"#70adfb\",\n \"2\": \"#e99355\",\n \"3\": \"#53c48e\",\n \"4\": \"#e189c5\",\n \"5\": \"#c5a93b\",\n \"6\": \"#00c1d0\",\n \"7\": \"#f28881\",\n \"8\": \"#b897f0\"\n },\n \"good\": \"#59bc81\",\n \"warning\": \"#d09945\",\n \"critical\": \"#f97770\"\n },\n \"selection\": \"#373e94\",\n \"highlight\": \"#654200\",\n \"scrim\": \"rgba(0, 0, 0, 0.9)\"\n },\n \"shadow\": {\n \"raised\": \"0px 0px 0px 0px #00000000\",\n \"overlay\": \"0px 0px 0px 0px #00000000\",\n \"modal\": \"0px 0px 0px 0px #00000000\",\n \"toast\": \"0px 0px 0px 0px #00000000\"\n }\n} as const;\n","// Do not edit directly. Generated by @x12i/tokens from src/dtcg.\nexport const light = {\n \"color\": {\n \"accent\": {\n \"default\": \"#444cb2\",\n \"hover\": \"#373e94\",\n \"active\": \"#282d74\",\n \"subtle\": \"#e1e7ff\",\n \"on-accent\": \"#ffffff\"\n },\n \"bg\": {\n \"canvas\": \"#f8faff\",\n \"surface\": \"#ffffff\",\n \"raised\": \"#ffffff\",\n \"overlay\": \"#ffffff\",\n \"inverse\": \"#0f1217\"\n },\n \"border\": {\n \"subtle\": \"#e7ebf4\",\n \"default\": \"#777a82\",\n \"strong\": \"#5d6067\",\n \"focus\": \"#444cb2\"\n },\n \"text\": {\n \"primary\": \"#0f1217\",\n \"secondary\": \"#44484e\",\n \"tertiary\": \"#5d6067\",\n \"disabled\": \"#92959d\",\n \"inverse\": \"#f8faff\",\n \"link\": \"#373e94\"\n },\n \"status\": {\n \"success\": {\n \"background\": \"#d0f2da\",\n \"foreground\": \"#003219\",\n \"border\": \"#009253\"\n },\n \"warning\": {\n \"background\": \"#fae4c7\",\n \"foreground\": \"#3a2400\",\n \"border\": \"#a46e00\"\n },\n \"danger\": {\n \"background\": \"#ffdfdc\",\n \"foreground\": \"#4f0a0d\",\n \"border\": \"#d73337\"\n },\n \"info\": {\n \"background\": \"#d0edff\",\n \"foreground\": \"#002d42\",\n \"border\": \"#0084b8\"\n }\n },\n \"chart\": {\n \"axis\": \"#44484e\",\n \"grid\": \"#e7ebf4\",\n \"muted\": \"#777a82\",\n \"reference\": \"#5d6067\",\n \"categorical\": {\n \"1\": \"#2971c6\",\n \"2\": \"#ac5700\",\n \"3\": \"#008758\",\n \"4\": \"#a8488d\",\n \"5\": \"#867000\",\n \"6\": \"#00818c\",\n \"7\": \"#b94642\",\n \"8\": \"#8059bb\"\n },\n \"good\": \"#006d3c\",\n \"warning\": \"#7b5100\",\n \"critical\": \"#a12628\"\n },\n \"selection\": \"#8b9bff\",\n \"highlight\": \"#d09945\",\n \"scrim\": \"rgba(7, 9, 14, 0.5)\"\n },\n \"shadow\": {\n \"raised\": \"0px 1px 3px 0px #0f12171a\",\n \"overlay\": \"0px 6px 16px -2px #0f121724\",\n \"modal\": \"0px 16px 40px -4px #0f12172e\",\n \"toast\": \"0px 8px 24px -4px #0f121729\"\n }\n} as const;\n","import { base } from \"./generated/base\";\r\nimport { component } from \"./generated/component\";\r\nimport { densityComfortable } from \"./generated/density-comfortable\";\r\nimport { densityCompact } from \"./generated/density-compact\";\r\nimport { densityDefault } from \"./generated/density-default\";\r\nimport { dark } from \"./generated/theme-dark\";\r\nimport { hc } from \"./generated/theme-hc\";\r\nimport { light } from \"./generated/theme-light\";\r\n\r\nexport {\r\n base,\r\n component,\r\n dark,\r\n densityComfortable,\r\n densityCompact,\r\n densityDefault,\r\n hc,\r\n light,\r\n};\r\n\r\n/** Prefix of every CSS custom property the kit emits. */\r\nexport const CSS_VAR_PREFIX = \"kit\";\r\n\r\n/** Attribute that selects a theme on the root or any subtree. */\r\nexport const THEME_ATTRIBUTE = \"data-theme\";\r\n\r\n/** Attribute that selects a density on the root or any subtree. */\r\nexport const DENSITY_ATTRIBUTE = \"data-density\";\r\n\r\n/** localStorage key where the user's theme choice persists. */\r\nexport const THEME_STORAGE_KEY = \"kit-theme\";\r\n\r\n/** localStorage key where the user's density choice persists. */\r\nexport const DENSITY_STORAGE_KEY = \"kit-density\";\r\n\r\nexport const themeNames = [\"light\", \"dark\", \"hc\"] as const;\r\nexport const densityNames = [\"compact\", \"default\", \"comfortable\"] as const;\r\n\r\nexport type ThemeName = (typeof themeNames)[number];\r\nexport type DensityName = (typeof densityNames)[number];\r\n\r\n/** Raw token values per theme, for charts and canvases that need real colors. */\r\nexport const themes = { light, dark, hc } as const;\r\n\r\n/** Raw token values per density. */\r\nexport const densities = {\r\n compact: densityCompact,\r\n default: densityDefault,\r\n comfortable: densityComfortable,\r\n} as const;\r\n\r\ntype Leaves<T, Path extends string = \"\"> = T extends string | number\r\n ? Path\r\n : {\r\n [K in keyof T & string]: Leaves<\r\n T[K],\r\n Path extends \"\" ? K : `${Path}.${K}`\r\n >;\r\n }[keyof T & string];\r\n\r\nexport type BaseTokenPath = Leaves<typeof base>;\r\nexport type ComponentTokenPath = Leaves<typeof component>;\r\nexport type ThemeTokenPath = Leaves<typeof light>;\r\nexport type DensityTokenPath = Leaves<typeof densityDefault>;\r\n\r\n/** Dot path of any token, for example `color.bg.surface`. */\r\nexport type TokenPath =\r\n | BaseTokenPath\r\n | ComponentTokenPath\r\n | ThemeTokenPath\r\n | DensityTokenPath;\r\n\r\nconst toKebab = (segment: string) =>\r\n segment.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\r\n\r\n/** The CSS custom property name for a token path: `color.bg.surface` becomes `--kit-color-bg-surface`. */\r\nexport function cssVarName(path: TokenPath): string {\r\n return `--${CSS_VAR_PREFIX}-${path.split(\".\").map(toKebab).join(\"-\")}`;\r\n}\r\n\r\n/** A `var()` reference for a token path, for inline styles and canvas code. */\r\nexport function cssVar(path: TokenPath, fallback?: string): string {\r\n const name = cssVarName(path);\r\n return fallback === undefined ? `var(${name})` : `var(${name}, ${fallback})`;\r\n}\r\n"]}
@@ -0,0 +1,21 @@
1
+ import { ThemeName } from './index.js';
2
+
3
+ /**
4
+ * A DESIGN.md for the kit, written from the same tokens that build the CSS.
5
+ *
6
+ * DESIGN.md is a file format from Google Labs (https://github.com/google-labs-code/design.md,
7
+ * Apache-2.0) that gives a coding agent a design system as YAML tokens plus
8
+ * prose. The output here follows spec version `alpha` and passes its linter,
9
+ * which a test in this package checks for every theme.
10
+ */
11
+ interface DesignMdOptions {
12
+ /** Whose values fill the token tables. Default `light`. */
13
+ theme?: ThemeName;
14
+ /** The `name` in the front matter. */
15
+ name?: string;
16
+ }
17
+ /** Writes a DESIGN.md that describes the kit for a coding agent. */
18
+ declare function createDesignMd(options?: DesignMdOptions): string;
19
+
20
+ export { createDesignMd };
21
+ export type { DesignMdOptions };
@@ -0,0 +1,312 @@
1
+ import { themes, base, densityDefault, cssVarName } from './chunk-W3FHW2SE.js';
2
+
3
+ // src/design-md.ts
4
+ var brandRoles = [
5
+ { name: "primary", path: "accent.default", use: "main actions, selected state, focus color" },
6
+ { name: "primary-hover", path: "accent.hover", use: "pointer hover on a primary control" },
7
+ { name: "primary-active", path: "accent.active", use: "pressed primary control" },
8
+ { name: "primary-subtle", path: "accent.subtle", use: "quiet accent fill behind text" },
9
+ { name: "on-primary", path: "accent.on-accent", use: "text and icons on `primary`" }
10
+ ];
11
+ var surfaceRoles = [
12
+ { name: "canvas", path: "bg.canvas", use: "the page behind everything" },
13
+ { name: "surface", path: "bg.surface", use: "cards, inputs, panels" },
14
+ { name: "raised", path: "bg.raised", use: "content that sits above a surface" },
15
+ { name: "overlay", path: "bg.overlay", use: "menus, popovers, dialogs" },
16
+ { name: "inverse", path: "bg.inverse", use: "tooltips and other inverted chrome" },
17
+ { name: "on-surface", path: "text.primary", use: "body text and headings" },
18
+ { name: "on-surface-secondary", path: "text.secondary", use: "supporting text" },
19
+ { name: "on-surface-tertiary", path: "text.tertiary", use: "hints and metadata" },
20
+ { name: "on-surface-disabled", path: "text.disabled", use: "disabled text, which is exempt from contrast rules" },
21
+ { name: "on-inverse", path: "text.inverse", use: "text on `inverse`" },
22
+ { name: "link", path: "text.link", use: "inline links" },
23
+ { name: "border-subtle", path: "border.subtle", use: "dividers and card edges" },
24
+ { name: "border", path: "border.default", use: "input and control borders" },
25
+ { name: "border-strong", path: "border.strong", use: "emphasized borders" },
26
+ { name: "focus", path: "border.focus", use: "focus ring" }
27
+ ];
28
+ var statuses = ["success", "warning", "danger", "info"];
29
+ var dimension = /^-?\d*\.?\d+(px|rem|em)$/;
30
+ var kebab = (segment) => segment.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
31
+ function lookup(tree, path) {
32
+ let node = tree;
33
+ for (const segment of path.split(".")) {
34
+ node = node?.[segment];
35
+ }
36
+ if (typeof node !== "string" && typeof node !== "number") {
37
+ throw new Error(`@x12i/tokens: no token at "${path}".`);
38
+ }
39
+ return String(node);
40
+ }
41
+ function yamlKey(key) {
42
+ return /^[A-Za-z_][A-Za-z0-9_-]*$/.test(key) ? key : JSON.stringify(key);
43
+ }
44
+ function yamlScalar(value) {
45
+ if (typeof value === "number") return String(value);
46
+ return dimension.test(value) ? value : JSON.stringify(value);
47
+ }
48
+ function toYaml(tree, depth = 0) {
49
+ const pad = " ".repeat(depth);
50
+ return Object.entries(tree).flatMap(
51
+ ([key, value]) => typeof value === "object" ? [`${pad}${yamlKey(key)}:`, ...toYaml(value, depth + 1)] : [`${pad}${yamlKey(key)}: ${yamlScalar(value)}`]
52
+ );
53
+ }
54
+ var px = (value) => Number.parseFloat(value);
55
+ function statusRoles() {
56
+ return statuses.flatMap((status) => [
57
+ { name: status, path: `status.${status}.border`, use: `${status} icons and strong borders` },
58
+ { name: `${status}-container`, path: `status.${status}.background`, use: `${status} message background` },
59
+ { name: `on-${status}-container`, path: `status.${status}.foreground`, use: `text on \`${status}-container\`` }
60
+ ]);
61
+ }
62
+ function chartRoles() {
63
+ return Array.from({ length: 8 }, (_, index) => ({
64
+ name: `chart-${index + 1}`,
65
+ path: `chart.categorical.${index + 1}`,
66
+ use: index === 0 ? "categorical series, in order" : "categorical series"
67
+ }));
68
+ }
69
+ var otherRoles = [
70
+ { name: "selection", path: "selection", use: "selected text and rows" },
71
+ { name: "highlight", path: "highlight", use: "search match highlight" },
72
+ { name: "scrim", path: "scrim", use: "backdrop behind a modal" }
73
+ ];
74
+ function section(heading, ...paragraphs) {
75
+ return [`## ${heading}`, "", ...paragraphs.flatMap((paragraph) => [paragraph, ""])].join("\n");
76
+ }
77
+ function colorVar(path) {
78
+ return `\`${cssVarName(`color.${path}`)}\``;
79
+ }
80
+ function createDesignMd(options = {}) {
81
+ const themeName = options.theme ?? "light";
82
+ const theme = themes[themeName];
83
+ const { color } = theme;
84
+ const name = options.name ?? (themeName === "light" ? "Unified UI Kit" : `Unified UI Kit (${themeName})`);
85
+ const roles = [...brandRoles, ...surfaceRoles, ...statusRoles(), ...otherRoles, ...chartRoles()];
86
+ const colors = {};
87
+ for (const role of roles) colors[role.name] = lookup(color, role.path);
88
+ const sansFamily = base.font.family.sans;
89
+ const monoFamily = base.font.family.mono;
90
+ const levels = Object.keys(base.text);
91
+ const typography = {};
92
+ for (const level of levels) {
93
+ const spec = base.text[level];
94
+ typography[level] = {
95
+ fontFamily: level === "code" ? monoFamily : sansFamily,
96
+ fontSize: spec.size,
97
+ fontWeight: spec.weight,
98
+ lineHeight: spec.lineHeight
99
+ };
100
+ }
101
+ const rounded = {
102
+ control: base.radius.control,
103
+ panel: base.radius.panel,
104
+ overlay: base.radius.overlay,
105
+ pill: base.radius.pill
106
+ };
107
+ const spacingSteps = Object.entries(base.space).filter(([step]) => step !== "0").sort(([, a], [, b]) => px(a) - px(b));
108
+ const spacing = Object.fromEntries(spacingSteps);
109
+ const control = densityDefault.size.control;
110
+ const inline = densityDefault.space.control.inline;
111
+ const components = {
112
+ page: { backgroundColor: "{colors.canvas}", textColor: "{colors.on-surface}", typography: "{typography.body}" },
113
+ card: {
114
+ backgroundColor: "{colors.raised}",
115
+ textColor: "{colors.on-surface}",
116
+ rounded: "{rounded.panel}",
117
+ padding: base.space["4"]
118
+ },
119
+ dialog: {
120
+ backgroundColor: "{colors.overlay}",
121
+ textColor: "{colors.on-surface}",
122
+ rounded: "{rounded.overlay}",
123
+ padding: base.space["6"]
124
+ },
125
+ input: {
126
+ backgroundColor: "{colors.surface}",
127
+ textColor: "{colors.on-surface}",
128
+ typography: "{typography.body}",
129
+ rounded: "{rounded.control}",
130
+ height: control.md
131
+ },
132
+ tooltip: {
133
+ backgroundColor: "{colors.inverse}",
134
+ textColor: "{colors.on-inverse}",
135
+ typography: "{typography.caption}",
136
+ rounded: "{rounded.control}"
137
+ },
138
+ link: { textColor: "{colors.link}" },
139
+ "help-text": { textColor: "{colors.on-surface-secondary}", typography: "{typography.caption}" },
140
+ "button-primary": {
141
+ backgroundColor: "{colors.primary}",
142
+ textColor: "{colors.on-primary}",
143
+ typography: "{typography.label}",
144
+ rounded: "{rounded.control}",
145
+ height: control.md,
146
+ padding: inline.md
147
+ },
148
+ "button-primary-hover": { backgroundColor: "{colors.primary-hover}", textColor: "{colors.on-primary}" },
149
+ "button-primary-active": { backgroundColor: "{colors.primary-active}", textColor: "{colors.on-primary}" },
150
+ "button-secondary": {
151
+ backgroundColor: "{colors.surface}",
152
+ textColor: "{colors.on-surface}",
153
+ typography: "{typography.label}",
154
+ rounded: "{rounded.control}",
155
+ height: control.md,
156
+ padding: inline.md
157
+ },
158
+ "button-subtle": {
159
+ backgroundColor: "{colors.primary-subtle}",
160
+ textColor: "{colors.on-surface}",
161
+ typography: "{typography.label}",
162
+ rounded: "{rounded.control}",
163
+ height: control.md,
164
+ padding: inline.md
165
+ },
166
+ "button-sm": { height: control.sm, padding: inline.sm },
167
+ "button-lg": { height: control.lg, padding: inline.lg }
168
+ };
169
+ for (const status of statuses) {
170
+ components[`alert-${status}`] = {
171
+ backgroundColor: `{colors.${status}-container}`,
172
+ textColor: `{colors.on-${status}-container}`,
173
+ typography: "{typography.body}",
174
+ rounded: "{rounded.panel}",
175
+ padding: base.space["3"]
176
+ };
177
+ }
178
+ const frontMatter = [
179
+ "---",
180
+ "version: alpha",
181
+ `name: ${JSON.stringify(name)}`,
182
+ `description: ${JSON.stringify(
183
+ "Unified UI Kit: one React design system for application UI, data, charts, reports, diagrams, rich text and AI chat."
184
+ )}`,
185
+ "colors:",
186
+ ...toYaml(colors, 1),
187
+ "typography:",
188
+ ...toYaml(typography, 1),
189
+ "rounded:",
190
+ ...toYaml(rounded, 1),
191
+ "spacing:",
192
+ ...toYaml(spacing, 1),
193
+ "components:",
194
+ ...toYaml(components, 1),
195
+ "---",
196
+ ""
197
+ ].join("\n");
198
+ const colorList = (list) => list.map((role) => `- **${role.name}** (${lookup(color, role.path)}): ${role.use}. ${colorVar(role.path)}`).join("\n");
199
+ const colorProse = [
200
+ `Values below are for the ${themeName} theme. The kit ships three themes (light, dark and hc, a high contrast theme) and switches them at runtime with \`data-theme\` on \`<html>\`, so the same role has a different value in each theme. Write the CSS variable, never the value.`,
201
+ "",
202
+ "Brand:",
203
+ colorList(brandRoles),
204
+ "",
205
+ "Surfaces, text and borders:",
206
+ colorList(surfaceRoles),
207
+ "",
208
+ "Status colors come as three parts. The strong color is for icons and borders. The container and its on-container text are for filled messages. Meaning is never carried by color alone: pair it with an icon or a word.",
209
+ "",
210
+ colorList(statusRoles()),
211
+ "",
212
+ "Other:",
213
+ colorList(otherRoles),
214
+ "",
215
+ "Charts take series colors from `chart-1` to `chart-8` in order. Each one has at least 3:1 contrast against every surface.",
216
+ "",
217
+ colorList(chartRoles())
218
+ ].join("\n");
219
+ const typographyProse = [
220
+ "Inter for text and JetBrains Mono for code, each with a system fallback stack that also covers Hebrew and Arabic. Set type with the variables, not raw sizes.",
221
+ "",
222
+ ...levels.map((level) => {
223
+ const spec = base.text[level];
224
+ const family = level === "code" ? "mono" : "sans";
225
+ return `- **${level}**: ${spec.size} on ${spec.lineHeight}, weight ${spec.weight}. \`--kit-text-${kebab(level)}-size\`, \`--kit-text-${kebab(level)}-line-height\`, \`--kit-text-${kebab(level)}-weight\`, \`--kit-font-family-${family}\``;
226
+ })
227
+ ].join("\n");
228
+ const spacingList = spacingSteps.map(([step, value]) => `${step} = ${value}`).join(", ");
229
+ const layoutProse = [
230
+ `The spacing scale is a 4px grid (${spacingList}). Use \`--kit-space-<step>\`.`,
231
+ "",
232
+ `Density changes control sizes: \`data-density\` is compact, default or comfortable. At the default density a control is ${control.xs} (xs), ${control.sm} (sm), ${control.md} (md), ${control.lg} (lg) or ${control.xl} (xl) tall. Use \`--kit-size-control-*\` and \`--kit-space-control-*\` so a control follows the density.`,
233
+ "",
234
+ `Targets are at least ${base.size.target.min} across, and ${base.size.target.touch} on touch screens.`,
235
+ "",
236
+ "Layout uses logical properties (`inline` and `block`, `start` and `end`) so right to left languages work with no extra stylesheet. Write `margin-inline-start`, not `margin-left`.",
237
+ "",
238
+ `Breakpoints: ${Object.entries(base.breakpoint).map(([key, value]) => `${key} ${value}`).join(", ")}.`
239
+ ].join("\n");
240
+ const shadowRoles = ["raised", "overlay", "modal", "toast"];
241
+ const elevationProse = [
242
+ "Depth comes from stepping up one surface at a time (canvas, surface, raised, overlay) and from a hairline `border-subtle`. Shadows are soft and used only where something floats.",
243
+ "",
244
+ ...shadowRoles.map(
245
+ (role) => `- **${role}**: ${theme.shadow[role]}. \`--kit-shadow-${role}\``
246
+ )
247
+ ].join("\n");
248
+ const shapesProse = [
249
+ "Corners are small and consistent. Controls share one radius, panels a slightly larger one.",
250
+ "",
251
+ `- **control**: ${base.radius.control}. \`--kit-radius-control\``,
252
+ `- **panel**: ${base.radius.panel}. \`--kit-radius-panel\``,
253
+ `- **overlay**: ${base.radius.overlay}. \`--kit-radius-overlay\``,
254
+ `- **pill**: ${base.radius.pill}. \`--kit-radius-pill\``
255
+ ].join("\n");
256
+ const motionProse = [
257
+ "Motion explains a change and gets out of the way. Interface motion stays short.",
258
+ "",
259
+ `- Durations: instant ${base.duration.instant}, fast ${base.duration.fast}, base ${base.duration.base}, slow ${base.duration.slow}. \`--kit-duration-*\``,
260
+ `- Easing: standard ${base.easing.standard}, enter ${base.easing.enter}, exit ${base.easing.exit}. \`--kit-easing-*\``,
261
+ "- Use `enter` easing for things that appear and `exit` easing for things that leave.",
262
+ "- Animate `transform` and `opacity`. Do not animate `width`, `height`, `top`, `left`, `margin` or `padding`.",
263
+ "- Never write `transition: all`. List the properties.",
264
+ "- No bounce or elastic easing in application UI.",
265
+ "- Do not animate actions that repeat many times a day, such as keyboard shortcuts.",
266
+ "- Every animation has a `prefers-reduced-motion: reduce` path that drops movement and keeps what helps understanding."
267
+ ].join("\n");
268
+ const componentsProse = [
269
+ "Components come from `@x12i/ui`. Use them before writing your own, and style from tokens only. States are separate entries in the component tokens above (`button-primary-hover`, `button-primary-active`).",
270
+ "",
271
+ "- **Buttons**: one primary button per view. Secondary and subtle for the rest. Icon-only buttons need an accessible name.",
272
+ "- **Inputs**: a visible label, a border that meets 3:1 on the surface, and an error message in text as well as color.",
273
+ "- **Cards and dialogs**: padding from the spacing scale, `panel` and `overlay` radius.",
274
+ "- **Alerts**: a status container with an icon and text."
275
+ ].join("\n");
276
+ const doProse = [
277
+ "- Do use `var(--kit-*)` for every color, space, size, radius, shadow, duration and easing.",
278
+ "- Do use logical properties so the layout mirrors in right to left languages.",
279
+ "- Do restyle kit components with plain selectors. Kit selectors have zero specificity, so yours win. Do not use `!important`.",
280
+ "- Do give every control a visible focus indicator and an accessible name.",
281
+ "- Do check a screen in the light, dark and hc themes and in the compact and comfortable densities.",
282
+ "- Do respect `prefers-reduced-motion`.",
283
+ "- Don't write hex, `rgb()` or `hsl()` colors, or raw pixel sizes for type and spacing, in application code.",
284
+ "- Don't carry meaning with color alone.",
285
+ "- Don't use `transition: all`, layout properties in animations or bounce easing.",
286
+ "- Don't remove the focus outline without a replacement.",
287
+ "- Run `npx @x12i/kit-cli doctor` before you finish. It finds the hard-coded values above."
288
+ ].join("\n");
289
+ const body = [
290
+ `# ${name}`,
291
+ "",
292
+ section(
293
+ "Overview",
294
+ "Unified UI Kit (`@x12i`) is one React design system for application UI, data grids, charts, reports, diagrams, rich text and AI chat. It is calm, dense and accessible by default: text is at least 4.5:1 against its surface (7:1 in the hc theme), components ship with roles, names and focus behavior, and the layout mirrors for right to left languages.",
295
+ "Everything is defined once as W3C design tokens and compiled to CSS variables named `--kit-*`. A token path becomes a variable by joining the path with hyphens: `color.bg.surface` is `--kit-color-bg-surface`. Components, charts and grids read the same variables, so a theme or density change reaches all of them."
296
+ ),
297
+ section("Colors", colorProse),
298
+ section("Typography", typographyProse),
299
+ section("Layout", layoutProse),
300
+ section("Elevation & Depth", elevationProse),
301
+ section("Shapes", shapesProse),
302
+ section("Motion", motionProse),
303
+ section("Components", componentsProse),
304
+ section("Do's and Don'ts", doProse)
305
+ ].join("\n").trimEnd();
306
+ return `${frontMatter}${body}
307
+ `;
308
+ }
309
+
310
+ export { createDesignMd };
311
+ //# sourceMappingURL=design-md.js.map
312
+ //# sourceMappingURL=design-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/design-md.ts"],"names":[],"mappings":"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","file":"design-md.js","sourcesContent":["import { base } from \"./generated/base\";\nimport { densityDefault } from \"./generated/density-default\";\nimport { cssVarName, themes, type ThemeName, type TokenPath } from \"./index\";\n\n/**\n * A DESIGN.md for the kit, written from the same tokens that build the CSS.\n *\n * DESIGN.md is a file format from Google Labs (https://github.com/google-labs-code/design.md,\n * Apache-2.0) that gives a coding agent a design system as YAML tokens plus\n * prose. The output here follows spec version `alpha` and passes its linter,\n * which a test in this package checks for every theme.\n */\nexport interface DesignMdOptions {\n /** Whose values fill the token tables. Default `light`. */\n theme?: ThemeName;\n /** The `name` in the front matter. */\n name?: string;\n}\n\ntype Scalar = string | number;\ninterface Tree {\n [key: string]: Scalar | Tree;\n}\n\n/**\n * One DESIGN.md color: its name, where it comes from, and what it is for. The\n * path doubles as the CSS variable the prose tells an agent to use.\n */\ninterface Role {\n name: string;\n path: string;\n use: string;\n}\n\nconst brandRoles: Role[] = [\n { name: \"primary\", path: \"accent.default\", use: \"main actions, selected state, focus color\" },\n { name: \"primary-hover\", path: \"accent.hover\", use: \"pointer hover on a primary control\" },\n { name: \"primary-active\", path: \"accent.active\", use: \"pressed primary control\" },\n { name: \"primary-subtle\", path: \"accent.subtle\", use: \"quiet accent fill behind text\" },\n { name: \"on-primary\", path: \"accent.on-accent\", use: \"text and icons on `primary`\" },\n];\n\nconst surfaceRoles: Role[] = [\n { name: \"canvas\", path: \"bg.canvas\", use: \"the page behind everything\" },\n { name: \"surface\", path: \"bg.surface\", use: \"cards, inputs, panels\" },\n { name: \"raised\", path: \"bg.raised\", use: \"content that sits above a surface\" },\n { name: \"overlay\", path: \"bg.overlay\", use: \"menus, popovers, dialogs\" },\n { name: \"inverse\", path: \"bg.inverse\", use: \"tooltips and other inverted chrome\" },\n { name: \"on-surface\", path: \"text.primary\", use: \"body text and headings\" },\n { name: \"on-surface-secondary\", path: \"text.secondary\", use: \"supporting text\" },\n { name: \"on-surface-tertiary\", path: \"text.tertiary\", use: \"hints and metadata\" },\n { name: \"on-surface-disabled\", path: \"text.disabled\", use: \"disabled text, which is exempt from contrast rules\" },\n { name: \"on-inverse\", path: \"text.inverse\", use: \"text on `inverse`\" },\n { name: \"link\", path: \"text.link\", use: \"inline links\" },\n { name: \"border-subtle\", path: \"border.subtle\", use: \"dividers and card edges\" },\n { name: \"border\", path: \"border.default\", use: \"input and control borders\" },\n { name: \"border-strong\", path: \"border.strong\", use: \"emphasized borders\" },\n { name: \"focus\", path: \"border.focus\", use: \"focus ring\" },\n];\n\nconst statuses = [\"success\", \"warning\", \"danger\", \"info\"] as const;\n\nconst dimension = /^-?\\d*\\.?\\d+(px|rem|em)$/;\n\nconst kebab = (segment: string) => segment.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nfunction lookup(tree: unknown, path: string): string {\n let node = tree;\n for (const segment of path.split(\".\")) {\n node = (node as Record<string, unknown> | undefined)?.[segment];\n }\n if (typeof node !== \"string\" && typeof node !== \"number\") {\n throw new Error(`@x12i/tokens: no token at \"${path}\".`);\n }\n return String(node);\n}\n\nfunction yamlKey(key: string): string {\n return /^[A-Za-z_][A-Za-z0-9_-]*$/.test(key) ? key : JSON.stringify(key);\n}\n\nfunction yamlScalar(value: Scalar): string {\n if (typeof value === \"number\") return String(value);\n return dimension.test(value) ? value : JSON.stringify(value);\n}\n\nfunction toYaml(tree: Tree, depth = 0): string[] {\n const pad = \" \".repeat(depth);\n return Object.entries(tree).flatMap(([key, value]) =>\n typeof value === \"object\"\n ? [`${pad}${yamlKey(key)}:`, ...toYaml(value, depth + 1)]\n : [`${pad}${yamlKey(key)}: ${yamlScalar(value)}`],\n );\n}\n\nconst px = (value: string) => Number.parseFloat(value);\n\nfunction statusRoles(): Role[] {\n return statuses.flatMap((status) => [\n { name: status, path: `status.${status}.border`, use: `${status} icons and strong borders` },\n { name: `${status}-container`, path: `status.${status}.background`, use: `${status} message background` },\n { name: `on-${status}-container`, path: `status.${status}.foreground`, use: `text on \\`${status}-container\\`` },\n ]);\n}\n\nfunction chartRoles(): Role[] {\n return Array.from({ length: 8 }, (_, index) => ({\n name: `chart-${index + 1}`,\n path: `chart.categorical.${index + 1}`,\n use: index === 0 ? \"categorical series, in order\" : \"categorical series\",\n }));\n}\n\nconst otherRoles: Role[] = [\n { name: \"selection\", path: \"selection\", use: \"selected text and rows\" },\n { name: \"highlight\", path: \"highlight\", use: \"search match highlight\" },\n { name: \"scrim\", path: \"scrim\", use: \"backdrop behind a modal\" },\n];\n\nfunction section(heading: string, ...paragraphs: string[]): string {\n return [`## ${heading}`, \"\", ...paragraphs.flatMap((paragraph) => [paragraph, \"\"])].join(\"\\n\");\n}\n\n/** The CSS variable for a color role, in backticks, for the prose. */\nfunction colorVar(path: string): string {\n return `\\`${cssVarName(`color.${path}` as TokenPath)}\\``;\n}\n\n/** Writes a DESIGN.md that describes the kit for a coding agent. */\nexport function createDesignMd(options: DesignMdOptions = {}): string {\n const themeName = options.theme ?? \"light\";\n const theme = themes[themeName];\n const { color } = theme;\n const name = options.name ?? (themeName === \"light\" ? \"Unified UI Kit\" : `Unified UI Kit (${themeName})`);\n\n const roles = [...brandRoles, ...surfaceRoles, ...statusRoles(), ...otherRoles, ...chartRoles()];\n const colors: Tree = {};\n for (const role of roles) colors[role.name] = lookup(color, role.path);\n\n const sansFamily = base.font.family.sans;\n const monoFamily = base.font.family.mono;\n const levels = Object.keys(base.text) as Array<keyof typeof base.text>;\n const typography: Tree = {};\n for (const level of levels) {\n const spec = base.text[level];\n typography[level] = {\n fontFamily: level === \"code\" ? monoFamily : sansFamily,\n fontSize: spec.size,\n fontWeight: spec.weight,\n lineHeight: spec.lineHeight,\n };\n }\n\n const rounded: Tree = {\n control: base.radius.control,\n panel: base.radius.panel,\n overlay: base.radius.overlay,\n pill: base.radius.pill,\n };\n\n // Sorted by size. The YAML object below still lists whole-number steps first,\n // because that is how JavaScript orders integer-like keys, so the prose uses\n // this array to keep `0-5` (2px) at the small end.\n const spacingSteps = Object.entries(base.space)\n .filter(([step]) => step !== \"0\")\n .sort(([, a], [, b]) => px(a) - px(b));\n const spacing: Tree = Object.fromEntries(spacingSteps);\n\n const control = densityDefault.size.control;\n const inline = densityDefault.space.control.inline;\n\n const components: Tree = {\n page: { backgroundColor: \"{colors.canvas}\", textColor: \"{colors.on-surface}\", typography: \"{typography.body}\" },\n card: {\n backgroundColor: \"{colors.raised}\",\n textColor: \"{colors.on-surface}\",\n rounded: \"{rounded.panel}\",\n padding: base.space[\"4\"],\n },\n dialog: {\n backgroundColor: \"{colors.overlay}\",\n textColor: \"{colors.on-surface}\",\n rounded: \"{rounded.overlay}\",\n padding: base.space[\"6\"],\n },\n input: {\n backgroundColor: \"{colors.surface}\",\n textColor: \"{colors.on-surface}\",\n typography: \"{typography.body}\",\n rounded: \"{rounded.control}\",\n height: control.md,\n },\n tooltip: {\n backgroundColor: \"{colors.inverse}\",\n textColor: \"{colors.on-inverse}\",\n typography: \"{typography.caption}\",\n rounded: \"{rounded.control}\",\n },\n link: { textColor: \"{colors.link}\" },\n \"help-text\": { textColor: \"{colors.on-surface-secondary}\", typography: \"{typography.caption}\" },\n \"button-primary\": {\n backgroundColor: \"{colors.primary}\",\n textColor: \"{colors.on-primary}\",\n typography: \"{typography.label}\",\n rounded: \"{rounded.control}\",\n height: control.md,\n padding: inline.md,\n },\n \"button-primary-hover\": { backgroundColor: \"{colors.primary-hover}\", textColor: \"{colors.on-primary}\" },\n \"button-primary-active\": { backgroundColor: \"{colors.primary-active}\", textColor: \"{colors.on-primary}\" },\n \"button-secondary\": {\n backgroundColor: \"{colors.surface}\",\n textColor: \"{colors.on-surface}\",\n typography: \"{typography.label}\",\n rounded: \"{rounded.control}\",\n height: control.md,\n padding: inline.md,\n },\n \"button-subtle\": {\n backgroundColor: \"{colors.primary-subtle}\",\n textColor: \"{colors.on-surface}\",\n typography: \"{typography.label}\",\n rounded: \"{rounded.control}\",\n height: control.md,\n padding: inline.md,\n },\n \"button-sm\": { height: control.sm, padding: inline.sm },\n \"button-lg\": { height: control.lg, padding: inline.lg },\n };\n for (const status of statuses) {\n components[`alert-${status}`] = {\n backgroundColor: `{colors.${status}-container}`,\n textColor: `{colors.on-${status}-container}`,\n typography: \"{typography.body}\",\n rounded: \"{rounded.panel}\",\n padding: base.space[\"3\"],\n };\n }\n\n const frontMatter = [\n \"---\",\n \"version: alpha\",\n `name: ${JSON.stringify(name)}`,\n `description: ${JSON.stringify(\n \"Unified UI Kit: one React design system for application UI, data, charts, reports, diagrams, rich text and AI chat.\",\n )}`,\n \"colors:\",\n ...toYaml(colors, 1),\n \"typography:\",\n ...toYaml(typography, 1),\n \"rounded:\",\n ...toYaml(rounded, 1),\n \"spacing:\",\n ...toYaml(spacing, 1),\n \"components:\",\n ...toYaml(components, 1),\n \"---\",\n \"\",\n ].join(\"\\n\");\n\n const colorList = (list: Role[]) =>\n list\n .map((role) => `- **${role.name}** (${lookup(color, role.path)}): ${role.use}. ${colorVar(role.path)}`)\n .join(\"\\n\");\n\n const colorProse = [\n `Values below are for the ${themeName} theme. The kit ships three themes (light, dark and hc, a high contrast theme) and switches them at runtime with \\`data-theme\\` on \\`<html>\\`, so the same role has a different value in each theme. Write the CSS variable, never the value.`,\n \"\",\n \"Brand:\",\n colorList(brandRoles),\n \"\",\n \"Surfaces, text and borders:\",\n colorList(surfaceRoles),\n \"\",\n \"Status colors come as three parts. The strong color is for icons and borders. The container and its on-container text are for filled messages. Meaning is never carried by color alone: pair it with an icon or a word.\",\n \"\",\n colorList(statusRoles()),\n \"\",\n \"Other:\",\n colorList(otherRoles),\n \"\",\n \"Charts take series colors from `chart-1` to `chart-8` in order. Each one has at least 3:1 contrast against every surface.\",\n \"\",\n colorList(chartRoles()),\n ].join(\"\\n\");\n\n const typographyProse = [\n \"Inter for text and JetBrains Mono for code, each with a system fallback stack that also covers Hebrew and Arabic. Set type with the variables, not raw sizes.\",\n \"\",\n ...levels.map((level) => {\n const spec = base.text[level];\n const family = level === \"code\" ? \"mono\" : \"sans\";\n return `- **${level}**: ${spec.size} on ${spec.lineHeight}, weight ${spec.weight}. \\`--kit-text-${kebab(level)}-size\\`, \\`--kit-text-${kebab(level)}-line-height\\`, \\`--kit-text-${kebab(level)}-weight\\`, \\`--kit-font-family-${family}\\``;\n }),\n ].join(\"\\n\");\n\n const spacingList = spacingSteps.map(([step, value]) => `${step} = ${value}`).join(\", \");\n\n const layoutProse = [\n `The spacing scale is a 4px grid (${spacingList}). Use \\`--kit-space-<step>\\`.`,\n \"\",\n `Density changes control sizes: \\`data-density\\` is compact, default or comfortable. At the default density a control is ${control.xs} (xs), ${control.sm} (sm), ${control.md} (md), ${control.lg} (lg) or ${control.xl} (xl) tall. Use \\`--kit-size-control-*\\` and \\`--kit-space-control-*\\` so a control follows the density.`,\n \"\",\n `Targets are at least ${base.size.target.min} across, and ${base.size.target.touch} on touch screens.`,\n \"\",\n \"Layout uses logical properties (`inline` and `block`, `start` and `end`) so right to left languages work with no extra stylesheet. Write `margin-inline-start`, not `margin-left`.\",\n \"\",\n `Breakpoints: ${Object.entries(base.breakpoint)\n .map(([key, value]) => `${key} ${value}`)\n .join(\", \")}.`,\n ].join(\"\\n\");\n\n const shadowRoles = [\"raised\", \"overlay\", \"modal\", \"toast\"] as const;\n const elevationProse = [\n \"Depth comes from stepping up one surface at a time (canvas, surface, raised, overlay) and from a hairline `border-subtle`. Shadows are soft and used only where something floats.\",\n \"\",\n ...shadowRoles.map(\n (role) => `- **${role}**: ${theme.shadow[role]}. \\`--kit-shadow-${role}\\``,\n ),\n ].join(\"\\n\");\n\n const shapesProse = [\n \"Corners are small and consistent. Controls share one radius, panels a slightly larger one.\",\n \"\",\n `- **control**: ${base.radius.control}. \\`--kit-radius-control\\``,\n `- **panel**: ${base.radius.panel}. \\`--kit-radius-panel\\``,\n `- **overlay**: ${base.radius.overlay}. \\`--kit-radius-overlay\\``,\n `- **pill**: ${base.radius.pill}. \\`--kit-radius-pill\\``,\n ].join(\"\\n\");\n\n const motionProse = [\n \"Motion explains a change and gets out of the way. Interface motion stays short.\",\n \"\",\n `- Durations: instant ${base.duration.instant}, fast ${base.duration.fast}, base ${base.duration.base}, slow ${base.duration.slow}. \\`--kit-duration-*\\``,\n `- Easing: standard ${base.easing.standard}, enter ${base.easing.enter}, exit ${base.easing.exit}. \\`--kit-easing-*\\``,\n \"- Use `enter` easing for things that appear and `exit` easing for things that leave.\",\n \"- Animate `transform` and `opacity`. Do not animate `width`, `height`, `top`, `left`, `margin` or `padding`.\",\n \"- Never write `transition: all`. List the properties.\",\n \"- No bounce or elastic easing in application UI.\",\n \"- Do not animate actions that repeat many times a day, such as keyboard shortcuts.\",\n \"- Every animation has a `prefers-reduced-motion: reduce` path that drops movement and keeps what helps understanding.\",\n ].join(\"\\n\");\n\n const componentsProse = [\n \"Components come from `@x12i/ui`. Use them before writing your own, and style from tokens only. States are separate entries in the component tokens above (`button-primary-hover`, `button-primary-active`).\",\n \"\",\n \"- **Buttons**: one primary button per view. Secondary and subtle for the rest. Icon-only buttons need an accessible name.\",\n \"- **Inputs**: a visible label, a border that meets 3:1 on the surface, and an error message in text as well as color.\",\n \"- **Cards and dialogs**: padding from the spacing scale, `panel` and `overlay` radius.\",\n \"- **Alerts**: a status container with an icon and text.\",\n ].join(\"\\n\");\n\n const doProse = [\n \"- Do use `var(--kit-*)` for every color, space, size, radius, shadow, duration and easing.\",\n \"- Do use logical properties so the layout mirrors in right to left languages.\",\n \"- Do restyle kit components with plain selectors. Kit selectors have zero specificity, so yours win. Do not use `!important`.\",\n \"- Do give every control a visible focus indicator and an accessible name.\",\n \"- Do check a screen in the light, dark and hc themes and in the compact and comfortable densities.\",\n \"- Do respect `prefers-reduced-motion`.\",\n \"- Don't write hex, `rgb()` or `hsl()` colors, or raw pixel sizes for type and spacing, in application code.\",\n \"- Don't carry meaning with color alone.\",\n \"- Don't use `transition: all`, layout properties in animations or bounce easing.\",\n \"- Don't remove the focus outline without a replacement.\",\n \"- Run `npx @x12i/kit-cli doctor` before you finish. It finds the hard-coded values above.\",\n ].join(\"\\n\");\n\n const body = [\n `# ${name}`,\n \"\",\n section(\n \"Overview\",\n \"Unified UI Kit (`@x12i`) is one React design system for application UI, data grids, charts, reports, diagrams, rich text and AI chat. It is calm, dense and accessible by default: text is at least 4.5:1 against its surface (7:1 in the hc theme), components ship with roles, names and focus behavior, and the layout mirrors for right to left languages.\",\n \"Everything is defined once as W3C design tokens and compiled to CSS variables named `--kit-*`. A token path becomes a variable by joining the path with hyphens: `color.bg.surface` is `--kit-color-bg-surface`. Components, charts and grids read the same variables, so a theme or density change reaches all of them.\",\n ),\n section(\"Colors\", colorProse),\n section(\"Typography\", typographyProse),\n section(\"Layout\", layoutProse),\n section(\"Elevation & Depth\", elevationProse),\n section(\"Shapes\", shapesProse),\n section(\"Motion\", motionProse),\n section(\"Components\", componentsProse),\n section(\"Do's and Don'ts\", doProse),\n ]\n .join(\"\\n\")\n .trimEnd();\n\n return `${frontMatter}${body}\\n`;\n}\n"]}