HEX
Server: nginx/1.28.3
System: Linux lightweb-s1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User: dawonefr-98 (1071)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/dnlightw-124/dn.lightweb.kr/tailwind.config.js
import defaultTheme from 'tailwindcss/defaultTheme';
const colors = require('tailwindcss/colors')
import fs from 'fs';
import path from 'path';

// Base Tailwind configuration
const baseConfig = {
    content: [
        './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
        './vendor/laravel/jetstream/**/*.blade.php',
        './storage/framework/views/*.php',
        './resources/views/**/*.blade.php',
        './app/Settings/resources/views/**/*.blade.php',
        './vendor/orchid/platform/resources/views/**/**/*.blade.php',
        './app/Settings/resources/js/**/**/*.vue',
        './themes/**/views/**/*.blade.php',
        './themes/**/**/*.vue',
    ],
    theme: {
        extend: {
            fontFamily: {
                sans: ['Pretendard', ...defaultTheme.fontFamily.sans],
            },
            colors: {
                ...colors
            },
        },
    },
    plugins: [
        require('@tailwindcss/forms'),
        require('@tailwindcss/typography'),
    ],
};

// Function to recursively search for "tailwind.config.js" files inside "themes" directory
function findTailwindConfigs(dir) {
    const results = [];
    const items = fs.readdirSync(dir);

    for (const item of items) {
        const fullPath = path.join(dir, item);
        const stat = fs.statSync(fullPath);

        if (stat.isDirectory()) {
            results.push(...findTailwindConfigs(fullPath));
        } else if (item === 'tailwind.config.js') {
            results.push(fullPath);
        }
    }

    return results;
}

// Function to merge configurations
function mergeTailwindConfigs(baseConfig, customConfigPath) {
    const customConfig = require(customConfigPath); // Import the custom tailwind.config.js
    return {
        ...baseConfig,
        theme: {
            ...baseConfig.theme,
            ...customConfig.theme,
            container: {
                ...baseConfig.theme?.container,
                ...customConfig.theme?.container,
            },
            fontFamily: {
                ...baseConfig.theme.fontFamily,
                ...customConfig.theme?.fontFamily,
            },
            extend: {
                ...baseConfig.theme.extend,
                colors: {
                    ...baseConfig.theme.extend.colors,
                    ...(customConfig.theme?.extend?.colors || {}),
                },
            },
        },
        plugins: [
            ...(baseConfig.plugins || []),
            ...(customConfig.plugins || []),
        ],
        content: baseConfig.content.concat(customConfig.content || []),
    };
}

// Directory to search for configuration files
const themesDir = path.resolve(__dirname, 'themes');

// Find all tailwind.config.js files in themes directory
const foundConfigs = findTailwindConfigs(themesDir);

// Merge base config with each found tailwind.config.js
let finalConfig = {...baseConfig};
for (const configPath of foundConfigs) {
    finalConfig = mergeTailwindConfigs(finalConfig, configPath);
}

export default finalConfig;