@tuuject/koi-tokens 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -2
  3. package/dist/dimensions.d.ts +150 -0
  4. package/dist/dimensions.js +154 -0
  5. package/dist/native.d.ts +374 -0
  6. package/dist/native.js +380 -0
  7. package/dist/palette-kit.d.ts +35 -0
  8. package/dist/palette-kit.js +96 -0
  9. package/dist/palette.d.ts +779 -0
  10. package/dist/palette.js +1383 -0
  11. package/dist/panda-preset.d.ts +4 -0
  12. package/dist/panda-preset.js +1243 -0
  13. package/dist/theme-init.js +29 -0
  14. package/dist/tokens.css +420 -0
  15. package/fonts/00744f2b0f1e3a0e71521b7f5511b30c.woff2 +0 -0
  16. package/fonts/00b4ecd1817ecf947ca664b4fce8a4ad.woff2 +0 -0
  17. package/fonts/020f0fa79f25f5cfa8506d2f431df767.woff2 +0 -0
  18. package/fonts/03317bcae1fdca87a87769c43fd1ce47.woff2 +0 -0
  19. package/fonts/06d0a95f1efd8d124a255600ece94494.woff2 +0 -0
  20. package/fonts/06e7c4ae0fa82b85be634e3c308bf4b3.woff2 +0 -0
  21. package/fonts/0bad1aeeb4500b6301d8d3b64dcc3c73.woff2 +0 -0
  22. package/fonts/0d14b3729a41fc911ff13c3e4fe328c7.woff2 +0 -0
  23. package/fonts/0d6b7caaa1be1467b901364154c917b1.woff2 +0 -0
  24. package/fonts/0e73696b7f29da06cb67fe062f1b8a0c.woff2 +0 -0
  25. package/fonts/114edcf282654c7c63c8234c13b4b089.woff2 +0 -0
  26. package/fonts/1548b3024522036bb36484bbb82345c8.woff2 +0 -0
  27. package/fonts/17a63a64b5e2aac1dbe08b6b901f8856.woff2 +0 -0
  28. package/fonts/1f1f99649d10cf4638c162b7f5cd127a.woff2 +0 -0
  29. package/fonts/23f3a6ad5586406597914ccdfa6485a4.woff2 +0 -0
  30. package/fonts/242bc3d315aabb2c760c22901a294381.woff2 +0 -0
  31. package/fonts/28e0c9f4f663c3f04ba89ba81d19a2ad.woff2 +0 -0
  32. package/fonts/2928810ffc97278ca4fd2b599a1e9b6e.woff2 +0 -0
  33. package/fonts/2a66ebc75f6b74521f3042801a93ffe2.woff2 +0 -0
  34. package/fonts/2b46bd327dad644b0411ba6041e2e1cf.woff2 +0 -0
  35. package/fonts/30b3cf0ad50d03aeef55b669f99da4fa.woff2 +0 -0
  36. package/fonts/30c37e68fbeb4952e205077a53b7eab9.woff2 +0 -0
  37. package/fonts/333a4e28420bfab893a59cfa1c39c4b3.woff2 +0 -0
  38. package/fonts/34735fd05b36eaadb090efd3ba6409fa.woff2 +0 -0
  39. package/fonts/396b875417270491b2e4d246b980bbc8.woff2 +0 -0
  40. package/fonts/3a59340ca71997c84885188961d30e72.woff2 +0 -0
  41. package/fonts/3ab85b02fd30c5efe3dce62b69a7bea9.woff2 +0 -0
  42. package/fonts/3d54bf645647805f52d0281ed0228833.woff2 +0 -0
  43. package/fonts/409d74c42bdbae43d406a441af69a95f.woff2 +0 -0
  44. package/fonts/41050fd57f10e50907fd856f3a08346b.woff2 +0 -0
  45. package/fonts/418b784f58090a3a36c5dc1c53b62704.woff2 +0 -0
  46. package/fonts/42b4508a095cde5d8e9d25b07986f95f.woff2 +0 -0
  47. package/fonts/4409e57103e082215798f5214b4a3637.woff2 +0 -0
  48. package/fonts/44b889b0db6383d450ba3218ed64e108.woff2 +0 -0
  49. package/fonts/45f3d6d7263d515d4a2b58ff040fcc48.woff2 +0 -0
  50. package/fonts/46fe5b1f008721214771f40a4bd9bd72.woff2 +0 -0
  51. package/fonts/479f65c995cb67ce3a460c697dce9e22.woff2 +0 -0
  52. package/fonts/486b4a4a84c7578264e1303ecc433b16.woff2 +0 -0
  53. package/fonts/49b5445e12abe2d3eed431f38cfbb037.woff2 +0 -0
  54. package/fonts/4c4f826589fc39d61b1919ad8b627f80.woff2 +0 -0
  55. package/fonts/4cd5c9017bd228aca94124a40497f635.woff2 +0 -0
  56. package/fonts/4ecec2bf5c75f5ccb280052fb53157db.woff2 +0 -0
  57. package/fonts/4f0e75d692721110bee70b4e0d71300a.woff2 +0 -0
  58. package/fonts/518a6f44c506e83d1068d7515b0b8cb7.woff2 +0 -0
  59. package/fonts/5391ad919de181aa8608e4a0f1bd8c09.woff2 +0 -0
  60. package/fonts/53fe3ba2954fef70128d6733a90f8601.woff2 +0 -0
  61. package/fonts/56374bb0572ee6463de3cb83496d3f36.woff2 +0 -0
  62. package/fonts/574b1e1f154cecf2ac873c7a7544023b.woff2 +0 -0
  63. package/fonts/5a899d3bb4efd96c8fa0452768a3d456.woff2 +0 -0
  64. package/fonts/5e11c9b612776d9aee6b2062e3fccb55.woff2 +0 -0
  65. package/fonts/658767ed025bc501c3013e1f63c86bcb.woff2 +0 -0
  66. package/fonts/65c499c6e48d6c1b7827d6ff1d1eab60.woff2 +0 -0
  67. package/fonts/6760e79d75ce409f09427e56e3c025dc.woff2 +0 -0
  68. package/fonts/67d5234b7c17f407e8a242ce5ada493d.woff2 +0 -0
  69. package/fonts/6fbfc0af5a7ef4c448e8c1f5f1e91a60.woff2 +0 -0
  70. package/fonts/709e77d11c679cffc2dc25b032c67764.woff2 +0 -0
  71. package/fonts/75541edae19d80ac844e3d4a1b0e711a.woff2 +0 -0
  72. package/fonts/779acde69b4191ed711e89f176fae2d5.woff2 +0 -0
  73. package/fonts/7ade1c118b1bc97b3971f06048aa1e7a.woff2 +0 -0
  74. package/fonts/7f1ef4145bf986fb433cf7101594dbb8.woff2 +0 -0
  75. package/fonts/7ff32e4612a40f0203fe4d2409e515e8.woff2 +0 -0
  76. package/fonts/82afad3d44e99cbf1fb2a204740d7fd2.woff2 +0 -0
  77. package/fonts/86d79968a677302ec040c57fdbab6576.woff2 +0 -0
  78. package/fonts/8779a26aa266a22e886093a4ef65b0bd.woff2 +0 -0
  79. package/fonts/890aa53ea0c3bb3f35af8d1b17932473.woff2 +0 -0
  80. package/fonts/8cb1aba653e86d46fa31bf573631acd8.woff2 +0 -0
  81. package/fonts/8d9c6a762bbdfada274c0207bda44234.woff2 +0 -0
  82. package/fonts/8e9c72c231c8aa96c5b012f676fb54c3.woff2 +0 -0
  83. package/fonts/90501be40b3dbe4bb109d3f46dac3c61.woff2 +0 -0
  84. package/fonts/90e09d4c8c204194c134a583b5c1288b.woff2 +0 -0
  85. package/fonts/923694b5cdecd8647ba08a59697ab0cc.woff2 +0 -0
  86. package/fonts/9269e657048e89d04d79f8507e3cf1c3.woff2 +0 -0
  87. package/fonts/93de4eca97bc343ece70a4eeb03bd4a4.woff2 +0 -0
  88. package/fonts/98939883b0194fe74f877650c78b94c4.woff2 +0 -0
  89. package/fonts/993ac31171f7c467735857b80fe3cf7b.woff2 +0 -0
  90. package/fonts/9ae2fdcb005bd7479a071ecd605c4fd6.woff2 +0 -0
  91. package/fonts/9b4a1427f1fa323ed77767ee8f3a7321.woff2 +0 -0
  92. package/fonts/9c62c786a52ff747ef38e9acf9e65498.woff2 +0 -0
  93. package/fonts/9d53647c2ce0f4a1824203e0c644c41f.woff2 +0 -0
  94. package/fonts/9e1626f7a444a0a34b87a47d57de3e8b.woff2 +0 -0
  95. package/fonts/a07cb815b1d6dcee1e531a94d44aacdb.woff2 +0 -0
  96. package/fonts/a2a0ba09a982eca5baf40d99fd12196d.woff2 +0 -0
  97. package/fonts/a384403ad6999ff7528f25fff9ebf8cc.woff2 +0 -0
  98. package/fonts/aa37a3aaae61ab3cd934944af6ee9e10.woff2 +0 -0
  99. package/fonts/ab7939cba0d4b9d5a3b91073405b5704.woff2 +0 -0
  100. package/fonts/ad0be591acad4d101daab250ab3f6b13.woff2 +0 -0
  101. package/fonts/b1690dc0318a2d6ed494c70714c369fb.woff2 +0 -0
  102. package/fonts/b27ed0031d733b4f92aefe3a0bdad1a3.woff2 +0 -0
  103. package/fonts/b3a36aae2ce94efc1b33a812b0a63723.woff2 +0 -0
  104. package/fonts/b408e0a9c403f84d826fedddad4eafce.woff2 +0 -0
  105. package/fonts/b7552d432bbe1131f8b081a8a304c826.woff2 +0 -0
  106. package/fonts/b833866d3ed2eaf4157e4297f4db5818.woff2 +0 -0
  107. package/fonts/b86065dc8cf074e9da64f7cad2418175.woff2 +0 -0
  108. package/fonts/b90bb4ee23ef9b5e9a729a5a76885d8d.woff2 +0 -0
  109. package/fonts/bd6bc332a723d00071b7bd73098b1fca.woff2 +0 -0
  110. package/fonts/c1c4a62366427c476d7505d8d5607d43.woff2 +0 -0
  111. package/fonts/c37032acc02b2ec9bb82ea7e221a70f0.woff2 +0 -0
  112. package/fonts/c61c4905f06bdace00a01fee99fe4b4d.woff2 +0 -0
  113. package/fonts/c9e516ccf548caff87ac46d4a49d8439.woff2 +0 -0
  114. package/fonts/d29782161ecac8d5da44b6dbd63d98f1.woff2 +0 -0
  115. package/fonts/d5b155ab8ea80680e3a22b4b54282913.woff2 +0 -0
  116. package/fonts/d620b1ee2164749fe8d928f722896d1c.woff2 +0 -0
  117. package/fonts/d89b25cb16ce4004c3ba90531c1886d1.woff2 +0 -0
  118. package/fonts/d920f76005494dd4a42508a011b5bc7f.woff2 +0 -0
  119. package/fonts/d945c834b912b4ace6cf283b3731d66c.woff2 +0 -0
  120. package/fonts/deacad65f91899cb01176de287a9c00c.woff2 +0 -0
  121. package/fonts/dfb7d78b6b838654f246ad1b2b5b4b72.woff2 +0 -0
  122. package/fonts/dfe41a1b55be51bdac0d41e5c8b1e3b7.woff2 +0 -0
  123. package/fonts/e431ea7665f64dccbedcaa0ed19fccb7.woff2 +0 -0
  124. package/fonts/e71d1216d5e6b470598a17c11a0b132b.woff2 +0 -0
  125. package/fonts/e768b29b57d95b735c13984980dbd3b8.woff2 +0 -0
  126. package/fonts/e7efc76412d4935b4567b2760eb300fd.woff2 +0 -0
  127. package/fonts/ee11a2523b2c5b1ae3af86d162a95f8d.woff2 +0 -0
  128. package/fonts/efec9899498ea2c9be7453a7901c936e.woff2 +0 -0
  129. package/fonts/f1c118f9188115a5a596531b92587a83.woff2 +0 -0
  130. package/fonts/f36f25301e61cfb9d1f3200e047e927a.woff2 +0 -0
  131. package/fonts/f497194ba693571f76789df48028d494.woff2 +0 -0
  132. package/fonts/f6717ea5a513aacfe7494fdb6fdca2fa.woff2 +0 -0
  133. package/fonts/fab526c8b7ec2e57851baa1d4d61448f.woff2 +0 -0
  134. package/fonts/fb6e6ac34118a226d7cd3d1fbc5ddef1.woff2 +0 -0
  135. package/fonts/fd1d2083d4f38dc1f6f4dd0947f51f5d.woff2 +0 -0
  136. package/fonts/fonts.css +182 -0
  137. package/package.json +49 -3
  138. package/src/contrast-pairs.json +144 -0
  139. package/src/palette-kit.ts +140 -0
  140. package/src/tokens.json +1870 -0
@@ -0,0 +1,1243 @@
1
+ // GENERATED by packages/tokens/scripts/build.mjs from src/tokens.json. Do not edit.
2
+ export const koiPreset = {
3
+ "name": "@tuuject/koi-tokens",
4
+ "conditions": {
5
+ "extend": {
6
+ "dark": "[data-theme=dark] &",
7
+ "light": "[data-theme=light] &",
8
+ "fontChill": "[data-font=chill] &",
9
+ "paletteRose": "[data-palette=rose] &"
10
+ }
11
+ },
12
+ "theme": {
13
+ "extend": {
14
+ "tokens": {
15
+ "colors": {
16
+ "secondary": {
17
+ "50": {
18
+ "value": "oklch(98.5% 0.002 247.839)",
19
+ "description": "Neutral secondary, step 50: Tailwind gray-50. 1.0:1 on white, 19.3:1 on `secondary-950`."
20
+ },
21
+ "100": {
22
+ "value": "oklch(96.7% 0.003 264.542)",
23
+ "description": "Neutral secondary, step 100: Tailwind gray-100. 1.1:1 on white, 18.3:1 on `secondary-950`."
24
+ },
25
+ "200": {
26
+ "value": "oklch(92.8% 0.006 264.531)",
27
+ "description": "Neutral secondary, step 200: Tailwind gray-200. 1.2:1 on white, 16.3:1 on `secondary-950`."
28
+ },
29
+ "300": {
30
+ "value": "oklch(87.2% 0.01 258.338)",
31
+ "description": "Neutral secondary, step 300: Tailwind gray-300. 1.5:1 on white, 13.7:1 on `secondary-950`."
32
+ },
33
+ "400": {
34
+ "value": "oklch(70.7% 0.022 261.325)",
35
+ "description": "Neutral secondary, step 400: Tailwind gray-400. 2.6:1 on white, 7.7:1 on `secondary-950`."
36
+ },
37
+ "500": {
38
+ "value": "oklch(55.1% 0.027 264.364)",
39
+ "description": "Neutral secondary, step 500: Tailwind gray-500. 4.8:1 on white, 4.2:1 on `secondary-950`."
40
+ },
41
+ "600": {
42
+ "value": "oklch(44.6% 0.03 256.802)",
43
+ "description": "Neutral secondary, step 600: Tailwind gray-600. 7.6:1 on white, 2.7:1 on `secondary-950`."
44
+ },
45
+ "700": {
46
+ "value": "oklch(37.3% 0.034 259.733)",
47
+ "description": "Neutral secondary, step 700: Tailwind gray-700. 10.3:1 on white, 2.0:1 on `secondary-950`."
48
+ },
49
+ "800": {
50
+ "value": "oklch(27.8% 0.033 256.848)",
51
+ "description": "Neutral secondary, step 800: Tailwind gray-800. 14.7:1 on white, 1.4:1 on `secondary-950`."
52
+ },
53
+ "900": {
54
+ "value": "oklch(21% 0.034 264.665)",
55
+ "description": "Neutral secondary, step 900: Tailwind gray-900. 17.7:1 on white, 1.1:1 on `secondary-950`."
56
+ },
57
+ "950": {
58
+ "value": "oklch(13% 0.028 261.692)",
59
+ "description": "Neutral secondary, step 950: Tailwind gray-950. 20.1:1 on white, 1.0:1 on `secondary-950`. The dark-theme page ground (`page-bg`)."
60
+ }
61
+ },
62
+ "warning": {
63
+ "50": {
64
+ "value": "oklch(98.7% 0.026 102.212)",
65
+ "description": "Warning, step 50: Tailwind yellow-50. 1.0:1 on white, 19.4:1 on `secondary-950`."
66
+ },
67
+ "100": {
68
+ "value": "oklch(97.3% 0.071 103.193)",
69
+ "description": "Warning, step 100: Tailwind yellow-100. 1.1:1 on white, 18.7:1 on `secondary-950`."
70
+ },
71
+ "200": {
72
+ "value": "oklch(94.5% 0.129 101.54)",
73
+ "description": "Warning, step 200: Tailwind yellow-200. 1.2:1 on white, 17.3:1 on `secondary-950`."
74
+ },
75
+ "300": {
76
+ "value": "oklch(90.5% 0.182 98.111)",
77
+ "description": "Warning, step 300: Tailwind yellow-300. 1.3:1 on white, 15.2:1 on `secondary-950`."
78
+ },
79
+ "400": {
80
+ "value": "oklch(85.2% 0.199 91.936)",
81
+ "description": "Warning, step 400: Tailwind yellow-400. 1.6:1 on white, 12.8:1 on `secondary-950`."
82
+ },
83
+ "500": {
84
+ "value": "oklch(79.5% 0.184 86.047)",
85
+ "description": "Warning, step 500: Tailwind yellow-500. 1.9:1 on white, 10.5:1 on `secondary-950`."
86
+ },
87
+ "600": {
88
+ "value": "oklch(68.1% 0.162 75.834)",
89
+ "description": "Warning, step 600: Tailwind yellow-600. 2.9:1 on white, 6.9:1 on `secondary-950`."
90
+ },
91
+ "700": {
92
+ "value": "oklch(55.4% 0.135 66.442)",
93
+ "description": "Warning, step 700: Tailwind yellow-700. 4.9:1 on white, 4.1:1 on `secondary-950`."
94
+ },
95
+ "800": {
96
+ "value": "oklch(47.6% 0.114 61.907)",
97
+ "description": "Warning, step 800: Tailwind yellow-800. 6.9:1 on white, 2.9:1 on `secondary-950`."
98
+ },
99
+ "900": {
100
+ "value": "oklch(42.1% 0.095 57.708)",
101
+ "description": "Warning, step 900: Tailwind yellow-900. 8.7:1 on white, 2.3:1 on `secondary-950`."
102
+ },
103
+ "950": {
104
+ "value": "oklch(28.6% 0.066 53.813)",
105
+ "description": "Warning, step 950: Tailwind yellow-950. 14.6:1 on white, 1.4:1 on `secondary-950`."
106
+ }
107
+ },
108
+ "error": {
109
+ "50": {
110
+ "value": "oklch(97.1% 0.013 17.38)",
111
+ "description": "Error, step 50: Tailwind red-50. 1.1:1 on white, 18.4:1 on `secondary-950`."
112
+ },
113
+ "100": {
114
+ "value": "oklch(93.6% 0.032 17.717)",
115
+ "description": "Error, step 100: Tailwind red-100. 1.2:1 on white, 16.5:1 on `secondary-950`."
116
+ },
117
+ "200": {
118
+ "value": "oklch(88.5% 0.062 18.334)",
119
+ "description": "Error, step 200: Tailwind red-200. 1.4:1 on white, 13.9:1 on `secondary-950`."
120
+ },
121
+ "300": {
122
+ "value": "oklch(80.8% 0.114 19.571)",
123
+ "description": "Error, step 300: Tailwind red-300. 1.9:1 on white, 10.5:1 on `secondary-950`."
124
+ },
125
+ "400": {
126
+ "value": "oklch(70.4% 0.191 22.216)",
127
+ "description": "Error, step 400: Tailwind red-400. 2.9:1 on white, 7.0:1 on `secondary-950`."
128
+ },
129
+ "500": {
130
+ "value": "oklch(63.7% 0.237 25.331)",
131
+ "description": "Error, step 500: Tailwind red-500. 3.8:1 on white, 5.3:1 on `secondary-950`."
132
+ },
133
+ "600": {
134
+ "value": "oklch(57.7% 0.245 27.325)",
135
+ "description": "Error, step 600: Tailwind red-600. 4.8:1 on white, 4.2:1 on `secondary-950`."
136
+ },
137
+ "700": {
138
+ "value": "oklch(50.5% 0.213 27.518)",
139
+ "description": "Error, step 700: Tailwind red-700. 6.4:1 on white, 3.1:1 on `secondary-950`."
140
+ },
141
+ "800": {
142
+ "value": "oklch(44.4% 0.177 26.899)",
143
+ "description": "Error, step 800: Tailwind red-800. 8.4:1 on white, 2.4:1 on `secondary-950`."
144
+ },
145
+ "900": {
146
+ "value": "oklch(39.6% 0.141 25.723)",
147
+ "description": "Error, step 900: Tailwind red-900. 10.1:1 on white, 2.0:1 on `secondary-950`."
148
+ },
149
+ "950": {
150
+ "value": "oklch(25.8% 0.092 26.042)",
151
+ "description": "Error, step 950: Tailwind red-950. 16.1:1 on white, 1.2:1 on `secondary-950`."
152
+ }
153
+ },
154
+ "white": {
155
+ "value": "#ffffff",
156
+ "description": "Light page ground; text in dark theme; text on buttons."
157
+ },
158
+ "black": {
159
+ "value": "#000000",
160
+ "description": "Text in light theme."
161
+ }
162
+ },
163
+ "spacing": {
164
+ "1": {
165
+ "value": "4px",
166
+ "description": "Icon-to-label gap inside badges; Tailwind's unit."
167
+ },
168
+ "2": {
169
+ "value": "8px",
170
+ "description": "Gap between an icon and its label; between a label and its control."
171
+ },
172
+ "3": {
173
+ "value": "12px",
174
+ "description": "Inner padding of compact containers (tooltips, tab track); stack gap in forms' option lists."
175
+ },
176
+ "4": {
177
+ "value": "16px",
178
+ "description": "Gap between fields in a form; Alert padding."
179
+ },
180
+ "5": {
181
+ "value": "20px",
182
+ "description": "Content padding on mobile (the blog's `p-5`)."
183
+ },
184
+ "6": {
185
+ "value": "24px",
186
+ "description": "Card and Dialog padding; content padding from md up (`md:p-6`)."
187
+ },
188
+ "8": {
189
+ "value": "32px",
190
+ "description": "Gap between groups and between cards (the blog's `gap-8`)."
191
+ },
192
+ "10": {
193
+ "value": "40px",
194
+ "description": "Space between list items on mobile (`my-10`)."
195
+ },
196
+ "12": {
197
+ "value": "48px",
198
+ "description": "Space between list items from md up (`md:my-12`)."
199
+ },
200
+ "16": {
201
+ "value": "64px",
202
+ "description": "Gap between page sections."
203
+ }
204
+ },
205
+ "radii": {
206
+ "sm": {
207
+ "value": "6px",
208
+ "description": "Checkbox boxes."
209
+ },
210
+ "lg": {
211
+ "value": "8px",
212
+ "description": "Buttons and icon buttons with `shape=\"rounded\"` (Tailwind `rounded-lg`); tooltips; images inside text."
213
+ },
214
+ "xl": {
215
+ "value": "12px",
216
+ "description": "Inputs, textareas, selects, alerts, square avatars (the blog's friend avatars)."
217
+ },
218
+ "2xl": {
219
+ "value": "16px",
220
+ "description": "Spare step between fields (12px) and panels (24px); not used by the components today."
221
+ },
222
+ "panel": {
223
+ "value": "24px",
224
+ "description": "Cards and toasts (the blog's `.koi-squircle-md`; 48px squircle where `corner-shape: squircle` is supported)."
225
+ },
226
+ "dialog": {
227
+ "value": "32px",
228
+ "description": "Dialog panels: `radius-lg` (8px) of the footer buttons plus `space-6` (24px) padding, so the panel corner and the button corner share a center and read as concentric."
229
+ },
230
+ "bar": {
231
+ "value": "36px",
232
+ "description": "Floating bars: the blog's nav pill (`rounded-[2.25rem]`)."
233
+ },
234
+ "full": {
235
+ "value": "9999px",
236
+ "description": "Buttons, icon buttons, badges, tags, switches, tab tracks, round avatars."
237
+ }
238
+ },
239
+ "sizes": {
240
+ "control-sm": {
241
+ "value": "28px",
242
+ "description": "Small buttons, inputs, tags, avatars."
243
+ },
244
+ "control-md": {
245
+ "value": "36px",
246
+ "description": "Default height of buttons, inputs, selects, tab buttons and NavMenu items."
247
+ },
248
+ "control-lg": {
249
+ "value": "44px",
250
+ "description": "Large buttons (the blog's pagination pills), the tab track, the NavMenu logo box, large avatars."
251
+ },
252
+ "content-max": {
253
+ "value": "56rem",
254
+ "description": "Max width of a reading column (`max-w-4xl`)."
255
+ },
256
+ "icon": {
257
+ "value": "16px",
258
+ "description": "Icons beside 14px text: md/lg controls, alerts, toasts, NavMenu."
259
+ },
260
+ "icon-sm": {
261
+ "value": "14px",
262
+ "description": "Icons in small controls and tags."
263
+ },
264
+ "icon-xs": {
265
+ "value": "12px",
266
+ "description": "Icons beside 12px text: the checkbox tick, a field's error icon."
267
+ },
268
+ "icon-lg": {
269
+ "value": "18px",
270
+ "description": "Icons beside 16px titles: toasts, the dialog's close button."
271
+ }
272
+ },
273
+ "shadows": {
274
+ "raised": {
275
+ "value": "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)",
276
+ "description": "The active tab and switch thumbs (`shadow-sm`). Not used on buttons, which are flat."
277
+ },
278
+ "float": {
279
+ "value": "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
280
+ "description": "Things floating over the page: dialogs, toasts, the nav pill (`shadow-2xl`)."
281
+ },
282
+ "float-soft": {
283
+ "value": "0 25px 50px -12px rgba(0, 0, 0, 0.15)",
284
+ "description": "Docked floating chrome (the nav bar once scrolled)."
285
+ }
286
+ },
287
+ "blurs": {
288
+ "panel": {
289
+ "value": "24px",
290
+ "description": "Behind `surface-glass` and `backdrop` (`backdrop-blur-xl`)."
291
+ },
292
+ "float": {
293
+ "value": "40px",
294
+ "description": "Behind `surface-glass-tint` (`backdrop-blur-2xl`)."
295
+ }
296
+ },
297
+ "easings": {
298
+ "spring": {
299
+ "value": "cubic-bezier(.47,1.64,.41,.8)"
300
+ },
301
+ "out": {
302
+ "value": "cubic-bezier(0, 0, .2, 1)"
303
+ }
304
+ },
305
+ "durations": {
306
+ "fast": {
307
+ "value": "150ms"
308
+ },
309
+ "overlay": {
310
+ "value": "200ms"
311
+ },
312
+ "check": {
313
+ "value": "250ms"
314
+ },
315
+ "dialog": {
316
+ "value": "300ms"
317
+ },
318
+ "spring": {
319
+ "value": "400ms"
320
+ },
321
+ "shimmer": {
322
+ "value": "1.6s"
323
+ },
324
+ "spin": {
325
+ "value": "800ms"
326
+ },
327
+ "spin-slow": {
328
+ "value": "1.6s"
329
+ },
330
+ "indeterminate": {
331
+ "value": "1.2s"
332
+ },
333
+ "pulse": {
334
+ "value": "2s"
335
+ },
336
+ "ripple": {
337
+ "value": "600ms"
338
+ }
339
+ },
340
+ "zIndex": {
341
+ "dialog": {
342
+ "value": 900,
343
+ "description": "Dialog backdrop and popup."
344
+ },
345
+ "popup": {
346
+ "value": 950,
347
+ "description": "Panels opened from a trigger (SelectPanel), so they work inside a Dialog."
348
+ },
349
+ "toast": {
350
+ "value": 1000,
351
+ "description": "The toast stack, above everything else."
352
+ },
353
+ "tooltip": {
354
+ "value": 1000,
355
+ "description": "Tooltips: above dialogs and popups."
356
+ }
357
+ }
358
+ },
359
+ "semanticTokens": {
360
+ "colors": {
361
+ "page-bg": {
362
+ "value": {
363
+ "base": "{colors.white}",
364
+ "_dark": "{colors.secondary.950}"
365
+ },
366
+ "description": "Page background. The blog's body `bg-white` / `dark:bg-gray-950`."
367
+ },
368
+ "surface": {
369
+ "value": {
370
+ "base": "{colors.white}",
371
+ "_dark": "{colors.secondary.900}"
372
+ },
373
+ "description": "Cards, inputs, dialogs, the active tab: anything that sits on `page-bg` as its own object."
374
+ },
375
+ "surface-muted": {
376
+ "value": {
377
+ "base": "{colors.secondary.100}",
378
+ "_dark": "{colors.secondary.800}"
379
+ },
380
+ "description": "Quiet fills: tab track, progress track, ghost-button hover, disabled inputs."
381
+ },
382
+ "surface-glass": {
383
+ "value": {
384
+ "base": "rgba(255, 255, 255, 0.8)",
385
+ "_dark": "color-mix(in oklch, {colors.secondary.950} 70%, transparent)"
386
+ },
387
+ "description": "Koi's frosted panel (`bg-white/80 dark:bg-gray-950/70`), always with `blur-panel`. Use over imagery or color: the glass Card."
388
+ },
389
+ "surface-glass-tint": {
390
+ "value": {
391
+ "base": "rgba(255, 255, 255, 0.8)",
392
+ "_dark": "color-mix(in oklch, {colors.primary.950} 80%, transparent)"
393
+ },
394
+ "description": "Floating chrome: toasts and the blog's nav pill (`dark:bg-primary-950/80`), with `blur-float`."
395
+ },
396
+ "backdrop": {
397
+ "value": {
398
+ "base": "rgba(0, 0, 0, 0.4)",
399
+ "_dark": "rgba(0, 0, 0, 0.6)"
400
+ },
401
+ "description": "Dimmed layer behind a Dialog, with `blur-panel`."
402
+ },
403
+ "tooltip-bg": {
404
+ "value": {
405
+ "base": "{colors.secondary.900}",
406
+ "_dark": "{colors.secondary.100}"
407
+ },
408
+ "description": "Tooltip fill: inverted against the page."
409
+ },
410
+ "tooltip-text": {
411
+ "value": {
412
+ "base": "{colors.white}",
413
+ "_dark": "{colors.black}"
414
+ },
415
+ "description": "Text on `tooltip-bg`."
416
+ },
417
+ "text": {
418
+ "value": {
419
+ "base": "{colors.black}",
420
+ "_dark": "{colors.white}"
421
+ },
422
+ "description": "Body and heading text on `page-bg`, `surface`, `surface-muted` and the glass surfaces."
423
+ },
424
+ "text-muted": {
425
+ "value": {
426
+ "base": "rgba(0, 0, 0, 0.6)",
427
+ "_dark": "rgba(255, 255, 255, 0.6)"
428
+ },
429
+ "description": "Secondary text: help text, dates, descriptions, inactive tabs. The blog's `opacity-60`. Reads on `page-bg`, `surface` and `surface-muted`."
430
+ },
431
+ "text-disabled": {
432
+ "value": {
433
+ "base": "rgba(0, 0, 0, 0.38)",
434
+ "_dark": "rgba(255, 255, 255, 0.38)"
435
+ },
436
+ "description": "Disabled labels and values (exempt from contrast minimums). Never for content."
437
+ },
438
+ "text-brand": {
439
+ "value": {
440
+ "base": "{colors.primary.700}",
441
+ "_dark": "{colors.primary.300}"
442
+ },
443
+ "description": "Brand-colored text and icons: ghost buttons, active page links, tab focus. On `page-bg`, `surface`, `surface-muted`."
444
+ },
445
+ "border": {
446
+ "value": {
447
+ "base": "{colors.secondary.200}",
448
+ "_dark": "{colors.secondary.800}"
449
+ },
450
+ "description": "Decorative edges: card outlines, dividers, tag outlines. Not for control edges (too faint)."
451
+ },
452
+ "border-control": {
453
+ "value": "{colors.secondary.500}",
454
+ "description": "Edges of inputs, selects, checkboxes, radios and the off Switch track. Meets 3:1 on `surface` in both themes."
455
+ },
456
+ "border-control-hover": {
457
+ "value": {
458
+ "base": "{colors.secondary.600}",
459
+ "_dark": "{colors.secondary.400}"
460
+ },
461
+ "description": "Hovered control edge."
462
+ },
463
+ "divider": {
464
+ "value": {
465
+ "base": "rgba(0, 0, 0, 0.1)",
466
+ "_dark": "rgba(255, 255, 255, 0.1)"
467
+ },
468
+ "description": "Hairline separators (the blog's `border-black/10 dark:border-white/10`)."
469
+ },
470
+ "focus-ring": {
471
+ "value": {
472
+ "base": "{colors.primary.600}",
473
+ "_dark": "{colors.primary.400}"
474
+ },
475
+ "description": "2px focus outline on every interactive element, offset 2px (controls: drawn on the edge)."
476
+ },
477
+ "action": {
478
+ "value": "{colors.primary.700}",
479
+ "description": "Primary buttons, current page, checked controls' fill: the blog's pill button (`bg-primary-700`)."
480
+ },
481
+ "action-hover": {
482
+ "value": "{colors.primary.800}",
483
+ "description": "Hovered `action`. Darker than the blog's `primary-500` hover so white text stays readable."
484
+ },
485
+ "on-action": {
486
+ "value": "{colors.white}",
487
+ "description": "Text and icons on `action`, `action-hover`, `control-checked`, `danger`."
488
+ },
489
+ "action-subtle": {
490
+ "value": {
491
+ "base": "{colors.primary.100}",
492
+ "_dark": "{colors.primary.950}"
493
+ },
494
+ "description": "Secondary buttons and avatar fallbacks."
495
+ },
496
+ "action-subtle-hover": {
497
+ "value": {
498
+ "base": "{colors.primary.200}",
499
+ "_dark": "{colors.primary.900}"
500
+ },
501
+ "description": "Hovered `action-subtle`."
502
+ },
503
+ "on-action-subtle": {
504
+ "value": {
505
+ "base": "{colors.primary.800}",
506
+ "_dark": "{colors.primary.200}"
507
+ },
508
+ "description": "Text on `action-subtle`."
509
+ },
510
+ "control-checked": {
511
+ "value": {
512
+ "base": "{colors.primary.700}",
513
+ "_dark": "{colors.primary.600}"
514
+ },
515
+ "description": "Fill of a checked Checkbox, Radio dot and on Switch track; Progress bar."
516
+ },
517
+ "link": {
518
+ "value": {
519
+ "base": "{colors.accent.700}",
520
+ "_dark": "{colors.accent.400}"
521
+ },
522
+ "description": "Inline text links, with a dashed `link-border` underline. One step darker than the blog's `accent-600` so it reads at body size."
523
+ },
524
+ "link-border": {
525
+ "value": {
526
+ "base": "{colors.accent.300}",
527
+ "_dark": "{colors.accent.800}"
528
+ },
529
+ "description": "Dashed underline under `link` (the blog's `prose-a:border-dashed`)."
530
+ },
531
+ "link-hover-bg": {
532
+ "value": {
533
+ "base": "{colors.accent.100}",
534
+ "_dark": "{colors.accent.950}"
535
+ },
536
+ "description": "Tint behind a hovered link (the blog's `.prose a:hover`)."
537
+ },
538
+ "link-hover-border": {
539
+ "value": {
540
+ "base": "{colors.accent.500}",
541
+ "_dark": "{colors.accent.600}"
542
+ },
543
+ "description": "Underline of a hovered link."
544
+ },
545
+ "danger": {
546
+ "value": "{colors.error.600}",
547
+ "description": "Destructive buttons."
548
+ },
549
+ "danger-hover": {
550
+ "value": "{colors.error.700}",
551
+ "description": "Hovered `danger`."
552
+ },
553
+ "info-surface": {
554
+ "value": {
555
+ "base": "{colors.primary.50}",
556
+ "_dark": "{colors.primary.950}"
557
+ },
558
+ "description": "Info Alert fill."
559
+ },
560
+ "info-border": {
561
+ "value": {
562
+ "base": "{colors.primary.200}",
563
+ "_dark": "{colors.primary.800}"
564
+ },
565
+ "description": "Info Alert edge."
566
+ },
567
+ "info-text": {
568
+ "value": {
569
+ "base": "{colors.primary.800}",
570
+ "_dark": "{colors.primary.200}"
571
+ },
572
+ "description": "Text and icon on `info-surface`."
573
+ },
574
+ "warning-surface": {
575
+ "value": {
576
+ "base": "{colors.warning.50}",
577
+ "_dark": "{colors.warning.950}"
578
+ },
579
+ "description": "Warning Alert and Badge fill."
580
+ },
581
+ "warning-border": {
582
+ "value": {
583
+ "base": "{colors.warning.300}",
584
+ "_dark": "{colors.warning.800}"
585
+ },
586
+ "description": "Warning Alert edge."
587
+ },
588
+ "warning-text": {
589
+ "value": {
590
+ "base": "{colors.warning.800}",
591
+ "_dark": "{colors.warning.200}"
592
+ },
593
+ "description": "Text and icon on `warning-surface`."
594
+ },
595
+ "error-surface": {
596
+ "value": {
597
+ "base": "{colors.error.50}",
598
+ "_dark": "{colors.error.950}"
599
+ },
600
+ "description": "Error Alert and Badge fill."
601
+ },
602
+ "error-border": {
603
+ "value": {
604
+ "base": "{colors.error.300}",
605
+ "_dark": "{colors.error.800}"
606
+ },
607
+ "description": "Error Alert edge."
608
+ },
609
+ "error-text": {
610
+ "value": {
611
+ "base": "{colors.error.700}",
612
+ "_dark": "{colors.error.300}"
613
+ },
614
+ "description": "Text and icon on `error-surface`; Field error messages on `page-bg` / `surface`."
615
+ },
616
+ "error-control": {
617
+ "value": {
618
+ "base": "{colors.error.600}",
619
+ "_dark": "{colors.error.400}"
620
+ },
621
+ "description": "Edge of an invalid input."
622
+ },
623
+ "highlight": {
624
+ "value": {
625
+ "base": "{colors.accent.100}",
626
+ "_dark": "{colors.accent.950}"
627
+ },
628
+ "description": "Accent Badge fill: Koi's amber in a small dose."
629
+ },
630
+ "on-highlight": {
631
+ "value": {
632
+ "base": "{colors.accent.800}",
633
+ "_dark": "{colors.accent.200}"
634
+ },
635
+ "description": "Text on `highlight`."
636
+ },
637
+ "nav-item-text": {
638
+ "value": {
639
+ "base": "{colors.secondary.700}",
640
+ "_dark": "{colors.secondary.300}"
641
+ },
642
+ "description": "NavMenu items at rest, on page-bg, surface and the nav hover/active fills."
643
+ },
644
+ "nav-item-hover": {
645
+ "value": {
646
+ "base": "{colors.secondary.50}",
647
+ "_dark": "{colors.secondary.900}"
648
+ },
649
+ "description": "Hovered NavMenu item."
650
+ },
651
+ "table-row-hover": {
652
+ "value": {
653
+ "base": "{colors.secondary.50}",
654
+ "_dark": "color-mix(in oklch, {colors.secondary.800} 50%, transparent)"
655
+ },
656
+ "description": "Hovered table row. A step lighter than `surface-muted`, the ghost-button hover fill, so a hovered button still stands out in a hovered row."
657
+ },
658
+ "nav-item-active": {
659
+ "value": {
660
+ "base": "{colors.secondary.100}",
661
+ "_dark": "{colors.secondary.800}"
662
+ },
663
+ "description": "The current NavMenu item, with bold `text`."
664
+ },
665
+ "skeleton": {
666
+ "value": {
667
+ "base": "{colors.secondary.100}",
668
+ "_dark": "{colors.secondary.800}"
669
+ },
670
+ "description": "Skeleton placeholder fill. Reads on `page-bg` and `surface`."
671
+ },
672
+ "skeleton-highlight": {
673
+ "value": {
674
+ "base": "{colors.secondary.50}",
675
+ "_dark": "{colors.secondary.700}"
676
+ },
677
+ "description": "The shimmer band that sweeps across Skeleton placeholders."
678
+ },
679
+ "prose-text": {
680
+ "value": {
681
+ "base": "{colors.secondary.700}",
682
+ "_dark": "{colors.secondary.300}"
683
+ },
684
+ "description": "Running text inside Prose (the blog's `prose-slate` body, a step softer than `text`). Headings, bold and inline code inside Prose stay `text`."
685
+ },
686
+ "code-block-bg": {
687
+ "value": "{colors.secondary.800}",
688
+ "description": "Code block fill inside Prose: dark in both themes, as in the blog's `prose-slate`. Dark theme lifts it to the 800 step instead of Tailwind's `black / 0.5`, which vanished against `page-bg`."
689
+ },
690
+ "code-block-text": {
691
+ "value": {
692
+ "base": "{colors.secondary.200}",
693
+ "_dark": "{colors.secondary.300}"
694
+ },
695
+ "description": "Text on `code-block-bg`."
696
+ },
697
+ "primary-solid": {
698
+ "value": "{colors.action}",
699
+ "description": "Solid Button fill, color=\"primary\"."
700
+ },
701
+ "primary-solid-hover": {
702
+ "value": "{colors.action-hover}",
703
+ "description": "Hovered solid fill, color=\"primary\"."
704
+ },
705
+ "on-primary-solid": {
706
+ "value": "{colors.on-action}",
707
+ "description": "Text and icons on the solid fill, color=\"primary\"."
708
+ },
709
+ "primary-soft": {
710
+ "value": "{colors.action-subtle}",
711
+ "description": "Soft Button fill; also the hover fill of outline and ghost, color=\"primary\"."
712
+ },
713
+ "primary-soft-hover": {
714
+ "value": "{colors.action-subtle-hover}",
715
+ "description": "Hovered soft fill, color=\"primary\"."
716
+ },
717
+ "on-primary-soft": {
718
+ "value": "{colors.on-action-subtle}",
719
+ "description": "Text on the soft fill, color=\"primary\"."
720
+ },
721
+ "primary-fg": {
722
+ "value": "{colors.text-brand}",
723
+ "description": "Text and icons of outline and ghost Buttons, color=\"primary\"."
724
+ },
725
+ "primary-edge": {
726
+ "value": {
727
+ "base": "{colors.primary.600}",
728
+ "_dark": "{colors.primary.400}"
729
+ },
730
+ "description": "Outline Button edge (3:1+ on page-bg and surface), color=\"primary\"."
731
+ },
732
+ "accent-solid": {
733
+ "value": "{colors.accent.400}",
734
+ "description": "Solid Button fill, color=\"accent\"."
735
+ },
736
+ "accent-solid-hover": {
737
+ "value": "{colors.accent.300}",
738
+ "description": "Hovered solid fill, color=\"accent\"."
739
+ },
740
+ "on-accent-solid": {
741
+ "value": "{colors.accent.950}",
742
+ "description": "Text and icons on the solid fill, color=\"accent\"."
743
+ },
744
+ "accent-soft": {
745
+ "value": {
746
+ "base": "{colors.accent.100}",
747
+ "_dark": "{colors.accent.950}"
748
+ },
749
+ "description": "Soft Button fill; also the hover fill of outline and ghost, color=\"accent\"."
750
+ },
751
+ "accent-soft-hover": {
752
+ "value": {
753
+ "base": "{colors.accent.200}",
754
+ "_dark": "{colors.accent.900}"
755
+ },
756
+ "description": "Hovered soft fill, color=\"accent\"."
757
+ },
758
+ "on-accent-soft": {
759
+ "value": {
760
+ "base": "{colors.accent.800}",
761
+ "_dark": "{colors.accent.200}"
762
+ },
763
+ "description": "Text on the soft fill, color=\"accent\"."
764
+ },
765
+ "accent-fg": {
766
+ "value": {
767
+ "base": "{colors.accent.700}",
768
+ "_dark": "{colors.accent.400}"
769
+ },
770
+ "description": "Text and icons of outline and ghost Buttons, color=\"accent\"."
771
+ },
772
+ "accent-edge": {
773
+ "value": {
774
+ "base": "{colors.accent.600}",
775
+ "_dark": "{colors.accent.500}"
776
+ },
777
+ "description": "Outline Button edge (3:1+ on page-bg and surface), color=\"accent\"."
778
+ },
779
+ "secondary-solid": {
780
+ "value": {
781
+ "base": "{colors.secondary.700}",
782
+ "_dark": "{colors.secondary.200}"
783
+ },
784
+ "description": "Solid Button fill, color=\"secondary\"."
785
+ },
786
+ "secondary-solid-hover": {
787
+ "value": {
788
+ "base": "{colors.secondary.800}",
789
+ "_dark": "{colors.secondary.300}"
790
+ },
791
+ "description": "Hovered solid fill, color=\"secondary\"."
792
+ },
793
+ "on-secondary-solid": {
794
+ "value": {
795
+ "base": "{colors.white}",
796
+ "_dark": "{colors.secondary.950}"
797
+ },
798
+ "description": "Text and icons on the solid fill, color=\"secondary\"."
799
+ },
800
+ "secondary-soft": {
801
+ "value": {
802
+ "base": "{colors.secondary.100}",
803
+ "_dark": "{colors.secondary.800}"
804
+ },
805
+ "description": "Soft Button fill; also the hover fill of outline and ghost, color=\"secondary\"."
806
+ },
807
+ "secondary-soft-hover": {
808
+ "value": {
809
+ "base": "{colors.secondary.200}",
810
+ "_dark": "{colors.secondary.700}"
811
+ },
812
+ "description": "Hovered soft fill, color=\"secondary\"."
813
+ },
814
+ "on-secondary-soft": {
815
+ "value": {
816
+ "base": "{colors.secondary.800}",
817
+ "_dark": "{colors.secondary.100}"
818
+ },
819
+ "description": "Text on the soft fill, color=\"secondary\"."
820
+ },
821
+ "secondary-fg": {
822
+ "value": {
823
+ "base": "{colors.secondary.700}",
824
+ "_dark": "{colors.secondary.300}"
825
+ },
826
+ "description": "Text and icons of outline and ghost Buttons, color=\"secondary\"."
827
+ },
828
+ "secondary-edge": {
829
+ "value": "{colors.secondary.500}",
830
+ "description": "Outline Button edge (3:1+ on page-bg and surface), color=\"secondary\"."
831
+ },
832
+ "warning-solid": {
833
+ "value": "{colors.warning.400}",
834
+ "description": "Solid Button fill, color=\"warning\"."
835
+ },
836
+ "warning-solid-hover": {
837
+ "value": "{colors.warning.300}",
838
+ "description": "Hovered solid fill, color=\"warning\"."
839
+ },
840
+ "on-warning-solid": {
841
+ "value": "{colors.warning.950}",
842
+ "description": "Text and icons on the solid fill, color=\"warning\"."
843
+ },
844
+ "warning-soft": {
845
+ "value": {
846
+ "base": "{colors.warning.100}",
847
+ "_dark": "{colors.warning.950}"
848
+ },
849
+ "description": "Soft Button fill; also the hover fill of outline and ghost, color=\"warning\"."
850
+ },
851
+ "warning-soft-hover": {
852
+ "value": {
853
+ "base": "{colors.warning.200}",
854
+ "_dark": "{colors.warning.900}"
855
+ },
856
+ "description": "Hovered soft fill, color=\"warning\"."
857
+ },
858
+ "on-warning-soft": {
859
+ "value": {
860
+ "base": "{colors.warning.800}",
861
+ "_dark": "{colors.warning.200}"
862
+ },
863
+ "description": "Text on the soft fill, color=\"warning\"."
864
+ },
865
+ "warning-fg": {
866
+ "value": {
867
+ "base": "{colors.warning.700}",
868
+ "_dark": "{colors.warning.400}"
869
+ },
870
+ "description": "Text and icons of outline and ghost Buttons, color=\"warning\"."
871
+ },
872
+ "warning-edge": {
873
+ "value": {
874
+ "base": "{colors.warning.700}",
875
+ "_dark": "{colors.warning.500}"
876
+ },
877
+ "description": "Outline Button edge (3:1+ on page-bg and surface), color=\"warning\"."
878
+ },
879
+ "error-solid": {
880
+ "value": "{colors.danger}",
881
+ "description": "Solid Button fill, color=\"error\"."
882
+ },
883
+ "error-solid-hover": {
884
+ "value": "{colors.danger-hover}",
885
+ "description": "Hovered solid fill, color=\"error\"."
886
+ },
887
+ "on-error-solid": {
888
+ "value": "{colors.on-action}",
889
+ "description": "Text and icons on the solid fill, color=\"error\"."
890
+ },
891
+ "error-soft": {
892
+ "value": {
893
+ "base": "{colors.error.100}",
894
+ "_dark": "{colors.error.950}"
895
+ },
896
+ "description": "Soft Button fill; also the hover fill of outline and ghost, color=\"error\"."
897
+ },
898
+ "error-soft-hover": {
899
+ "value": {
900
+ "base": "{colors.error.200}",
901
+ "_dark": "{colors.error.900}"
902
+ },
903
+ "description": "Hovered soft fill, color=\"error\"."
904
+ },
905
+ "on-error-soft": {
906
+ "value": {
907
+ "base": "{colors.error.800}",
908
+ "_dark": "{colors.error.200}"
909
+ },
910
+ "description": "Text on the soft fill, color=\"error\"."
911
+ },
912
+ "error-fg": {
913
+ "value": {
914
+ "base": "{colors.error.700}",
915
+ "_dark": "{colors.error.400}"
916
+ },
917
+ "description": "Text and icons of outline and ghost Buttons, color=\"error\"."
918
+ },
919
+ "error-edge": {
920
+ "value": {
921
+ "base": "{colors.error.600}",
922
+ "_dark": "{colors.error.400}"
923
+ },
924
+ "description": "Outline Button edge (3:1+ on page-bg and surface), color=\"error\"."
925
+ },
926
+ "primary": {
927
+ "50": {
928
+ "value": {
929
+ "base": "oklch(97.7% 0.013 236.62)",
930
+ "_paletteRose": "#fff1f2"
931
+ },
932
+ "description": "Brand primary, step 50: Tailwind sky-50 (global.css `--color-primary-50: var(--color-sky-50)`)."
933
+ },
934
+ "100": {
935
+ "value": {
936
+ "base": "oklch(95.1% 0.026 236.824)",
937
+ "_paletteRose": "#ffe4e6"
938
+ },
939
+ "description": "Brand primary, step 100: Tailwind sky-100 (global.css `--color-primary-100: var(--color-sky-100)`)."
940
+ },
941
+ "200": {
942
+ "value": {
943
+ "base": "oklch(90.1% 0.058 230.902)",
944
+ "_paletteRose": "#fecdd3"
945
+ },
946
+ "description": "Brand primary, step 200: Tailwind sky-200 (global.css `--color-primary-200: var(--color-sky-200)`)."
947
+ },
948
+ "300": {
949
+ "value": {
950
+ "base": "oklch(82.8% 0.111 230.318)",
951
+ "_paletteRose": "#fda4af"
952
+ },
953
+ "description": "Brand primary, step 300: Tailwind sky-300 (global.css `--color-primary-300: var(--color-sky-300)`)."
954
+ },
955
+ "400": {
956
+ "value": {
957
+ "base": "oklch(74.6% 0.16 232.661)",
958
+ "_paletteRose": "#fb7185"
959
+ },
960
+ "description": "Brand primary, step 400: Tailwind sky-400 (global.css `--color-primary-400: var(--color-sky-400)`)."
961
+ },
962
+ "500": {
963
+ "value": {
964
+ "base": "oklch(68.5% 0.169 237.323)",
965
+ "_paletteRose": "#f43f5e"
966
+ },
967
+ "description": "Brand primary, step 500: Tailwind sky-500 (global.css `--color-primary-500: var(--color-sky-500)`)."
968
+ },
969
+ "600": {
970
+ "value": {
971
+ "base": "oklch(58.8% 0.158 241.966)",
972
+ "_paletteRose": "#e11d48"
973
+ },
974
+ "description": "Brand primary, step 600: Tailwind sky-600 (global.css `--color-primary-600: var(--color-sky-600)`)."
975
+ },
976
+ "700": {
977
+ "value": {
978
+ "base": "oklch(50% 0.134 242.749)",
979
+ "_paletteRose": "#be123c"
980
+ },
981
+ "description": "Brand primary, step 700: Tailwind sky-700 (global.css `--color-primary-700: var(--color-sky-700)`)."
982
+ },
983
+ "800": {
984
+ "value": {
985
+ "base": "oklch(44.3% 0.11 240.79)",
986
+ "_paletteRose": "#9f1239"
987
+ },
988
+ "description": "Brand primary, step 800: Tailwind sky-800 (global.css `--color-primary-800: var(--color-sky-800)`)."
989
+ },
990
+ "900": {
991
+ "value": {
992
+ "base": "oklch(39.1% 0.09 240.876)",
993
+ "_paletteRose": "#881337"
994
+ },
995
+ "description": "Brand primary, step 900: Tailwind sky-900 (global.css `--color-primary-900: var(--color-sky-900)`)."
996
+ },
997
+ "950": {
998
+ "value": {
999
+ "base": "oklch(29.3% 0.066 243.157)",
1000
+ "_paletteRose": "#4c0519"
1001
+ },
1002
+ "description": "Brand primary, step 950: Tailwind sky-950 (global.css `--color-primary-950: var(--color-sky-950)`)."
1003
+ }
1004
+ },
1005
+ "accent": {
1006
+ "50": {
1007
+ "value": {
1008
+ "base": "oklch(98.7% 0.022 95.277)",
1009
+ "_paletteRose": "#f5f3ff"
1010
+ },
1011
+ "description": "Brand accent, step 50: Tailwind amber-50 (global.css `--color-accent-50: var(--color-amber-50)`)."
1012
+ },
1013
+ "100": {
1014
+ "value": {
1015
+ "base": "oklch(96.2% 0.059 95.617)",
1016
+ "_paletteRose": "#ede9fe"
1017
+ },
1018
+ "description": "Brand accent, step 100: Tailwind amber-100 (global.css `--color-accent-100: var(--color-amber-100)`)."
1019
+ },
1020
+ "200": {
1021
+ "value": {
1022
+ "base": "oklch(92.4% 0.12 95.746)",
1023
+ "_paletteRose": "#ddd6fe"
1024
+ },
1025
+ "description": "Brand accent, step 200: Tailwind amber-200 (global.css `--color-accent-200: var(--color-amber-200)`)."
1026
+ },
1027
+ "300": {
1028
+ "value": {
1029
+ "base": "oklch(87.9% 0.169 91.605)",
1030
+ "_paletteRose": "#c4b5fd"
1031
+ },
1032
+ "description": "Brand accent, step 300: Tailwind amber-300 (global.css `--color-accent-300: var(--color-amber-300)`)."
1033
+ },
1034
+ "400": {
1035
+ "value": {
1036
+ "base": "oklch(82.8% 0.189 84.429)",
1037
+ "_paletteRose": "#a78bfa"
1038
+ },
1039
+ "description": "Brand accent, step 400: Tailwind amber-400 (global.css `--color-accent-400: var(--color-amber-400)`)."
1040
+ },
1041
+ "500": {
1042
+ "value": {
1043
+ "base": "oklch(76.9% 0.188 70.08)",
1044
+ "_paletteRose": "#8b5cf6"
1045
+ },
1046
+ "description": "Brand accent, step 500: Tailwind amber-500 (global.css `--color-accent-500: var(--color-amber-500)`)."
1047
+ },
1048
+ "600": {
1049
+ "value": {
1050
+ "base": "oklch(66.6% 0.179 58.318)",
1051
+ "_paletteRose": "#7c3aed"
1052
+ },
1053
+ "description": "Brand accent, step 600: Tailwind amber-600 (global.css `--color-accent-600: var(--color-amber-600)`)."
1054
+ },
1055
+ "700": {
1056
+ "value": {
1057
+ "base": "oklch(55.5% 0.163 48.998)",
1058
+ "_paletteRose": "#6d28d9"
1059
+ },
1060
+ "description": "Brand accent, step 700: Tailwind amber-700 (global.css `--color-accent-700: var(--color-amber-700)`)."
1061
+ },
1062
+ "800": {
1063
+ "value": {
1064
+ "base": "oklch(47.3% 0.137 46.201)",
1065
+ "_paletteRose": "#5b21b6"
1066
+ },
1067
+ "description": "Brand accent, step 800: Tailwind amber-800 (global.css `--color-accent-800: var(--color-amber-800)`)."
1068
+ },
1069
+ "900": {
1070
+ "value": {
1071
+ "base": "oklch(41.4% 0.112 45.904)",
1072
+ "_paletteRose": "#4c1d95"
1073
+ },
1074
+ "description": "Brand accent, step 900: Tailwind amber-900 (global.css `--color-accent-900: var(--color-amber-900)`)."
1075
+ },
1076
+ "950": {
1077
+ "value": {
1078
+ "base": "oklch(27.9% 0.077 45.635)",
1079
+ "_paletteRose": "#2e1065"
1080
+ },
1081
+ "description": "Brand accent, step 950: Tailwind amber-950 (global.css `--color-accent-950: var(--color-amber-950)`)."
1082
+ }
1083
+ }
1084
+ },
1085
+ "fonts": {
1086
+ "sans": {
1087
+ "value": {
1088
+ "base": "-apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", sans-serif",
1089
+ "_fontChill": "\"ChillRoundF\", -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", sans-serif"
1090
+ }
1091
+ }
1092
+ }
1093
+ },
1094
+ "textStyles": {
1095
+ "display": {
1096
+ "description": "One per page at most: hero and site titles.",
1097
+ "value": {
1098
+ "fontFamily": "sans",
1099
+ "fontSize": "30px",
1100
+ "lineHeight": "38px",
1101
+ "fontWeight": "700"
1102
+ }
1103
+ },
1104
+ "heading-1": {
1105
+ "description": "Page titles.",
1106
+ "value": {
1107
+ "fontFamily": "sans",
1108
+ "fontSize": "24px",
1109
+ "lineHeight": "32px",
1110
+ "fontWeight": "700"
1111
+ }
1112
+ },
1113
+ "heading-2": {
1114
+ "description": "Section titles; Dialog titles.",
1115
+ "value": {
1116
+ "fontFamily": "sans",
1117
+ "fontSize": "20px",
1118
+ "lineHeight": "28px",
1119
+ "fontWeight": "700"
1120
+ }
1121
+ },
1122
+ "heading-3": {
1123
+ "description": "Card titles, the NavMenu product name, sub-sections.",
1124
+ "value": {
1125
+ "fontFamily": "sans",
1126
+ "fontSize": "16px",
1127
+ "lineHeight": "24px",
1128
+ "fontWeight": "700"
1129
+ }
1130
+ },
1131
+ "prose": {
1132
+ "description": "Long-form reading text only (articles, docs). Everything else is `body`.",
1133
+ "value": {
1134
+ "fontFamily": "sans",
1135
+ "fontSize": "16px",
1136
+ "lineHeight": "1.75",
1137
+ "fontWeight": "400"
1138
+ }
1139
+ },
1140
+ "body": {
1141
+ "description": "The base size: UI text, inputs, alerts, menus, table cells.",
1142
+ "value": {
1143
+ "fontFamily": "sans",
1144
+ "fontSize": "14px",
1145
+ "lineHeight": "20px",
1146
+ "fontWeight": "400"
1147
+ }
1148
+ },
1149
+ "small": {
1150
+ "description": "Help text, descriptions, tooltips, tags, section labels.",
1151
+ "value": {
1152
+ "fontFamily": "sans",
1153
+ "fontSize": "12px",
1154
+ "lineHeight": "16px",
1155
+ "fontWeight": "400"
1156
+ }
1157
+ },
1158
+ "caption": {
1159
+ "description": "Badges and tiny counters only.",
1160
+ "value": {
1161
+ "fontFamily": "sans",
1162
+ "fontSize": "12px",
1163
+ "lineHeight": "16px",
1164
+ "fontWeight": "700"
1165
+ }
1166
+ },
1167
+ "label": {
1168
+ "description": "Field labels, table headers, Alert and Toast titles.",
1169
+ "value": {
1170
+ "fontFamily": "sans",
1171
+ "fontSize": "14px",
1172
+ "lineHeight": "20px",
1173
+ "fontWeight": "700"
1174
+ }
1175
+ },
1176
+ "button": {
1177
+ "description": "Button labels, md and lg.",
1178
+ "value": {
1179
+ "fontFamily": "sans",
1180
+ "fontSize": "14px",
1181
+ "lineHeight": "20px",
1182
+ "fontWeight": "600"
1183
+ }
1184
+ },
1185
+ "button-sm": {
1186
+ "description": "Small button labels, except in table cells.",
1187
+ "value": {
1188
+ "fontFamily": "sans",
1189
+ "fontSize": "12px",
1190
+ "lineHeight": "16px",
1191
+ "fontWeight": "600"
1192
+ }
1193
+ }
1194
+ },
1195
+ "keyframes": {
1196
+ "koi-fade": {
1197
+ "from": {
1198
+ "opacity": "0"
1199
+ }
1200
+ },
1201
+ "koi-pop": {
1202
+ "from": {
1203
+ "opacity": "0",
1204
+ "transform": "translateY(8px) scale(.97)"
1205
+ }
1206
+ },
1207
+ "koi-rise": {
1208
+ "from": {
1209
+ "opacity": "0",
1210
+ "transform": "translateY(12px) scale(.96)"
1211
+ }
1212
+ },
1213
+ "koi-spin": {
1214
+ "to": {
1215
+ "transform": "rotate(360deg)"
1216
+ }
1217
+ },
1218
+ "koi-shimmer": {
1219
+ "from": {
1220
+ "backgroundPosition": "-150vw 0"
1221
+ },
1222
+ "to": {
1223
+ "backgroundPosition": "50vw 0"
1224
+ }
1225
+ },
1226
+ "koi-indet": {
1227
+ "from": {
1228
+ "translate": "-100%"
1229
+ },
1230
+ "to": {
1231
+ "translate": "250%"
1232
+ }
1233
+ },
1234
+ "koi-pulse": {
1235
+ "50%": {
1236
+ "opacity": ".45"
1237
+ }
1238
+ }
1239
+ }
1240
+ }
1241
+ }
1242
+ };
1243
+ export default koiPreset;