@timmo001/groundwork-tokens 0.0.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,5 +3,5 @@ pragma Singleton
3
3
  import QtQuick
4
4
 
5
5
  QtObject {
6
- readonly property var themes: ({"base":{"light":{"surface-lower":"#eceff3","surface-low":"#f0f3f7","surface-default":"#f4f7fb","surface-raised":"#fcfdff","surface-overlay":"#ffffff","border-quiet":"#dde0e4","border-normal":"#dadce1","border-loud":"#b3b6ba","text-strong":"#313235","text-primary":"#3e4042","text-secondary":"#6a6b6e","text-disabled":"#9a9b9e","fill-neutral-resting":"#e0e3e7","fill-neutral-hovered":"#d7d9dd","fill-neutral-pressed":"#cdcfd4","fill-neutral-selected":"#cfd3d9","fill-neutral-disabled":"#e9ebef","fill-primary-resting":"#1e1f21","fill-primary-hovered":"#2d2e30","fill-primary-pressed":"#37383a","on-primary":"#fcfdff","accent":"#1e1f21","fill-accent-resting":"#1e1f21","fill-accent-hovered":"#131416","fill-accent-pressed":"#242527","fill-accent-quiet":"#1e1f2129","border-accent":"#1e1f2180","on-accent":"#ffffff","focus":"#1e1f21","link":"#313235","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#16783a","fill-success-quiet":"#16783a24","border-success":"#16783a73","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6100","fill-warning-quiet":"#8a610024","border-warning":"#8a610073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0e1015","surface-low":"#111418","surface-default":"#14171c","surface-raised":"#202328","surface-overlay":"#292c32","border-quiet":"#2c2f34","border-normal":"#36393f","border-loud":"#4b4e54","text-strong":"#e3e4e7","text-primary":"#ced0d2","text-secondary":"#929497","text-disabled":"#646568","fill-neutral-resting":"#292c32","fill-neutral-hovered":"#313439","fill-neutral-pressed":"#383c41","fill-neutral-selected":"#343941","fill-neutral-disabled":"#22252a","fill-primary-resting":"#e6e8eb","fill-primary-hovered":"#d2d4d7","fill-primary-pressed":"#c6c7ca","on-primary":"#14171c","accent":"#e6e8eb","fill-accent-resting":"#e6e8eb","fill-accent-hovered":"#f7f8fb","fill-accent-pressed":"#dee0e2","fill-accent-quiet":"#e6e8eb29","border-accent":"#e6e8eb80","on-accent":"#0b0b0b","focus":"#e6e8eb","link":"#e3e4e7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0a0d12","surface-low":"#0e1015","surface-default":"#111418","surface-raised":"#1c1f24","surface-overlay":"#26292e","border-quiet":"#36393f","border-normal":"#4b4e54","border-loud":"#4b4e54","text-strong":"#e3e4e7","text-primary":"#ced0d2","text-secondary":"#929497","text-disabled":"#646568","fill-neutral-resting":"#26292e","fill-neutral-hovered":"#2d3036","fill-neutral-pressed":"#35383d","fill-neutral-selected":"#30353e","fill-neutral-disabled":"#1e2227","fill-primary-resting":"#e6e8eb","fill-primary-hovered":"#d2d4d7","fill-primary-pressed":"#c6c7ca","on-primary":"#111418","accent":"#e6e8eb","fill-accent-resting":"#e6e8eb","fill-accent-hovered":"#f7f8fb","fill-accent-pressed":"#dee0e2","fill-accent-quiet":"#e6e8eb29","border-accent":"#e6e8eb80","on-accent":"#0b0b0b","focus":"#e6e8eb","link":"#e3e4e7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"glazing":{"light":{"surface-lower":"#eceef8","surface-low":"#f0f2fc","surface-default":"#f4f6ff","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dddfe9","border-normal":"#dadce6","border-loud":"#b3b5bf","text-strong":"#313238","text-primary":"#3e3f45","text-secondary":"#696b71","text-disabled":"#999ba1","fill-neutral-resting":"#e0e2ec","fill-neutral-hovered":"#d6d8e3","fill-neutral-pressed":"#cdcfd9","fill-neutral-selected":"#cfd2e1","fill-neutral-disabled":"#e8ebf5","fill-primary-resting":"#1e1f24","fill-primary-hovered":"#2c2d33","fill-primary-pressed":"#37383d","on-primary":"#fdfdff","accent":"#4063b0","fill-accent-resting":"#4063b0","fill-accent-hovered":"#3254a0","fill-accent-pressed":"#476ab9","fill-accent-quiet":"#4063b029","border-accent":"#4063b080","on-accent":"#ffffff","focus":"#4063b0","link":"#4063b0","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#167839","fill-success-quiet":"#16783924","border-success":"#16783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0e0f1b","surface-low":"#11131e","surface-default":"#141622","surface-raised":"#20222e","surface-overlay":"#292b38","border-quiet":"#2c2e3b","border-normal":"#363845","border-loud":"#4b4d5b","text-strong":"#e2e4ea","text-primary":"#cdcfd5","text-secondary":"#92949a","text-disabled":"#63656a","fill-neutral-resting":"#292b38","fill-neutral-hovered":"#313340","fill-neutral-pressed":"#383b48","fill-neutral-selected":"#34384b","fill-neutral-disabled":"#222431","fill-primary-resting":"#e6e7ee","fill-primary-hovered":"#d2d4da","fill-primary-pressed":"#c5c7cd","on-primary":"#141622","accent":"#749bee","fill-accent-resting":"#749bee","fill-accent-hovered":"#83abff","fill-accent-pressed":"#6d93e6","fill-accent-quiet":"#749bee29","border-accent":"#749bee80","on-accent":"#0b0b0b","focus":"#749bee","link":"#749bee","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0b0c17","surface-low":"#0e0f1b","surface-default":"#11131e","surface-raised":"#1c1e2a","surface-overlay":"#262834","border-quiet":"#363845","border-normal":"#4b4d5b","border-loud":"#4b4d5b","text-strong":"#e2e4ea","text-primary":"#cdcfd5","text-secondary":"#92949a","text-disabled":"#63656a","fill-neutral-resting":"#262834","fill-neutral-hovered":"#2d2f3c","fill-neutral-pressed":"#343744","fill-neutral-selected":"#303447","fill-neutral-disabled":"#1e212d","fill-primary-resting":"#e6e7ee","fill-primary-hovered":"#d2d4da","fill-primary-pressed":"#c5c7cd","on-primary":"#11131e","accent":"#749bee","fill-accent-resting":"#749bee","fill-accent-hovered":"#83abff","fill-accent-pressed":"#6d93e6","fill-accent-quiet":"#749bee29","border-accent":"#749bee80","on-accent":"#0b0b0b","focus":"#749bee","link":"#749bee","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"survey":{"light":{"surface-lower":"#edeef2","surface-low":"#f1f3f6","surface-default":"#f5f7fa","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dee0e3","border-normal":"#dbdce0","border-loud":"#b4b6b9","text-strong":"#323234","text-primary":"#3f3f41","text-secondary":"#6a6b6d","text-disabled":"#999b9d","fill-neutral-resting":"#e1e3e6","fill-neutral-hovered":"#d7d9dc","fill-neutral-pressed":"#cecfd3","fill-neutral-selected":"#d0d3d8","fill-neutral-disabled":"#e9ebef","fill-primary-resting":"#1e1f21","fill-primary-hovered":"#2d2e2f","fill-primary-pressed":"#37383a","on-primary":"#fdfdff","accent":"#ab3a79","fill-accent-resting":"#ab3a79","fill-accent-hovered":"#9a2a6a","fill-accent-pressed":"#b34280","fill-accent-quiet":"#ab3a7929","border-accent":"#ab3a7980","on-accent":"#ffffff","focus":"#ab3a79","link":"#ab3a79","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#147739","fill-success-quiet":"#14773924","border-success":"#14773973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0f1014","surface-low":"#121418","surface-default":"#15171b","surface-raised":"#212327","surface-overlay":"#2a2c31","border-quiet":"#2d2f33","border-normal":"#37393e","border-loud":"#4c4e53","text-strong":"#e3e5e7","text-primary":"#ced0d2","text-secondary":"#939496","text-disabled":"#656567","fill-neutral-resting":"#2a2c31","fill-neutral-hovered":"#323438","fill-neutral-pressed":"#393c40","fill-neutral-selected":"#363940","fill-neutral-disabled":"#232529","fill-primary-resting":"#e7e8ea","fill-primary-hovered":"#d3d4d6","fill-primary-pressed":"#c6c7c9","on-primary":"#15171b","accent":"#ea74b1","fill-accent-resting":"#ea74b1","fill-accent-hovered":"#fc84c1","fill-accent-pressed":"#e16ca9","fill-accent-quiet":"#ea74b129","border-accent":"#ea74b180","on-accent":"#0b0b0b","focus":"#ea74b1","link":"#ea74b1","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0b0d11","surface-low":"#0f1014","surface-default":"#121418","surface-raised":"#1d1f23","surface-overlay":"#27292d","border-quiet":"#37393e","border-normal":"#4c4e53","border-loud":"#4c4e53","text-strong":"#e3e5e7","text-primary":"#ced0d2","text-secondary":"#939496","text-disabled":"#656567","fill-neutral-resting":"#27292d","fill-neutral-hovered":"#2e3035","fill-neutral-pressed":"#36383c","fill-neutral-selected":"#32353c","fill-neutral-disabled":"#202226","fill-primary-resting":"#e7e8ea","fill-primary-hovered":"#d3d4d6","fill-primary-pressed":"#c6c7c9","on-primary":"#121418","accent":"#ea74b1","fill-accent-resting":"#ea74b1","fill-accent-hovered":"#fc84c1","fill-accent-pressed":"#e16ca9","fill-accent-quiet":"#ea74b129","border-accent":"#ea74b180","on-accent":"#0b0b0b","focus":"#ea74b1","link":"#ea74b1","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"slate":{"light":{"surface-lower":"#f2ecf4","surface-low":"#f6f0f9","surface-default":"#faf4fd","surface-raised":"#fffcff","surface-overlay":"#ffffff","border-quiet":"#e3dde6","border-normal":"#e0dae2","border-loud":"#b9b3bb","text-strong":"#343136","text-primary":"#423e43","text-secondary":"#6d696e","text-disabled":"#9d999f","fill-neutral-resting":"#e6e0e9","fill-neutral-hovered":"#dcd7df","fill-neutral-pressed":"#d3cdd5","fill-neutral-selected":"#d8cfdb","fill-neutral-disabled":"#efe9f1","fill-primary-resting":"#211e22","fill-primary-hovered":"#2f2d31","fill-primary-pressed":"#3a373b","on-primary":"#fffcff","accent":"#7e539d","fill-accent-resting":"#7e539d","fill-accent-hovered":"#70458d","fill-accent-pressed":"#865aa5","fill-accent-quiet":"#7e539d29","border-accent":"#7e539d80","on-accent":"#ffffff","focus":"#7e539d","link":"#7e539d","info":"#276ba9","fill-info-quiet":"#276ba924","border-info":"#276ba973","success":"#147739","fill-success-quiet":"#14773924","border-success":"#14773973","important":"#7857ac","fill-important-quiet":"#7857ac24","border-important":"#7857ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4943","fill-danger-quiet":"#ab494324","border-danger":"#ab494373"},"dark":{"surface-lower":"#140e17","surface-low":"#17111a","surface-default":"#1b141e","surface-raised":"#27202a","surface-overlay":"#312934","border-quiet":"#332c36","border-normal":"#3e3641","border-loud":"#534b57","text-strong":"#e6e3e8","text-primary":"#d1ced3","text-secondary":"#969398","text-disabled":"#676468","fill-neutral-resting":"#312934","fill-neutral-hovered":"#38313c","fill-neutral-pressed":"#403844","fill-neutral-selected":"#403445","fill-neutral-disabled":"#29222c","fill-primary-resting":"#eae6ec","fill-primary-hovered":"#d6d3d8","fill-primary-pressed":"#c9c6cb","on-primary":"#1b141e","accent":"#b78ad8","fill-accent-resting":"#b78ad8","fill-accent-hovered":"#c799e9","fill-accent-pressed":"#af82d0","fill-accent-quiet":"#b78ad829","border-accent":"#b78ad880","on-accent":"#0b0b0b","focus":"#b78ad8","link":"#b78ad8","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#110a13","surface-low":"#140e17","surface-default":"#17111a","surface-raised":"#231c26","surface-overlay":"#2d2630","border-quiet":"#3e3641","border-normal":"#534b57","border-loud":"#534b57","text-strong":"#e6e3e8","text-primary":"#d1ced3","text-secondary":"#969398","text-disabled":"#676468","fill-neutral-resting":"#2d2630","fill-neutral-hovered":"#352d38","fill-neutral-pressed":"#3c3540","fill-neutral-selected":"#3c3041","fill-neutral-disabled":"#261f29","fill-primary-resting":"#eae6ec","fill-primary-hovered":"#d6d3d8","fill-primary-pressed":"#c9c6cb","on-primary":"#17111a","accent":"#b78ad8","fill-accent-resting":"#b78ad8","fill-accent-hovered":"#c799e9","fill-accent-pressed":"#af82d0","fill-accent-quiet":"#b78ad829","border-accent":"#b78ad880","on-accent":"#0b0b0b","focus":"#b78ad8","link":"#b78ad8","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"bridge":{"light":{"surface-lower":"#eeeef1","surface-low":"#f2f2f6","surface-default":"#f6f6fa","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dfdfe3","border-normal":"#dcdcdf","border-loud":"#b5b5b9","text-strong":"#323234","text-primary":"#3f3f41","text-secondary":"#6a6b6c","text-disabled":"#9a9b9d","fill-neutral-resting":"#e2e2e6","fill-neutral-hovered":"#d9d9dc","fill-neutral-pressed":"#cfcfd2","fill-neutral-selected":"#d2d2d7","fill-neutral-disabled":"#ebebee","fill-primary-resting":"#1f1f21","fill-primary-hovered":"#2e2e2f","fill-primary-pressed":"#383839","on-primary":"#fdfdff","accent":"#1465b9","fill-accent-resting":"#1465b9","fill-accent-hovered":"#0057a8","fill-accent-pressed":"#1f6dc1","fill-accent-quiet":"#1465b929","border-accent":"#1465b980","on-accent":"#ffffff","focus":"#1465b9","link":"#1465b9","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#157839","fill-success-quiet":"#15783924","border-success":"#15783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#101014","surface-low":"#141418","surface-default":"#17171b","surface-raised":"#232327","surface-overlay":"#2c2c31","border-quiet":"#2f2f33","border-normal":"#39393e","border-loud":"#4e4e53","text-strong":"#e4e5e7","text-primary":"#cfd0d2","text-secondary":"#949597","text-disabled":"#656667","fill-neutral-resting":"#2c2c31","fill-neutral-hovered":"#343438","fill-neutral-pressed":"#3c3c40","fill-neutral-selected":"#39393f","fill-neutral-disabled":"#252529","fill-primary-resting":"#e7e7ea","fill-primary-hovered":"#d4d4d6","fill-primary-pressed":"#c7c7c9","on-primary":"#17171b","accent":"#549ff7","fill-accent-resting":"#549ff7","fill-accent-hovered":"#6bafff","fill-accent-pressed":"#4c97ee","fill-accent-quiet":"#549ff729","border-accent":"#549ff780","on-accent":"#0b0b0b","focus":"#549ff7","link":"#549ff7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0d0d11","surface-low":"#101014","surface-default":"#141418","surface-raised":"#1f1f23","surface-overlay":"#29292d","border-quiet":"#39393e","border-normal":"#4e4e53","border-loud":"#4e4e53","text-strong":"#e4e5e7","text-primary":"#cfd0d2","text-secondary":"#949597","text-disabled":"#656667","fill-neutral-resting":"#29292d","fill-neutral-hovered":"#303035","fill-neutral-pressed":"#38383c","fill-neutral-selected":"#35353c","fill-neutral-disabled":"#222226","fill-primary-resting":"#e7e7ea","fill-primary-hovered":"#d4d4d6","fill-primary-pressed":"#c7c7c9","on-primary":"#141418","accent":"#549ff7","fill-accent-resting":"#549ff7","fill-accent-hovered":"#6bafff","fill-accent-pressed":"#4c97ee","fill-accent-quiet":"#549ff729","border-accent":"#549ff780","on-accent":"#0b0b0b","focus":"#549ff7","link":"#549ff7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"snag":{"light":{"surface-lower":"#eeeef0","surface-low":"#f2f2f4","surface-default":"#f6f6f8","surface-raised":"#fdfdfe","surface-overlay":"#ffffff","border-quiet":"#dfdfe1","border-normal":"#dcdcde","border-loud":"#b5b5b7","text-strong":"#323233","text-primary":"#3f3f40","text-secondary":"#6a6b6b","text-disabled":"#9a9b9c","fill-neutral-resting":"#e3e3e4","fill-neutral-hovered":"#d9d9da","fill-neutral-pressed":"#cfcfd1","fill-neutral-selected":"#d2d2d5","fill-neutral-disabled":"#ebebed","fill-primary-resting":"#1f1f20","fill-primary-hovered":"#2e2e2e","fill-primary-pressed":"#383839","on-primary":"#fdfdfe","accent":"#8a5c00","fill-accent-resting":"#8a5c00","fill-accent-hovered":"#784f00","fill-accent-pressed":"#926306","fill-accent-quiet":"#8a5c0029","border-accent":"#8a5c0080","on-accent":"#ffffff","focus":"#8a5c00","link":"#8a5c00","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#147839","fill-success-quiet":"#14783924","border-success":"#14783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#101012","surface-low":"#141416","surface-default":"#171719","surface-raised":"#232325","surface-overlay":"#2c2c2f","border-quiet":"#2f2f31","border-normal":"#39393b","border-loud":"#4e4e51","text-strong":"#e4e5e6","text-primary":"#cfd0d1","text-secondary":"#949596","text-disabled":"#656666","fill-neutral-resting":"#2c2c2f","fill-neutral-hovered":"#343436","fill-neutral-pressed":"#3c3c3e","fill-neutral-selected":"#39393c","fill-neutral-disabled":"#252527","fill-primary-resting":"#e8e8e9","fill-primary-hovered":"#d4d4d5","fill-primary-pressed":"#c7c7c8","on-primary":"#171719","accent":"#c99137","fill-accent-resting":"#c99137","fill-accent-hovered":"#d9a149","fill-accent-pressed":"#c1892e","fill-accent-quiet":"#c9913729","border-accent":"#c9913780","on-accent":"#0b0b0b","focus":"#c99137","link":"#c99137","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0d0d0f","surface-low":"#101012","surface-default":"#141416","surface-raised":"#1f1f21","surface-overlay":"#29292b","border-quiet":"#39393b","border-normal":"#4e4e51","border-loud":"#4e4e51","text-strong":"#e4e5e6","text-primary":"#cfd0d1","text-secondary":"#949596","text-disabled":"#656666","fill-neutral-resting":"#29292b","fill-neutral-hovered":"#303032","fill-neutral-pressed":"#38383a","fill-neutral-selected":"#353538","fill-neutral-disabled":"#222224","fill-primary-resting":"#e8e8e9","fill-primary-hovered":"#d4d4d5","fill-primary-pressed":"#c7c7c8","on-primary":"#141416","accent":"#c99137","fill-accent-resting":"#c99137","fill-accent-hovered":"#d9a149","fill-accent-pressed":"#c1892e","fill-accent-quiet":"#c9913729","border-accent":"#c9913780","on-accent":"#0b0b0b","focus":"#c99137","link":"#c99137","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"catppuccin-frappe":{"dark":{"surface-lower":"#232634","surface-low":"#292d3e","surface-default":"#303446","surface-raised":"#414559","surface-overlay":"#484c60","border-quiet":"#494f64","border-normal":"#51576d","border-loud":"#676e85","text-strong":"#c6d0f5","text-primary":"#c6d0f5","text-secondary":"#a5adce","text-disabled":"#a5adce99","fill-neutral-resting":"#494d61","fill-neutral-hovered":"#51556a","fill-neutral-pressed":"#595e73","fill-neutral-selected":"#575b70","fill-neutral-disabled":"#45495d","fill-primary-resting":"#c6d0f5","fill-primary-hovered":"#b3bde1","fill-primary-pressed":"#a6b0d4","on-primary":"#303446","accent":"#ca9ee6","fill-accent-resting":"#ca9ee6","fill-accent-hovered":"#e7bdff","fill-accent-pressed":"#d0a4ec","fill-accent-quiet":"#d8acf429","border-accent":"#d8acf480","on-accent":"#0b0b0b","focus":"#ca9ee6","link":"#d8acf4","info":"#8caaee","fill-info-quiet":"#8caaee24","border-info":"#8caaee73","success":"#a6d189","fill-success-quiet":"#a6d18924","border-success":"#a6d18973","important":"#ca9ee6","fill-important-quiet":"#ca9ee624","border-important":"#ca9ee673","warning":"#e5c890","fill-warning-quiet":"#e5c89024","border-warning":"#e5c89073","danger":"#e78284","fill-danger-quiet":"#e7828424","border-danger":"#e7828473"},"darker":{"surface-lower":"#191b29","surface-low":"#1e2233","surface-default":"#25293a","surface-raised":"#35394d","surface-overlay":"#3c4053","border-quiet":"#51576d","border-normal":"#676e85","border-loud":"#676e85","text-strong":"#c6d0f5","text-primary":"#c6d0f5","text-secondary":"#a5adce","text-disabled":"#a5adce99","fill-neutral-resting":"#3d4155","fill-neutral-hovered":"#45495d","fill-neutral-pressed":"#4d5166","fill-neutral-selected":"#4a4e63","fill-neutral-disabled":"#393d51","fill-primary-resting":"#c6d0f5","fill-primary-hovered":"#b3bde1","fill-primary-pressed":"#a6b0d4","on-primary":"#25293a","accent":"#ca9ee6","fill-accent-resting":"#ca9ee6","fill-accent-hovered":"#e7bdff","fill-accent-pressed":"#d0a4ec","fill-accent-quiet":"#d8acf429","border-accent":"#d8acf480","on-accent":"#0b0b0b","focus":"#ca9ee6","link":"#d8acf4","info":"#8caaee","fill-info-quiet":"#8caaee24","border-info":"#8caaee73","success":"#a6d189","fill-success-quiet":"#a6d18924","border-success":"#a6d18973","important":"#ca9ee6","fill-important-quiet":"#ca9ee624","border-important":"#ca9ee673","warning":"#e5c890","fill-warning-quiet":"#e5c89024","border-warning":"#e5c89073","danger":"#e78284","fill-danger-quiet":"#e7828424","border-danger":"#e7828473"}},"catppuccin-latte":{"light":{"surface-lower":"#dce0e8","surface-low":"#e6e8ec","surface-default":"#eff1f5","surface-raised":"#e6e9ef","surface-overlay":"#dee1e7","border-quiet":"#c6cad6","border-normal":"#bcc0cc","border-loud":"#a3a7b2","text-strong":"#4c4f69","text-primary":"#4c4f69","text-secondary":"#6c6f85","text-disabled":"#6c6f8599","fill-neutral-resting":"#dcdfe5","fill-neutral-hovered":"#d2d5db","fill-neutral-pressed":"#c9ccd1","fill-neutral-selected":"#cccfd5","fill-neutral-disabled":"#e1e4ea","fill-primary-resting":"#4c4f69","fill-primary-hovered":"#5c607b","fill-primary-pressed":"#686b86","on-primary":"#eff1f5","accent":"#8839ef","fill-accent-resting":"#8839ef","fill-accent-hovered":"#6e00ce","fill-accent-pressed":"#8331e8","fill-accent-quiet":"#7b25df29","border-accent":"#7b25df80","on-accent":"#ffffff","focus":"#8839ef","link":"#7b25df","info":"#1e66f5","fill-info-quiet":"#1e66f524","border-info":"#1e66f573","success":"#40a02b","fill-success-quiet":"#40a02b24","border-success":"#40a02b73","important":"#8839ef","fill-important-quiet":"#8839ef24","border-important":"#8839ef73","warning":"#df8e1d","fill-warning-quiet":"#df8e1d24","border-warning":"#df8e1d73","danger":"#d20f39","fill-danger-quiet":"#d20f3924","border-danger":"#d20f3973"}},"catppuccin-macchiato":{"dark":{"surface-lower":"#181926","surface-low":"#1d2032","surface-default":"#24273a","surface-raised":"#363a4f","surface-overlay":"#3c4156","border-quiet":"#41455b","border-normal":"#494d64","border-loud":"#5f637b","text-strong":"#cad3f5","text-primary":"#cad3f5","text-secondary":"#a5adcb","text-disabled":"#a5adcb99","fill-neutral-resting":"#3e4257","fill-neutral-hovered":"#464a60","fill-neutral-pressed":"#4e5268","fill-neutral-selected":"#4b4f65","fill-neutral-disabled":"#3a3e53","fill-primary-resting":"#cad3f5","fill-primary-hovered":"#b7c0e1","fill-primary-pressed":"#aab3d4","on-primary":"#24273a","accent":"#c6a0f6","fill-accent-resting":"#c6a0f6","fill-accent-hovered":"#d5b2ff","fill-accent-pressed":"#be98ee","fill-accent-quiet":"#c6a0f629","border-accent":"#c6a0f680","on-accent":"#0b0b0b","focus":"#c6a0f6","link":"#c6a0f6","info":"#8aadf4","fill-info-quiet":"#8aadf424","border-info":"#8aadf473","success":"#a6da95","fill-success-quiet":"#a6da9524","border-success":"#a6da9573","important":"#c6a0f6","fill-important-quiet":"#c6a0f624","border-important":"#c6a0f673","warning":"#eed49f","fill-warning-quiet":"#eed49f24","border-warning":"#eed49f73","danger":"#ed8796","fill-danger-quiet":"#ed879624","border-danger":"#ed879673"},"darker":{"surface-lower":"#0e0f1b","surface-low":"#131527","surface-default":"#191c2e","surface-raised":"#2b2e43","surface-overlay":"#31354a","border-quiet":"#494d64","border-normal":"#5f637b","border-loud":"#5f637b","text-strong":"#cad3f5","text-primary":"#cad3f5","text-secondary":"#a5adcb","text-disabled":"#a5adcb99","fill-neutral-resting":"#32364b","fill-neutral-hovered":"#3a3e53","fill-neutral-pressed":"#42465c","fill-neutral-selected":"#3f4359","fill-neutral-disabled":"#2e3247","fill-primary-resting":"#cad3f5","fill-primary-hovered":"#b7c0e1","fill-primary-pressed":"#aab3d4","on-primary":"#191c2e","accent":"#c6a0f6","fill-accent-resting":"#c6a0f6","fill-accent-hovered":"#d5b2ff","fill-accent-pressed":"#be98ee","fill-accent-quiet":"#c6a0f629","border-accent":"#c6a0f680","on-accent":"#0b0b0b","focus":"#c6a0f6","link":"#c6a0f6","info":"#8aadf4","fill-info-quiet":"#8aadf424","border-info":"#8aadf473","success":"#a6da95","fill-success-quiet":"#a6da9524","border-success":"#a6da9573","important":"#c6a0f6","fill-important-quiet":"#c6a0f624","border-important":"#c6a0f673","warning":"#eed49f","fill-warning-quiet":"#eed49f24","border-warning":"#eed49f73","danger":"#ed8796","fill-danger-quiet":"#ed879624","border-danger":"#ed879673"}},"catppuccin-mocha":{"dark":{"surface-lower":"#11111b","surface-low":"#171726","surface-default":"#1e1e2e","surface-raised":"#313244","surface-overlay":"#37384b","border-quiet":"#3d3f52","border-normal":"#45475a","border-loud":"#5b5d71","text-strong":"#cdd6f4","text-primary":"#cdd6f4","text-secondary":"#a6adc8","text-disabled":"#a6adc899","fill-neutral-resting":"#393a4c","fill-neutral-hovered":"#404254","fill-neutral-pressed":"#484a5d","fill-neutral-selected":"#46475a","fill-neutral-disabled":"#353648","fill-primary-resting":"#cdd6f4","fill-primary-hovered":"#bac3e0","fill-primary-pressed":"#adb6d3","on-primary":"#1e1e2e","accent":"#cba6f7","fill-accent-resting":"#cba6f7","fill-accent-hovered":"#d9b8ff","fill-accent-pressed":"#c39eef","fill-accent-quiet":"#cba6f729","border-accent":"#cba6f780","on-accent":"#0b0b0b","focus":"#cba6f7","link":"#cba6f7","info":"#89b4fa","fill-info-quiet":"#89b4fa24","border-info":"#89b4fa73","success":"#a6e3a1","fill-success-quiet":"#a6e3a124","border-success":"#a6e3a173","important":"#cba6f7","fill-important-quiet":"#cba6f724","border-important":"#cba6f773","warning":"#f9e2af","fill-warning-quiet":"#f9e2af24","border-warning":"#f9e2af73","danger":"#f38ba8","fill-danger-quiet":"#f38ba824","border-danger":"#f38ba873"},"darker":{"surface-lower":"#080811","surface-low":"#0d0d1c","surface-default":"#141423","surface-raised":"#262738","surface-overlay":"#2c2d3f","border-quiet":"#45475a","border-normal":"#5b5d71","border-loud":"#5b5d71","text-strong":"#cdd6f4","text-primary":"#cdd6f4","text-secondary":"#a6adc8","text-disabled":"#a6adc899","fill-neutral-resting":"#2d2e40","fill-neutral-hovered":"#353648","fill-neutral-pressed":"#3c3e50","fill-neutral-selected":"#3a3b4d","fill-neutral-disabled":"#2a2a3c","fill-primary-resting":"#cdd6f4","fill-primary-hovered":"#bac3e0","fill-primary-pressed":"#adb6d3","on-primary":"#141423","accent":"#cba6f7","fill-accent-resting":"#cba6f7","fill-accent-hovered":"#d9b8ff","fill-accent-pressed":"#c39eef","fill-accent-quiet":"#cba6f729","border-accent":"#cba6f780","on-accent":"#0b0b0b","focus":"#cba6f7","link":"#cba6f7","info":"#89b4fa","fill-info-quiet":"#89b4fa24","border-info":"#89b4fa73","success":"#a6e3a1","fill-success-quiet":"#a6e3a124","border-success":"#a6e3a173","important":"#cba6f7","fill-important-quiet":"#cba6f724","border-important":"#cba6f773","warning":"#f9e2af","fill-warning-quiet":"#f9e2af24","border-warning":"#f9e2af73","danger":"#f38ba8","fill-danger-quiet":"#f38ba824","border-danger":"#f38ba873"}},"tokyo-night":{"dark":{"surface-lower":"#16161e","surface-low":"#171823","surface-default":"#1a1b26","surface-raised":"#292e42","surface-overlay":"#2f3449","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#30364a","fill-neutral-hovered":"#383d52","fill-neutral-pressed":"#40455b","fill-neutral-selected":"#3d4358","fill-neutral-disabled":"#2d3246","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#1a1b26","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"},"darker":{"surface-lower":"#0c0c14","surface-low":"#0e0e19","surface-default":"#10111b","surface-raised":"#1e2336","surface-overlay":"#24293d","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#252a3e","fill-neutral-hovered":"#2d3246","fill-neutral-pressed":"#343a4e","fill-neutral-selected":"#32374b","fill-neutral-disabled":"#22273a","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#10111b","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"}},"tokyo-night-day":{"light":{"surface-lower":"#d0d5e3","surface-low":"#dadbe0","surface-default":"#e1e2e7","surface-raised":"#e9e9ed","surface-overlay":"#e1e1e5","border-quiet":"#ced2e4","border-normal":"#c4c8da","border-loud":"#abafc0","text-strong":"#3760bf","text-primary":"#3760bf","text-secondary":"#6172b0","text-disabled":"#6172b099","fill-neutral-resting":"#dfdfe3","fill-neutral-hovered":"#d5d5d9","fill-neutral-pressed":"#ccccd0","fill-neutral-selected":"#cfcfd3","fill-neutral-disabled":"#e4e4e8","fill-primary-resting":"#3760bf","fill-primary-hovered":"#4772d3","fill-primary-pressed":"#537fe1","on-primary":"#e1e2e7","accent":"#2e7de9","fill-accent-resting":"#2e7de9","fill-accent-hovered":"#0042a5","fill-accent-pressed":"#0059c0","fill-accent-quiet":"#0051b729","border-accent":"#0051b780","on-accent":"#ffffff","focus":"#2e7de9","link":"#0051b7","info":"#2e7de9","fill-info-quiet":"#2e7de924","border-info":"#2e7de973","success":"#587539","fill-success-quiet":"#58753924","border-success":"#58753973","important":"#9854f1","fill-important-quiet":"#9854f124","border-important":"#9854f173","warning":"#8c6c3e","fill-warning-quiet":"#8c6c3e24","border-warning":"#8c6c3e73","danger":"#f52a65","fill-danger-quiet":"#f52a6524","border-danger":"#f52a6573"}},"tokyo-night-moon":{"dark":{"surface-lower":"#1e2030","surface-low":"#202234","surface-default":"#222436","surface-raised":"#2f334d","surface-overlay":"#353954","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c8d3f5","text-primary":"#c8d3f5","text-secondary":"#828bb8","text-disabled":"#828bb899","fill-neutral-resting":"#373b55","fill-neutral-hovered":"#3e435e","fill-neutral-pressed":"#464b66","fill-neutral-selected":"#444863","fill-neutral-disabled":"#333751","fill-primary-resting":"#c8d3f5","fill-primary-hovered":"#b5c0e1","fill-primary-pressed":"#a8b3d4","on-primary":"#222436","accent":"#82aaff","fill-accent-resting":"#82aaff","fill-accent-hovered":"#99bbff","fill-accent-pressed":"#7ba2f6","fill-accent-quiet":"#82aaff29","border-accent":"#82aaff80","on-accent":"#0b0b0b","focus":"#82aaff","link":"#82aaff","info":"#82aaff","fill-info-quiet":"#82aaff24","border-info":"#82aaff73","success":"#c3e88d","fill-success-quiet":"#c3e88d24","border-success":"#c3e88d73","important":"#c099ff","fill-important-quiet":"#c099ff24","border-important":"#c099ff73","warning":"#ffc777","fill-warning-quiet":"#ffc77724","border-warning":"#ffc77773","danger":"#ff757f","fill-danger-quiet":"#ff757f24","border-danger":"#ff757f73"},"darker":{"surface-lower":"#141525","surface-low":"#161728","surface-default":"#18192b","surface-raised":"#242841","surface-overlay":"#2a2e48","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c8d3f5","text-primary":"#c8d3f5","text-secondary":"#828bb8","text-disabled":"#828bb899","fill-neutral-resting":"#2b2f49","fill-neutral-hovered":"#333751","fill-neutral-pressed":"#3a3f5a","fill-neutral-selected":"#383c57","fill-neutral-disabled":"#282b45","fill-primary-resting":"#c8d3f5","fill-primary-hovered":"#b5c0e1","fill-primary-pressed":"#a8b3d4","on-primary":"#18192b","accent":"#82aaff","fill-accent-resting":"#82aaff","fill-accent-hovered":"#99bbff","fill-accent-pressed":"#7ba2f6","fill-accent-quiet":"#82aaff29","border-accent":"#82aaff80","on-accent":"#0b0b0b","focus":"#82aaff","link":"#82aaff","info":"#82aaff","fill-info-quiet":"#82aaff24","border-info":"#82aaff73","success":"#c3e88d","fill-success-quiet":"#c3e88d24","border-success":"#c3e88d73","important":"#c099ff","fill-important-quiet":"#c099ff24","border-important":"#c099ff73","warning":"#ffc777","fill-warning-quiet":"#ffc77724","border-warning":"#ffc77773","danger":"#ff757f","fill-danger-quiet":"#ff757f24","border-danger":"#ff757f73"}},"tokyo-night-storm":{"dark":{"surface-lower":"#1f2335","surface-low":"#222538","surface-default":"#24283b","surface-raised":"#292e42","surface-overlay":"#2f3449","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#30364a","fill-neutral-hovered":"#383d52","fill-neutral-pressed":"#40455b","fill-neutral-selected":"#3d4358","fill-neutral-disabled":"#2d3246","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#24283b","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"},"darker":{"surface-lower":"#15182a","surface-low":"#171b2d","surface-default":"#191d2f","surface-raised":"#1e2336","surface-overlay":"#24293d","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#252a3e","fill-neutral-hovered":"#2d3246","fill-neutral-pressed":"#343a4e","fill-neutral-selected":"#32374b","fill-neutral-disabled":"#22273a","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#191d2f","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"}}})
6
+ readonly property var themes: ({"base":{"light":{"surface-lower":"#eceff3","surface-low":"#f0f3f7","surface-default":"#f4f7fb","surface-raised":"#fcfdff","surface-overlay":"#ffffff","border-quiet":"#dde0e4","border-normal":"#dadce1","border-loud":"#b3b6ba","text-strong":"#313235","text-primary":"#3e4042","text-secondary":"#6a6b6e","text-disabled":"#9a9b9e","fill-neutral-resting":"#e0e3e7","fill-neutral-hovered":"#d7d9dd","fill-neutral-pressed":"#cdcfd4","fill-neutral-selected":"#cfd3d9","fill-neutral-disabled":"#e9ebef","fill-primary-resting":"#1e1f21","fill-primary-hovered":"#2d2e30","fill-primary-pressed":"#37383a","on-primary":"#fcfdff","accent":"#1e1f21","fill-accent-resting":"#1e1f21","fill-accent-hovered":"#131416","fill-accent-pressed":"#242527","fill-accent-quiet":"#1e1f2129","border-accent":"#1e1f2180","on-accent":"#ffffff","focus":"#1e1f21","link":"#313235","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#16783a","fill-success-quiet":"#16783a24","border-success":"#16783a73","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6100","fill-warning-quiet":"#8a610024","border-warning":"#8a610073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0e1015","surface-low":"#111418","surface-default":"#14171c","surface-raised":"#202328","surface-overlay":"#292c32","border-quiet":"#2c2f34","border-normal":"#36393f","border-loud":"#4b4e54","text-strong":"#e3e4e7","text-primary":"#ced0d2","text-secondary":"#929497","text-disabled":"#646568","fill-neutral-resting":"#292c32","fill-neutral-hovered":"#313439","fill-neutral-pressed":"#383c41","fill-neutral-selected":"#343941","fill-neutral-disabled":"#22252a","fill-primary-resting":"#e6e8eb","fill-primary-hovered":"#d2d4d7","fill-primary-pressed":"#c6c7ca","on-primary":"#14171c","accent":"#e6e8eb","fill-accent-resting":"#e6e8eb","fill-accent-hovered":"#f7f8fb","fill-accent-pressed":"#dee0e2","fill-accent-quiet":"#e6e8eb29","border-accent":"#e6e8eb80","on-accent":"#0b0b0b","focus":"#e6e8eb","link":"#e3e4e7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0a0d12","surface-low":"#0e1015","surface-default":"#111418","surface-raised":"#1c1f24","surface-overlay":"#26292e","border-quiet":"#36393f","border-normal":"#4b4e54","border-loud":"#4b4e54","text-strong":"#e3e4e7","text-primary":"#ced0d2","text-secondary":"#929497","text-disabled":"#646568","fill-neutral-resting":"#26292e","fill-neutral-hovered":"#2d3036","fill-neutral-pressed":"#35383d","fill-neutral-selected":"#30353e","fill-neutral-disabled":"#1e2227","fill-primary-resting":"#e6e8eb","fill-primary-hovered":"#d2d4d7","fill-primary-pressed":"#c6c7ca","on-primary":"#111418","accent":"#e6e8eb","fill-accent-resting":"#e6e8eb","fill-accent-hovered":"#f7f8fb","fill-accent-pressed":"#dee0e2","fill-accent-quiet":"#e6e8eb29","border-accent":"#e6e8eb80","on-accent":"#0b0b0b","focus":"#e6e8eb","link":"#e3e4e7","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"glazing":{"light":{"surface-lower":"#eceef8","surface-low":"#f0f2fc","surface-default":"#f4f6ff","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dddfe9","border-normal":"#dadce6","border-loud":"#b3b5bf","text-strong":"#313238","text-primary":"#3e3f45","text-secondary":"#696b71","text-disabled":"#999ba1","fill-neutral-resting":"#e0e2ec","fill-neutral-hovered":"#d6d8e3","fill-neutral-pressed":"#cdcfd9","fill-neutral-selected":"#cfd2e1","fill-neutral-disabled":"#e8ebf5","fill-primary-resting":"#1e1f24","fill-primary-hovered":"#2c2d33","fill-primary-pressed":"#37383d","on-primary":"#fdfdff","accent":"#4063b0","fill-accent-resting":"#4063b0","fill-accent-hovered":"#3254a0","fill-accent-pressed":"#476ab9","fill-accent-quiet":"#4063b029","border-accent":"#4063b080","on-accent":"#ffffff","focus":"#4063b0","link":"#4063b0","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#167839","fill-success-quiet":"#16783924","border-success":"#16783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0e0f1b","surface-low":"#11131e","surface-default":"#141622","surface-raised":"#20222e","surface-overlay":"#292b38","border-quiet":"#2c2e3b","border-normal":"#363845","border-loud":"#4b4d5b","text-strong":"#e2e4ea","text-primary":"#cdcfd5","text-secondary":"#92949a","text-disabled":"#63656a","fill-neutral-resting":"#292b38","fill-neutral-hovered":"#313340","fill-neutral-pressed":"#383b48","fill-neutral-selected":"#34384b","fill-neutral-disabled":"#222431","fill-primary-resting":"#e6e7ee","fill-primary-hovered":"#d2d4da","fill-primary-pressed":"#c5c7cd","on-primary":"#141622","accent":"#749bee","fill-accent-resting":"#749bee","fill-accent-hovered":"#83abff","fill-accent-pressed":"#6d93e6","fill-accent-quiet":"#749bee29","border-accent":"#749bee80","on-accent":"#0b0b0b","focus":"#749bee","link":"#749bee","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0b0c17","surface-low":"#0e0f1b","surface-default":"#11131e","surface-raised":"#1c1e2a","surface-overlay":"#262834","border-quiet":"#363845","border-normal":"#4b4d5b","border-loud":"#4b4d5b","text-strong":"#e2e4ea","text-primary":"#cdcfd5","text-secondary":"#92949a","text-disabled":"#63656a","fill-neutral-resting":"#262834","fill-neutral-hovered":"#2d2f3c","fill-neutral-pressed":"#343744","fill-neutral-selected":"#303447","fill-neutral-disabled":"#1e212d","fill-primary-resting":"#e6e7ee","fill-primary-hovered":"#d2d4da","fill-primary-pressed":"#c5c7cd","on-primary":"#11131e","accent":"#749bee","fill-accent-resting":"#749bee","fill-accent-hovered":"#83abff","fill-accent-pressed":"#6d93e6","fill-accent-quiet":"#749bee29","border-accent":"#749bee80","on-accent":"#0b0b0b","focus":"#749bee","link":"#749bee","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"survey":{"light":{"surface-lower":"#edeef2","surface-low":"#f1f3f6","surface-default":"#f5f7fa","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dee0e3","border-normal":"#dbdce0","border-loud":"#b4b6b9","text-strong":"#323234","text-primary":"#3f3f41","text-secondary":"#6a6b6d","text-disabled":"#999b9d","fill-neutral-resting":"#e1e3e6","fill-neutral-hovered":"#d7d9dc","fill-neutral-pressed":"#cecfd3","fill-neutral-selected":"#d0d3d8","fill-neutral-disabled":"#e9ebef","fill-primary-resting":"#1e1f21","fill-primary-hovered":"#2d2e2f","fill-primary-pressed":"#37383a","on-primary":"#fdfdff","accent":"#ab3a79","fill-accent-resting":"#ab3a79","fill-accent-hovered":"#9a2a6a","fill-accent-pressed":"#b34280","fill-accent-quiet":"#ab3a7929","border-accent":"#ab3a7980","on-accent":"#ffffff","focus":"#ab3a79","link":"#ab3a79","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#147739","fill-success-quiet":"#14773924","border-success":"#14773973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#0f1014","surface-low":"#121418","surface-default":"#15171b","surface-raised":"#212327","surface-overlay":"#2a2c31","border-quiet":"#2d2f33","border-normal":"#37393e","border-loud":"#4c4e53","text-strong":"#e3e5e7","text-primary":"#ced0d2","text-secondary":"#939496","text-disabled":"#656567","fill-neutral-resting":"#2a2c31","fill-neutral-hovered":"#323438","fill-neutral-pressed":"#393c40","fill-neutral-selected":"#363940","fill-neutral-disabled":"#232529","fill-primary-resting":"#e7e8ea","fill-primary-hovered":"#d3d4d6","fill-primary-pressed":"#c6c7c9","on-primary":"#15171b","accent":"#ea74b1","fill-accent-resting":"#ea74b1","fill-accent-hovered":"#fc84c1","fill-accent-pressed":"#e16ca9","fill-accent-quiet":"#ea74b129","border-accent":"#ea74b180","on-accent":"#0b0b0b","focus":"#ea74b1","link":"#ea74b1","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0b0d11","surface-low":"#0f1014","surface-default":"#121418","surface-raised":"#1d1f23","surface-overlay":"#27292d","border-quiet":"#37393e","border-normal":"#4c4e53","border-loud":"#4c4e53","text-strong":"#e3e5e7","text-primary":"#ced0d2","text-secondary":"#939496","text-disabled":"#656567","fill-neutral-resting":"#27292d","fill-neutral-hovered":"#2e3035","fill-neutral-pressed":"#36383c","fill-neutral-selected":"#32353c","fill-neutral-disabled":"#202226","fill-primary-resting":"#e7e8ea","fill-primary-hovered":"#d3d4d6","fill-primary-pressed":"#c6c7c9","on-primary":"#121418","accent":"#ea74b1","fill-accent-resting":"#ea74b1","fill-accent-hovered":"#fc84c1","fill-accent-pressed":"#e16ca9","fill-accent-quiet":"#ea74b129","border-accent":"#ea74b180","on-accent":"#0b0b0b","focus":"#ea74b1","link":"#ea74b1","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"slate":{"light":{"surface-lower":"#f2ecf4","surface-low":"#f6f0f9","surface-default":"#faf4fd","surface-raised":"#fffcff","surface-overlay":"#ffffff","border-quiet":"#e3dde6","border-normal":"#e0dae2","border-loud":"#b9b3bb","text-strong":"#343136","text-primary":"#423e43","text-secondary":"#6d696e","text-disabled":"#9d999f","fill-neutral-resting":"#e6e0e9","fill-neutral-hovered":"#dcd7df","fill-neutral-pressed":"#d3cdd5","fill-neutral-selected":"#d8cfdb","fill-neutral-disabled":"#efe9f1","fill-primary-resting":"#211e22","fill-primary-hovered":"#2f2d31","fill-primary-pressed":"#3a373b","on-primary":"#fffcff","accent":"#7e539d","fill-accent-resting":"#7e539d","fill-accent-hovered":"#70458d","fill-accent-pressed":"#865aa5","fill-accent-quiet":"#7e539d29","border-accent":"#7e539d80","on-accent":"#ffffff","focus":"#7e539d","link":"#7e539d","info":"#276ba9","fill-info-quiet":"#276ba924","border-info":"#276ba973","success":"#147739","fill-success-quiet":"#14773924","border-success":"#14773973","important":"#7857ac","fill-important-quiet":"#7857ac24","border-important":"#7857ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4943","fill-danger-quiet":"#ab494324","border-danger":"#ab494373"},"dark":{"surface-lower":"#140e17","surface-low":"#17111a","surface-default":"#1b141e","surface-raised":"#27202a","surface-overlay":"#312934","border-quiet":"#332c36","border-normal":"#3e3641","border-loud":"#534b57","text-strong":"#e6e3e8","text-primary":"#d1ced3","text-secondary":"#969398","text-disabled":"#676468","fill-neutral-resting":"#312934","fill-neutral-hovered":"#38313c","fill-neutral-pressed":"#403844","fill-neutral-selected":"#403445","fill-neutral-disabled":"#29222c","fill-primary-resting":"#eae6ec","fill-primary-hovered":"#d6d3d8","fill-primary-pressed":"#c9c6cb","on-primary":"#1b141e","accent":"#b78ad8","fill-accent-resting":"#b78ad8","fill-accent-hovered":"#c799e9","fill-accent-pressed":"#af82d0","fill-accent-quiet":"#b78ad829","border-accent":"#b78ad880","on-accent":"#0b0b0b","focus":"#b78ad8","link":"#b78ad8","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#110a13","surface-low":"#140e17","surface-default":"#17111a","surface-raised":"#231c26","surface-overlay":"#2d2630","border-quiet":"#3e3641","border-normal":"#534b57","border-loud":"#534b57","text-strong":"#e6e3e8","text-primary":"#d1ced3","text-secondary":"#969398","text-disabled":"#676468","fill-neutral-resting":"#2d2630","fill-neutral-hovered":"#352d38","fill-neutral-pressed":"#3c3540","fill-neutral-selected":"#3c3041","fill-neutral-disabled":"#261f29","fill-primary-resting":"#eae6ec","fill-primary-hovered":"#d6d3d8","fill-primary-pressed":"#c9c6cb","on-primary":"#17111a","accent":"#b78ad8","fill-accent-resting":"#b78ad8","fill-accent-hovered":"#c799e9","fill-accent-pressed":"#af82d0","fill-accent-quiet":"#b78ad829","border-accent":"#b78ad880","on-accent":"#0b0b0b","focus":"#b78ad8","link":"#b78ad8","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"bridge":{"light":{"surface-lower":"#eeeef1","surface-low":"#f2f2f6","surface-default":"#f6f6fa","surface-raised":"#fdfdff","surface-overlay":"#ffffff","border-quiet":"#dfdfe3","border-normal":"#dcdcdf","border-loud":"#b5b5b9","text-strong":"#323234","text-primary":"#3f3f41","text-secondary":"#6a6b6c","text-disabled":"#9a9b9d","fill-neutral-resting":"#e2e2e6","fill-neutral-hovered":"#d9d9dc","fill-neutral-pressed":"#cfcfd2","fill-neutral-selected":"#d2d2d7","fill-neutral-disabled":"#ebebee","fill-primary-resting":"#1f1f21","fill-primary-hovered":"#2e2e2f","fill-primary-pressed":"#383839","on-primary":"#fdfdff","accent":"#7152bb","fill-accent-resting":"#7152bb","fill-accent-hovered":"#6343ab","fill-accent-pressed":"#785ac4","fill-accent-quiet":"#7152bb29","border-accent":"#7152bb80","on-accent":"#ffffff","focus":"#7152bb","link":"#7152bb","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#157839","fill-success-quiet":"#15783924","border-success":"#15783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#101014","surface-low":"#141418","surface-default":"#17171b","surface-raised":"#232327","surface-overlay":"#2c2c31","border-quiet":"#2f2f33","border-normal":"#39393e","border-loud":"#4e4e53","text-strong":"#e4e5e7","text-primary":"#cfd0d2","text-secondary":"#949597","text-disabled":"#656667","fill-neutral-resting":"#2c2c31","fill-neutral-hovered":"#343438","fill-neutral-pressed":"#3c3c40","fill-neutral-selected":"#39393f","fill-neutral-disabled":"#252529","fill-primary-resting":"#e7e7ea","fill-primary-hovered":"#d4d4d6","fill-primary-pressed":"#c7c7c9","on-primary":"#17171b","accent":"#a78bfa","fill-accent-resting":"#a78bfa","fill-accent-hovered":"#b69eff","fill-accent-pressed":"#9f83f1","fill-accent-quiet":"#a78bfa29","border-accent":"#a78bfa80","on-accent":"#0b0b0b","focus":"#a78bfa","link":"#a78bfa","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0d0d11","surface-low":"#101014","surface-default":"#141418","surface-raised":"#1f1f23","surface-overlay":"#29292d","border-quiet":"#39393e","border-normal":"#4e4e53","border-loud":"#4e4e53","text-strong":"#e4e5e7","text-primary":"#cfd0d2","text-secondary":"#949597","text-disabled":"#656667","fill-neutral-resting":"#29292d","fill-neutral-hovered":"#303035","fill-neutral-pressed":"#38383c","fill-neutral-selected":"#35353c","fill-neutral-disabled":"#222226","fill-primary-resting":"#e7e7ea","fill-primary-hovered":"#d4d4d6","fill-primary-pressed":"#c7c7c9","on-primary":"#141418","accent":"#a78bfa","fill-accent-resting":"#a78bfa","fill-accent-hovered":"#b69eff","fill-accent-pressed":"#9f83f1","fill-accent-quiet":"#a78bfa29","border-accent":"#a78bfa80","on-accent":"#0b0b0b","focus":"#a78bfa","link":"#a78bfa","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"snag":{"light":{"surface-lower":"#eeeef0","surface-low":"#f2f2f4","surface-default":"#f6f6f8","surface-raised":"#fdfdfe","surface-overlay":"#ffffff","border-quiet":"#dfdfe1","border-normal":"#dcdcde","border-loud":"#b5b5b7","text-strong":"#323233","text-primary":"#3f3f40","text-secondary":"#6a6b6b","text-disabled":"#9a9b9c","fill-neutral-resting":"#e3e3e4","fill-neutral-hovered":"#d9d9da","fill-neutral-pressed":"#cfcfd1","fill-neutral-selected":"#d2d2d5","fill-neutral-disabled":"#ebebed","fill-primary-resting":"#1f1f20","fill-primary-hovered":"#2e2e2e","fill-primary-pressed":"#383839","on-primary":"#fdfdfe","accent":"#8a5c00","fill-accent-resting":"#8a5c00","fill-accent-hovered":"#784f00","fill-accent-pressed":"#926306","fill-accent-quiet":"#8a5c0029","border-accent":"#8a5c0080","on-accent":"#ffffff","focus":"#8a5c00","link":"#8a5c00","info":"#276baa","fill-info-quiet":"#276baa24","border-info":"#276baa73","success":"#147839","fill-success-quiet":"#14783924","border-success":"#14783973","important":"#7957ac","fill-important-quiet":"#7957ac24","border-important":"#7957ac73","warning":"#8a6000","fill-warning-quiet":"#8a600024","border-warning":"#8a600073","danger":"#ab4944","fill-danger-quiet":"#ab494424","border-danger":"#ab494473"},"dark":{"surface-lower":"#101012","surface-low":"#141416","surface-default":"#171719","surface-raised":"#232325","surface-overlay":"#2c2c2f","border-quiet":"#2f2f31","border-normal":"#39393b","border-loud":"#4e4e51","text-strong":"#e4e5e6","text-primary":"#cfd0d1","text-secondary":"#949596","text-disabled":"#656666","fill-neutral-resting":"#2c2c2f","fill-neutral-hovered":"#343436","fill-neutral-pressed":"#3c3c3e","fill-neutral-selected":"#39393c","fill-neutral-disabled":"#252527","fill-primary-resting":"#e8e8e9","fill-primary-hovered":"#d4d4d5","fill-primary-pressed":"#c7c7c8","on-primary":"#171719","accent":"#c99137","fill-accent-resting":"#c99137","fill-accent-hovered":"#d9a149","fill-accent-pressed":"#c1892e","fill-accent-quiet":"#c9913729","border-accent":"#c9913780","on-accent":"#0b0b0b","focus":"#c99137","link":"#c99137","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"},"darker":{"surface-lower":"#0d0d0f","surface-low":"#101012","surface-default":"#141416","surface-raised":"#1f1f21","surface-overlay":"#29292b","border-quiet":"#39393b","border-normal":"#4e4e51","border-loud":"#4e4e51","text-strong":"#e4e5e6","text-primary":"#cfd0d1","text-secondary":"#949596","text-disabled":"#656666","fill-neutral-resting":"#29292b","fill-neutral-hovered":"#303032","fill-neutral-pressed":"#38383a","fill-neutral-selected":"#353538","fill-neutral-disabled":"#222224","fill-primary-resting":"#e8e8e9","fill-primary-hovered":"#d4d4d5","fill-primary-pressed":"#c7c7c8","on-primary":"#141416","accent":"#c99137","fill-accent-resting":"#c99137","fill-accent-hovered":"#d9a149","fill-accent-pressed":"#c1892e","fill-accent-quiet":"#c9913729","border-accent":"#c9913780","on-accent":"#0b0b0b","focus":"#c99137","link":"#c99137","info":"#5b9ee0","fill-info-quiet":"#5b9ee024","border-info":"#5b9ee073","success":"#52ab69","fill-success-quiet":"#52ab6924","border-success":"#52ab6973","important":"#aa89e2","fill-important-quiet":"#aa89e224","border-important":"#aa89e273","warning":"#c49027","fill-warning-quiet":"#c4902724","border-warning":"#c4902773","danger":"#e47c74","fill-danger-quiet":"#e47c7424","border-danger":"#e47c7473"}},"catppuccin-frappe":{"dark":{"surface-lower":"#232634","surface-low":"#292d3e","surface-default":"#303446","surface-raised":"#414559","surface-overlay":"#484c60","border-quiet":"#494f64","border-normal":"#51576d","border-loud":"#676e85","text-strong":"#c6d0f5","text-primary":"#c6d0f5","text-secondary":"#a5adce","text-disabled":"#a5adce99","fill-neutral-resting":"#494d61","fill-neutral-hovered":"#51556a","fill-neutral-pressed":"#595e73","fill-neutral-selected":"#575b70","fill-neutral-disabled":"#45495d","fill-primary-resting":"#c6d0f5","fill-primary-hovered":"#b3bde1","fill-primary-pressed":"#a6b0d4","on-primary":"#303446","accent":"#ca9ee6","fill-accent-resting":"#ca9ee6","fill-accent-hovered":"#e7bdff","fill-accent-pressed":"#d0a4ec","fill-accent-quiet":"#d8acf429","border-accent":"#d8acf480","on-accent":"#0b0b0b","focus":"#ca9ee6","link":"#d8acf4","info":"#8caaee","fill-info-quiet":"#8caaee24","border-info":"#8caaee73","success":"#a6d189","fill-success-quiet":"#a6d18924","border-success":"#a6d18973","important":"#ca9ee6","fill-important-quiet":"#ca9ee624","border-important":"#ca9ee673","warning":"#e5c890","fill-warning-quiet":"#e5c89024","border-warning":"#e5c89073","danger":"#e78284","fill-danger-quiet":"#e7828424","border-danger":"#e7828473"},"darker":{"surface-lower":"#191b29","surface-low":"#1e2233","surface-default":"#25293a","surface-raised":"#35394d","surface-overlay":"#3c4053","border-quiet":"#51576d","border-normal":"#676e85","border-loud":"#676e85","text-strong":"#c6d0f5","text-primary":"#c6d0f5","text-secondary":"#a5adce","text-disabled":"#a5adce99","fill-neutral-resting":"#3d4155","fill-neutral-hovered":"#45495d","fill-neutral-pressed":"#4d5166","fill-neutral-selected":"#4a4e63","fill-neutral-disabled":"#393d51","fill-primary-resting":"#c6d0f5","fill-primary-hovered":"#b3bde1","fill-primary-pressed":"#a6b0d4","on-primary":"#25293a","accent":"#ca9ee6","fill-accent-resting":"#ca9ee6","fill-accent-hovered":"#e7bdff","fill-accent-pressed":"#d0a4ec","fill-accent-quiet":"#d8acf429","border-accent":"#d8acf480","on-accent":"#0b0b0b","focus":"#ca9ee6","link":"#d8acf4","info":"#8caaee","fill-info-quiet":"#8caaee24","border-info":"#8caaee73","success":"#a6d189","fill-success-quiet":"#a6d18924","border-success":"#a6d18973","important":"#ca9ee6","fill-important-quiet":"#ca9ee624","border-important":"#ca9ee673","warning":"#e5c890","fill-warning-quiet":"#e5c89024","border-warning":"#e5c89073","danger":"#e78284","fill-danger-quiet":"#e7828424","border-danger":"#e7828473"}},"catppuccin-latte":{"light":{"surface-lower":"#dce0e8","surface-low":"#e6e8ec","surface-default":"#eff1f5","surface-raised":"#e6e9ef","surface-overlay":"#dee1e7","border-quiet":"#c6cad6","border-normal":"#bcc0cc","border-loud":"#a3a7b2","text-strong":"#4c4f69","text-primary":"#4c4f69","text-secondary":"#6c6f85","text-disabled":"#6c6f8599","fill-neutral-resting":"#dcdfe5","fill-neutral-hovered":"#d2d5db","fill-neutral-pressed":"#c9ccd1","fill-neutral-selected":"#cccfd5","fill-neutral-disabled":"#e1e4ea","fill-primary-resting":"#4c4f69","fill-primary-hovered":"#5c607b","fill-primary-pressed":"#686b86","on-primary":"#eff1f5","accent":"#8839ef","fill-accent-resting":"#8839ef","fill-accent-hovered":"#6e00ce","fill-accent-pressed":"#8331e8","fill-accent-quiet":"#7b25df29","border-accent":"#7b25df80","on-accent":"#ffffff","focus":"#8839ef","link":"#7b25df","info":"#1e66f5","fill-info-quiet":"#1e66f524","border-info":"#1e66f573","success":"#40a02b","fill-success-quiet":"#40a02b24","border-success":"#40a02b73","important":"#8839ef","fill-important-quiet":"#8839ef24","border-important":"#8839ef73","warning":"#df8e1d","fill-warning-quiet":"#df8e1d24","border-warning":"#df8e1d73","danger":"#d20f39","fill-danger-quiet":"#d20f3924","border-danger":"#d20f3973"}},"catppuccin-macchiato":{"dark":{"surface-lower":"#181926","surface-low":"#1d2032","surface-default":"#24273a","surface-raised":"#363a4f","surface-overlay":"#3c4156","border-quiet":"#41455b","border-normal":"#494d64","border-loud":"#5f637b","text-strong":"#cad3f5","text-primary":"#cad3f5","text-secondary":"#a5adcb","text-disabled":"#a5adcb99","fill-neutral-resting":"#3e4257","fill-neutral-hovered":"#464a60","fill-neutral-pressed":"#4e5268","fill-neutral-selected":"#4b4f65","fill-neutral-disabled":"#3a3e53","fill-primary-resting":"#cad3f5","fill-primary-hovered":"#b7c0e1","fill-primary-pressed":"#aab3d4","on-primary":"#24273a","accent":"#c6a0f6","fill-accent-resting":"#c6a0f6","fill-accent-hovered":"#d5b2ff","fill-accent-pressed":"#be98ee","fill-accent-quiet":"#c6a0f629","border-accent":"#c6a0f680","on-accent":"#0b0b0b","focus":"#c6a0f6","link":"#c6a0f6","info":"#8aadf4","fill-info-quiet":"#8aadf424","border-info":"#8aadf473","success":"#a6da95","fill-success-quiet":"#a6da9524","border-success":"#a6da9573","important":"#c6a0f6","fill-important-quiet":"#c6a0f624","border-important":"#c6a0f673","warning":"#eed49f","fill-warning-quiet":"#eed49f24","border-warning":"#eed49f73","danger":"#ed8796","fill-danger-quiet":"#ed879624","border-danger":"#ed879673"},"darker":{"surface-lower":"#0e0f1b","surface-low":"#131527","surface-default":"#191c2e","surface-raised":"#2b2e43","surface-overlay":"#31354a","border-quiet":"#494d64","border-normal":"#5f637b","border-loud":"#5f637b","text-strong":"#cad3f5","text-primary":"#cad3f5","text-secondary":"#a5adcb","text-disabled":"#a5adcb99","fill-neutral-resting":"#32364b","fill-neutral-hovered":"#3a3e53","fill-neutral-pressed":"#42465c","fill-neutral-selected":"#3f4359","fill-neutral-disabled":"#2e3247","fill-primary-resting":"#cad3f5","fill-primary-hovered":"#b7c0e1","fill-primary-pressed":"#aab3d4","on-primary":"#191c2e","accent":"#c6a0f6","fill-accent-resting":"#c6a0f6","fill-accent-hovered":"#d5b2ff","fill-accent-pressed":"#be98ee","fill-accent-quiet":"#c6a0f629","border-accent":"#c6a0f680","on-accent":"#0b0b0b","focus":"#c6a0f6","link":"#c6a0f6","info":"#8aadf4","fill-info-quiet":"#8aadf424","border-info":"#8aadf473","success":"#a6da95","fill-success-quiet":"#a6da9524","border-success":"#a6da9573","important":"#c6a0f6","fill-important-quiet":"#c6a0f624","border-important":"#c6a0f673","warning":"#eed49f","fill-warning-quiet":"#eed49f24","border-warning":"#eed49f73","danger":"#ed8796","fill-danger-quiet":"#ed879624","border-danger":"#ed879673"}},"catppuccin-mocha":{"dark":{"surface-lower":"#11111b","surface-low":"#171726","surface-default":"#1e1e2e","surface-raised":"#313244","surface-overlay":"#37384b","border-quiet":"#3d3f52","border-normal":"#45475a","border-loud":"#5b5d71","text-strong":"#cdd6f4","text-primary":"#cdd6f4","text-secondary":"#a6adc8","text-disabled":"#a6adc899","fill-neutral-resting":"#393a4c","fill-neutral-hovered":"#404254","fill-neutral-pressed":"#484a5d","fill-neutral-selected":"#46475a","fill-neutral-disabled":"#353648","fill-primary-resting":"#cdd6f4","fill-primary-hovered":"#bac3e0","fill-primary-pressed":"#adb6d3","on-primary":"#1e1e2e","accent":"#cba6f7","fill-accent-resting":"#cba6f7","fill-accent-hovered":"#d9b8ff","fill-accent-pressed":"#c39eef","fill-accent-quiet":"#cba6f729","border-accent":"#cba6f780","on-accent":"#0b0b0b","focus":"#cba6f7","link":"#cba6f7","info":"#89b4fa","fill-info-quiet":"#89b4fa24","border-info":"#89b4fa73","success":"#a6e3a1","fill-success-quiet":"#a6e3a124","border-success":"#a6e3a173","important":"#cba6f7","fill-important-quiet":"#cba6f724","border-important":"#cba6f773","warning":"#f9e2af","fill-warning-quiet":"#f9e2af24","border-warning":"#f9e2af73","danger":"#f38ba8","fill-danger-quiet":"#f38ba824","border-danger":"#f38ba873"},"darker":{"surface-lower":"#080811","surface-low":"#0d0d1c","surface-default":"#141423","surface-raised":"#262738","surface-overlay":"#2c2d3f","border-quiet":"#45475a","border-normal":"#5b5d71","border-loud":"#5b5d71","text-strong":"#cdd6f4","text-primary":"#cdd6f4","text-secondary":"#a6adc8","text-disabled":"#a6adc899","fill-neutral-resting":"#2d2e40","fill-neutral-hovered":"#353648","fill-neutral-pressed":"#3c3e50","fill-neutral-selected":"#3a3b4d","fill-neutral-disabled":"#2a2a3c","fill-primary-resting":"#cdd6f4","fill-primary-hovered":"#bac3e0","fill-primary-pressed":"#adb6d3","on-primary":"#141423","accent":"#cba6f7","fill-accent-resting":"#cba6f7","fill-accent-hovered":"#d9b8ff","fill-accent-pressed":"#c39eef","fill-accent-quiet":"#cba6f729","border-accent":"#cba6f780","on-accent":"#0b0b0b","focus":"#cba6f7","link":"#cba6f7","info":"#89b4fa","fill-info-quiet":"#89b4fa24","border-info":"#89b4fa73","success":"#a6e3a1","fill-success-quiet":"#a6e3a124","border-success":"#a6e3a173","important":"#cba6f7","fill-important-quiet":"#cba6f724","border-important":"#cba6f773","warning":"#f9e2af","fill-warning-quiet":"#f9e2af24","border-warning":"#f9e2af73","danger":"#f38ba8","fill-danger-quiet":"#f38ba824","border-danger":"#f38ba873"}},"tokyo-night":{"dark":{"surface-lower":"#16161e","surface-low":"#171823","surface-default":"#1a1b26","surface-raised":"#292e42","surface-overlay":"#2f3449","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#30364a","fill-neutral-hovered":"#383d52","fill-neutral-pressed":"#40455b","fill-neutral-selected":"#3d4358","fill-neutral-disabled":"#2d3246","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#1a1b26","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"},"darker":{"surface-lower":"#0c0c14","surface-low":"#0e0e19","surface-default":"#10111b","surface-raised":"#1e2336","surface-overlay":"#24293d","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#252a3e","fill-neutral-hovered":"#2d3246","fill-neutral-pressed":"#343a4e","fill-neutral-selected":"#32374b","fill-neutral-disabled":"#22273a","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#10111b","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"}},"tokyo-night-day":{"light":{"surface-lower":"#d0d5e3","surface-low":"#dadbe0","surface-default":"#e1e2e7","surface-raised":"#e9e9ed","surface-overlay":"#e1e1e5","border-quiet":"#ced2e4","border-normal":"#c4c8da","border-loud":"#abafc0","text-strong":"#3760bf","text-primary":"#3760bf","text-secondary":"#6172b0","text-disabled":"#6172b099","fill-neutral-resting":"#dfdfe3","fill-neutral-hovered":"#d5d5d9","fill-neutral-pressed":"#ccccd0","fill-neutral-selected":"#cfcfd3","fill-neutral-disabled":"#e4e4e8","fill-primary-resting":"#3760bf","fill-primary-hovered":"#4772d3","fill-primary-pressed":"#537fe1","on-primary":"#e1e2e7","accent":"#2e7de9","fill-accent-resting":"#2e7de9","fill-accent-hovered":"#0042a5","fill-accent-pressed":"#0059c0","fill-accent-quiet":"#0051b729","border-accent":"#0051b780","on-accent":"#ffffff","focus":"#2e7de9","link":"#0051b7","info":"#2e7de9","fill-info-quiet":"#2e7de924","border-info":"#2e7de973","success":"#587539","fill-success-quiet":"#58753924","border-success":"#58753973","important":"#9854f1","fill-important-quiet":"#9854f124","border-important":"#9854f173","warning":"#8c6c3e","fill-warning-quiet":"#8c6c3e24","border-warning":"#8c6c3e73","danger":"#f52a65","fill-danger-quiet":"#f52a6524","border-danger":"#f52a6573"}},"tokyo-night-moon":{"dark":{"surface-lower":"#1e2030","surface-low":"#202234","surface-default":"#222436","surface-raised":"#2f334d","surface-overlay":"#353954","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c8d3f5","text-primary":"#c8d3f5","text-secondary":"#828bb8","text-disabled":"#828bb899","fill-neutral-resting":"#373b55","fill-neutral-hovered":"#3e435e","fill-neutral-pressed":"#464b66","fill-neutral-selected":"#444863","fill-neutral-disabled":"#333751","fill-primary-resting":"#c8d3f5","fill-primary-hovered":"#b5c0e1","fill-primary-pressed":"#a8b3d4","on-primary":"#222436","accent":"#82aaff","fill-accent-resting":"#82aaff","fill-accent-hovered":"#99bbff","fill-accent-pressed":"#7ba2f6","fill-accent-quiet":"#82aaff29","border-accent":"#82aaff80","on-accent":"#0b0b0b","focus":"#82aaff","link":"#82aaff","info":"#82aaff","fill-info-quiet":"#82aaff24","border-info":"#82aaff73","success":"#c3e88d","fill-success-quiet":"#c3e88d24","border-success":"#c3e88d73","important":"#c099ff","fill-important-quiet":"#c099ff24","border-important":"#c099ff73","warning":"#ffc777","fill-warning-quiet":"#ffc77724","border-warning":"#ffc77773","danger":"#ff757f","fill-danger-quiet":"#ff757f24","border-danger":"#ff757f73"},"darker":{"surface-lower":"#141525","surface-low":"#161728","surface-default":"#18192b","surface-raised":"#242841","surface-overlay":"#2a2e48","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c8d3f5","text-primary":"#c8d3f5","text-secondary":"#828bb8","text-disabled":"#828bb899","fill-neutral-resting":"#2b2f49","fill-neutral-hovered":"#333751","fill-neutral-pressed":"#3a3f5a","fill-neutral-selected":"#383c57","fill-neutral-disabled":"#282b45","fill-primary-resting":"#c8d3f5","fill-primary-hovered":"#b5c0e1","fill-primary-pressed":"#a8b3d4","on-primary":"#18192b","accent":"#82aaff","fill-accent-resting":"#82aaff","fill-accent-hovered":"#99bbff","fill-accent-pressed":"#7ba2f6","fill-accent-quiet":"#82aaff29","border-accent":"#82aaff80","on-accent":"#0b0b0b","focus":"#82aaff","link":"#82aaff","info":"#82aaff","fill-info-quiet":"#82aaff24","border-info":"#82aaff73","success":"#c3e88d","fill-success-quiet":"#c3e88d24","border-success":"#c3e88d73","important":"#c099ff","fill-important-quiet":"#c099ff24","border-important":"#c099ff73","warning":"#ffc777","fill-warning-quiet":"#ffc77724","border-warning":"#ffc77773","danger":"#ff757f","fill-danger-quiet":"#ff757f24","border-danger":"#ff757f73"}},"tokyo-night-storm":{"dark":{"surface-lower":"#1f2335","surface-low":"#222538","surface-default":"#24283b","surface-raised":"#292e42","surface-overlay":"#2f3449","border-quiet":"#333a58","border-normal":"#3b4261","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#30364a","fill-neutral-hovered":"#383d52","fill-neutral-pressed":"#40455b","fill-neutral-selected":"#3d4358","fill-neutral-disabled":"#2d3246","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#24283b","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"},"darker":{"surface-lower":"#15182a","surface-low":"#171b2d","surface-default":"#191d2f","surface-raised":"#1e2336","surface-overlay":"#24293d","border-quiet":"#3b4261","border-normal":"#505878","border-loud":"#505878","text-strong":"#c0caf5","text-primary":"#c0caf5","text-secondary":"#a9b1d6","text-disabled":"#a9b1d699","fill-neutral-resting":"#252a3e","fill-neutral-hovered":"#2d3246","fill-neutral-pressed":"#343a4e","fill-neutral-selected":"#32374b","fill-neutral-disabled":"#22273a","fill-primary-resting":"#c0caf5","fill-primary-hovered":"#adb7e1","fill-primary-pressed":"#a1aad4","on-primary":"#191d2f","accent":"#7aa2f7","fill-accent-resting":"#7aa2f7","fill-accent-hovered":"#8db3ff","fill-accent-pressed":"#739aee","fill-accent-quiet":"#7aa2f729","border-accent":"#7aa2f780","on-accent":"#0b0b0b","focus":"#7aa2f7","link":"#7aa2f7","info":"#7aa2f7","fill-info-quiet":"#7aa2f724","border-info":"#7aa2f773","success":"#9ece6a","fill-success-quiet":"#9ece6a24","border-success":"#9ece6a73","important":"#bb9af7","fill-important-quiet":"#bb9af724","border-important":"#bb9af773","warning":"#e0af68","fill-warning-quiet":"#e0af6824","border-warning":"#e0af6873","danger":"#f7768e","fill-danger-quiet":"#f7768e24","border-danger":"#f7768e73"}}})
7
7
  }
@@ -596,15 +596,15 @@ export const opentuiThemes = {
596
596
  "fill-primary-hovered": "#2e2e2f",
597
597
  "fill-primary-pressed": "#383839",
598
598
  "on-primary": "#fdfdff",
599
- "accent": "#1465b9",
600
- "fill-accent-resting": "#1465b9",
601
- "fill-accent-hovered": "#0057a8",
602
- "fill-accent-pressed": "#1f6dc1",
603
- "fill-accent-quiet": "#1465b929",
604
- "border-accent": "#1465b980",
599
+ "accent": "#7152bb",
600
+ "fill-accent-resting": "#7152bb",
601
+ "fill-accent-hovered": "#6343ab",
602
+ "fill-accent-pressed": "#785ac4",
603
+ "fill-accent-quiet": "#7152bb29",
604
+ "border-accent": "#7152bb80",
605
605
  "on-accent": "#ffffff",
606
- "focus": "#1465b9",
607
- "link": "#1465b9",
606
+ "focus": "#7152bb",
607
+ "link": "#7152bb",
608
608
  "info": "#276baa",
609
609
  "fill-info-quiet": "#276baa24",
610
610
  "border-info": "#276baa73",
@@ -643,15 +643,15 @@ export const opentuiThemes = {
643
643
  "fill-primary-hovered": "#d4d4d6",
644
644
  "fill-primary-pressed": "#c7c7c9",
645
645
  "on-primary": "#17171b",
646
- "accent": "#549ff7",
647
- "fill-accent-resting": "#549ff7",
648
- "fill-accent-hovered": "#6bafff",
649
- "fill-accent-pressed": "#4c97ee",
650
- "fill-accent-quiet": "#549ff729",
651
- "border-accent": "#549ff780",
646
+ "accent": "#a78bfa",
647
+ "fill-accent-resting": "#a78bfa",
648
+ "fill-accent-hovered": "#b69eff",
649
+ "fill-accent-pressed": "#9f83f1",
650
+ "fill-accent-quiet": "#a78bfa29",
651
+ "border-accent": "#a78bfa80",
652
652
  "on-accent": "#0b0b0b",
653
- "focus": "#549ff7",
654
- "link": "#549ff7",
653
+ "focus": "#a78bfa",
654
+ "link": "#a78bfa",
655
655
  "info": "#5b9ee0",
656
656
  "fill-info-quiet": "#5b9ee024",
657
657
  "border-info": "#5b9ee073",
@@ -690,15 +690,15 @@ export const opentuiThemes = {
690
690
  "fill-primary-hovered": "#d4d4d6",
691
691
  "fill-primary-pressed": "#c7c7c9",
692
692
  "on-primary": "#141418",
693
- "accent": "#549ff7",
694
- "fill-accent-resting": "#549ff7",
695
- "fill-accent-hovered": "#6bafff",
696
- "fill-accent-pressed": "#4c97ee",
697
- "fill-accent-quiet": "#549ff729",
698
- "border-accent": "#549ff780",
693
+ "accent": "#a78bfa",
694
+ "fill-accent-resting": "#a78bfa",
695
+ "fill-accent-hovered": "#b69eff",
696
+ "fill-accent-pressed": "#9f83f1",
697
+ "fill-accent-quiet": "#a78bfa29",
698
+ "border-accent": "#a78bfa80",
699
699
  "on-accent": "#0b0b0b",
700
- "focus": "#549ff7",
701
- "link": "#549ff7",
700
+ "focus": "#a78bfa",
701
+ "link": "#a78bfa",
702
702
  "info": "#5b9ee0",
703
703
  "fill-info-quiet": "#5b9ee024",
704
704
  "border-info": "#5b9ee073",
@@ -1316,15 +1316,15 @@ gw-option-list:not(:defined) {
1316
1316
  --gw-color-fill-primary-hovered: oklch(30% 0.003 285.81);
1317
1317
  --gw-color-fill-primary-pressed: oklch(34% 0.003 285.81);
1318
1318
  --gw-color-on-primary: oklch(99.5% 0.0023 285.81);
1319
- --gw-color-accent: oklch(50.92% 0.1501 253.89);
1320
- --gw-color-fill-accent-resting: oklch(50.92% 0.1501 253.89);
1321
- --gw-color-fill-accent-hovered: oklch(45.92% 0.1483 253.89);
1322
- --gw-color-fill-accent-pressed: oklch(53.42% 0.1501 253.89);
1323
- --gw-color-fill-accent-quiet: oklch(50.92% 0.1501 253.89 / 0.16);
1324
- --gw-color-border-accent: oklch(50.92% 0.1501 253.89 / 0.5);
1319
+ --gw-color-accent: oklch(52.42% 0.1592 293.54);
1320
+ --gw-color-fill-accent-resting: oklch(52.42% 0.1592 293.54);
1321
+ --gw-color-fill-accent-hovered: oklch(47.42% 0.1592 293.54);
1322
+ --gw-color-fill-accent-pressed: oklch(54.92% 0.1592 293.54);
1323
+ --gw-color-fill-accent-quiet: oklch(52.42% 0.1592 293.54 / 0.16);
1324
+ --gw-color-border-accent: oklch(52.42% 0.1592 293.54 / 0.5);
1325
1325
  --gw-color-on-accent: oklch(100% 0 0);
1326
- --gw-color-focus: oklch(50.92% 0.1501 253.89);
1327
- --gw-color-link: oklch(50.92% 0.1501 253.89);
1326
+ --gw-color-focus: oklch(52.42% 0.1592 293.54);
1327
+ --gw-color-link: oklch(52.42% 0.1592 293.54);
1328
1328
  --gw-color-info: oklch(51.8% 0.1197 249.65);
1329
1329
  --gw-color-fill-info-quiet: oklch(51.8% 0.1197 249.65 / 0.14);
1330
1330
  --gw-color-border-info: oklch(51.8% 0.1197 249.65 / 0.45);
@@ -1368,15 +1368,15 @@ gw-option-list:not(:defined) {
1368
1368
  --gw-color-fill-primary-hovered: oklch(87% 0.003 285.81);
1369
1369
  --gw-color-fill-primary-pressed: oklch(83% 0.003 285.81);
1370
1370
  --gw-color-on-primary: oklch(20.67% 0.0076 285.81);
1371
- --gw-color-accent: oklch(69.42% 0.1501 253.89);
1372
- --gw-color-fill-accent-resting: oklch(69.42% 0.1501 253.89);
1373
- --gw-color-fill-accent-hovered: oklch(74.42% 0.1356 253.89);
1374
- --gw-color-fill-accent-pressed: oklch(66.92% 0.1501 253.89);
1375
- --gw-color-fill-accent-quiet: oklch(69.42% 0.1501 253.89 / 0.16);
1376
- --gw-color-border-accent: oklch(69.42% 0.1501 253.89 / 0.5);
1371
+ --gw-color-accent: oklch(70.9% 0.1592 293.54);
1372
+ --gw-color-fill-accent-resting: oklch(70.9% 0.1592 293.54);
1373
+ --gw-color-fill-accent-hovered: oklch(75.9% 0.1384 293.54);
1374
+ --gw-color-fill-accent-pressed: oklch(68.4% 0.1592 293.54);
1375
+ --gw-color-fill-accent-quiet: oklch(70.9% 0.1592 293.54 / 0.16);
1376
+ --gw-color-border-accent: oklch(70.9% 0.1592 293.54 / 0.5);
1377
1377
  --gw-color-on-accent: oklch(15% 0 0);
1378
- --gw-color-focus: oklch(69.42% 0.1501 253.89);
1379
- --gw-color-link: oklch(69.42% 0.1501 253.89);
1378
+ --gw-color-focus: oklch(70.9% 0.1592 293.54);
1379
+ --gw-color-link: oklch(70.9% 0.1592 293.54);
1380
1380
  --gw-color-info: oklch(68.29% 0.1197 249.65);
1381
1381
  --gw-color-fill-info-quiet: oklch(68.29% 0.1197 249.65 / 0.14);
1382
1382
  --gw-color-border-info: oklch(68.29% 0.1197 249.65 / 0.45);
@@ -1421,15 +1421,15 @@ gw-option-list:not(:defined) {
1421
1421
  --gw-color-fill-primary-hovered: oklch(87% 0.003 285.81);
1422
1422
  --gw-color-fill-primary-pressed: oklch(83% 0.003 285.81);
1423
1423
  --gw-color-on-primary: oklch(20.67% 0.0076 285.81);
1424
- --gw-color-accent: oklch(69.42% 0.1501 253.89);
1425
- --gw-color-fill-accent-resting: oklch(69.42% 0.1501 253.89);
1426
- --gw-color-fill-accent-hovered: oklch(74.42% 0.1356 253.89);
1427
- --gw-color-fill-accent-pressed: oklch(66.92% 0.1501 253.89);
1428
- --gw-color-fill-accent-quiet: oklch(69.42% 0.1501 253.89 / 0.16);
1429
- --gw-color-border-accent: oklch(69.42% 0.1501 253.89 / 0.5);
1424
+ --gw-color-accent: oklch(70.9% 0.1592 293.54);
1425
+ --gw-color-fill-accent-resting: oklch(70.9% 0.1592 293.54);
1426
+ --gw-color-fill-accent-hovered: oklch(75.9% 0.1384 293.54);
1427
+ --gw-color-fill-accent-pressed: oklch(68.4% 0.1592 293.54);
1428
+ --gw-color-fill-accent-quiet: oklch(70.9% 0.1592 293.54 / 0.16);
1429
+ --gw-color-border-accent: oklch(70.9% 0.1592 293.54 / 0.5);
1430
1430
  --gw-color-on-accent: oklch(15% 0 0);
1431
- --gw-color-focus: oklch(69.42% 0.1501 253.89);
1432
- --gw-color-link: oklch(69.42% 0.1501 253.89);
1431
+ --gw-color-focus: oklch(70.9% 0.1592 293.54);
1432
+ --gw-color-link: oklch(70.9% 0.1592 293.54);
1433
1433
  --gw-color-info: oklch(68.29% 0.1197 249.65);
1434
1434
  --gw-color-fill-info-quiet: oklch(68.29% 0.1197 249.65 / 0.14);
1435
1435
  --gw-color-border-info: oklch(68.29% 0.1197 249.65 / 0.45);
@@ -1474,15 +1474,15 @@ gw-option-list:not(:defined) {
1474
1474
  --gw-color-fill-primary-hovered: oklch(87% 0.003 285.81);
1475
1475
  --gw-color-fill-primary-pressed: oklch(83% 0.003 285.81);
1476
1476
  --gw-color-on-primary: oklch(19.17% 0.0076 285.81);
1477
- --gw-color-accent: oklch(69.42% 0.1501 253.89);
1478
- --gw-color-fill-accent-resting: oklch(69.42% 0.1501 253.89);
1479
- --gw-color-fill-accent-hovered: oklch(74.42% 0.1356 253.89);
1480
- --gw-color-fill-accent-pressed: oklch(66.92% 0.1501 253.89);
1481
- --gw-color-fill-accent-quiet: oklch(69.42% 0.1501 253.89 / 0.16);
1482
- --gw-color-border-accent: oklch(69.42% 0.1501 253.89 / 0.5);
1477
+ --gw-color-accent: oklch(70.9% 0.1592 293.54);
1478
+ --gw-color-fill-accent-resting: oklch(70.9% 0.1592 293.54);
1479
+ --gw-color-fill-accent-hovered: oklch(75.9% 0.1384 293.54);
1480
+ --gw-color-fill-accent-pressed: oklch(68.4% 0.1592 293.54);
1481
+ --gw-color-fill-accent-quiet: oklch(70.9% 0.1592 293.54 / 0.16);
1482
+ --gw-color-border-accent: oklch(70.9% 0.1592 293.54 / 0.5);
1483
1483
  --gw-color-on-accent: oklch(15% 0 0);
1484
- --gw-color-focus: oklch(69.42% 0.1501 253.89);
1485
- --gw-color-link: oklch(69.42% 0.1501 253.89);
1484
+ --gw-color-focus: oklch(70.9% 0.1592 293.54);
1485
+ --gw-color-link: oklch(70.9% 0.1592 293.54);
1486
1486
  --gw-color-info: oklch(68.29% 0.1197 249.65);
1487
1487
  --gw-color-fill-info-quiet: oklch(68.29% 0.1197 249.65 / 0.14);
1488
1488
  --gw-color-border-info: oklch(68.29% 0.1197 249.65 / 0.45);
@@ -879,7 +879,7 @@
879
879
  {
880
880
  "id": "bridge",
881
881
  "name": "Bridge",
882
- "description": "A clear, bright blue on neutral charcoal. Medium radii, soft borders and pill chips.",
882
+ "description": "System Bridge's violet on neutral charcoal. Medium radii, soft borders and pill chips.",
883
883
  "optional": false,
884
884
  "family": null,
885
885
  "examples": [
@@ -976,15 +976,15 @@
976
976
  "fill-primary-hovered": "#2e2e2f",
977
977
  "fill-primary-pressed": "#383839",
978
978
  "on-primary": "#fdfdff",
979
- "accent": "#1465b9",
980
- "fill-accent-resting": "#1465b9",
981
- "fill-accent-hovered": "#0057a8",
982
- "fill-accent-pressed": "#1f6dc1",
983
- "fill-accent-quiet": "#1465b929",
984
- "border-accent": "#1465b980",
979
+ "accent": "#7152bb",
980
+ "fill-accent-resting": "#7152bb",
981
+ "fill-accent-hovered": "#6343ab",
982
+ "fill-accent-pressed": "#785ac4",
983
+ "fill-accent-quiet": "#7152bb29",
984
+ "border-accent": "#7152bb80",
985
985
  "on-accent": "#ffffff",
986
- "focus": "#1465b9",
987
- "link": "#1465b9",
986
+ "focus": "#7152bb",
987
+ "link": "#7152bb",
988
988
  "info": "#276baa",
989
989
  "fill-info-quiet": "#276baa24",
990
990
  "border-info": "#276baa73",
@@ -1023,15 +1023,15 @@
1023
1023
  "fill-primary-hovered": "#d4d4d6",
1024
1024
  "fill-primary-pressed": "#c7c7c9",
1025
1025
  "on-primary": "#17171b",
1026
- "accent": "#549ff7",
1027
- "fill-accent-resting": "#549ff7",
1028
- "fill-accent-hovered": "#6bafff",
1029
- "fill-accent-pressed": "#4c97ee",
1030
- "fill-accent-quiet": "#549ff729",
1031
- "border-accent": "#549ff780",
1026
+ "accent": "#a78bfa",
1027
+ "fill-accent-resting": "#a78bfa",
1028
+ "fill-accent-hovered": "#b69eff",
1029
+ "fill-accent-pressed": "#9f83f1",
1030
+ "fill-accent-quiet": "#a78bfa29",
1031
+ "border-accent": "#a78bfa80",
1032
1032
  "on-accent": "#0b0b0b",
1033
- "focus": "#549ff7",
1034
- "link": "#549ff7",
1033
+ "focus": "#a78bfa",
1034
+ "link": "#a78bfa",
1035
1035
  "info": "#5b9ee0",
1036
1036
  "fill-info-quiet": "#5b9ee024",
1037
1037
  "border-info": "#5b9ee073",
@@ -1070,15 +1070,15 @@
1070
1070
  "fill-primary-hovered": "#d4d4d6",
1071
1071
  "fill-primary-pressed": "#c7c7c9",
1072
1072
  "on-primary": "#141418",
1073
- "accent": "#549ff7",
1074
- "fill-accent-resting": "#549ff7",
1075
- "fill-accent-hovered": "#6bafff",
1076
- "fill-accent-pressed": "#4c97ee",
1077
- "fill-accent-quiet": "#549ff729",
1078
- "border-accent": "#549ff780",
1073
+ "accent": "#a78bfa",
1074
+ "fill-accent-resting": "#a78bfa",
1075
+ "fill-accent-hovered": "#b69eff",
1076
+ "fill-accent-pressed": "#9f83f1",
1077
+ "fill-accent-quiet": "#a78bfa29",
1078
+ "border-accent": "#a78bfa80",
1079
1079
  "on-accent": "#0b0b0b",
1080
- "focus": "#549ff7",
1081
- "link": "#549ff7",
1080
+ "focus": "#a78bfa",
1081
+ "link": "#a78bfa",
1082
1082
  "info": "#5b9ee0",
1083
1083
  "fill-info-quiet": "#5b9ee024",
1084
1084
  "border-info": "#5b9ee073",
@@ -880,7 +880,7 @@ export const themes = [
880
880
  {
881
881
  "id": "bridge",
882
882
  "name": "Bridge",
883
- "description": "A clear, bright blue on neutral charcoal. Medium radii, soft borders and pill chips.",
883
+ "description": "System Bridge's violet on neutral charcoal. Medium radii, soft borders and pill chips.",
884
884
  "optional": false,
885
885
  "family": null,
886
886
  "examples": [
@@ -977,15 +977,15 @@ export const themes = [
977
977
  "fill-primary-hovered": "#2e2e2f",
978
978
  "fill-primary-pressed": "#383839",
979
979
  "on-primary": "#fdfdff",
980
- "accent": "#1465b9",
981
- "fill-accent-resting": "#1465b9",
982
- "fill-accent-hovered": "#0057a8",
983
- "fill-accent-pressed": "#1f6dc1",
984
- "fill-accent-quiet": "#1465b929",
985
- "border-accent": "#1465b980",
980
+ "accent": "#7152bb",
981
+ "fill-accent-resting": "#7152bb",
982
+ "fill-accent-hovered": "#6343ab",
983
+ "fill-accent-pressed": "#785ac4",
984
+ "fill-accent-quiet": "#7152bb29",
985
+ "border-accent": "#7152bb80",
986
986
  "on-accent": "#ffffff",
987
- "focus": "#1465b9",
988
- "link": "#1465b9",
987
+ "focus": "#7152bb",
988
+ "link": "#7152bb",
989
989
  "info": "#276baa",
990
990
  "fill-info-quiet": "#276baa24",
991
991
  "border-info": "#276baa73",
@@ -1024,15 +1024,15 @@ export const themes = [
1024
1024
  "fill-primary-hovered": "#d4d4d6",
1025
1025
  "fill-primary-pressed": "#c7c7c9",
1026
1026
  "on-primary": "#17171b",
1027
- "accent": "#549ff7",
1028
- "fill-accent-resting": "#549ff7",
1029
- "fill-accent-hovered": "#6bafff",
1030
- "fill-accent-pressed": "#4c97ee",
1031
- "fill-accent-quiet": "#549ff729",
1032
- "border-accent": "#549ff780",
1027
+ "accent": "#a78bfa",
1028
+ "fill-accent-resting": "#a78bfa",
1029
+ "fill-accent-hovered": "#b69eff",
1030
+ "fill-accent-pressed": "#9f83f1",
1031
+ "fill-accent-quiet": "#a78bfa29",
1032
+ "border-accent": "#a78bfa80",
1033
1033
  "on-accent": "#0b0b0b",
1034
- "focus": "#549ff7",
1035
- "link": "#549ff7",
1034
+ "focus": "#a78bfa",
1035
+ "link": "#a78bfa",
1036
1036
  "info": "#5b9ee0",
1037
1037
  "fill-info-quiet": "#5b9ee024",
1038
1038
  "border-info": "#5b9ee073",
@@ -1071,15 +1071,15 @@ export const themes = [
1071
1071
  "fill-primary-hovered": "#d4d4d6",
1072
1072
  "fill-primary-pressed": "#c7c7c9",
1073
1073
  "on-primary": "#141418",
1074
- "accent": "#549ff7",
1075
- "fill-accent-resting": "#549ff7",
1076
- "fill-accent-hovered": "#6bafff",
1077
- "fill-accent-pressed": "#4c97ee",
1078
- "fill-accent-quiet": "#549ff729",
1079
- "border-accent": "#549ff780",
1074
+ "accent": "#a78bfa",
1075
+ "fill-accent-resting": "#a78bfa",
1076
+ "fill-accent-hovered": "#b69eff",
1077
+ "fill-accent-pressed": "#9f83f1",
1078
+ "fill-accent-quiet": "#a78bfa29",
1079
+ "border-accent": "#a78bfa80",
1080
1080
  "on-accent": "#0b0b0b",
1081
- "focus": "#549ff7",
1082
- "link": "#549ff7",
1081
+ "focus": "#a78bfa",
1082
+ "link": "#a78bfa",
1083
1083
  "info": "#5b9ee0",
1084
1084
  "fill-info-quiet": "#5b9ee024",
1085
1085
  "border-info": "#5b9ee073",
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@timmo001/groundwork-tokens",
3
- "version": "0.0.0",
3
+ "version": "0.3.1",
4
4
  "description": "Groundwork's design tokens: the theme schema, the OKLCH solver and every theme as CSS and JSON",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": "./src/index.ts",
9
9
  "./runtime": "./src/runtime.ts",
10
+ "./webmcp": "./src/webmcp.ts",
10
11
  "./themes.css": "./generated/themes.css",
11
12
  "./themes.json": "./generated/themes.json"
12
13
  },
@@ -22,7 +23,8 @@
22
23
  "*.css"
23
24
  ],
24
25
  "publishConfig": {
25
- "access": "public"
26
+ "access": "public",
27
+ "provenance": true
26
28
  },
27
29
  "repository": {
28
30
  "type": "git",
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Tests the Omarchy import against a real `colors.toml` shape, in both modes,
3
+ * and that a file missing a color fails rather than half-applies.
4
+ *
5
+ * @module
6
+ */
7
+ import { expect, test } from "bun:test";
8
+ import { Result } from "effect";
9
+ import { omarchyTheme } from "./omarchy.ts";
10
+
11
+ const dark = `mode = "dark"
12
+
13
+ accent = "#7aa2f7"
14
+ selection = "#292e42"
15
+ muted = "#414868"
16
+
17
+ background = "#1a1b26"
18
+ dark_background = "#13141c"
19
+ lighter_background = "#24283b"
20
+
21
+ foreground = "#a9b1d6"
22
+ light_foreground = "#b4bee6"
23
+ bright_foreground = "#c0caf5"
24
+
25
+ red = "#f7768e"
26
+ yellow = "#e0af68"
27
+ green = "#9ece6a"
28
+ blue = "#7aa2f7"
29
+ magenta = "#ad8ee6"
30
+ `;
31
+
32
+ test("maps a dark colors.toml onto the roles", () => {
33
+ const theme = Result.getOrThrow(omarchyTheme(dark, "Tokyo Night", "tokyo"));
34
+
35
+ expect(theme.mode).toBe("dark");
36
+ expect(theme.palette).toMatchObject({
37
+ lower: "#13141c",
38
+ background: "#1a1b26",
39
+ raised: "#24283b",
40
+ border: "#414868",
41
+ text: "#c0caf5",
42
+ muted: "#a9b1d6",
43
+ danger: "#f7768e",
44
+ });
45
+ });
46
+
47
+ test("uses the light foreground as muted when foreground is the text", () => {
48
+ const light = dark
49
+ .replace('mode = "dark"', 'mode = "light"')
50
+ .replace("#a9b1d6", "#C0CAF5")
51
+ .replace("#b4bee6", "#403e3c");
52
+
53
+ const theme = Result.getOrThrow(omarchyTheme(light));
54
+
55
+ expect(theme.mode).toBe("light");
56
+ expect(theme.palette.muted).toBe("#403e3c");
57
+ });
58
+
59
+ test("fails when a color is missing", () => {
60
+ expect(Result.isFailure(omarchyTheme(dark.replace(/^red = .*$/m, "")))).toBe(
61
+ true,
62
+ );
63
+ });
package/src/omarchy.ts ADDED
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Omarchy theme import: reads an Omarchy theme's `colors.toml` and maps it
3
+ * onto a Groundwork mapped theme, so an app can follow the desktop's theme.
4
+ * It parses the flat `key = "value"` lines itself, so it runs in a browser.
5
+ *
6
+ * @module
7
+ */
8
+ import { Schema } from "effect";
9
+ import { MappedTheme } from "./schema.ts";
10
+
11
+ /** The `key = "value"` pairs of a flat TOML file, ignoring comments. */
12
+ const readPairs = (text: string): ReadonlyMap<string, string> => {
13
+ const pairs = new Map<string, string>();
14
+
15
+ for (const line of text.split(/\r?\n/)) {
16
+ const match = /^\s*([A-Za-z_][\w-]*)\s*=\s*"([^"]*)"/.exec(line);
17
+
18
+ if (match?.[1] !== undefined && match[2] !== undefined) {
19
+ pairs.set(match[1], match[2]);
20
+ }
21
+ }
22
+
23
+ return pairs;
24
+ };
25
+
26
+ /**
27
+ * Maps an Omarchy `colors.toml` onto a mapped theme's palette, then checks it
28
+ * against the Schema. Missing keys or bad colors come back as a `Failure`.
29
+ */
30
+ export const omarchyTheme = (
31
+ text: string,
32
+ name = "Omarchy",
33
+ id = "omarchy",
34
+ ) => {
35
+ const pairs = readPairs(text);
36
+ const color = (key: string) => pairs.get(key)?.toLowerCase();
37
+ const text_ = color("bright_foreground") ?? color("foreground");
38
+ const foreground = color("foreground");
39
+
40
+ return Schema.decodeUnknownResult(MappedTheme)({
41
+ kind: "mapped",
42
+ id,
43
+ name,
44
+ family: "Omarchy",
45
+ mode: pairs.get("mode") === "light" ? "light" : "dark",
46
+ palette: {
47
+ lower: color("dark_background"),
48
+ background: color("background"),
49
+ raised: color("lighter_background"),
50
+ border: color("muted") ?? color("selection"),
51
+ text: text_,
52
+ // Omarchy's foreground is the body text; when it's the same as the
53
+ // brightest text, its light foreground is the quieter one
54
+ muted:
55
+ foreground !== undefined && foreground !== text_
56
+ ? foreground
57
+ : color("light_foreground"),
58
+ accent: color("accent"),
59
+ info: color("blue"),
60
+ success: color("green"),
61
+ important: color("magenta"),
62
+ warning: color("yellow"),
63
+ danger: color("red"),
64
+ },
65
+ });
66
+ };
package/src/runtime.ts CHANGED
@@ -11,6 +11,8 @@ import { themeCss } from "./generate.ts";
11
11
  import { SolvedTheme, Theme } from "./schema.ts";
12
12
  import { check, resolve, type Check, type ResolvedTheme } from "./solve.ts";
13
13
 
14
+ export { omarchyTheme } from "./omarchy.ts";
15
+
14
16
  const base = Schema.decodeUnknownSync(SolvedTheme)(baseDocument);
15
17
 
16
18
  /** A theme solved at runtime, with its CSS and every contrast check. */
@@ -34,3 +36,44 @@ export const runtimeTheme = (theme: Theme, id = theme.id): RuntimeTheme => {
34
36
 
35
37
  return { theme: resolved, css: themeCss(resolved), checks: check(resolved) };
36
38
  };
39
+
40
+ /**
41
+ * Where an app keeps a user's theme document. The document is stored, not
42
+ * its CSS, so it's solved again when the solver changes. Local storage is
43
+ * the first tier; an app with a profile or a host, such as System Bridge,
44
+ * passes its own store with the same shape.
45
+ */
46
+ export interface ThemeStore {
47
+ /** The stored document's JSON text, or `null` when there's none. */
48
+ readonly load: () => Promise<string | null>;
49
+ readonly save: (text: string) => Promise<void>;
50
+ readonly clear: () => Promise<void>;
51
+ }
52
+
53
+ /**
54
+ * A store in the browser's local storage under `key`. It reads as empty and
55
+ * skips writes when storage is blocked, so a theme still applies for the visit.
56
+ */
57
+ export const localThemeStore = (key: string): ThemeStore => ({
58
+ load: async () => {
59
+ try {
60
+ return localStorage.getItem(key);
61
+ } catch {
62
+ return null;
63
+ }
64
+ },
65
+ save: async (text) => {
66
+ try {
67
+ localStorage.setItem(key, text);
68
+ } catch {
69
+ // Blocked or full: the theme still applies until the page closes
70
+ }
71
+ },
72
+ clear: async () => {
73
+ try {
74
+ localStorage.removeItem(key);
75
+ } catch {
76
+ // Nothing to clear when storage is blocked
77
+ }
78
+ },
79
+ });
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Tests the WebMCP theme tools against a fake model context: what they
3
+ * register, and that set-theme applies and keeps a theme by id, by document
4
+ * and from an Omarchy colors.toml.
5
+ *
6
+ * @module
7
+ */
8
+ import { expect, test } from "bun:test";
9
+ import type { ThemeStore } from "./runtime.ts";
10
+ import {
11
+ registerThemeTools,
12
+ type ModelContext,
13
+ type ToolArguments,
14
+ } from "./webmcp.ts";
15
+
16
+ type Tool = Parameters<ModelContext["registerTool"]>[0];
17
+
18
+ const setup = () => {
19
+ const tools = new Map<string, Tool>();
20
+ const applied: string[] = [];
21
+ let stored: string | null = null;
22
+
23
+ const store: ThemeStore = {
24
+ load: async () => stored,
25
+ save: async (text) => {
26
+ stored = text;
27
+ },
28
+ clear: async () => {
29
+ stored = null;
30
+ },
31
+ };
32
+
33
+ const registered = registerThemeTools({
34
+ store,
35
+ apply: ({ document }) => applied.push(document.id),
36
+ context: {
37
+ registerTool: (tool) => {
38
+ tools.set(tool.name, tool);
39
+ },
40
+ },
41
+ });
42
+
43
+ const call = async (name: string, input: ToolArguments = {}) => {
44
+ const result = await tools.get(name)?.execute(input);
45
+
46
+ return JSON.stringify(result);
47
+ };
48
+
49
+ return { registered, tools, applied, call, stored: () => stored };
50
+ };
51
+
52
+ test("registers the three tools", () => {
53
+ const { registered, tools } = setup();
54
+
55
+ expect(registered).toBe(true);
56
+ expect([...tools.keys()]).toEqual(["get-theme", "list-themes", "set-theme"]);
57
+ });
58
+
59
+ test("does nothing without a model context", () => {
60
+ expect(
61
+ registerThemeTools({
62
+ store: {
63
+ load: async () => null,
64
+ save: async () => {},
65
+ clear: async () => {},
66
+ },
67
+ apply: () => {},
68
+ }),
69
+ ).toBe(false);
70
+ });
71
+
72
+ test("set-theme applies and keeps a built-in theme by id", async () => {
73
+ const { applied, call, stored } = setup();
74
+
75
+ expect(await call("list-themes")).toContain("glazing");
76
+ expect(await call("set-theme", { id: "glazing" })).toContain(
77
+ "Applied Glazing",
78
+ );
79
+ expect(applied).toEqual(["glazing"]);
80
+ expect(stored()).toContain('"id": "glazing"');
81
+ expect(await call("get-theme")).toContain("glazing");
82
+ });
83
+
84
+ test("set-theme takes an Omarchy colors.toml", async () => {
85
+ const { applied, call } = setup();
86
+
87
+ const toml = `mode = "dark"
88
+ accent = "#7aa2f7"
89
+ muted = "#414868"
90
+ background = "#1a1b26"
91
+ dark_background = "#13141c"
92
+ lighter_background = "#24283b"
93
+ foreground = "#a9b1d6"
94
+ bright_foreground = "#c0caf5"
95
+ red = "#f7768e"
96
+ yellow = "#e0af68"
97
+ green = "#9ece6a"
98
+ blue = "#7aa2f7"
99
+ magenta = "#ad8ee6"`;
100
+
101
+ expect(await call("set-theme", { theme: toml })).toContain("Applied Omarchy");
102
+ expect(applied).toEqual(["omarchy"]);
103
+ });
104
+
105
+ test("set-theme explains a bad id or input instead of throwing", async () => {
106
+ const { applied, call } = setup();
107
+
108
+ expect(await call("set-theme", { id: "nope" })).toContain("list-themes");
109
+ expect(await call("set-theme", { theme: "{}" })).toContain("isn't a theme");
110
+ expect(applied).toEqual([]);
111
+ });
package/src/webmcp.ts ADDED
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Theme tools for WebMCP: lets an agent in the browser read, list and set the
3
+ * page's theme through the page's own code, so the UI the user sees changes
4
+ * with it. It does nothing where the browser has no `document.modelContext`.
5
+ * Spec: https://github.com/webmachinelearning/webmcp
6
+ *
7
+ * @module
8
+ */
9
+ import { Result, Schema } from "effect";
10
+ import base from "../themes/base.json" with { type: "json" };
11
+ import bridge from "../themes/bridge.json" with { type: "json" };
12
+ import glazing from "../themes/glazing.json" with { type: "json" };
13
+ import slate from "../themes/slate.json" with { type: "json" };
14
+ import snag from "../themes/snag.json" with { type: "json" };
15
+ import survey from "../themes/survey.json" with { type: "json" };
16
+ import { omarchyTheme } from "./omarchy.ts";
17
+ import {
18
+ parseTheme,
19
+ runtimeTheme,
20
+ type RuntimeTheme,
21
+ type ThemeStore,
22
+ } from "./runtime.ts";
23
+ import { SolvedTheme, type Theme } from "./schema.ts";
24
+
25
+ /**
26
+ * The part of WebMCP's `ModelContext` these tools use. Declared here rather
27
+ * than taken from a types package, since the API is still moving.
28
+ */
29
+ export interface ModelContext {
30
+ readonly registerTool: (
31
+ tool: ModelContextTool,
32
+ options?: { readonly signal?: AbortSignal },
33
+ ) => Promise<void> | void;
34
+ }
35
+
36
+ /** A tool's text result, in the shape MCP uses. */
37
+ export interface ToolResult {
38
+ readonly content: readonly { readonly type: "text"; readonly text: string }[];
39
+ }
40
+
41
+ export interface ModelContextTool {
42
+ readonly name: string;
43
+ readonly description: string;
44
+ readonly inputSchema?: object;
45
+ /** Takes the agent's arguments, which the tool still decodes itself. */
46
+ readonly execute: (input: ToolArguments) => Promise<ToolResult>;
47
+ }
48
+
49
+ /** The arguments these tools take. Agents can send anything, so they're decoded. */
50
+ export interface ToolArguments {
51
+ readonly id?: string;
52
+ readonly theme?: string;
53
+ }
54
+
55
+ declare global {
56
+ interface Document {
57
+ /** WebMCP's tool registry, where the browser has it. */
58
+ readonly modelContext?: ModelContext;
59
+ }
60
+ }
61
+
62
+ /** What `set-theme` takes: a built-in theme's id, or a theme's text. */
63
+ const SetThemeInput = Schema.Struct({
64
+ id: Schema.optionalKey(Schema.String),
65
+ theme: Schema.optionalKey(Schema.String),
66
+ });
67
+
68
+ /** The core themes, in the order the docs list them. */
69
+ export const coreThemes: readonly SolvedTheme[] = [
70
+ base,
71
+ glazing,
72
+ survey,
73
+ slate,
74
+ bridge,
75
+ snag,
76
+ ].map((document) => Schema.decodeUnknownSync(SolvedTheme)(document));
77
+
78
+ export interface ThemeToolsOptions {
79
+ /** Where the user's theme document is kept. */
80
+ readonly store: ThemeStore;
81
+ /** Applies a solved theme to the page, as the app's own picker would. */
82
+ readonly apply: (theme: {
83
+ readonly text: string;
84
+ readonly document: Theme;
85
+ readonly runtime: RuntimeTheme;
86
+ }) => void;
87
+ /** Themes an agent can pick by id. Defaults to the core themes. */
88
+ readonly themes?: readonly Theme[];
89
+ /** Unregisters the tools when aborted. */
90
+ readonly signal?: AbortSignal;
91
+ /** The model context to register on. Defaults to `document.modelContext`. */
92
+ readonly context?: ModelContext;
93
+ }
94
+
95
+ const text = (message: string): ToolResult => ({
96
+ content: [{ type: "text", text: message }],
97
+ });
98
+
99
+ /** The roles a theme misses its contrast target on, for the agent to report. */
100
+ const misses = (runtime: RuntimeTheme) =>
101
+ runtime.checks
102
+ .filter((result) => !result.passes)
103
+ .map(
104
+ (result) =>
105
+ `${result.role} in ${result.mode} (${result.ratio.toFixed(2)})`,
106
+ );
107
+
108
+ /** Reads a theme from JSON text or an Omarchy `colors.toml`. */
109
+ const readTheme = (input: string) => {
110
+ const parsed = parseTheme(input);
111
+
112
+ if (Result.isSuccess(parsed)) return parsed;
113
+
114
+ return input.trimStart().startsWith("{") ? parsed : omarchyTheme(input);
115
+ };
116
+
117
+ /**
118
+ * Registers `get-theme`, `list-themes` and `set-theme`. Returns whether the
119
+ * browser offered a model context to register them on.
120
+ */
121
+ export const registerThemeTools = (options: ThemeToolsOptions): boolean => {
122
+ const context =
123
+ options.context ??
124
+ ("document" in globalThis ? document.modelContext : undefined);
125
+
126
+ if (context === undefined) return false;
127
+
128
+ const themes = options.themes ?? coreThemes;
129
+
130
+ const registration =
131
+ options.signal === undefined ? {} : { signal: options.signal };
132
+
133
+ const apply = async (document: Theme) => {
134
+ const source = JSON.stringify(document, null, 2);
135
+ const runtime = runtimeTheme(document);
136
+
137
+ options.apply({ text: source, document, runtime });
138
+ await options.store.save(source);
139
+
140
+ const missed = misses(runtime);
141
+
142
+ return text(
143
+ missed.length === 0
144
+ ? `Applied ${document.name}. Every role meets its contrast target.`
145
+ : `Applied ${document.name}, with ${missed.length} roles below target: ${missed.join(", ")}.`,
146
+ );
147
+ };
148
+
149
+ void context.registerTool(
150
+ {
151
+ name: "get-theme",
152
+ description:
153
+ "Returns the user's own theme document on this page, if they have one, and any roles that miss their contrast target.",
154
+ execute: async () => {
155
+ const stored = await options.store.load();
156
+
157
+ if (stored === null)
158
+ return text(
159
+ "No custom theme is set; the page uses its built-in theme.",
160
+ );
161
+
162
+ const parsed = readTheme(stored);
163
+
164
+ if (Result.isFailure(parsed))
165
+ return text(
166
+ "The stored theme no longer decodes, so the page ignores it.",
167
+ );
168
+
169
+ const report = {
170
+ document: parsed.success,
171
+ misses: misses(runtimeTheme(parsed.success)),
172
+ };
173
+
174
+ return text(JSON.stringify(report, null, 2));
175
+ },
176
+ },
177
+ registration,
178
+ );
179
+
180
+ void context.registerTool(
181
+ {
182
+ name: "list-themes",
183
+ description:
184
+ "Lists the built-in themes by id and name, to pick one with set-theme.",
185
+ execute: async () =>
186
+ text(
187
+ JSON.stringify(
188
+ themes.map((theme) => ({ id: theme.id, name: theme.name })),
189
+ null,
190
+ 2,
191
+ ),
192
+ ),
193
+ },
194
+ registration,
195
+ );
196
+
197
+ void context.registerTool(
198
+ {
199
+ name: "set-theme",
200
+ description:
201
+ "Applies a theme to this page and keeps it. Give the id of a built-in theme, or a Groundwork theme document as JSON, or the text of an Omarchy colors.toml.",
202
+ inputSchema: {
203
+ type: "object",
204
+ properties: {
205
+ id: {
206
+ type: "string",
207
+ description: "A built-in theme's id, from list-themes.",
208
+ },
209
+ theme: {
210
+ type: "string",
211
+ description:
212
+ "A Groundwork theme document as JSON, or an Omarchy colors.toml's text.",
213
+ },
214
+ },
215
+ },
216
+ execute: async (input) => {
217
+ const decoded = Schema.decodeUnknownResult(SetThemeInput)(input);
218
+
219
+ if (Result.isFailure(decoded))
220
+ return text("Give id or theme as a string.");
221
+
222
+ const { id, theme } = decoded.success;
223
+
224
+ if (id !== undefined) {
225
+ const found = themes.find((item) => item.id === id);
226
+
227
+ return found === undefined
228
+ ? text(
229
+ `No built-in theme has the id "${id}". Call list-themes for the ids.`,
230
+ )
231
+ : apply(found);
232
+ }
233
+
234
+ if (theme === undefined) return text("Give either id or theme.");
235
+
236
+ const parsed = readTheme(theme);
237
+
238
+ return Result.isSuccess(parsed)
239
+ ? apply(parsed.success)
240
+ : text(
241
+ `That isn't a theme document or an Omarchy colors.toml: ${String(parsed.failure).slice(0, 400)}`,
242
+ );
243
+ },
244
+ },
245
+ registration,
246
+ );
247
+
248
+ return true;
249
+ };
@@ -2,10 +2,10 @@
2
2
  "kind": "solved",
3
3
  "id": "bridge",
4
4
  "name": "Bridge",
5
- "description": "A clear, bright blue on neutral charcoal. Medium radii, soft borders and pill chips.",
5
+ "description": "System Bridge's violet on neutral charcoal. Medium radii, soft borders and pill chips.",
6
6
  "examples": ["System Bridge"],
7
7
  "background": "#1e1e22",
8
- "accent": "#549ff7",
8
+ "accent": "#a78bfa",
9
9
  "style": {
10
10
  "font": "Inter",
11
11
  "mono": "JetBrains Mono",