--- title: Рендерер JSX description: Декларативное создание дизайна с помощью JSX и обратный экспорт в JSX или HTML с Tailwind. --- # Рендерер JSX OpenPencil использует JSX как декларативный язык создания дизайна. Он подходит для агентов ИИ, сценариев и воспроизводимого построения интерфейсов. JSX также служит читаемым представлением существующего дизайна. Изменения выглядят как обычная разница в коде, которую удобно проверять и хранить в системе управления версиями. ## Создание дизайна Инструмент `render`, доступный в чате с ИИ, MCP и `eval` CLI, принимает JSX: ```jsx Card Title Description text ``` В MCP и чате с ИИ передайте инструменту `render` строку JSX. Для обратного преобразования используйте команду `export` — подробнее в разделе [Экспорт дизайна в JSX](./cli/exporting). ## Элементы | Элемент | Создаёт | Псевдоним | |---------|---------|-----------| | `` | Фрейм с автоматической компоновкой | `` | | `` | Прямоугольник | `` | | `` | Эллипс или круг | | | `` | Текстовый объект; дочерние элементы становятся содержимым | | | `` | Линия | | | `` | Звезда | | | `` | Многоугольник | | | `` | Векторный контур | | | `` | Группа | | | `
` | Секция | | ## Свойства оформления Для краткости свойства используют имена, близкие к Tailwind. ### Компоновка | Свойство | Назначение | |----------|------------| | `flex` | `"row"` или `"col"`; включает автоматическую компоновку | | `gap` | Расстояние между дочерними элементами | | `wrap` | Перенос дочерних элементов на следующую строку | | `rowGap` | Расстояние между строками при переносе | | `justify` | `"start"`, `"end"`, `"center"` или `"between"` | | `items` | `"start"`, `"end"`, `"center"` или `"stretch"` | | `p`, `px`, `py`, `pt`, `pr`, `pb`, `pl` | Внутренние отступы | ### Размер и положение | Свойство | Назначение | |----------|------------| | `w`, `h` | Ширина и высота: число, `"fill"` или `"hug"` | | `minW`, `maxW`, `minH`, `maxH` | Ограничения размера | | `x`, `y` | Положение | ### Внешний вид | Свойство | Назначение | |----------|------------| | `bg` | Цвет фоновой заливки в шестнадцатеричном формате | | `fill` | Псевдоним для `bg` | | `stroke` | Цвет обводки | | `strokeWidth` | Толщина обводки; по умолчанию 1 | | `rounded` | Радиус углов; отдельные углы: `roundedTL`, `roundedTR`, `roundedBL`, `roundedBR` | | `cornerSmoothing` | Сглаживание углов от 0 до 1 | | `opacity` | Прозрачность от 0 до 1 | | `shadow` | Внешняя тень, например `"0 4 8 #00000040"` | | `blur` | Радиус размытия слоя | | `rotate` | Угол поворота в градусах | | `blendMode` | Режим наложения | | `overflow` | `"hidden"` или `"visible"` | ### Типографика | Свойство | Назначение | |----------|------------| | `size` / `fontSize` | Размер шрифта | | `font` / `fontFamily` | Семейство шрифта | | `weight` / `fontWeight` | `"bold"`, `"medium"`, `"normal"` или число | | `color` | Цвет текста | | `textAlign` | `"left"`, `"center"`, `"right"` или `"justified"` | ## Экспорт в JSX ```sh openpencil export design.fig -f jsx # Формат OpenPencil openpencil export design.fig -f jsx --style tailwind # Классы Tailwind ``` Экспортированный дизайн можно изменить как код и снова отрисовать. ## Сравнение изменений ```diff - Old Title + New Title Description ``` Такое сравнение можно проверить в запросе на включение изменений, сохранить в системе управления версиями и анализировать в CI.