Дизайн корпоративных продуктов · Новый ресурс

Дизайн-система Alaska Airlines Auro.

Изучите тему Alaska от Auro на примере реальных семантических цветовых и типографических токенов, типографики на основе классов и встроенного компонента рейса. Две исходные записи о рейсах демонстрируют локальную фильтрацию и выбор, не изображая инвентарь авиакомпании или бронирование.

Руководство OpenDesign8 глав39 справочных записейАвторское руководство по приложению
01

Alaska Airlines Auro Предварительный просмотр интерфейса дизайн-системы

Отфильтруйте две вымышленные записи о рейсах по времени вылета и выберите пример. Результат будет явно указан и сохранится только в рамках сеанса.

Исходные примеры вариантов рейсовОткрыть полный пример
Исходная автономная интерпретация ролей темы Alaska HTML и иерархии информации о рейсах. Без среды выполнения Auro, фирменных шрифтов, актуальных данных о наличии мест и бронирования. · Справочник по реализации
02

Alaska Airlines Auro Справочник по дизайн-системе

Текущий общедоступный файл темы Alaska CSS и документация компонентов Auro. Интервалы и скругления в исходном примере явно указаны как решения приложения, поскольку полная актуальная шкала базовых значений не подтверждена. Устаревшие значения Auro Classic не смешиваются со справочником Alaska.

Семантические роли Alaska

Источник
Название / правилоЗначение / конфигурацияПрименение
--ds-basic-color-brand-primary#01426a Основная роль бренда.
--ds-basic-color-brand-primary-bold#00274a Выразительная роль бренда.
--ds-basic-color-brand-primary-muted#ebf3f9 Приглушённая поверхность бренда.
--ds-basic-color-brand-secondary#5de3f7 Вторичный акцент.
--ds-basic-color-brand-tertiary#a3cd6a Третичный акцент.
--ds-basic-color-texticon-default#2a2a2a Текст для чтения.
--ds-basic-color-texticon-muted#676767 Вспомогательный текст.
--ds-basic-color-border-default#959595 Граница по умолчанию.
--ds-basic-color-border-subtle#dddddd Ненавязчивое разделение.
--ds-basic-color-status-success#447a1f Роль успешного состояния.
--ds-basic-color-status-error#e31f26 Роль ошибки.

Состояния действий

Источник
Название / правилоЗначение / конфигурацияПрименение
--ds-advanced-color-button-primary-background#01426a Заливка основного действия.
--ds-advanced-color-button-primary-background-hover#00274a Заливка при наведении указателя.
--ds-advanced-color-button-primary-background-disabled#acc9e2 Заливка отключённого элемента.
--ds-advanced-color-button-primary-text#ffffff Основной текст.
--ds-advanced-color-button-secondary-background#ffffff Вторичная заливка.
--ds-advanced-color-button-secondary-border#01426a Вторичная граница.
--ds-advanced-color-state-focused#01426a Роль фокуса.

Типографические роли Alaska

Источник
Название / правилоЗначение / конфигурацияПрименение
--ds-basic-type-family-bodyAS CircularСемейство для основного текста.
--ds-basic-type-family-headingAS CircularСемейство для заголовков.
--ds-basic-type-family-accentGood OTСемейство для акцентного текста.
--ds-basic-type-line-height-body1.625remРоль межстрочного интервала основного текста.
--ds-basic-type-line-height-body21.5remВторой стиль основного текста.
--ds-basic-type-line-height-body31.25remТретий стиль основного текста.
--ds-basic-type-line-height-heading1.3Относительный межстрочный интервал заголовка.
--ds-basic-type-weight-body450Насыщенность основного текста.
--ds-basic-type-weight-heading300Насыщенность заголовка.
--ds-basic-type-letter-spacing-accent0.05emМежбуквенный интервал акцентного текста.

Выбор темы

Источник
Название / правилоЗначение / конфигурацияПрименение
Alaskadata-aag-theme="aag-theme-as"Текущая тема Alaska.
Alaska Classicaag-theme-ascТолько тема для миграции.
Hawaiianaag-theme-haОтдельная тема бренда.
Atmosaag-theme-atmОтдельная тема бренда.
Auro ClassicDeprecated legacy themeТолько для обратной совместимости.

Структура рейса

Источник
Название / правилоЗначение / конфигурацияПрименение
flightsJSON array of flight labelsПример ["DEMO 01"].
durationMinutesДлительность исходного примера — 150.
departureTime / arrivalTimeISO date-time with offsetНе определяйте часовой пояс по коду станции.
departureStation / arrivalStationStation codesПример SEA и LAX.
auro-flightlineChild custom elementОбъединяет отображение отправления и прибытия.
AuroFlight.register(name)Custom-name registrationИзбегайте конфликтов при использовании нескольких версий.
03

Alaska Airlines Auro Полное руководство по дизайн-системе

Практическое руководство по выбору, применению и оценке этой системы для реального интерфейса.

DESIGN-alaska-auro.md

Подробные рекомендации, отправная точка для реализации и ссылки на источники.

Скачать руководство

Дизайн-система Alaska Airlines Auro. Явно выберите Alaska перед созданием страницы

Текущие темы и темы для миграции — не одно и то же

Auro поддерживает Alaska, Hawaiian и Atmos как отдельные темы. В Alaska Classic сохранены прежние визуальные значения под новыми именами для миграции; Auro Classic считается устаревшей. В предоставленной записи импортируется файл Alaska CSS и применяется атрибут aag-theme-as.

Из этого руководства OpenDesign

Вложенное значение data-aag-theme может менять тему отдельного раздела. Эта возможность полезна для общих платформ, но не означает, что экран в цветах Alaska должен незаметно заимствовать типографику Hawaiian или устаревшие значения. В примере последовательно используется одна тема.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Акцент бренда и текст для чтения выполняют разные задачи

Используйте семантическую роль цвета переднего плана

В текущем исходном коде токенов Alaska для текста по умолчанию используется #2a2a2a, для приглушённого текста — #676767. Основная роль бренда задана цветом #01426a, а более выразительный вариант — #00274a. Это разные назначения, даже если заголовок и кнопка расположены в одной области.

В примере для фактов о рейсах используется тёмный нейтральный текст, а синий цвет подчёркивает интерактивные элементы. Мятные и голубые акценты показаны в исходной иллюстрации пейзажа, а не используются как недокументированные сигналы состояния. Выбранный рейс выделен текстом и состоянием кнопки, а также границей.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Применяйте поддерживаемые классы типографики

Четыре группы отражают назначение стилей

В актуальном руководстве Auro типографические стили разделены на четыре группы: основной текст, заголовки, крупный текст и акцентный текст. Стили заголовков предназначены для семантических заголовков, а крупный текст — для визуально заметных фрагментов, которые не являются заголовками в иерархии документа. В руководстве рекомендуется применять классы вроде body-default и body-lg, а не заново задавать все правила шрифтов для каждого элемента.

В исходном коде Alaska для основного текста и заголовков указан шрифт AS Circular, а для акцентного текста — Good OT. Также предусмотрены отдельные роли насыщенности и межстрочного интервала. В автономном предварительном просмотре используется документированное резервное семейство шрифтов, а не создаётся видимость, будто фирменные шрифты доступны локально.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Компонент flight представляет структурированный маршрут

Передавайте сведения о времени, сохраняя смещение часового пояса

auro-flight объединяет сведения об отправлении, прибытии и участке маршрута с auro-flightline. В базовом примере используются массив названий рейсов, длительность в минутах, два кода станций и две даты и времени в формате ISO. В предоставленном коде явно заданные смещения часовых поясов сохраняются: вместо них не передаются неоднозначные значения местного времени.

В двух исходных примерах совпадают часовые пояса отправления и прибытия, поэтому длительность 150 минут соответствует указанному времени. Это не реальные рейсы. Для маршрута с пересадками в производственной среде также требуется документированное представление участков маршрута; плоский список названий сам по себе не должен создавать впечатление, что пересадка подтверждена.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Не храните выбор приложения в данных отображения

Отображаемый вариант и выбранный вариант — разные состояния

В нативном примере каждый вариант отображается компонентом auro-flight, а для локального выбора используется обычная кнопка. Так не приходится выдумывать API выбора для компонента отображения. Идентификатор выбранного варианта хранится в приложении и отражается атрибутом aria-pressed.

При изменении фильтра по времени отправления выбор и сообщение сбрасываются. Иначе интерфейс мог бы сообщить, что по-прежнему выбран скрытый вариант. В предварительном просмотре явно указано: пример выбран только для этой страницы, бронирование не выполнялось.

  1. Отфильтруйте исходные записи по времени отправления.
  2. Отобразите остальные сведения о рейсе без изменения их значений.
  3. Выберите отображаемый пример по его постоянному идентификатору.
  4. Сбросьте выбор при изменении фильтра.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Подключайте типографические основы вместе с кодом компонентов

Токены, WCSS и элементы решают разные задачи

Токены дизайн-системы задают значения. Web Core Style Sheets предоставляют базовые стили и классы типографики. Пакет flight регистрирует пользовательский элемент. Установка только одной из этих составляющих не равнозначна созданию полностью оформленной страницы в фирменном стиле.

WCSS — это набор выбираемых по отдельности базовых стилей, а не единый файл со всеми возможными стилями. В версии v12 Sass перешёл с @import на @use и @forward. В примере используется документированная готовая таблица стилей Alaska, а устаревшие инструкции Sass не смешиваются с актуальной структурой пакетов.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro Используйте реальные подписи элементов управления и состояния

Не полагайтесь только на цвет при отображении результата

У фильтра есть видимая подпись, а в каждом действии по выбору обозначен его результат. Область состояния сообщает текстом, какой пример выбран. Отправление и прибытие остаются понятными и без декоративной линии или пейзажа.

Для расширения, собирающего данные о путешественниках, в Auro Input предусмотрены слоты label и helpText. По умолчанию компонент проверяет данные при потере фокуса; этот момент можно изменить с помощью validateOnInput или noValidate. Сброс очищает значение до undefined. Следует соблюдать эти соглашения, а не полагать, что любой компонент формы возвращает одинаковое пустое значение.

  • Представляйте время и сведения о станции читаемым текстом.
  • Добавьте фильтру отдельную подпись, не связанную с количеством результатов.
  • Используйте область состояния для сообщения о реальном локальном выборе.
  • Не показывайте индикатор ожидания для мгновенного обновления состояния.

Прочитать вспомогательную спецификацию

Дизайн-система Alaska Airlines Auro. Регистрируйте альтернативные имена, только если версии действительно существуют одновременно

Отделяйте класс компонента от глобальной регистрации

Стандартный импорт пакета рейсов автоматически регистрирует auro-flight. Его точка входа /class предоставляет AuroFlight для явных вызовов register(name), когда нескольким версиям нужны разные имена пользовательских элементов в одном документе. Пользовательское имя должно содержать дефис.

Это средство управления конфликтами, а не требование для обычной страницы с одной версией. В простом примере используйте имя по умолчанию, фиксируйте зависимости в файле блокировки и проверяйте миграции перед переходом на следующую мажорную версию. Исходные отступы и радиусы в предварительном просмотре остаются решениями приложения; эта страница не объявляет их подтверждёнными примитивами Auro.

Прочитать вспомогательную спецификацию

Примеры компонентов дизайн-системы Alaska Airlines Auro

Полноценный автономный интерактивный пример

Сохраните весь документ как index.html и откройте его в браузере. Независимая офлайн-интерпретация ролей темы Alaska и иерархии информации о рейсах в HTML. Без собственной среды выполнения Auro, фирменных шрифтов, актуальных данных о наличии мест и бронирования.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>Original flight choices</title><style>*{box-sizing:border-box}body{margin:0;color:#2a2a2a;background:#fff;font:16px/1.625 system-ui,-apple-system,sans-serif}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:3px solid #01426a;outline-offset:4px}header{padding:20px 32px;display:flex;justify-content:space-between;gap:24px;border-bottom:1px solid #ddd}header b{color:#01426a;letter-spacing:2px;font-size:14px}header small{color:#676767}.hero{background:#ebf3f9;position:relative;overflow:hidden}.hero-inner{max-width:1100px;margin:auto;padding:36px 32px 48px;position:relative;z-index:1}.hero h1{font-size:42px;line-height:1.3;font-weight:300;margin:0 0 12px}.hero p{max-width:480px;margin:0;color:#676767}.mountain{position:absolute;right:-20px;bottom:-25px;width:43%;height:180px;background:#cfe0ef;clip-path:polygon(0 100%,35% 10%,55% 55%,75% 0,100% 100%)}.mountain:after{content:'';position:absolute;inset:50px -15px 0 45px;background:#a3cd6a;clip-path:polygon(0 100%,45% 10%,100% 100%)}main{max-width:1100px;margin:auto;padding:32px}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:24px}.toolbar label{display:block;font-size:14px;margin-bottom:8px}select{padding:10px 40px 10px 12px;border:1px solid #959595;border-radius:8px;background:#fff;color:#2a2a2a}#count{font-size:14px;color:#676767;margin:0}.flight{border:1px solid #ddd;border-radius:12px;padding:24px;margin-bottom:16px}.flight.selected{border:2px solid #01426a;padding:23px;background:#f7fbfd}.flight-head{display:flex;justify-content:space-between;gap:16px;font-size:14px;color:#676767;margin-bottom:24px}.sample-tag{background:#ebf3f9;color:#01426a;padding:0 8px;border-radius:4px}.flight-body{display:grid;grid-template-columns:1fr 160px 1fr auto;gap:24px;align-items:center}.station b{display:block;font-size:28px;line-height:1.3;font-weight:400}.station span{display:block;font-size:14px;color:#676767}.line{text-align:center;color:#676767;font-size:12px}.line i{display:block;height:1px;background:#00274a;position:relative;margin:12px 0}.line i:before,.line i:after{content:'';width:7px;height:7px;background:#fff;border:1px solid #00274a;border-radius:50%;position:absolute;top:-3px;left:0}.line i:after{left:auto;right:0}.flight button{border:0;border-radius:8px;background:#01426a;color:#fff;padding:12px 20px;white-space:nowrap}.flight button:hover{background:#00274a}.selected button{background:#fff;border:1px solid #01426a;color:#01426a}.summary{background:#ebf3f9;border-left:4px solid #01426a;padding:16px 24px;margin-top:24px}.summary:empty{display:none}footer{font-size:12px;line-height:1.5;color:#676767;margin-top:24px}@media(max-width:700px){header{padding:16px;gap:16px}header small{max-width:140px}.hero-inner{padding:28px 16px 40px}.hero h1{font-size:32px}.hero p{max-width:80%}.mountain{opacity:.45;width:70%}main{padding:24px 16px}.toolbar{gap:16px}.flight{padding:20px}.flight.selected{padding:19px}.flight-body{grid-template-columns:1fr 80px 1fr;gap:12px}.flight button{grid-column:1/-1;width:100%;margin-top:8px}.station b{font-size:22px}.flight-head{font-size:12px}.station span{font-size:12px}select{max-width:185px;padding-right:24px}}
</style><header><b>JOURNEY EXPLORER</b><small>Independent Auro interpretation</small></header><div class="hero"><div class="mountain" aria-hidden="true"></div><div class="hero-inner"><h1>A little closer to your next adventure.</h1><p>Explore two original flight examples and keep a choice for this page session.</p></div></div><main><div class="toolbar"><div><label for="period">Departure period</label><select id="period"><option value="all">All times</option><option value="morning">Morning</option><option value="evening">Evening</option></select></div><p id="count" aria-live="polite"></p></div><section id="results" aria-label="Sample flights"></section><p id="selection" class="summary" role="status"></p><footer>Fictional flights for interface exploration. No real schedule, fare, seat availability or booking. Times use the same sample UTC−07:00 offset. Original landscape artwork.</footer></main><script>const data=[{id:'am',name:'Morning sample',number:'DEMO 01',dep:'08:00',arr:'10:30',period:'morning'},{id:'pm',name:'Evening sample',number:'DEMO 02',dep:'17:00',arr:'19:30',period:'evening'}];let selected='';function render(){const period=document.querySelector('#period').value,visible=data.filter(x=>period==='all'||x.period===period);document.querySelector('#count').textContent=`${visible.length} sample ${visible.length===1?'flight':'flights'}`;document.querySelector('#results').innerHTML=visible.map(x=>`<article class="flight ${selected===x.id?'selected':''}"><div class="flight-head"><span>${x.name} · ${x.number}</span><span class="sample-tag">Original sample</span></div><div class="flight-body"><div class="station"><b>${x.dep}</b><span>SEA · Seattle</span></div><div class="line">2h 30m<i></i>Nonstop study</div><div class="station"><b>${x.arr}</b><span>LAX · Los Angeles</span></div><button type="button" data-id="${x.id}" aria-pressed="${selected===x.id}">${selected===x.id?'Selected sample':'Select this sample'}</button></div></article>`).join('');document.querySelectorAll('[data-id]').forEach(button=>button.onclick=()=>{selected=button.dataset.id;const x=data.find(x=>x.id===selected);document.querySelector('#selection').textContent=`${x.name} selected: ${x.dep} SEA → ${x.arr} LAX. No booking made.`;render();document.querySelector(`[data-id="${selected}"]`).focus()})}document.querySelector('#period').onchange=()=>{selected='';document.querySelector('#selection').textContent='';render()};render();</script></html>

Справочник по коду

  • Рейсы представлены вымышленными фиксированными данными. В примере с нативными компонентами используются свойства auro-flight и ресурсы темы Alaska; этот документ HTML не проверяет наличие мест.

Отображение рейсов нативным компонентом с выбором, реализованным в приложении

Каждому auro-flight передаются даты с часовым смещением, коды станций и массив подписей рейсов в формате JSON. Нативные список выбора и кнопка добавляют локальную фильтрацию и состояние выбора вне компонента отображения.

javascript
// src/main.js in a Vite vanilla project
// npm install @aurodesignsystem/auro-flight @aurodesignsystem/design-tokens @aurodesignsystem/webcorestylesheets
import '@aurodesignsystem/design-tokens/dist/themes/alaska/CSSCustomProperties--alaska.css';
import '@aurodesignsystem/webcorestylesheets/dist/bundled/themes/alaska.global.min.css';
import '@aurodesignsystem/auro-flight';
import './style.css';
document.documentElement.setAttribute('data-aag-theme','aag-theme-as');
const flights=[
 {id:'sample-am',label:'Morning sample',number:'DEMO 01',departure:'2030-06-15T08:00:00-07:00',arrival:'2030-06-15T10:30:00-07:00',period:'morning'},
 {id:'sample-pm',label:'Evening sample',number:'DEMO 02',departure:'2030-06-15T17:00:00-07:00',arrival:'2030-06-15T19:30:00-07:00',period:'evening'}
];
let selected='';
document.querySelector('#app').innerHTML=`<main><h1>Explore sample flights</h1>
<p class="body-default">Original records, not a live schedule or booking service.</p>
<label for="period">Departure period</label><select id="period"><option value="all">All times</option><option value="morning">Morning</option><option value="evening">Evening</option></select>
<div id="results"></div><p id="selection" role="status"></p></main>`;
function render(){const period=document.querySelector('#period').value;const target=document.querySelector('#results');target.replaceChildren();
 flights.filter(f=>period==='all'||f.period===period).forEach(f=>{
 const article=document.createElement('article'), title=document.createElement('h2');title.textContent=f.label;
 const component=document.createElement('auro-flight');component.setAttribute('flights',JSON.stringify([f.number]));component.setAttribute('duration','150');component.setAttribute('departureTime',f.departure);component.setAttribute('arrivalTime',f.arrival);component.setAttribute('departureStation','SEA');component.setAttribute('arrivalStation','LAX');component.append(document.createElement('auro-flightline'));
 const button=document.createElement('button');button.type='button';button.textContent=selected===f.id?'Selected sample':'Select this sample';button.setAttribute('aria-pressed',String(selected===f.id));button.onclick=()=>{selected=f.id;document.querySelector('#selection').textContent=f.label+' selected for this page only. No booking made.';render();};
 article.append(title,component,button);target.append(article);
 });
}
document.querySelector('#period').onchange=()=>{selected='';document.querySelector('#selection').textContent='';render();};render();

/* src/style.css — application layout, not official size tokens */
main{max-width:64rem;margin:auto;padding:24px}
article{padding:24px;margin-block:16px;border:1px solid var(--ds-basic-color-border-subtle);border-radius:12px}
button{font:inherit;background:var(--ds-advanced-color-button-primary-background);color:var(--ds-advanced-color-button-primary-text);padding:12px 24px;border:0;border-radius:8px;margin-top:16px}
button:hover{background:var(--ds-advanced-color-button-primary-background-hover)}
button:focus-visible,select:focus-visible{outline:3px solid var(--ds-advanced-color-state-focused);outline-offset:4px}
select{font:inherit;padding:12px;margin:8px 0 16px}

Справочник по коду

  • Кнопка выбора относится к логике приложения, это не выдуманное событие auro-flight.
  • При смене периода ранее выбранная запись сбрасывается, чтобы скрытый выбор не вводил в заблуждение.
  • Все номера рейсов, даты и время в примере вымышлены.
04

Настройка агента для дизайн-системы Alaska Airlines Auro

Отправная точка для реализации

Полная точка входа приложения и CSS для существующего проекта Vite без фреймворка. Сохраните установленные версии в файле блокировки проекта. Компиляция нативных компонентов здесь не проверялась; встроенный пример использует независимый офлайн-вариант HTML. В него не включены AS Circular и Good OT.

javascript
// src/main.js in a Vite vanilla project
// npm install @aurodesignsystem/auro-flight @aurodesignsystem/design-tokens @aurodesignsystem/webcorestylesheets
import '@aurodesignsystem/design-tokens/dist/themes/alaska/CSSCustomProperties--alaska.css';
import '@aurodesignsystem/webcorestylesheets/dist/bundled/themes/alaska.global.min.css';
import '@aurodesignsystem/auro-flight';
import './style.css';
document.documentElement.setAttribute('data-aag-theme','aag-theme-as');
const flights=[
 {id:'sample-am',label:'Morning sample',number:'DEMO 01',departure:'2030-06-15T08:00:00-07:00',arrival:'2030-06-15T10:30:00-07:00',period:'morning'},
 {id:'sample-pm',label:'Evening sample',number:'DEMO 02',departure:'2030-06-15T17:00:00-07:00',arrival:'2030-06-15T19:30:00-07:00',period:'evening'}
];
let selected='';
document.querySelector('#app').innerHTML=`<main><h1>Explore sample flights</h1>
<p class="body-default">Original records, not a live schedule or booking service.</p>
<label for="period">Departure period</label><select id="period"><option value="all">All times</option><option value="morning">Morning</option><option value="evening">Evening</option></select>
<div id="results"></div><p id="selection" role="status"></p></main>`;
function render(){const period=document.querySelector('#period').value;const target=document.querySelector('#results');target.replaceChildren();
 flights.filter(f=>period==='all'||f.period===period).forEach(f=>{
 const article=document.createElement('article'), title=document.createElement('h2');title.textContent=f.label;
 const component=document.createElement('auro-flight');component.setAttribute('flights',JSON.stringify([f.number]));component.setAttribute('duration','150');component.setAttribute('departureTime',f.departure);component.setAttribute('arrivalTime',f.arrival);component.setAttribute('departureStation','SEA');component.setAttribute('arrivalStation','LAX');component.append(document.createElement('auro-flightline'));
 const button=document.createElement('button');button.type='button';button.textContent=selected===f.id?'Selected sample':'Select this sample';button.setAttribute('aria-pressed',String(selected===f.id));button.onclick=()=>{selected=f.id;document.querySelector('#selection').textContent=f.label+' selected for this page only. No booking made.';render();};
 article.append(title,component,button);target.append(article);
 });
}
document.querySelector('#period').onchange=()=>{selected='';document.querySelector('#selection').textContent='';render();};render();

/* src/style.css — application layout, not official size tokens */
main{max-width:64rem;margin:auto;padding:24px}
article{padding:24px;margin-block:16px;border:1px solid var(--ds-basic-color-border-subtle);border-radius:12px}
button{font:inherit;background:var(--ds-advanced-color-button-primary-background);color:var(--ds-advanced-color-button-primary-text);padding:12px 24px;border:0;border-radius:8px;margin-top:16px}
button:hover{background:var(--ds-advanced-color-button-primary-background-hover)}
button:focus-visible,select:focus-visible{outline:3px solid var(--ds-advanced-color-state-focused);outline-offset:4px}
select{font:inherit;padding:12px;margin:8px 0 16px}

Запрос для вашего проекта

Промпт для AI-агента
Создайте список рейсов Auro Alaska, явно указав aag-theme-as, CSS токенов Alaska, типографику WCSS и нативные поля auro-flight. Согласуйте смещения ISO и длительность рейсов. Добавьте фильтрацию и выбор на уровне приложения, не придумывая события компонентов; сбрасывайте скрытый выбор и помечайте каждую запись как пример данных.
05

Источники и область применения дизайн-системы Alaska Airlines Auro

Независимый справочник OpenDesign. Все номера рейсов, даты и время вымышлены; реальные расписания авиакомпаний, тарифы, наличие мест и бронирование не представлены. Отступы приложения не выдаются за официальную шкалу токенов.