Темы: выберите готовое оформление или добавьте свое.
Тема представляет собой один небольшой файл JSON. Он задает цвета, шрифт, форму, оформление и палитру терминала. ColliePWA поставляется с четырьмя темами, и вы можете импортировать дополнительные темы из файла на телефоне.
01/Что это такое
Тема представляет собой файл стилей оформления.
Тема задает цвета приложения, отдельно для светлой половины и для темной половины. Она также может задавать шрифт интерфейса, шрифт для заголовков, форму, оформление и цвета зеркала терминала. Форма и оформление задаются десятью словами, такими как radius, shadow и density. Макет, размеры областей нажатия и значения статусов остаются прежними, поэтому статус blocked остается blocked в любой теме.
Каждое значение в файле является фиксированным словом или проверенным цветом. Файл не может выполнять код и не может загружать файл, шрифт или изображение.
Тема и Оформление представляют собой две разные настройки. Тема указывает, какие цвета использовать. Оформление указывает, какую половину показывать: Системная, Светлая или Темная.
02/Выбор
Выберите тему в разделе Настройки.
Откройте Настройки, затем Оформление и нажмите на тему. Она применяется мгновенно, без перезагрузки, и при следующем открытии ColliePWA первый кадр сразу отобразится в этой теме. Одно нажатие на Collie возвращает оформление по умолчанию.
Тема, в которой указан шрифт, задает ваш шрифт интерфейса один раз. Вы можете изменить его позже в карточке Шрифт интерфейса.
Collie
Шрифт интерфейса: Aldrich
Знакомое оформление: нейтральные серые тона и шрифт Aldrich.
Nightwatch
Шрифт интерфейса: IBM Plex Sans
flat · bold · strong · band · heavy
Для дежурного телефона ночью. Настоящая черная темная половина, плоская и угловатая, с плотными линиями, приглушенным янтарным акцентом и приглушенной янтарной полосой за заголовком и панелями.
Палитра терминала
Daylight
Шрифт интерфейса: Geist
Заголовки: Atkinson Hyperlegible Next
round · lifted · roomy · gradient · cards · sentence
Для яркого солнца и слабого зрения. Основной текст с контрастностью AAA, скругленные просторные карточки, страница со смещением книзу и цвета статусов от синего к оранжевому вместо красного и зеленого.
Палитра терминала
Harbour
Шрифт интерфейса: Atkinson Hyperlegible Next
Заголовки: Space Grotesk
soft · lifted · grain · thin
Для тех, кто привык к терминалу. Холодный серо-синий с одним бирюзовым акцентом, мягкие углы, мелкая зернистость, тонкие иконки и терминальная палитра на основе Solarized на почти черном синем фоне.
Палитра терминала
03/Импорт
Импортируйте тему из файла.
- 1Сохраните файл темы на телефоне. Он имеет расширение
.jsonи размер меньше 64 KiB. - 2В Настройках откройте карточку Тема в разделе Оформление, нажмите Импорт и выберите файл.
- 3Проверьте предпросмотр. Он показывает цвета обеих половин, форму, цвета терминала и отчет о контрастности. При слабой контрастности появляется предупреждение, но тему все равно можно применить. Файл с нарушениями правил отклоняется, и ничего не меняется.
Тема меняет только внешний вид приложения. Она не может выполнять код, загружать файлы или обращаться к серверу.
Устройство сохраняет до восьми импортированных тем. Импорт по ссылке отсутствует, и темы не синхронизируются между устройствами.
04/Создание
Создайте свою тему.
Самый быстрый способ начать работу: взять встроенную тему. Экспортируйте ее, измените id и name, отредактируйте цвета, слова формы или палитру терминала и импортируйте файл снова. Импортированная тема не может использовать id встроенной темы.
Это сокращенный harbour.json, файл version 2. Строки ... обозначают пропущенные части.
{
"version": 2,
"id": "harbour",
"name": "Harbour",
"author": "Collie",
"light": {
"background": "oklch(0.95 0.01 235)",
"foreground": "oklch(0.26 0.025 250)",
"card": "oklch(0.985 0.004 235)",
"...": "..."
},
"dark": {
"background": "oklch(0.21 0.018 250)",
"foreground": "oklch(0.93 0.012 240)",
"card": "oklch(0.255 0.02 252)",
"...": "..."
},
"fonts": { "ui": "atkinson", "display": "grotesk" },
"surface": {
"radius": "soft",
"shadow": "lifted",
"density": "default",
"weight": "default",
"border": "default",
"ground": "grain",
"chrome": "page",
"rows": "rules",
"icons": "thin",
"labels": "caps"
},
"ansi": {
"0": "#073642",
"1": "#f0504a",
"2": "#859900",
"...": "..."
}
}43 токена
Файл темы может содержать только эти токены, разделенные на четыре группы. Файл с любым другим ключом отклоняется.
| Группа | Что окрашивает | Токены |
|---|---|---|
| Поверхности и цвета текста21 | Страница, карточки, элементы интерфейса, текст, кнопки, границы и кольцо фокуса. |
|
| Статус6 | Состояния агента и цвет информации. |
|
| Синтаксис6 | Цвета текста в diff и коде. |
|
| Идентификация хоста10 | Цвета для различения ваших машин. |
|
Форма и оформление
Блок surface содержит десять слов. Каждое выбирается из закрытого списка, а пропущенный токен сохраняет значение по умолчанию, первое слово своего списка. Произвольные числа не принимаются, поэтому тема не может нарушить размер области нажатия.
radius- Угол карточки, строки, поля и кнопки.
sharpsoftround
shadow- Тень под приподнятыми панелями.
defaultflatlifted
density- Объем пространства внутри элементов управления и между ними.
defaultroomy
weight- Насколько насыщенно отображается текст medium и semibold.
defaultbold
border- Толщина тонкой линии.
defaultstrong
ground- Фон под всеми элементами: сплошной цвет, мягкий градиент или мелкая зернистость.
flatgradientgrain
chrome- Заголовок и панели: на цвете страницы или на отдельной полосе.
pageband
rows- Список в виде одной группы в рамке с разделителями или в виде карточки для каждой строки.
rulescards
icons- Толщина линий всех иконок.
defaultthinheavy
labels- Мелкие подписи разделов: прописными буквами или как в предложении.
capssentence
Палитра терминала
Блок ansi содержит 18 цветов или не содержит ни одного: 16 цветов терминала, ink и ground. Каждый задается как #rrggbb или oklch(L C H) и проходит проверку.
- Значения
- Значение является цветом:
#rrggbb,#rrggbbaaилиoklch(L C H), с/ Aдля прозрачности. L принимает значения от 0 до 1, C от 0 до 0.5 и H от 0 до 360, в виде обычных чисел. - Половины
- Укажите
light,darkили обе половины. Пропущенная половина заполняется из Collie, токен за токеном. - Шрифты
- Необязательный параметр
fonts.uiзадает один из шрифтов, встроенных в ColliePWA. Необязательный параметрfonts.displayзадает шрифт для заголовков. Другие шрифты не принимаются. - Что отклоняется
- Ключ не из списка, version отличная от 1 или 2, значение, не являющееся цветом или словом формы,
var(),url()или любая другая функция, id встроенной темы, а также файл размером более 64 KiB. Сообщение указывает причину, и изменения не применяются. - Версия
- Значение
version: 1 или 2. В файле с блокомsurface, начертаниемfonts.displayили блокомansiуказывается 2. Для файла версии 2 требуется ColliePWA 1.22.0 или новее.
05/Поделиться
Экспорт и обмен.
Экспорт сохраняет активную тему в виде файла .collie-theme.json. Отправьте его кому-либо или сохраните в репозитории, и файл можно будет импортировать так же, как вы это сделали.