tailwind.config.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. var colors = require('tailwindcss/colors');
  2. var plugin = require('tailwindcss/plugin');
  3. var types = ['primary', 'secondary', 'neutral', 'warning', 'success', 'error'];
  4. function generateSafeList(types) {
  5. var safelist = [];
  6. types.forEach(type => {
  7. safelist.push(
  8. ...[
  9. `text-on-${type}`,
  10. `dark:text-on-${type}-dark`,
  11. `text-${type}`,
  12. `dark:text-${type}-dark`,
  13. `hover:text-${type}-variant`,
  14. `dark:hover:text-${type}-variant-dark`,
  15. `bg-${type}`,
  16. `bg-${type}/25`,
  17. `from-${type}-variant`,
  18. `to-${type}`,
  19. `dark:bg-${type}-dark`,
  20. `dark:bg-${type}-dark/25`,
  21. `hover:bg-${type}-variant`,
  22. `hover:bg-${type}-variant/25`,
  23. `hover:dark:bg-${type}-variant-dark`,
  24. `border-${type}`,
  25. `dark:border-${type}-dark`,
  26. `hover:border-${type}-variant`,
  27. `dark:hover:border-${type}-variant-dark`,
  28. ]
  29. );
  30. });
  31. return safelist;
  32. }
  33. /** @type {import('tailwindcss').Config} */
  34. module.exports = {
  35. darkMode: 'selector',
  36. content: ['./src/**/*.{html,js,ts}'],
  37. safelist: generateSafeList(types),
  38. theme: {
  39. extend: {
  40. aspectRatio: {
  41. '16/9': '16 / 9',
  42. '4/5': '4 / 5',
  43. '1/1': '1 / 1',
  44. },
  45. fontFamily: {
  46. primary: 'var(--font-primary)',
  47. title: 'var(--font-title)',
  48. logo: 'var(--font-logo)',
  49. },
  50. fontWeight: {
  51. thin: '100',
  52. extralight: '200',
  53. light: '300',
  54. normal: '400',
  55. medium: '500',
  56. semibold: '600',
  57. bold: '700',
  58. extrabold: '800',
  59. black: '900',
  60. },
  61. colors: {
  62. ...colors,
  63. primary: {
  64. "50": 'rgb(var(--primary-50) / <alpha-value>)',
  65. "100": 'rgb(var(--primary-100) / <alpha-value>)',
  66. "200": 'rgb(var(--primary-200) / <alpha-value>)',
  67. "300": 'rgb(var(--primary-300) / <alpha-value>)',
  68. "400": 'rgb(var(--primary-400) / <alpha-value>)',
  69. "500": 'rgb(var(--primary-500) / <alpha-value>)',
  70. "600": 'rgb(var(--primary-600) / <alpha-value>)',
  71. "700": 'rgb(var(--primary-700) / <alpha-value>)',
  72. "800": 'rgb(var(--primary-800) / <alpha-value>)',
  73. "900": 'rgb(var(--primary-900) / <alpha-value>)',
  74. "950": 'rgb(var(--primary-950) / <alpha-value>)',
  75. DEFAULT: 'rgb(var(--primary-400) / <alpha-value>)',
  76. dark: 'rgb(var(--primary-800) / <alpha-value>)',
  77. container: {
  78. DEFAULT: 'rgb(var(--primary-200) / <alpha-value>)',
  79. dark: 'rgb(var(--primary-800) / <alpha-value>)',
  80. },
  81. variant: {
  82. DEFAULT: 'rgb(var(--primary-600) / <alpha-value>)',
  83. dark: 'rgb(var(--primary-700) / <alpha-value>)',
  84. },
  85. },
  86. secondary: {
  87. "50": 'rgb(var(--primary-50) / <alpha-value>)',
  88. "100": 'rgb(var(--secondary-100) / <alpha-value>)',
  89. "200": 'rgb(var(--secondary-200) / <alpha-value>)',
  90. "300": 'rgb(var(--secondary-300) / <alpha-value>)',
  91. "400": 'rgb(var(--secondary-400) / <alpha-value>)',
  92. "500": 'rgb(var(--secondary-500) / <alpha-value>)',
  93. "600": 'rgb(var(--secondary-600) / <alpha-value>)',
  94. "700": 'rgb(var(--secondary-700) / <alpha-value>)',
  95. "800": 'rgb(var(--secondary-800) / <alpha-value>)',
  96. "900": 'rgb(var(--secondary-900) / <alpha-value>)',
  97. "950": 'rgb(var(--secondary-950) / <alpha-value>)',
  98. DEFAULT: 'rgb(var(--secondary-300) / <alpha-value>)',
  99. dark: 'rgb(var(--secondary-800) / <alpha-value>)',
  100. container: {
  101. DEFAULT: 'rgb(var(--secondary-100) / <alpha-value>)',
  102. dark: 'rgb(var(--secondary-800) / <alpha-value>)',
  103. },
  104. variant: {
  105. DEFAULT: 'rgb(var(--secondary-500) / <alpha-value>)',
  106. dark: 'rgb(var(--secondary-700) / <alpha-value>)',
  107. },
  108. },
  109. neutral: {
  110. "50": 'rgb(var(--monochrome-50) / <alpha-value>)',
  111. "100": 'rgb(var(--monochrome-100) / <alpha-value>)',
  112. "200": 'rgb(var(--monochrome-200) / <alpha-value>)',
  113. "300": 'rgb(var(--monochrome-300) / <alpha-value>)',
  114. "400": 'rgb(var(--monochrome-400) / <alpha-value>)',
  115. "500": 'rgb(var(--monochrome-500) / <alpha-value>)',
  116. "600": 'rgb(var(--monochrome-600) / <alpha-value>)',
  117. "700": 'rgb(var(--monochrome-700) / <alpha-value>)',
  118. "800": 'rgb(var(--monochrome-800) / <alpha-value>)',
  119. "900": 'rgb(var(--monochrome-900) / <alpha-value>)',
  120. "950": 'rgb(var(--monochrome-950) / <alpha-value>)',
  121. DEFAULT: 'rgb(var(--monochrome-400) / <alpha-value>)',
  122. dark: 'rgb(var(--monochrome-700) / <alpha-value>)',
  123. variant: {
  124. DEFAULT: 'rgb(var(--monochrome-500) / <alpha-value>)',
  125. dark: 'rgb(var(--monochrome-500) / <alpha-value>)',
  126. },
  127. },
  128. background: {
  129. DEFAULT: 'rgb(var(--primary-50) / <alpha-value>)',
  130. dark: 'rgb(var(--primary-950) / <alpha-value>)',
  131. },
  132. surface: {
  133. DEFAULT: 'rgb(var(--primary-100) / <alpha-value>)',
  134. dark: 'rgb(var(--primary-900) / <alpha-value>)',
  135. variant: {
  136. DEFAULT: 'rgb(var(--primary-400) / <alpha-value>)',
  137. dark: 'rgb(var(--primary-700) / <alpha-value>)',
  138. },
  139. },
  140. success: {
  141. DEFAULT: colors.green[400],
  142. dark: colors.green[600],
  143. variant: {
  144. DEFAULT: colors.green[500],
  145. dark: colors.green[500],
  146. },
  147. },
  148. warning: {
  149. DEFAULT: colors.amber[400],
  150. dark: colors.amber[600],
  151. variant: {
  152. DEFAULT: colors.amber[500],
  153. dark: colors.amber[500],
  154. },
  155. },
  156. error: {
  157. DEFAULT: colors.red[400],
  158. dark: colors.red[600],
  159. variant: {
  160. DEFAULT: colors.red[500],
  161. dark: colors.red[500],
  162. },
  163. },
  164. on: {
  165. primary: {
  166. DEFAULT: 'rgb(var(--primary-950) / <alpha-value>)',
  167. dark: 'rgb(var(--primary-50) / <alpha-value>)',
  168. container: {
  169. DEFAULT: 'rgb(var(--primary-900) / <alpha-value>)',
  170. dark: 'rgb(var(--primary-50) / <alpha-value>)',
  171. },
  172. },
  173. secondary: {
  174. DEFAULT: 'rgb(var(--secondary-950) / <alpha-value>)',
  175. dark: 'rgb(var(--secondary-50) / <alpha-value>)',
  176. container: {
  177. DEFAULT: 'rgb(var(--secondary-900) / <alpha-value>)',
  178. dark: 'rgb(var(--secondary-50) / <alpha-value>)',
  179. },
  180. },
  181. neutral: {
  182. DEFAULT: 'rgb(var(--monochrome-950) / <alpha-value>)',
  183. dark: 'rgb(var(--monochrome-10) / <alpha-value>)',
  184. variant: {
  185. DEFAULT: 'rgb(var(--monochrome-800) / <alpha-value>)',
  186. dark: 'rgb(var(--monochrome-50) / <alpha-value>)',
  187. },
  188. },
  189. background: {
  190. DEFAULT: 'rgb(var(--monochrome-950) / <alpha-value>)',
  191. dark: 'rgb(var(--monochrome-10) / <alpha-value>)',
  192. },
  193. surface: {
  194. DEFAULT: 'rgb(var(--monochrome-950) / <alpha-value>)',
  195. dark: 'rgb(var(--monochrome-100) / <alpha-value>)',
  196. variant: {
  197. DEFAULT: 'rgb(var(--monochrome-700) / <alpha-value>)',
  198. dark: 'rgb(var(--monochrome-200) / <alpha-value>)',
  199. },
  200. },
  201. success: {
  202. DEFAULT: colors.green[950],
  203. dark: colors.green[50],
  204. variant: {
  205. DEFAULT: colors.green[400],
  206. dark: colors.green[600],
  207. },
  208. },
  209. warning: {
  210. DEFAULT: colors.amber[950],
  211. dark: colors.amber[50],
  212. variant: {
  213. DEFAULT: colors.amber[400],
  214. dark: colors.amber[600],
  215. },
  216. },
  217. error: {
  218. DEFAULT: colors.red[950],
  219. dark: colors.red[50],
  220. variant: {
  221. DEFAULT: colors.red[400],
  222. dark: colors.red[600],
  223. },
  224. },
  225. },
  226. },
  227. },
  228. },
  229. plugins: [
  230. plugin(function ({ addBase, theme }) {
  231. addBase({
  232. h1: { fontSize: theme('fontSize.3xl'), fontWeight: theme('fontWeight.bold') },
  233. h2: { fontSize: theme('fontSize.2xl'), fontWeight: theme('fontWeight.bold') },
  234. h3: { fontSize: theme('fontSize.xl'), fontWeight: theme('fontWeight.semibold') },
  235. h4: { fontSize: theme('fontSize.lg'), fontWeight: theme('fontWeight.semibold') },
  236. });
  237. }),
  238. ],
  239. };