Corp/backend/static/scss/custom-bootstrap.scss
igor_nadein da7bf54c6c feat: Реализация полной функциональности опросов в чатах
- Исправлен PollSerializer для создания опросов с опциями
- Добавлено поле read_only_fields для корректной валидации
- Реализована отправка WebSocket уведомлений при создании опроса
- Исправлен импорт serialize_message из communications.serialization
- Добавлен обработчик poll_update в UserConsumer для WebSocket событий
- Исправлен эндпоинт /results/ для возврата user_voted_option_ids
- Добавлено поле voters в PollOptionSerializer для списка проголосовавших
- Реализована инициализация poll виджетов после рендера сообщений
- Добавлено игнорирование poll_update в notification-manager
- Исправлены стили для request list badges (height, word-break, flex)
- Восстановлены стили team-wheel (.wheel-focus, .scroll-arc) из git истории
- Реализовано отображение forwarded message info в messageRendererV2
- Множественные улучшения UI и UX для опросов

Fixes: создание опросов, голосование, отображение результатов, список проголосовавших
2026-01-22 01:33:42 +03:00

213 lines
10 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// =============================================================================
// Custom Bootstrap Configuration
// =============================================================================
// Этот файл переопределяет переменные Bootstrap ДО его компиляции
// Результат: полностью кастомизированный Bootstrap с нашей системой отступов
// =============================================================================
// 1. ИМПОРТ НАШИХ ПЕРЕМЕННЫХ
// =============================================================================
// Сначала импортируем наши CSS переменные (для справки)
// Реальные значения ниже в SCSS переменных
// =============================================================================
// 2. ПЕРЕОПРЕДЕЛЕНИЕ BOOTSTRAP ПЕРЕМЕННЫХ
// =============================================================================
// ──────────────────────────────────────────────────────────────
// 2.1 Система отступов (8px grid)
// ──────────────────────────────────────────────────────────────
// Bootstrap использует $spacer для всех utility классов (.p-*, .m-* и т.д.)
// Переопределяем его на нашу 8px сетку
$spacer: 1rem !default; // 16px - базовое значение
// Переопределение всей шкалы spacing
$spacers: (
0: 0, // 0px
1: 0.25rem, // 4px - var(--space-1)
2: 0.5rem, // 8px - var(--space-2)
3: 0.75rem, // 12px - var(--space-3)
4: 1rem, // 16px - var(--space-4)
5: 1.5rem, // 24px - var(--space-5)
) !default;
// ──────────────────────────────────────────────────────────────
// 2.2 Grid система
// ──────────────────────────────────────────────────────────────
$grid-gutter-width: 0.5rem !default; // 8px - var(--space-2)
// ──────────────────────────────────────────────────────────────
// 2.3 Компоненты - Padding
// ──────────────────────────────────────────────────────────────
// Переопределяем padding для всех Bootstrap компонентов
// Cards
$card-spacer-y: 1rem !default; // var(--space-2)
$card-spacer-x: 1rem !default; // var(--space-2)
// Alerts
$alert-padding-y: 1rem !default; // var(--space-2)
$alert-padding-x: 1rem !default; // var(--space-2)
// Buttons
$btn-padding-y: 0.5rem !default; // var(--space-1)
$btn-padding-x: 1rem !default; // var(--space-2)
$btn-padding-y-sm: 0.5rem !default; // var(--space-1)
$btn-padding-x-sm: 0.5rem !default; // var(--space-1)
$btn-padding-y-lg: 1rem !default; // var(--space-2)
$btn-padding-x-lg: 1.5rem !default; // var(--space-3)
// Form controls
$input-padding-y: 0.5rem !default; // var(--space-1)
$input-padding-x: 1rem !default; // var(--space-2)
$input-padding-y-sm: 0.5rem !default; // var(--space-1)
$input-padding-x-sm: 0.5rem !default; // var(--space-1)
$input-padding-y-lg: 1rem !default; // var(--space-2)
$input-padding-x-lg: 1.5rem !default; // var(--space-3)
// Modals
$modal-inner-padding: 1rem !default; // var(--space-2)
$modal-header-padding-y: 1rem !default; // var(--space-2)
$modal-header-padding-x: 1rem !default; // var(--space-2)
// Dropdowns
$dropdown-padding-x: 0 !default;
$dropdown-padding-y: 8px !default; // var(--space-1)
$dropdown-item-padding-y: 8px !default; // var(--space-1)
$dropdown-item-padding-x: 16px !default; // var(--space-2)
// Navs
$nav-link-padding-y: 8px !default; // var(--space-1)
$nav-link-padding-x: 16px !default; // var(--space-2)
// Navbar
$navbar-padding-y: 8px !default; // var(--space-1)
$navbar-padding-x: 16px !default; // var(--space-2)
// Pagination
$pagination-padding-y: 8px !default; // var(--space-1)
$pagination-padding-x: 16px !default; // var(--space-2)
$pagination-padding-y-sm: 8px !default; // var(--space-1)
$pagination-padding-x-sm: 8px !default; // var(--space-1)
$pagination-padding-y-lg: 16px !default; // var(--space-2)
$pagination-padding-x-lg: 24px !default; // var(--space-3)
// List groups
$list-group-item-padding-y: 1rem !default; // var(--space-2)
$list-group-item-padding-x: 1rem !default; // var(--space-2)
// Breadcrumbs
$breadcrumb-padding-y: 0.5rem !default; // var(--space-1)
$breadcrumb-padding-x: 1rem !default; // var(--space-2)
// Toasts
$toast-padding-x: 1rem !default; // var(--space-2)
$toast-padding-y: 0.5rem !default; // var(--space-1)
// Offcanvas
$offcanvas-padding-y: 1rem !default; // var(--space-2)
$offcanvas-padding-x: 1rem !default; // var(--space-2)
// Badges
$badge-padding-y: 0.5rem !default; // var(--space-1)
$badge-padding-x: 0.5rem !default; // var(--space-1)
// ──────────────────────────────────────────────────────────────
// 2.4 Cards - переопределяем стили карточек (GLASSMORPHISM)
// ──────────────────────────────────────────────────────────────
$card-border-radius: 18px !default;
$card-border-width: 1px !default;
$card-border-color: rgba(255, 255, 255, 0.1) !default; // Светлая граница для glassmorphism
$card-bg: rgba(255, 255, 255, 0.05) !default; // Полупрозрачный для эффекта стекла
$card-box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37) !default; // Глубокая тень
// Card header/footer
$card-cap-padding-y: 1rem !default;
$card-cap-padding-x: 1rem !default;
$card-cap-bg: transparent !default; // Прозрачный header/footer
$card-cap-color: null !default;
// ──────────────────────────────────────────────────────────────
// 2.5 Дополнительные настройки (опционально)
// ──────────────────────────────────────────────────────────────
// Border radius (если хотите унифицировать)
// $border-radius: 10px !default; // var(--radius-md)
// $border-radius-sm: 6px !default; // var(--radius-sm)
// $border-radius-lg: 14px !default; // var(--radius-lg)
// =============================================================================
// 3. ИМПОРТ ABSTRACTS (Design Tokens & Mixins)
// =============================================================================
// Импортируем переменные и миксины ДО Bootstrap
@import "abstracts/variables";
@import "abstracts/mixins";
// =============================================================================
// 4. ИМПОРТ BOOTSTRAP
// =============================================================================
// Импортируем Bootstrap ПОСЛЕ переопределения переменных
@import "../node_modules/bootstrap/scss/bootstrap";
// =============================================================================
// 4.5 CSS ПЕРЕМЕННЫЕ (RUNTIME)
// =============================================================================
// CSS custom properties для использования в браузере
@import "abstracts/css-variables";
// =============================================================================
// 5. КАСТОМНЫЕ КОМПОНЕНТЫ
// =============================================================================
// Layout
@import "layout/chat-layout";
// Базовые компоненты
@import "components/common";
@import "components/navbar";
@import "components/sidebar";
@import "components/page-header";
@import "components/cards";
// Badge компоненты
@import "components/badges-bem";
// Чат компоненты (в подпапке chat/)
@import "components/chat/message-inputs";
@import "components/chat/chat-detail";
@import "components/chat/chat-date-groups";
@import "components/chat/chat-list-enhanced";
// Bubble модули (BEM архитектура)
@import "components/chat/bubble-base"; // Базовые стили блока
@import "components/chat/bubble-variants"; // Модификаторы типов (me/other/system)
@import "components/chat/bubble-content"; // Вложенный контент (существующий)
@import "components/chat/bubble-attachments"; // Вложения (медиа, файлы)
@import "components/chat/bubble-polls"; // Голосования
@import "components/chat/bubble-states"; // Интерактивные состояния (hover/focus)
@import "components/chat/chat-enhanced";
@import "components/chat/chat-polls";
@import "components/chat/chat-new-messages-indicator";
@import "components/chat/message-selection";
@import "components/chat/message-context-menu";
@import "components/chat/message-reactions";
// Дополнительные компоненты
@import "components/comments";
@import "components/modals";
@import "components/request-list";
@import "components/team-wheel";
// Остальные компоненты (загружаются напрямую из CSS - не мигрировано)
// TODO: Мигрировать buttons, card-list, document-list,
// ios-search, feed-specific, base-app, request-detail