Caputchin
Настройка виджета

Стилизуй виджет через CSS

Виджет рендерится в открытом shadow root и даёт тебе два способа стилизовать его со своей собственной страницы: shadow parts (нацель элемент через ::part()) и пользовательские свойства CSS (переопредели цвет через --cpt-skin-*). Для цветов и формулировок предпочитай white-label (он сделан для этого и путешествует с каждым встраиванием); тянись к CSS-поверхности здесь, когда хочешь пер-страничную правку или то, что white-label не покрывает.

Это только оболочка виджета. Игра работает в отдельном кадре-песочнице, который ты не можешь стилизовать со страницы.

Нацеливание на часть

Выбери часть на элементе через ::part(name):

caputchin-widget::part(simple-checkbox) {
  border-radius: 1rem;
}

caputchin-game::part(game-frame) {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

Несколько практических заметок:

  • Shadow root открыт, так что ::part() со твоей страницы работает в каждом современном браузере.
  • Некоторые структурные части (контейнер галочки, кадр игры) несут базовые стили раскладки, применённые инлайн на элементе. Чтобы переопределить одно из этих свойств, тебе может понадобиться !important, поскольку инлайновый стиль перебивает обычное правило ::part(). Текстовые и брендовые части стилизуются чисто без него.
  • Части это поверхность стилизации; виджет не выставляет свои внутренние имена классов, и они могут меняться. Стилизуй по части, а не копаясь в shadow-дереве.

Части на галочном виджете

Они появляются на <caputchin-widget> (и на пред-игровом оверлее <caputchin-game>, который переиспользует тот же брендовый блок).

ЧастьЧто это
simple-checkboxВнешний контейнер галочки (рамка, фон, отступы).
simple-shield-boxИндикатор-щит, показывающий состояние проверки.
simple-shield-spinnerДуга-спиннер внутри щита во время проверки.
simple-checkbox-labelТекст состояния (проверить, идёт проверка, проверено, сбой).
simple-brandБрендовый блок (логотип, имя и тег вместе).
simple-brand-homeСсылка, оборачивающая логотип и имя, указывающая на домашнюю ссылку.
simple-brand-logoИзображение логотипа бренда.
simple-brand-nameТекст словесного знака бренда.
simple-brand-tagСтрока-тег бренда, ссылка, указывающая на правовую ссылку.

Части на игровом виджете

Они появляются на <caputchin-game>, вокруг кадра игры в песочнице.

ЧастьЧто это
game-frameХром-кадр вокруг игры.
game-iframe-slotСлот, который держит iframe игры в песочнице.
game-slotКонтейнер проекции, в который рендерится игра.
game-badge-slotБрендовый значок, показываемый под игрой.
game-overlay-hostХост пред-игрового оверлея (показывается до старта игры).
game-overlay-checkboxГалочка в этом оверлее.
game-overlay-dialogДиалог оверлея, в модальной и полноэкранной раскладках.
game-overlay-closeКнопка закрытия оверлея, только в модальной и полноэкранной раскладках.

Цветовые переменные

Виджет пишет свои разрешённые цвета оболочки на хост-элемент как пользовательские свойства CSS с именами --cpt-skin-<token>, и его собственные стили их читают. Ты можешь переопределить один цвет из своей таблицы стилей, задав свойство на элементе:

caputchin-widget {
  --cpt-skin-primary: #7c3aed !important;
  --cpt-skin-surface_bg: #faf5ff !important;
}

!important имеет значение: виджет задаёт эти свойства инлайн на хосте, пока разрешает скин, а инлайновое значение перебивает обычное правило таблицы стилей, так что простое переопределение игнорируется. Это только цвета оболочки; они не доходят до игры внутри кадра.

Это пер-страничный аварийный люк. Чтобы поменять цвета на каждом встраивании, задай вместо этого скин в white-label; он использует те же имена токенов.

ПеременнаяЧто она красит
--cpt-skin-primaryОсновной цвет действия: активный щит, кольцо фокуса и состояние «проверено».
--cpt-skin-primary_hoverВариант основного цвета при наведении.
--cpt-skin-surface_bgФон виджета.
--cpt-skin-text_primaryОсновной текст.
--cpt-skin-text_labelТекст метки состояния (проверить, идёт проверка и так далее).
--cpt-skin-text_mutedВторичный текст, включая тег бренда.
--cpt-skin-text_passiveКонтур щита, пока виджет ждёт.
--cpt-skin-separatorРазделитель между частями бренда в компактной раскладке.
--cpt-skin-borderРамка виджета.
--cpt-skin-glyphГлиф галочки или предупреждения, рисуемый внутри щита.
--cpt-skin-errorЦвет состояния ошибки.
--cpt-skin-shadowПадающая тень виджета.
--cpt-skin-modal_backdropЗатемнение за игровым оверлеем в модальной раскладке.
--cpt-skin-fullscreen_backdropЗатемнение за игровым оверлеем в полноэкранной раскладке.
--cpt-skin-close_btn_bgФон кнопки закрытия полноэкранного оверлея.
--cpt-skin-brand_textЦвет текста брендовой ссылки.
--cpt-skin-brand_text_hoverЦвет брендовой ссылки при наведении.

Логотип бренда это отдельный токен скина (изображение, а не цвет), так что он меняется через white-label, а не CSS. Те же имена токенов и их светлые и тёмные умолчания в справочнике схемы.

Эти переменные --cpt-skin-* несут скин только оболочки виджета. Игра получает свой собственный скин как значения, вручённые её коду (не как переменные CSS, и ты не можешь стилизовать игру со своей страницы); смотри Настрой скин игры.

См. также

На этой странице