tailwind.config.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. const colors = require('tailwindcss/colors')
  2. const radix = require('@radix-ui/colors')
  3. function exposeColorsToCssVars ({ addBase, theme }) {
  4. function extractColorVars (colorObj, colorGroup = '') {
  5. return Object.keys(colorObj).reduce((vars, colorKey) => {
  6. const value = colorObj[colorKey]
  7. const newVars =
  8. typeof value === 'string'
  9. ? { [`--color${colorGroup}-${colorKey}`]: value }
  10. : extractColorVars(value, `-${colorKey}`)
  11. return { ...vars, ...newVars }
  12. }, {})
  13. }
  14. addBase({
  15. ':root': extractColorVars(theme('colors')),
  16. })
  17. }
  18. function buildColor(color, custom) {
  19. const base = custom || colors[color] || {}
  20. for (const [xName, xValue] of Object.entries(radix[color] || {})) {
  21. const regexResult = xName.match(/\d+$/)
  22. if (!regexResult) { continue; }
  23. const xStep = regexResult[0]
  24. base[xStep] = xValue
  25. }
  26. return base
  27. }
  28. function getDarkSelector(config) {
  29. const darkMode = config("darkMode");
  30. const prefix = config("prefix");
  31. if (Array.isArray(darkMode)) {
  32. if (darkMode.length < 2) {
  33. throw new Error(
  34. "To customize the dark mode selector, `darkMode` should contain two items. Documentation: https://tailwindcss.com/docs/dark-mode#customizing-the-class-name"
  35. );
  36. }
  37. if (darkMode[0] !== "class") {
  38. throw new Error(
  39. 'To customize the dark mode selector, `darkMode` should have "class" as its first item. Documentation: https://tailwindcss.com/docs/dark-mode#customizing-the-class-name'
  40. );
  41. }
  42. return darkMode[1] + " &";
  43. }
  44. if (darkMode === "media") {
  45. return "@media (prefers-color-scheme: dark)";
  46. }
  47. if (darkMode !== "class") {
  48. throw new Error(
  49. "Invalid `darkMode`. Documentation: https://tailwindcss.com/docs/dark-mode"
  50. );
  51. }
  52. if (prefix) {
  53. return `[class~="${prefix}dark"] &`;
  54. }
  55. return '[class~="dark"] &';
  56. }
  57. module.exports = {
  58. darkMode: 'class',
  59. content: [
  60. './src/**/*.js',
  61. './src/**/*.cljs',
  62. './resources/**/*.html',
  63. './deps/shui/src/**/*.cljs',
  64. ],
  65. safelist: [
  66. 'bg-black', 'bg-white', 'capitalize-first',
  67. { pattern: /bg-(gray|red|yellow|green|blue|orange|indigo|rose|purple|pink)-(100|200|300|400|500|600|700|800|900)/ },
  68. { pattern: /text-(gray|red|yellow|green|blue|orange|indigo|rose|purple|pink)-(100|200|300|400|500|600|700|800|900)/ },
  69. { pattern: /columns-([1-9]|1[0-2])|(auto|3xs|2xs|xs|sm|md|lg|xl)|([2-7]xl)/ },
  70. ],
  71. plugins: [
  72. require('@tailwindcss/forms'),
  73. require('@tailwindcss/typography'),
  74. require('@tailwindcss/aspect-ratio'),
  75. require('@tailwindcss/line-clamp'),
  76. require('tailwind-capitalize-first-letter'),
  77. exposeColorsToCssVars
  78. ],
  79. theme: {
  80. extend: {
  81. backgroundImage: {
  82. 'gradient-conic': 'conic-gradient(var(--tw-gradient-stops))',
  83. 'gradient-conic-bounce': 'conic-gradient(var(--tw-gradient-from), var(--tw-gradient-via), var(--tw-gradient-to), var(--tw-gradient-via), var(--tw-gradient-from))',
  84. 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
  85. },
  86. fontSize: {
  87. '2xs': ['0.625rem', '0.875rem']
  88. },
  89. animation: {
  90. 'spin-reverse': 'spin 2s linear infinite reverse',
  91. },
  92. spacing: {
  93. '128': '32rem',
  94. '144': '36rem'
  95. },
  96. scale: {
  97. '200': '2',
  98. '250': '2.5',
  99. '300': '3',
  100. '400': '4',
  101. },
  102. width: {
  103. 'lsm': '600px',
  104. 'lmd': '728px',
  105. 'llg': '960px'
  106. }
  107. },
  108. colors: {
  109. // Tailwind colors
  110. black: colors.black,
  111. current: 'currentColor',
  112. rose: colors.rose,
  113. transparent: 'transparent',
  114. white: colors.white,
  115. // Radix colors
  116. amber: buildColor("amber"),
  117. blue: buildColor("blue"),
  118. bronze: buildColor("bronze"),
  119. brown: buildColor("brown"),
  120. crimson: buildColor("crimson"),
  121. cyan: buildColor("cyan"),
  122. gold: buildColor("gold"),
  123. grass: buildColor("grass"),
  124. green: buildColor("green"),
  125. lime: buildColor("lime"),
  126. mauve: buildColor("mauve"),
  127. mint: buildColor("mint"),
  128. olive: buildColor("olive"),
  129. orange: buildColor("orange"),
  130. pink: buildColor("pink"),
  131. plum: buildColor("plum"),
  132. purple: buildColor("purple"),
  133. red: buildColor("red"),
  134. sage: buildColor("sage"),
  135. sand: buildColor("sand"),
  136. sky: buildColor("sky"),
  137. slate: buildColor("slate"),
  138. teal: buildColor("teal"),
  139. tomato: buildColor("tomato"),
  140. violet: buildColor("violet"),
  141. // Custom colors
  142. gray: buildColor("gray", colors.neutral),
  143. yellow: buildColor("yellow", colors.amber),
  144. indigo: buildColor("indigo", {
  145. 50: '#f0f9ff',
  146. 100: '#e0f2fe',
  147. 200: '#bae6fd',
  148. 300: '#7dd3fc',
  149. 400: '#38bdf8',
  150. 500: '#0ea5e9',
  151. 600: '#0284c7',
  152. 700: '#005b8a',
  153. 800: '#075985',
  154. 900: '#0c4a6e',
  155. }),
  156. tomatodark: buildColor("tomatoDark"),
  157. reddark: buildColor("redDark"),
  158. crimsondark: buildColor("crimsonDark"),
  159. pinkdark: buildColor("pinkDark"),
  160. plumdark: buildColor("plumDark"),
  161. purpledark: buildColor("purpleDark"),
  162. violetdark: buildColor("violetDark"),
  163. skydark: buildColor("skyDark"),
  164. indigodark: buildColor("indigoDark"),
  165. bluedark: buildColor("blueDark"),
  166. cyandark: buildColor("cyanDark"),
  167. mintdark: buildColor("mintDark"),
  168. tealdark: buildColor("tealDark"),
  169. greendark: buildColor("greenDark"),
  170. limedark: buildColor("limeDark"),
  171. grassdark: buildColor("grassDark"),
  172. yellowdark: buildColor("yellowDark"),
  173. amberdark: buildColor("amberDark"),
  174. orangedark: buildColor("orangeDark"),
  175. browndark: buildColor("brownDark"),
  176. graydark: buildColor("grayDark"),
  177. mauvedark: buildColor("mauveDark"),
  178. slatedark: buildColor("slateDark"),
  179. sagedark: buildColor("sageDark"),
  180. olivedark: buildColor("oliveDark"),
  181. sanddark: buildColor("sandDark"),
  182. golddark: buildColor("goldDark"),
  183. bronzedark: buildColor("bronzeDark"),
  184. }
  185. }
  186. }