fix: Resolve shared component styling and Vite module deduplication

- Add dedupe option for vue, vue-router, pinia, primevue in both Vite configs
  to prevent duplicate module issues when using shared components
- Add optimizeDeps and commonjsOptions for better shared module handling
- Fix CompanySelector and PeriodSelector header variants to support both
  light headers (using CSS variables) and gradient headers (white text)
- Make hamburger button always display:flex for consistent mobile layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-19 12:35:14 +02:00
parent 3295f60faa
commit ee239eb3f3
5 changed files with 70 additions and 18 deletions

View File

@@ -10,7 +10,8 @@ export default defineConfig({
alias: { alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)), '@': fileURLToPath(new URL('./src', import.meta.url)),
'@shared': fileURLToPath(new URL('../../shared', import.meta.url)) '@shared': fileURLToPath(new URL('../../shared', import.meta.url))
} },
dedupe: ['vue', 'vue-router', 'pinia', 'primevue']
}, },
server: { server: {
port: 3010, port: 3010,

View File

@@ -41,7 +41,7 @@
/* Hamburger Menu */ /* Hamburger Menu */
.hamburger-btn { .hamburger-btn {
display: none; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
width: 24px; width: 24px;
@@ -254,10 +254,6 @@
/* Mobile Navigation */ /* Mobile Navigation */
@media (max-width: 768px) { @media (max-width: 768px) {
.hamburger-btn {
display: flex;
}
.header-actions { .header-actions {
gap: var(--space-sm); gap: var(--space-sm);
} }

View File

@@ -20,7 +20,8 @@ export default defineConfig({
alias: { alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)), '@': fileURLToPath(new URL('./src', import.meta.url)),
'@shared': fileURLToPath(new URL('../../shared', import.meta.url)) '@shared': fileURLToPath(new URL('../../shared', import.meta.url))
} },
dedupe: ['vue', 'vue-router', 'pinia', 'primevue']
}, },
server: { server: {
port: 3000, port: 3000,
@@ -52,9 +53,15 @@ export default defineConfig({
} }
} }
}, },
optimizeDeps: {
include: ['vue', 'vue-router', 'pinia']
},
build: { build: {
outDir: 'dist', outDir: 'dist',
sourcemap: true, sourcemap: true,
commonjsOptions: {
include: [/node_modules/, /shared/]
},
// Cache busting - generează hash-uri noi la fiecare build // Cache busting - generează hash-uri noi la fiecare build
assetsInlineLimit: 0, // Nu inline asset-uri mici, folosește fișiere separate cu hash assetsInlineLimit: 0, // Nu inline asset-uri mici, folosește fișiere separate cu hash
rollupOptions: { rollupOptions: {

View File

@@ -528,26 +528,48 @@ export default {
} }
} }
/* Header variant - transparent background, white text for dark headers */ /* Header variant - transparent background for header integration */
.company-selector--header .company-trigger { .company-selector--header .company-trigger {
background: transparent; background: transparent;
border-color: rgba(255, 255, 255, 0.3); border-color: var(--color-border, rgba(0, 0, 0, 0.2));
} }
.company-selector--header .company-trigger:hover { .company-selector--header .company-trigger:hover {
background: var(--color-bg-secondary, rgba(0, 0, 0, 0.05));
border-color: var(--color-primary, #2563eb);
}
.company-selector--header .company-name {
color: var(--color-text, #111827);
}
.company-selector--header .company-code {
color: var(--color-text-secondary, #6b7280);
}
.company-selector--header .pi-chevron-down {
color: var(--color-text-secondary, #6b7280);
}
/* Gradient header variant - white text for dark/gradient headers */
.header-container--gradient .company-selector--header .company-trigger {
border-color: rgba(255, 255, 255, 0.3);
}
.header-container--gradient .company-selector--header .company-trigger:hover {
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.5); border-color: rgba(255, 255, 255, 0.5);
} }
.company-selector--header .company-name { .header-container--gradient .company-selector--header .company-name {
color: white; color: white;
} }
.company-selector--header .company-code { .header-container--gradient .company-selector--header .company-code {
color: rgba(255, 255, 255, 0.8); color: rgba(255, 255, 255, 0.8);
} }
.company-selector--header .pi-chevron-down { .header-container--gradient .company-selector--header .pi-chevron-down {
color: rgba(255, 255, 255, 0.8); color: rgba(255, 255, 255, 0.8);
} }

View File

@@ -410,30 +410,56 @@ export default {
} }
} }
/* Header variant - transparent background, white text for dark headers */ /* Header variant - transparent background for header integration */
.period-selector--header .period-trigger { .period-selector--header .period-trigger {
background: transparent; background: transparent;
border-color: rgba(255, 255, 255, 0.3); border-color: var(--color-border, rgba(0, 0, 0, 0.2));
} }
.period-selector--header .period-trigger:hover:not(:disabled) { .period-selector--header .period-trigger:hover:not(:disabled) {
background: var(--color-bg-secondary, rgba(0, 0, 0, 0.05));
border-color: var(--color-primary, #2563eb);
}
.period-selector--header .period-trigger:disabled {
border-color: var(--color-border, rgba(0, 0, 0, 0.1));
}
.period-selector--header .period-label {
color: var(--color-text-secondary, #6b7280);
}
.period-selector--header .period-name {
color: var(--color-text, #111827);
}
.period-selector--header .pi-chevron-down {
color: var(--color-text-secondary, #6b7280);
}
/* Gradient header variant - white text for dark/gradient headers */
.header-container--gradient .period-selector--header .period-trigger {
border-color: rgba(255, 255, 255, 0.3);
}
.header-container--gradient .period-selector--header .period-trigger:hover:not(:disabled) {
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
border-color: rgba(255, 255, 255, 0.5); border-color: rgba(255, 255, 255, 0.5);
} }
.period-selector--header .period-trigger:disabled { .header-container--gradient .period-selector--header .period-trigger:disabled {
border-color: rgba(255, 255, 255, 0.15); border-color: rgba(255, 255, 255, 0.15);
} }
.period-selector--header .period-label { .header-container--gradient .period-selector--header .period-label {
color: rgba(255, 255, 255, 0.7); color: rgba(255, 255, 255, 0.7);
} }
.period-selector--header .period-name { .header-container--gradient .period-selector--header .period-name {
color: white; color: white;
} }
.period-selector--header .pi-chevron-down { .header-container--gradient .period-selector--header .pi-chevron-down {
color: rgba(255, 255, 255, 0.8); color: rgba(255, 255, 255, 0.8);
} }