/** @type {import('tailwindcss').Config} */ module.exports = { safelist: [ // ~menu-row-sx builds bg-{colour}-{shade} dynamically via (str ...) // Levels 1–4 produce shades 400–100 (level 5+ yields 0 or negative = no match) { pattern: /^bg-sky-(100|200|300|400|500)$/ }, { pattern: /^bg-violet-(100|200|300|400|500)$/ }, // Streaming demo: ~streaming-demo-chunk builds classes dynamically via (str ...) // from a color map — Tailwind scanner can't detect these in string literals. { pattern: /^(bg|text|border)-(green|blue|amber)-(50|100|200|300|400|500|600|700|800|900)$/ }, 'w-3', 'h-3', 'w-1/3', 'w-2/3', 'w-1/2', 'w-3/4', 'animate-pulse', ], content: [ '/root/rose-ash/shared/sx/templates/**/*.sx', '/root/rose-ash/shared/browser/templates/**/*.html', '/root/rose-ash/blog/sx/**/*.sx', '/root/rose-ash/blog/browser/templates/**/*.html', '/root/rose-ash/market/sx/**/*.sx', '/root/rose-ash/market/browser/templates/**/*.html', '/root/rose-ash/cart/sx/**/*.sx', '/root/rose-ash/cart/browser/templates/**/*.html', '/root/rose-ash/events/sx/**/*.sx', '/root/rose-ash/events/browser/templates/**/*.html', '/root/rose-ash/federation/sx/**/*.sx', '/root/rose-ash/federation/browser/templates/**/*.html', '/root/rose-ash/account/sx/**/*.sx', '/root/rose-ash/account/browser/templates/**/*.html', '/root/rose-ash/orders/sx/**/*.sx', '/root/rose-ash/orders/browser/templates/**/*.html', '/root/rose-ash/shared/sx/helpers.py', '/root/rose-ash/blog/sx/sx_components.py', '/root/rose-ash/market/sx/sx_components.py', '/root/rose-ash/cart/sx/sx_components.py', '/root/rose-ash/events/sx/sx_components.py', '/root/rose-ash/federation/sx/sx_components.py', '/root/rose-ash/account/sx/sx_components.py', '/root/rose-ash/orders/sx/sx_components.py', '/root/rose-ash/sx/sx/**/*.sx', '/root/rose-ash/sx/sxc/**/*.sx', '/root/rose-ash/sx/sxc/sx_components.py', '/root/rose-ash/sx/content/highlight.py', ], theme: { extend: {}, }, plugins: [ require('@tailwindcss/typography'), ], }