tailwind.config.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. const radix = require('@radix-ui/colors')
  2. function mapRadixColorToTailwind(color) {
  3. const radixColor = radix[color]
  4. if (!radixColor) throw new Error(`[radix color] not exist for ${color}`)
  5. const twSteps = [10, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950]
  6. const rxSteps = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  7. const colors = {}
  8. twSteps.forEach((twStep, index) => {
  9. const rxStep = rxSteps[index]
  10. // base color
  11. colors[twStep] = radixColor[`${color}${rxStep}`]
  12. // theme vars color
  13. const rxStepName = `${(rxStep < 10) ? '0' : ''}${rxStep}`
  14. const rxVarName = `--rx-${color}-${rxStepName}`
  15. colors[`rx-${rxStepName}`] = `var(${rxVarName})`
  16. colors[`rx-${rxStepName}-alpha`] = `var(${rxVarName}-alpha)`
  17. })
  18. return colors
  19. }
  20. /** @type {import('tailwindcss').Config} */
  21. module.exports = {
  22. darkMode: ['class'],
  23. content: [
  24. './@/components/**/*.{ts,tsx}',
  25. './src/**/*.{ts,tsx}',
  26. './examples/**/*.{ts,tsx}',
  27. '../../deps/shui/src/**/*.cljs'
  28. ],
  29. safelist: [
  30. { pattern: /primary-(gray|red|yellow|green|blue|orange|indigo|rose|purple|pink)/ }
  31. ],
  32. theme: {
  33. container: {
  34. center: true,
  35. padding: '2rem',
  36. screens: {
  37. '2xl': '1400px',
  38. },
  39. },
  40. extend: {
  41. colors: {
  42. border: 'hsl(var(--border))',
  43. input: 'hsl(var(--input))',
  44. ring: 'hsl(var(--ring))',
  45. background: 'hsl(var(--background))',
  46. foreground: 'hsl(var(--foreground))',
  47. primary: {
  48. DEFAULT: 'hsl(var(--primary))',
  49. foreground: 'hsl(var(--primary-foreground))',
  50. },
  51. secondary: {
  52. DEFAULT: 'hsl(var(--secondary))',
  53. foreground: 'hsl(var(--secondary-foreground))',
  54. },
  55. destructive: {
  56. DEFAULT: 'hsl(var(--destructive))',
  57. foreground: 'hsl(var(--destructive-foreground))',
  58. },
  59. muted: {
  60. DEFAULT: 'hsl(var(--muted))',
  61. foreground: 'hsl(var(--muted-foreground))',
  62. },
  63. accent: {
  64. DEFAULT: 'var(--lx-gray-04, hsl(var(--accent)))',
  65. foreground: 'hsl(var(--accent-foreground))',
  66. },
  67. popover: {
  68. DEFAULT: 'var(--lx-gray-03, hsl(var(--popover)))',
  69. foreground: 'hsl(var(--popover-foreground))',
  70. },
  71. card: {
  72. DEFAULT: 'hsl(var(--card))',
  73. foreground: 'hsl(var(--card-foreground))',
  74. },
  75. red: mapRadixColorToTailwind('red'),
  76. pink: mapRadixColorToTailwind('pink'),
  77. orange: mapRadixColorToTailwind('orange'),
  78. yellow: mapRadixColorToTailwind('yellow'),
  79. green: mapRadixColorToTailwind('green'),
  80. blue: mapRadixColorToTailwind('blue'),
  81. indigo: mapRadixColorToTailwind('indigo'),
  82. purple: mapRadixColorToTailwind('purple'),
  83. rose: mapRadixColorToTailwind('red'),
  84. amber: mapRadixColorToTailwind('amber'),
  85. bronze: mapRadixColorToTailwind('bronze'),
  86. brown: mapRadixColorToTailwind('brown'),
  87. crimson: mapRadixColorToTailwind('crimson'),
  88. cyan: mapRadixColorToTailwind('cyan'),
  89. gold: mapRadixColorToTailwind('gold'),
  90. grass: mapRadixColorToTailwind('grass'),
  91. lime: mapRadixColorToTailwind('lime'),
  92. mauve: mapRadixColorToTailwind('mauve'),
  93. mint: mapRadixColorToTailwind('mint'),
  94. olive: mapRadixColorToTailwind('olive'),
  95. plum: mapRadixColorToTailwind('plum'),
  96. sage: mapRadixColorToTailwind('sage'),
  97. sand: mapRadixColorToTailwind('sand'),
  98. sky: mapRadixColorToTailwind('sky'),
  99. slate: mapRadixColorToTailwind('slate'),
  100. teal: mapRadixColorToTailwind('teal'),
  101. tomato: mapRadixColorToTailwind('tomato'),
  102. violet: mapRadixColorToTailwind('violet')
  103. },
  104. borderRadius: {
  105. lg: 'var(--radius)',
  106. md: 'calc(var(--radius) - 2px)',
  107. sm: 'calc(var(--radius) - 4px)',
  108. },
  109. keyframes: {
  110. 'accordion-down': {
  111. from: { height: 0 },
  112. to: { height: 'var(--radix-accordion-content-height)' },
  113. },
  114. 'accordion-up': {
  115. from: { height: 'var(--radix-accordion-content-height)' },
  116. to: { height: 0 },
  117. },
  118. },
  119. animation: {
  120. 'accordion-down': 'accordion-down 0.2s ease-out',
  121. 'accordion-up': 'accordion-up 0.2s ease-out',
  122. }
  123. },
  124. },
  125. plugins: [require('tailwindcss-animate')],
  126. corePlugins: {
  127. preflight: true,
  128. }
  129. }