DI2: мост тем/скинов iistwin — Di2ThemeProvider, общий generated-skins.css, токены в формате основного клиента
- vite.config.di2.ts + client-di2/tsconfig.json: алиас @skin → client/src/themes (tokens, skins, generated-skins.css — единый источник токенов) - client-di2/src/themes/Di2ThemeProvider.tsx: порт логики ThemeProvider основного клиента (localStorage['skin'] → скин организации → 'iistwin'; runtime CSS кастомных скинов через generateSkinCss; data-skin/data-theme/class light|dark на <html>; контекст с toggleTheme). Ключи 'skin'/'theme' общие с iistwin — выбор синхронизируется между приложениями - main.tsx: обёртка <Di2ThemeProvider> вокруг App - tailwind.config.ts DI2: цвета hsl(var(--x) / <alpha-value>) → var(--x), радиусы → var(--radius) с каскадом calc, добавлены warning/success/info - client-di2/src/index.css: собственные HSL-тройки заменены fallback-блоками основного клиента (до гидратации), первой строкой @import общего generated-skins.css; DI2-only переменные (--card-border, --popover-border, *-border, --button-outline, --badge-outline) переопределены через color-mix от семантических токенов; удалены --opaque-button-border-intensity и hsl(from ...) relative-color вычисления; жёсткие --font-sans: Open Sans убраны (шрифты эмитит generateSkinCss из токенов скина) - client-di2/index.html: lang=ru, viewport без maximum-scale + interactive-widget=resizes-content, мега-link Google Fonts (23 семейства) заменён на Inter + DM Mono как в основном клиенте - Alpha-модификаторы семантических цветов (166 мест: bg-muted/50, border-primary/30 и т.п.) заменены на arbitrary values color-mix(in oklab, var(--x) NN%, transparent) — Tailwind v3 молча не генерирует /NN для var()-цветов; палитровые цвета (green-500/10 и т.п.) не тронуты
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
import type { Config } from "tailwindcss";
|
||||
|
||||
// Конфиг Tailwind субаппа DI2.
|
||||
// Цвета переведены на формат основного клиента iistwin: CSS-переменные содержат
|
||||
// полные значения из скинов (hsl(...)), поэтому <alpha-value> НЕ используется.
|
||||
// Модификаторы прозрачности семантических цветов (bg-muted/50 и т.п.) заменены
|
||||
// в исходниках на arbitrary values с color-mix — Tailwind v3 не умеет применять
|
||||
// alpha-модификаторы к var()-цветам и молча не генерирует такие классы.
|
||||
|
||||
export default {
|
||||
darkMode: ["class"],
|
||||
// Глобы относительно cwd сборки (корень репозитория) — npm-скрипты всегда запускаются оттуда
|
||||
@@ -7,74 +14,86 @@ export default {
|
||||
theme: {
|
||||
extend: {
|
||||
borderRadius: {
|
||||
lg: ".5625rem", /* 9px */
|
||||
md: ".375rem", /* 6px */
|
||||
sm: ".1875rem", /* 3px */
|
||||
lg: "var(--radius)",
|
||||
md: "calc(var(--radius) - 2px)",
|
||||
sm: "calc(var(--radius) - 4px)",
|
||||
},
|
||||
colors: {
|
||||
// Flat / base colors (regular buttons)
|
||||
background: "hsl(var(--background) / <alpha-value>)",
|
||||
foreground: "hsl(var(--foreground) / <alpha-value>)",
|
||||
border: "hsl(var(--border) / <alpha-value>)",
|
||||
input: "hsl(var(--input) / <alpha-value>)",
|
||||
background: "var(--background)",
|
||||
foreground: "var(--foreground)",
|
||||
border: "var(--border)",
|
||||
input: "var(--input)",
|
||||
ring: "var(--ring)",
|
||||
card: {
|
||||
DEFAULT: "hsl(var(--card) / <alpha-value>)",
|
||||
foreground: "hsl(var(--card-foreground) / <alpha-value>)",
|
||||
border: "hsl(var(--card-border) / <alpha-value>)",
|
||||
DEFAULT: "var(--card)",
|
||||
foreground: "var(--card-foreground)",
|
||||
border: "var(--card-border)",
|
||||
},
|
||||
popover: {
|
||||
DEFAULT: "hsl(var(--popover) / <alpha-value>)",
|
||||
foreground: "hsl(var(--popover-foreground) / <alpha-value>)",
|
||||
border: "hsl(var(--popover-border) / <alpha-value>)",
|
||||
DEFAULT: "var(--popover)",
|
||||
foreground: "var(--popover-foreground)",
|
||||
border: "var(--popover-border)",
|
||||
},
|
||||
primary: {
|
||||
DEFAULT: "hsl(var(--primary) / <alpha-value>)",
|
||||
foreground: "hsl(var(--primary-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--primary)",
|
||||
foreground: "var(--primary-foreground)",
|
||||
border: "var(--primary-border)",
|
||||
},
|
||||
secondary: {
|
||||
DEFAULT: "hsl(var(--secondary) / <alpha-value>)",
|
||||
foreground: "hsl(var(--secondary-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--secondary)",
|
||||
foreground: "var(--secondary-foreground)",
|
||||
border: "var(--secondary-border)",
|
||||
},
|
||||
muted: {
|
||||
DEFAULT: "hsl(var(--muted) / <alpha-value>)",
|
||||
foreground: "hsl(var(--muted-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--muted)",
|
||||
foreground: "var(--muted-foreground)",
|
||||
border: "var(--muted-border)",
|
||||
},
|
||||
accent: {
|
||||
DEFAULT: "hsl(var(--accent) / <alpha-value>)",
|
||||
foreground: "hsl(var(--accent-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--accent)",
|
||||
foreground: "var(--accent-foreground)",
|
||||
border: "var(--accent-border)",
|
||||
},
|
||||
destructive: {
|
||||
DEFAULT: "hsl(var(--destructive) / <alpha-value>)",
|
||||
foreground: "hsl(var(--destructive-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--destructive)",
|
||||
foreground: "var(--destructive-foreground)",
|
||||
border: "var(--destructive-border)",
|
||||
},
|
||||
ring: "hsl(var(--ring) / <alpha-value>)",
|
||||
warning: {
|
||||
DEFAULT: "var(--warning)",
|
||||
foreground: "var(--warning-foreground)",
|
||||
},
|
||||
success: {
|
||||
DEFAULT: "var(--success)",
|
||||
foreground: "var(--success-foreground)",
|
||||
},
|
||||
info: {
|
||||
DEFAULT: "var(--info)",
|
||||
foreground: "var(--info-foreground)",
|
||||
},
|
||||
chart: {
|
||||
"1": "hsl(var(--chart-1) / <alpha-value>)",
|
||||
"2": "hsl(var(--chart-2) / <alpha-value>)",
|
||||
"3": "hsl(var(--chart-3) / <alpha-value>)",
|
||||
"4": "hsl(var(--chart-4) / <alpha-value>)",
|
||||
"5": "hsl(var(--chart-5) / <alpha-value>)",
|
||||
"1": "var(--chart-1)",
|
||||
"2": "var(--chart-2)",
|
||||
"3": "var(--chart-3)",
|
||||
"4": "var(--chart-4)",
|
||||
"5": "var(--chart-5)",
|
||||
},
|
||||
sidebar: {
|
||||
ring: "hsl(var(--sidebar-ring) / <alpha-value>)",
|
||||
DEFAULT: "hsl(var(--sidebar) / <alpha-value>)",
|
||||
foreground: "hsl(var(--sidebar-foreground) / <alpha-value>)",
|
||||
border: "hsl(var(--sidebar-border) / <alpha-value>)",
|
||||
ring: "var(--sidebar-ring)",
|
||||
DEFAULT: "var(--sidebar)",
|
||||
foreground: "var(--sidebar-foreground)",
|
||||
border: "var(--sidebar-border)",
|
||||
},
|
||||
"sidebar-primary": {
|
||||
DEFAULT: "hsl(var(--sidebar-primary) / <alpha-value>)",
|
||||
foreground: "hsl(var(--sidebar-primary-foreground) / <alpha-value>)",
|
||||
DEFAULT: "var(--sidebar-primary)",
|
||||
foreground: "var(--sidebar-primary-foreground)",
|
||||
border: "var(--sidebar-primary-border)",
|
||||
},
|
||||
"sidebar-accent": {
|
||||
DEFAULT: "hsl(var(--sidebar-accent) / <alpha-value>)",
|
||||
foreground: "hsl(var(--sidebar-accent-foreground) / <alpha-value>)",
|
||||
border: "var(--sidebar-accent-border)"
|
||||
DEFAULT: "var(--sidebar-accent)",
|
||||
foreground: "var(--sidebar-accent-foreground)",
|
||||
border: "var(--sidebar-accent-border)",
|
||||
},
|
||||
status: {
|
||||
online: "rgb(34 197 94)",
|
||||
|
||||
Reference in New Issue
Block a user