Livre l'infrastructure permettant aux modules metier de declarer leurs entites comme "scopees par site" via SiteAwareInterface. Strictement opt-in : aucune entite metier touchee, aucune migration sur tables existantes. Composants : - SiteAwareInterface (Shared/Domain/Contract) : getSite/setSite - CurrentSiteProvider + interface (Module/Sites/Application) : resolve ?Site selon 3 conditions (module actif, user authentifie, currentSite). Interface extraite pour mockabilite en tests (implementation reste final). - SiteScopedQueryExtension : QueryCollection + QueryItem API Platform, ajoute WHERE site = :currentSite si resource SiteAware + provider non-null + pas sites.bypass_scope. - SiteAwareInjectionProcessor : decorator de api_platform.doctrine.orm. state.persist_processor (#[AsDecorator]). Injecte currentSite sur entites SiteAware sans site ; throw 400 si provider null. - Permission sites.bypass_scope declaree dans SitesModule::permissions(). Tests : - FakeSiteAwareEntity dans tests/Fixtures/ + mapping when@test dans doctrine.yaml. Table creee a la volee via SchemaTool dans setUp. schema:update --force ajoute dans test-db-setup pour que fixtures:load ne crashe pas au purger. - 17 tests dedies au ticket 4 (CurrentSiteProvider unitaire, Injection Processor unitaire, Extension integration avec 7 cas couvrant filtrage collection + item, bypass, no-op, resource non SiteAware). - SitesModuleTest : verifie le set de 3 permissions + que le decorator est bien enregistre sur le persist processor. Documentation docs/modules/site-aware.md : guide developpeur 8 sections (quand/ne pas adopter, comment, migration, mode degrade, anti-patterns, exemple d'adoption Supplier, cascade delete). Upgrade @malio/layer-ui 1.4.0 → 1.4.2 (bug 1.4.0 : tailwind.config.ts oublie dans les files publies npm → classe rounded-malio manquante sur les DataTables). Simplification tailwind.config.ts Coltura : retrait des colors/fontFamily/borderRadius dupliques, seule la specifique projet (primary, secondary, tertiary, m.secondary, m.tertiary) est conservee. Tests : 201/201 avec et sans SitesModule actif (2 skipped en disabled). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
import type {Config} from 'tailwindcss'
|
|
|
|
/**
|
|
* Config Tailwind du projet Coltura.
|
|
*
|
|
* @nuxtjs/tailwindcss merge automatiquement les configs de chaque layer
|
|
* Nuxt declare dans `nuxt.config.ts:extends`. Le layer `@malio/layer-ui`
|
|
* apporte deja :
|
|
* - borderRadius.malio (var CSS --m-radius)
|
|
* - colors.m.{primary,surface,border,text,muted,bg,disabled,danger,
|
|
* success,btn-*,site-blue,site-yellow,site-green}
|
|
* - fontFamily.sans (Helvetica Neue)
|
|
*
|
|
* Cette config locale ne redeclare QUE ce qui est specifique a Coltura
|
|
* ou absent de la config Malio — evite la duplication et les derives.
|
|
*/
|
|
export default <Partial<Config>>{
|
|
darkMode: 'class',
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
// Couleurs applicatives Coltura (hors namespace `m` reserve
|
|
// au design system Malio partage).
|
|
primary: {
|
|
500: '#222783',
|
|
},
|
|
secondary: {
|
|
500: '#304998'
|
|
},
|
|
tertiary: {
|
|
500: '#F3F4F8'
|
|
},
|
|
blue: {
|
|
500: '#056CF2'
|
|
},
|
|
// Extensions au namespace `m` non couvertes par Malio 1.4.1.
|
|
m: {
|
|
secondary: 'rgb(var(--m-secondary, 75 77 237) / <alpha-value>)',
|
|
tertiary: 'rgb(var(--m-tertiary, 243 244 248) / <alpha-value>)',
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|