Files
Goa-gel-fullstack/frontend/tailwind.config.js
Mahi d9de183e51 feat: Runtime configuration and Docker deployment improvements
Frontend:
- Add runtime configuration service for deployment-time API URL injection
- Create docker-entrypoint.sh to generate config.json from environment variables
- Update ApiService, ApprovalService, and DocumentViewer to use RuntimeConfigService
- Add APP_INITIALIZER to load runtime config before app starts

Backend:
- Fix init-blockchain.js to properly quote mnemonic phrases in .env file
- Improve docker-entrypoint.sh with health checks and better error handling

Docker:
- Add API_BASE_URL environment variable to frontend container
- Update docker-compose.yml with clear documentation for remote deployment
- Reorganize .env.example with clear categories (REQUIRED FOR REMOTE, PRODUCTION, AUTO-GENERATED)

Workflow fixes:
- Fix DepartmentApproval interface to match backend schema
- Fix stage transformation for 0-indexed stageOrder
- Fix workflow list to show correct stage count from definition.stages

Cleanup:
- Move development artifacts to .trash directory
- Remove root-level package.json (was only for utility scripts)
- Add .trash/ to .gitignore
2026-02-08 18:45:01 -04:00

116 lines
4.5 KiB
JavaScript

/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./src/**/*.{html,ts}",
],
theme: {
extend: {
colors: {
// DBIM Primary Colour Group - India Government Official Colours
'dbim': {
// Official India Government Blue (DBIM Primary)
'govt-blue': '#0066B3', // Official India Government Blue
'govt-blue-dark': '#004B8D', // Darker variant for hover
'govt-blue-light': '#1A7FC1', // Lighter variant
// Blue colour group variants (State customization)
'blue-dark': '#1D0A69', // Key colour - footer, primary headers, sidebar
'blue-mid': '#2563EB', // Primary buttons, active states
'blue-light': '#3B82F6', // Hover states, links
'blue-lighter': '#60A5FA', // Card accents
'blue-subtle': '#DBEAFE', // Subtle backgrounds
// Functional palette (DBIM mandatory)
'white': '#FFFFFF', // Inclusive White - page backgrounds
'linen': '#EBEAEA', // Background secondary - cards, quotes
'brown': '#150202', // Deep Earthy Brown - text on light bg
'black': '#000000', // State Emblem on light bg
'deep-blue': '#1D0A69', // Gov.In identity colour
// Status colours (DBIM fixed)
'success': '#198754', // Liberty Green - approved, confirmed
'warning': '#FFC107', // Mustard Yellow - pending, in-review
'error': '#DC3545', // Coral Red - rejected, failed
'info': '#0D6EFD', // Blue - information, hyperlinks
// Grey palette (DBIM compliant)
'grey-1': '#C6C6C6',
'grey-2': '#8E8E8E',
'grey-3': '#606060',
},
// Blockchain/Crypto accent colours (within DBIM compliance)
'crypto': {
'purple': '#8B5CF6',
'indigo': '#6366F1',
'cyan': '#06B6D4',
'emerald': '#10B981',
}
},
fontFamily: {
'sans': ['Noto Sans', 'sans-serif'], // DBIM mandatory font
},
fontSize: {
// Desktop scale (DBIM)
'h1': ['36px', { lineHeight: '1.2', fontWeight: '700' }],
'h2': ['24px', { lineHeight: '1.3', fontWeight: '600' }],
'h3': ['20px', { lineHeight: '1.4', fontWeight: '600' }],
'p1': ['16px', { lineHeight: '1.5', fontWeight: '400' }],
'p2': ['14px', { lineHeight: '1.5', fontWeight: '400' }],
'small': ['12px', { lineHeight: '1.4', fontWeight: '400' }],
},
boxShadow: {
'card': '0 2px 8px rgba(29, 10, 105, 0.08)',
'card-hover': '0 4px 16px rgba(29, 10, 105, 0.12)',
'elevated': '0 8px 32px rgba(29, 10, 105, 0.16)',
'glow': '0 0 20px rgba(99, 102, 241, 0.3)',
'glow-success': '0 0 20px rgba(25, 135, 84, 0.3)',
},
backgroundImage: {
'gradient-dbim': 'linear-gradient(135deg, #1D0A69 0%, #2563EB 100%)',
'gradient-blue': 'linear-gradient(135deg, #2563EB 0%, #3B82F6 100%)',
'gradient-crypto': 'linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%)',
'mesh-pattern': 'radial-gradient(circle at 25% 25%, rgba(99, 102, 241, 0.1) 0%, transparent 50%), radial-gradient(circle at 75% 75%, rgba(139, 92, 246, 0.1) 0%, transparent 50%)',
},
animation: {
'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
'glow': 'glow 2s ease-in-out infinite alternate',
'slide-up': 'slideUp 0.3s ease-out',
'slide-down': 'slideDown 0.3s ease-out',
'fade-in': 'fadeIn 0.3s ease-out',
'counter': 'counter 1.5s ease-out forwards',
},
keyframes: {
glow: {
'0%': { boxShadow: '0 0 5px rgba(99, 102, 241, 0.3)' },
'100%': { boxShadow: '0 0 20px rgba(99, 102, 241, 0.6)' },
},
slideUp: {
'0%': { transform: 'translateY(10px)', opacity: '0' },
'100%': { transform: 'translateY(0)', opacity: '1' },
},
slideDown: {
'0%': { transform: 'translateY(-10px)', opacity: '0' },
'100%': { transform: 'translateY(0)', opacity: '1' },
},
fadeIn: {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
counter: {
'0%': { opacity: '0', transform: 'translateY(10px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
},
borderRadius: {
'xl': '12px',
'2xl': '16px',
'3xl': '24px',
},
},
},
plugins: [
require('@tailwindcss/forms'),
],
}