Брендирование
Как сделать виджет частью вашего магазина — от выбора цвета до собственного CSS.
Виджет работает в собственном Shadow DOM: CSS вашего сайта не может его сломать, а его CSS не задевает ваш сайт. Чтобы виджет выглядел как ваш, есть три уровня настройки, каждый дополняет предыдущий.
Уровень 1 — настройки
Задаются в личном кабинете в разделе Внешний вид, там же живой предпросмотр чата, результатов поиска и кнопки. Цвета указываются в формате #1d4ed8.
| Настройка | Значения | Пояснение |
|---|---|---|
mode | light, dark, auto | auto повторяет системную тему покупателя |
accent | цвет | Цвет вашего бренда. Им отмечены действия ИИ, главные кнопки, активные фильтры и кнопка чата. Мы его не меняем |
accentForeground | цвет или пусто | Цвет текста на акценте. Если пусто, выберем белый или почти чёрный — что лучше читается |
background, foreground | цвет или пусто | Цвет панелей и текста. Пусто — наши значения для выбранного режима. Оттенки тегов, наведения и границ рассчитываются из них |
radius | 0–32 px | Базовое скругление, остальные скругления масштабируются от него |
font.family | default, system, inherit, custom | default — наш Manrope, inherit — шрифт вашей страницы, custom — шрифт по ссылке font.url |
font.url | ссылка https:// на .woff2 | Для custom. Только https: файл по http браузер не загрузит на сайте с https. Лучше вариативный шрифт: один файл покрывает все начертания |
logoUrl | ссылка | Логотип магазина в шапке чата вместо знака ИИ: картинка по https, квадратная, от 80×80; при CSP разрешите её хост в img-src |
assistantName | текст до 40 символов | Показывается в заголовке чата |
launcher.enabled | true, false | false скрывает нашу кнопку: открывайте чат своей кнопкой через lockstock('open') |
launcher.position | right, left | В каком нижнем углу |
launcher.offsetX, launcher.offsetY | 0–200 px | Отступ от края и от низа |
launcher.style | field, pill | Вид кнопки на компьютере. field (по умолчанию) похожа на поле ввода, в котором по очереди сменяются ваши примеры запросов — их задают в личном кабинете в разделе Внешний вид, они же показываются в пустой строке поиска; пишите их так, как спрашивают покупатели («коляска для самолёта»). pill — компактная кнопка с подписью. На телефоне в обоих случаях круглая кнопка с иконкой |
launcher.label | текст до 30 символов | Название кнопки для экранного диктора, текст компактной кнопки и текст поля, если примеров нет. Пусто — «Спросить ИИ» |
customCss | CSS до 20 000 символов | См. уровень 3 |
Уровень 2 — CSS-переменные
Любую из этих переменных можно переопределить в стилях вашего сайта. !important не нужен: ваши правила важнее значений виджета.
У виджета на вашей странице три хоста: [data-lockstock-root] — подсказки, результаты, полноэкранный слой поиска и чат; [data-lockstock-launcher] — кнопка чата; lockstock-search — встроенное поле поиска. Задавайте переменные бренда сразу на всех трёх одним правилом. Подсказки и результаты под встроенным полем открываются в [data-lockstock-root], поэтому цвет, заданный только на lockstock-search, оставит их в старом цвете.
[data-lockstock-root],
[data-lockstock-launcher],
lockstock-search {
--lockstock-accent: #0f766e;
--lockstock-accent-foreground: #ffffff;
}
/* Поднять кнопку над баннером cookie */
[data-lockstock-launcher] {
--lockstock-launcher-y: 96px;
}| Переменная | Где | Что задаёт |
|---|---|---|
--lockstock-accent | все хосты | Цвет бренда; мягкие оттенки рассчитываются из него автоматически |
--lockstock-accent-foreground | все хосты | Текст и иконки на цвете бренда |
--lockstock-background | root, поле поиска | Панели и карточки |
--lockstock-foreground | root, поле поиска | Основной текст |
--lockstock-muted | root, поле поиска | Теги, наведение и второстепенные поверхности |
--lockstock-border | root, поле поиска | Границы |
--lockstock-radius | root, поле поиска | Базовое скругление в px |
--lockstock-font | root, поле поиска | Набор шрифтов |
--lockstock-launcher-x | launcher | Отступ от бокового края |
--lockstock-launcher-y | launcher | Отступ от нижнего края |
Эти имена — стабильный контракт: мы можем добавлять переменные, а о переименовании или удалении предупредим заранее.
Уровень 3 — собственный CSS
customCss применяется последним внутри Shadow DOM виджета — подсказки, результаты, полноэкранные слои, чат и каждое встроенное поле поиска, — поэтому им можно изменить там что угодно. На кнопку чата он не действует: её настраивайте уровнями 1 и 2. Ограничения: до 20 000 символов и без @import. Некорректные правила браузер просто пропустит.
Выбирайте элементы по этим атрибутам. Они — стабильный контракт, как и переменные; классы и остальная разметка — нет.
/* Квадратные карточки товаров с заметной рамкой в результатах */
[data-lockstock-results] [data-lockstock-product] {
border-radius: 0;
border-color: var(--lockstock-foreground);
}
/* Скрыть чипы, которые ИИ добавил сам */
[data-lockstock-chip="inferred"] {
display: none;
}| Атрибут | Значения | Элемент |
|---|---|---|
data-lockstock-suggest | Список подсказок | |
data-lockstock-results | fast, understanding, streaming, done | Результаты поиска: панель на компьютере, список на телефоне |
data-lockstock-summary | skeleton, streaming, done | Комментарий ИИ над результатами |
data-lockstock-chip | active, inferred, removed | Чип фильтра |
data-lockstock-step | running, done | Шаг, который ИИ выполняет, разбирая запрос |
data-lockstock-sort | Переключатель сортировки | |
data-lockstock-product | Карточка, строка или мини-карточка товара. Значение внутреннее: выбирайте по наличию атрибута | |
data-lockstock-callout | reason, tradeoff | «Почему подходит» или честный минус товара |
data-lockstock-compare-bar | Панель сравнения | |
data-lockstock-search-overlay | Полноэкранный слой поиска на компьютере | |
data-lockstock-mobile-search | Полноэкранный слой поиска на телефоне | |
data-lockstock-search-field | Наше поле поиска в полноэкранных слоях | |
data-lockstock-search-box | Содержимое <lockstock-search> | |
data-lockstock-toast | Подтверждение, например «Добавлено в корзину» | |
data-lockstock-chat | Окно чата | |
data-lockstock-welcome | Приветственный экран чата | |
data-lockstock-chat-mark | ai, logo | Плитка в шапке чата: знак ИИ или ваш логотип |
data-lockstock-message | user, assistant, operator | Сообщение в чате |
data-lockstock-chat-text | Текст ответа консультанта: абзацы, жирный (strong) и списки (ul, ol) | |
data-lockstock-steps | Что сделал консультант, над ответом | |
data-lockstock-comparison | Таблица сравнения в чате | |
data-lockstock-reservation | form, submitting, done | Форма заявки на резерв |
data-lockstock-handoff | open, taken, closed | Карточка «Передано оператору» |
data-lockstock-handoff-contact | form, submitting, done | Форма телефона для обратного звонка под карточкой оператора |
data-lockstock-operator-button | — | Кнопка «Позвать оператора» в шапке чата |
data-lockstock-composer | Поле ввода сообщения | |
data-lockstock-page-chip | Полоса «Смотрит: …» под шапкой чата на странице товара; покупатель может её убрать | |
data-lockstock-try | Кнопка «Примерить у себя» на карточке товара — в поиске и в чате | |
data-lockstock-visualize | Диалог «Примерить у себя»: согласие, фото, рамка, результат | |
data-lockstock-try-frame | Рамка на фото покупателя, отмечающая место товара | |
data-lockstock-photo-input | Поле выбора фото в этом диалоге |
Экспериментально
Атрибуты чата могут измениться до выхода консультанта.