@rt-tools/ui-kit-v2 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs +13653 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -0
- package/package.json +54 -0
- package/rt-tools-ui-kit-v2-0.1.0.tgz +0 -0
- package/src/assets/icons/alarm-clock.svg +7 -0
- package/src/assets/icons/align-center.svg +7 -0
- package/src/assets/icons/align-justify.svg +7 -0
- package/src/assets/icons/align-left.svg +7 -0
- package/src/assets/icons/align-right.svg +7 -0
- package/src/assets/icons/angle-double-down.svg +7 -0
- package/src/assets/icons/angle-double-left.svg +7 -0
- package/src/assets/icons/angle-double-right.svg +7 -0
- package/src/assets/icons/angle-double-up.svg +7 -0
- package/src/assets/icons/angle-down.svg +7 -0
- package/src/assets/icons/angle-left.svg +7 -0
- package/src/assets/icons/angle-right.svg +7 -0
- package/src/assets/icons/angle-up.svg +7 -0
- package/src/assets/icons/arrow-bottom-old.svg +7 -0
- package/src/assets/icons/arrow-circle-down.svg +7 -0
- package/src/assets/icons/arrow-circle-left.svg +7 -0
- package/src/assets/icons/arrow-circle-right.svg +7 -0
- package/src/assets/icons/arrow-circle-up.svg +7 -0
- package/src/assets/icons/arrow-down-left.svg +7 -0
- package/src/assets/icons/arrow-down-long.svg +7 -0
- package/src/assets/icons/arrow-down-right.svg +7 -0
- package/src/assets/icons/arrow-down.svg +7 -0
- package/src/assets/icons/arrow-left-old.svg +7 -0
- package/src/assets/icons/arrow-left.svg +7 -0
- package/src/assets/icons/arrow-leftlong.svg +7 -0
- package/src/assets/icons/arrow-right-old.svg +7 -0
- package/src/assets/icons/arrow-right.svg +7 -0
- package/src/assets/icons/arrow-rightlong.svg +7 -0
- package/src/assets/icons/arrow-top-old.svg +7 -0
- package/src/assets/icons/arrow-up-left.svg +7 -0
- package/src/assets/icons/arrow-up-long.svg +7 -0
- package/src/assets/icons/arrow-up-right.svg +7 -0
- package/src/assets/icons/arrow-up.svg +7 -0
- package/src/assets/icons/arrows-h.svg +7 -0
- package/src/assets/icons/arrows-v.svg +7 -0
- package/src/assets/icons/at.svg +7 -0
- package/src/assets/icons/attach-docx-doc.svg +11 -0
- package/src/assets/icons/attach-eml.svg +21 -0
- package/src/assets/icons/attach-folder.svg +12 -0
- package/src/assets/icons/attach-jpg-png.svg +9 -0
- package/src/assets/icons/attach-msg.svg +48 -0
- package/src/assets/icons/attach-other.svg +9 -0
- package/src/assets/icons/attach-pdf.svg +9 -0
- package/src/assets/icons/attach-ppt-pptx.svg +10 -0
- package/src/assets/icons/attach-txt.svg +24 -0
- package/src/assets/icons/attach-webp.svg +9 -0
- package/src/assets/icons/attach-xlsx-xls.svg +9 -0
- package/src/assets/icons/attach-zip-rar.svg +13 -0
- package/src/assets/icons/ban.svg +7 -0
- package/src/assets/icons/bars.svg +7 -0
- package/src/assets/icons/bell.svg +7 -0
- package/src/assets/icons/bolt.svg +7 -0
- package/src/assets/icons/book.svg +7 -0
- package/src/assets/icons/bookmark-fill.svg +7 -0
- package/src/assets/icons/bookmark.svg +7 -0
- package/src/assets/icons/bot.svg +14 -0
- package/src/assets/icons/box.svg +7 -0
- package/src/assets/icons/briefcase.svg +7 -0
- package/src/assets/icons/building.svg +7 -0
- package/src/assets/icons/burger.svg +9 -0
- package/src/assets/icons/calendar-minus.svg +7 -0
- package/src/assets/icons/calendar-plus.svg +7 -0
- package/src/assets/icons/calendar-times.svg +7 -0
- package/src/assets/icons/calendar.svg +7 -0
- package/src/assets/icons/camera.svg +7 -0
- package/src/assets/icons/chart-bar.svg +7 -0
- package/src/assets/icons/chart-line-2.svg +13 -0
- package/src/assets/icons/chart-line.svg +7 -0
- package/src/assets/icons/chart-pie.svg +7 -0
- package/src/assets/icons/check-circle.svg +7 -0
- package/src/assets/icons/check-double.svg +10 -0
- package/src/assets/icons/check-square.svg +7 -0
- package/src/assets/icons/check.svg +7 -0
- package/src/assets/icons/chevron-circle-down.svg +7 -0
- package/src/assets/icons/chevron-circle-left.svg +7 -0
- package/src/assets/icons/chevron-circle-right.svg +7 -0
- package/src/assets/icons/chevron-circle-up.svg +7 -0
- package/src/assets/icons/chevron-down.svg +7 -0
- package/src/assets/icons/chevron-left.svg +7 -0
- package/src/assets/icons/chevron-right.svg +7 -0
- package/src/assets/icons/chevron-up-down.svg +9 -0
- package/src/assets/icons/chevron-up.svg +7 -0
- package/src/assets/icons/clock.svg +7 -0
- package/src/assets/icons/clone.svg +7 -0
- package/src/assets/icons/close.svg +7 -0
- package/src/assets/icons/cloud-download.svg +7 -0
- package/src/assets/icons/cloud-upload.svg +7 -0
- package/src/assets/icons/cloud.svg +7 -0
- package/src/assets/icons/code.svg +7 -0
- package/src/assets/icons/cog.svg +7 -0
- package/src/assets/icons/comment.svg +7 -0
- package/src/assets/icons/comments.svg +7 -0
- package/src/assets/icons/copy.svg +7 -0
- package/src/assets/icons/credit-card.svg +7 -0
- package/src/assets/icons/database.svg +7 -0
- package/src/assets/icons/desktop.svg +7 -0
- package/src/assets/icons/directions-alt.svg +7 -0
- package/src/assets/icons/directions.svg +7 -0
- package/src/assets/icons/doc-success.svg +7 -0
- package/src/assets/icons/docBox.svg +7 -0
- package/src/assets/icons/ellipsis-h.svg +7 -0
- package/src/assets/icons/ellipsis-v.svg +7 -0
- package/src/assets/icons/email.svg +7 -0
- package/src/assets/icons/exclamation-circle.svg +7 -0
- package/src/assets/icons/external-link.svg +7 -0
- package/src/assets/icons/eye-slash.svg +7 -0
- package/src/assets/icons/eye.svg +7 -0
- package/src/assets/icons/file-excel.svg +7 -0
- package/src/assets/icons/file-o.svg +7 -0
- package/src/assets/icons/file-pdf.svg +7 -0
- package/src/assets/icons/file.svg +7 -0
- package/src/assets/icons/filter-fill.svg +7 -0
- package/src/assets/icons/filter-slash.svg +7 -0
- package/src/assets/icons/filter.svg +7 -0
- package/src/assets/icons/flag-fill.svg +7 -0
- package/src/assets/icons/flag.svg +7 -0
- package/src/assets/icons/flagman-a.svg +7 -0
- package/src/assets/icons/flagman-b.svg +17 -0
- package/src/assets/icons/flagman-c.svg +9 -0
- package/src/assets/icons/flagman-q.svg +14 -0
- package/src/assets/icons/folder-open.svg +7 -0
- package/src/assets/icons/folder.svg +7 -0
- package/src/assets/icons/globe.svg +7 -0
- package/src/assets/icons/groupen.svg +15 -0
- package/src/assets/icons/hashtag.svg +7 -0
- package/src/assets/icons/heart-fill.svg +7 -0
- package/src/assets/icons/heart.svg +7 -0
- package/src/assets/icons/help.svg +15 -0
- package/src/assets/icons/history.svg +7 -0
- package/src/assets/icons/historyUpdate.svg +7 -0
- package/src/assets/icons/ico-age.svg +7 -0
- package/src/assets/icons/ico-alert.svg +7 -0
- package/src/assets/icons/ico-b.svg +7 -0
- package/src/assets/icons/ico-babyPacifier.svg +15 -0
- package/src/assets/icons/ico-bank.svg +12 -0
- package/src/assets/icons/ico-bill-striked.svg +7 -0
- package/src/assets/icons/ico-bill.svg +7 -0
- package/src/assets/icons/ico-bookmark-right.svg +5 -0
- package/src/assets/icons/ico-books.svg +7 -0
- package/src/assets/icons/ico-burger.svg +5 -0
- package/src/assets/icons/ico-businessman.svg +7 -0
- package/src/assets/icons/ico-c.svg +7 -0
- package/src/assets/icons/ico-calendar.svg +7 -0
- package/src/assets/icons/ico-case.svg +7 -0
- package/src/assets/icons/ico-change-2.svg +7 -0
- package/src/assets/icons/ico-change.svg +15 -0
- package/src/assets/icons/ico-check.svg +18 -0
- package/src/assets/icons/ico-checked-alert.svg +9 -0
- package/src/assets/icons/ico-checked.svg +7 -0
- package/src/assets/icons/ico-cheker.svg +7 -0
- package/src/assets/icons/ico-chevron-down.svg +3 -0
- package/src/assets/icons/ico-chevron.svg +7 -0
- package/src/assets/icons/ico-close.svg +7 -0
- package/src/assets/icons/ico-config.svg +26 -0
- package/src/assets/icons/ico-contragents.svg +7 -0
- package/src/assets/icons/ico-control.svg +18 -0
- package/src/assets/icons/ico-copy.svg +7 -0
- package/src/assets/icons/ico-counterparty.svg +7 -0
- package/src/assets/icons/ico-coworkers.svg +7 -0
- package/src/assets/icons/ico-debt.svg +7 -0
- package/src/assets/icons/ico-director.svg +7 -0
- package/src/assets/icons/ico-doc.svg +24 -0
- package/src/assets/icons/ico-docDocprimary.svg +9 -0
- package/src/assets/icons/ico-docs.svg +7 -0
- package/src/assets/icons/ico-door.svg +7 -0
- package/src/assets/icons/ico-dotted-more-horizontal.svg +7 -0
- package/src/assets/icons/ico-doubleArrows.svg +8 -0
- package/src/assets/icons/ico-download.svg +10 -0
- package/src/assets/icons/ico-eagle.svg +7 -0
- package/src/assets/icons/ico-edit.svg +7 -0
- package/src/assets/icons/ico-edo.svg +7 -0
- package/src/assets/icons/ico-email.svg +7 -0
- package/src/assets/icons/ico-email1.svg +7 -0
- package/src/assets/icons/ico-error.svg +4 -0
- package/src/assets/icons/ico-exit.svg +5 -0
- package/src/assets/icons/ico-eye.svg +7 -0
- package/src/assets/icons/ico-eyeClose.svg +7 -0
- package/src/assets/icons/ico-faq.svg +7 -0
- package/src/assets/icons/ico-farm.svg +7 -0
- package/src/assets/icons/ico-filter.svg +7 -0
- package/src/assets/icons/ico-fine.svg +7 -0
- package/src/assets/icons/ico-gasket.svg +7 -0
- package/src/assets/icons/ico-generator.svg +7 -0
- package/src/assets/icons/ico-grade-2.svg +7 -0
- package/src/assets/icons/ico-grade.svg +15 -0
- package/src/assets/icons/ico-ground-area-transport.svg +7 -0
- package/src/assets/icons/ico-groundArea.svg +7 -0
- package/src/assets/icons/ico-groupen.svg +7 -0
- package/src/assets/icons/ico-hands.svg +31 -0
- package/src/assets/icons/ico-help.svg +7 -0
- package/src/assets/icons/ico-ico-history.svg +15 -0
- package/src/assets/icons/ico-info.svg +15 -0
- package/src/assets/icons/ico-infoFill.svg +7 -0
- package/src/assets/icons/ico-invite.svg +16 -0
- package/src/assets/icons/ico-key.svg +14 -0
- package/src/assets/icons/ico-keyFill.svg +7 -0
- package/src/assets/icons/ico-letter.svg +7 -0
- package/src/assets/icons/ico-level-down.svg +7 -0
- package/src/assets/icons/ico-level-up.svg +7 -0
- package/src/assets/icons/ico-level.svg +7 -0
- package/src/assets/icons/ico-licence.svg +24 -0
- package/src/assets/icons/ico-limit.svg +10 -0
- package/src/assets/icons/ico-link-2.svg +7 -0
- package/src/assets/icons/ico-link.svg +13 -0
- package/src/assets/icons/ico-listadd.svg +7 -0
- package/src/assets/icons/ico-listing.svg +10 -0
- package/src/assets/icons/ico-lock.svg +7 -0
- package/src/assets/icons/ico-locked.svg +7 -0
- package/src/assets/icons/ico-megafon.svg +21 -0
- package/src/assets/icons/ico-new-window.svg +7 -0
- package/src/assets/icons/ico-notification.svg +7 -0
- package/src/assets/icons/ico-notificationOff.svg +13 -0
- package/src/assets/icons/ico-percent-alert.svg +7 -0
- package/src/assets/icons/ico-plus.svg +5 -0
- package/src/assets/icons/ico-referal.svg +7 -0
- package/src/assets/icons/ico-repeat.svg +7 -0
- package/src/assets/icons/ico-reset.svg +7 -0
- package/src/assets/icons/ico-return.svg +7 -0
- package/src/assets/icons/ico-search.svg +7 -0
- package/src/assets/icons/ico-setting.svg +16 -0
- package/src/assets/icons/ico-settings.svg +15 -0
- package/src/assets/icons/ico-site.svg +7 -0
- package/src/assets/icons/ico-snowflake.svg +7 -0
- package/src/assets/icons/ico-spec.svg +12 -0
- package/src/assets/icons/ico-statement.svg +7 -0
- package/src/assets/icons/ico-subuser.svg +24 -0
- package/src/assets/icons/ico-sun.svg +9 -0
- package/src/assets/icons/ico-sunrise.svg +46 -0
- package/src/assets/icons/ico-support.svg +21 -0
- package/src/assets/icons/ico-target.svg +12 -0
- package/src/assets/icons/ico-team.svg +7 -0
- package/src/assets/icons/ico-tech.svg +15 -0
- package/src/assets/icons/ico-telegram.svg +7 -0
- package/src/assets/icons/ico-time.svg +7 -0
- package/src/assets/icons/ico-trash.svg +7 -0
- package/src/assets/icons/ico-try.svg +27 -0
- package/src/assets/icons/ico-txt.svg +16 -0
- package/src/assets/icons/ico-unlock.svg +7 -0
- package/src/assets/icons/ico-upload.svg +10 -0
- package/src/assets/icons/ico-user-2.svg +7 -0
- package/src/assets/icons/ico-user.svg +7 -0
- package/src/assets/icons/ico-users-2.svg +7 -0
- package/src/assets/icons/ico-users.svg +7 -0
- package/src/assets/icons/ico-video-play.svg +7 -0
- package/src/assets/icons/ico-warning.svg +4 -0
- package/src/assets/icons/ico-warranty-shield.svg +9 -0
- package/src/assets/icons/ico-warranty.svg +7 -0
- package/src/assets/icons/ico-xml.svg +18 -0
- package/src/assets/icons/id-card.svg +7 -0
- package/src/assets/icons/image.svg +7 -0
- package/src/assets/icons/images.svg +7 -0
- package/src/assets/icons/inbox.svg +7 -0
- package/src/assets/icons/info-circle.svg +7 -0
- package/src/assets/icons/info.svg +7 -0
- package/src/assets/icons/link.svg +7 -0
- package/src/assets/icons/list.svg +7 -0
- package/src/assets/icons/lock-open.svg +7 -0
- package/src/assets/icons/lock.svg +7 -0
- package/src/assets/icons/map.svg +7 -0
- package/src/assets/icons/mapYandex.svg +9 -0
- package/src/assets/icons/microsoft.svg +7 -0
- package/src/assets/icons/minus-circle.svg +7 -0
- package/src/assets/icons/minus.svg +7 -0
- package/src/assets/icons/mobile.svg +7 -0
- package/src/assets/icons/money-bill.svg +7 -0
- package/src/assets/icons/moon.svg +6 -0
- package/src/assets/icons/paperclip.svg +7 -0
- package/src/assets/icons/pause.svg +7 -0
- package/src/assets/icons/pencil.svg +7 -0
- package/src/assets/icons/percentage.svg +7 -0
- package/src/assets/icons/phone.svg +7 -0
- package/src/assets/icons/pie-chart.svg +8 -0
- package/src/assets/icons/plus-circle.svg +7 -0
- package/src/assets/icons/power-off.svg +7 -0
- package/src/assets/icons/print.svg +7 -0
- package/src/assets/icons/qrcode.svg +7 -0
- package/src/assets/icons/question-circle.svg +7 -0
- package/src/assets/icons/refresh.svg +4 -0
- package/src/assets/icons/replay.svg +7 -0
- package/src/assets/icons/reply.svg +7 -0
- package/src/assets/icons/reset.svg +7 -0
- package/src/assets/icons/search-minus.svg +7 -0
- package/src/assets/icons/search-plus.svg +7 -0
- package/src/assets/icons/search.svg +7 -0
- package/src/assets/icons/send.svg +7 -0
- package/src/assets/icons/server.svg +7 -0
- package/src/assets/icons/share-alt.svg +7 -0
- package/src/assets/icons/shield.svg +7 -0
- package/src/assets/icons/sitemap.svg +7 -0
- package/src/assets/icons/sliders-v.svg +7 -0
- package/src/assets/icons/sort-alpha-alt-down.svg +7 -0
- package/src/assets/icons/sort-alpha-alt-up.svg +7 -0
- package/src/assets/icons/sort-alpha-down.svg +7 -0
- package/src/assets/icons/sort-alpha-up.svg +7 -0
- package/src/assets/icons/sort-alt-slash.svg +7 -0
- package/src/assets/icons/sort-alt.svg +7 -0
- package/src/assets/icons/sort-amount-down-alt.svg +7 -0
- package/src/assets/icons/sort-amount-down.svg +7 -0
- package/src/assets/icons/sort-amount-up-alt.svg +7 -0
- package/src/assets/icons/sort-amount-up.svg +7 -0
- package/src/assets/icons/sort-numeric-alt-down.svg +7 -0
- package/src/assets/icons/sort-numeric-alt-up.svg +7 -0
- package/src/assets/icons/sort-numeric-down.svg +7 -0
- package/src/assets/icons/sort-numeric-up.svg +7 -0
- package/src/assets/icons/spinner.svg +7 -0
- package/src/assets/icons/star-fill.svg +7 -0
- package/src/assets/icons/star.svg +7 -0
- package/src/assets/icons/stock.svg +8 -0
- package/src/assets/icons/stop.svg +7 -0
- package/src/assets/icons/sync.svg +7 -0
- package/src/assets/icons/table.svg +7 -0
- package/src/assets/icons/tablet.svg +7 -0
- package/src/assets/icons/tag.svg +7 -0
- package/src/assets/icons/tags.svg +7 -0
- package/src/assets/icons/telegram.svg +7 -0
- package/src/assets/icons/th-large.svg +7 -0
- package/src/assets/icons/ticket.svg +7 -0
- package/src/assets/icons/times-circle.svg +7 -0
- package/src/assets/icons/trash.svg +7 -0
- package/src/assets/icons/undo.svg +7 -0
- package/src/assets/icons/unlock.svg +7 -0
- package/src/assets/icons/user-edit.svg +7 -0
- package/src/assets/icons/user-minus.svg +7 -0
- package/src/assets/icons/user-plus.svg +7 -0
- package/src/assets/icons/user.svg +7 -0
- package/src/assets/icons/users.svg +7 -0
- package/src/assets/icons/video.svg +7 -0
- package/src/assets/icons/volume-down.svg +7 -0
- package/src/assets/icons/volume-off.svg +7 -0
- package/src/assets/icons/volume-up.svg +7 -0
- package/src/assets/icons/wallet.svg +7 -0
- package/src/assets/icons/warning.svg +13 -0
- package/src/assets/icons/wifi.svg +7 -0
- package/src/assets/icons/window-maximize.svg +7 -0
- package/src/assets/icons/window-minimize.svg +7 -0
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +22 -0
- package/src/lib/components/aside/header/rt-aside-header.component.scss +88 -0
- package/src/lib/components/aside/rt-aside.component.scss +208 -0
- package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +39 -0
- package/src/lib/components/aside-section/rt-aside-section.component.scss +30 -0
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +143 -0
- package/src/lib/components/bar-list/rt-bar-list.component.scss +95 -0
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +71 -0
- package/src/lib/components/button/rt-button.directive.scss +268 -0
- package/src/lib/components/calendar/rt-calendar.component.scss +132 -0
- package/src/lib/components/card/rt-card.component.scss +57 -0
- package/src/lib/components/chat/rt-chat.component.scss +366 -0
- package/src/lib/components/checkbox/rt-checkbox.component.scss +57 -0
- package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +43 -0
- package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -0
- package/src/lib/components/container/rt-container.component.scss +175 -0
- package/src/lib/components/counter/rt-counter.component.scss +15 -0
- package/src/lib/components/counter-row/rt-counter-row.component.scss +33 -0
- package/src/lib/components/date-picker/rt-date-picker.component.scss +89 -0
- package/src/lib/components/delta-view/rt-delta-view.component.scss +31 -0
- package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -0
- package/src/lib/components/detail-list/rt-detail-row.component.scss +21 -0
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +13 -0
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -0
- package/src/lib/components/dialog/rt-dialog.component.scss +62 -0
- package/src/lib/components/download-link/rt-download-link.component.scss +22 -0
- package/src/lib/components/empty-state/rt-empty-state.component.scss +58 -0
- package/src/lib/components/field/rt-field.component.scss +78 -0
- package/src/lib/components/file-card/rt-file-card.component.scss +96 -0
- package/src/lib/components/file-drop/rt-file-drop.component.scss +91 -0
- package/src/lib/components/file-input/rt-file-input.component.scss +25 -0
- package/src/lib/components/file-list/rt-file-list.component.scss +8 -0
- package/src/lib/components/filter-control/rt-filter-control.component.scss +20 -0
- package/src/lib/components/header/rt-header.component.scss +67 -0
- package/src/lib/components/icon/rt-icon.component.scss +17 -0
- package/src/lib/components/icon-button/rt-icon-button.component.scss +139 -0
- package/src/lib/components/info-item/rt-info-item.component.scss +46 -0
- package/src/lib/components/input/rt-input.component.scss +120 -0
- package/src/lib/components/input-number/rt-input-number.component.scss +102 -0
- package/src/lib/components/live-badge/rt-live-badge.component.scss +28 -0
- package/src/lib/components/logo/rt-logo.component.scss +64 -0
- package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +36 -0
- package/src/lib/components/menu/rt-menu-item.component.scss +54 -0
- package/src/lib/components/menu/rt-menu.component.scss +19 -0
- package/src/lib/components/message/rt-message.component.scss +58 -0
- package/src/lib/components/message-composer/rt-message-composer.component.scss +59 -0
- package/src/lib/components/money-list/rt-money-list.component.scss +11 -0
- package/src/lib/components/money-list/rt-money-row.component.scss +25 -0
- package/src/lib/components/multiselect/rt-multiselect.component.scss +198 -0
- package/src/lib/components/night-grid/rt-night-grid.component.scss +43 -0
- package/src/lib/components/note/rt-note.component.scss +13 -0
- package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +32 -0
- package/src/lib/components/page-header/rt-page-header-mobile.scss +156 -0
- package/src/lib/components/page-header/rt-page-header-submenu.scss +147 -0
- package/src/lib/components/page-header/rt-page-header.component.scss +257 -0
- package/src/lib/components/pagination/rt-pagination.component.scss +102 -0
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +131 -0
- package/src/lib/components/rich-editor/rt-rich-editor.component.scss +71 -0
- package/src/lib/components/section-nav/rt-section-nav.component.scss +52 -0
- package/src/lib/components/select/rt-select.component.scss +173 -0
- package/src/lib/components/skeleton/rt-skeleton.component.scss +56 -0
- package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +4 -0
- package/src/lib/components/spinner/rt-spinner.component.scss +42 -0
- package/src/lib/components/split-button/rt-split-button.component.scss +64 -0
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +108 -0
- package/src/lib/components/stepper/rt-stepper.component.scss +117 -0
- package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +40 -0
- package/src/lib/components/table/rt-table.component.scss +312 -0
- package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +5 -0
- package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +77 -0
- package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +39 -0
- package/src/lib/components/tabs/rt-tabs.component.scss +219 -0
- package/src/lib/components/tag/rt-tag.component.scss +95 -0
- package/src/lib/components/textarea/rt-textarea.component.scss +78 -0
- package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +3 -0
- package/src/lib/components/thread-list/rt-thread-list.component.scss +248 -0
- package/src/lib/components/timeline/rt-timeline.component.scss +95 -0
- package/src/lib/components/toast/rt-toast.component.scss +201 -0
- package/src/lib/components/toast/rt-toaster.component.scss +45 -0
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +138 -0
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +98 -0
- package/src/lib/components/toolbar/rt-toolbar.component.scss +69 -0
- package/src/lib/components/tooltip/rt-tooltip.component.scss +18 -0
- package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +48 -0
- package/src/lib/components/workspace/rt-workspace.component.scss +173 -0
- package/src/lib/components/workspace-details/rt-workspace-details.component.scss +128 -0
- package/src/styles/_breakpoints.scss +7 -0
- package/src/styles/_index.scss +13 -0
- package/src/styles/_login.scss +97 -0
- package/src/styles/_mixins.scss +21 -0
- package/src/styles/_primitives.scss +222 -0
- package/src/styles/_scrollbar.scss +24 -0
- package/src/styles/_semantic.scss +297 -0
- package/src/styles/_theme-dark.scss +123 -0
- package/styles/tokens.css +810 -0
- package/types/rt-tools-ui-kit-v2.d.ts +5673 -0
|
@@ -0,0 +1,810 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* Primitive design tokens — single source of truth для шкал. */
|
|
3
|
+
:root {
|
|
4
|
+
/* Neutral scale — серо-сине-стальная. */
|
|
5
|
+
--rt-neutral-0: #fff;
|
|
6
|
+
--rt-neutral-50: #fafafa;
|
|
7
|
+
--rt-neutral-100: #f6f7f9;
|
|
8
|
+
--rt-neutral-150: #eef0f4;
|
|
9
|
+
--rt-neutral-200: #e6e6e6;
|
|
10
|
+
--rt-neutral-250: #d2d2d2;
|
|
11
|
+
--rt-neutral-280: #bebebe;
|
|
12
|
+
--rt-neutral-300: #cad5e2;
|
|
13
|
+
--rt-neutral-350: #b1b1b1;
|
|
14
|
+
--rt-neutral-400: #90a1b9;
|
|
15
|
+
--rt-neutral-420: #9e9e9e;
|
|
16
|
+
--rt-neutral-450: #909090;
|
|
17
|
+
--rt-neutral-520: #707070;
|
|
18
|
+
--rt-neutral-500: #7e7e7e;
|
|
19
|
+
/* Самый светлый серый, проходящий порог AA (4.5:1) на белом — 4.54:1.
|
|
20
|
+
Ниже него подпись на светлой поверхности порог не берёт. */
|
|
21
|
+
--rt-neutral-510: #767676;
|
|
22
|
+
--rt-neutral-550: #666;
|
|
23
|
+
--rt-neutral-600: #6b7280;
|
|
24
|
+
--rt-neutral-700: #3b4557;
|
|
25
|
+
--rt-neutral-800: #364152;
|
|
26
|
+
--rt-neutral-900: #1f1f1f;
|
|
27
|
+
--rt-neutral-950: #122341;
|
|
28
|
+
/* Blue — brand accent */
|
|
29
|
+
--rt-blue-50: #eff6ff;
|
|
30
|
+
--rt-blue-100: #dbeafe;
|
|
31
|
+
--rt-blue-150: #ddebf6;
|
|
32
|
+
--rt-blue-300: #93c5fd;
|
|
33
|
+
--rt-blue-400: #5496ff; /* отметка прочтения в чате */
|
|
34
|
+
--rt-blue-500: #155dfc; /* brand */
|
|
35
|
+
--rt-blue-600: #0e4ad6;
|
|
36
|
+
--rt-blue-700: #0c3fb0;
|
|
37
|
+
--rt-blue-900: #182142;
|
|
38
|
+
/* Charcoal — тёплый графит для тёмной темы. */
|
|
39
|
+
--rt-charcoal-950: #17181c; /* глубокий фон / приподнятая alt-поверхность, subtle */
|
|
40
|
+
--rt-charcoal-900: #1b1f22; /* фон страницы */
|
|
41
|
+
--rt-charcoal-800: #222629; /* основная поверхность / карточка */
|
|
42
|
+
--rt-charcoal-700: #2a2f33; /* hover / приподнятая поверхность / secondary action */
|
|
43
|
+
--rt-charcoal-border: #33383d; /* граница по умолчанию */
|
|
44
|
+
--rt-charcoal-border-strong: #444a50; /* усиленная граница */
|
|
45
|
+
/* Stepper rail — приглушённые оттенки трека/прогресса прогресс-полосы. */
|
|
46
|
+
--rt-gray-350: #b3b3b3; /* трек, light */
|
|
47
|
+
--rt-navy-600: #435775; /* трек, dark */
|
|
48
|
+
--rt-slate-300: #a9b8cd; /* пройденный прогресс, dark */
|
|
49
|
+
/* Status — success/warning/danger/info */
|
|
50
|
+
--rt-success-50: #ecfdf5;
|
|
51
|
+
--rt-success-100: #eafaf5;
|
|
52
|
+
--rt-success-500: #059669;
|
|
53
|
+
--rt-success-600: #047857;
|
|
54
|
+
--rt-success-700: #088e63;
|
|
55
|
+
--rt-warning-50: #fffbeb;
|
|
56
|
+
--rt-warning-500: #d97706;
|
|
57
|
+
--rt-warning-600: #b45309;
|
|
58
|
+
--rt-yellow-400: #f4d85a;
|
|
59
|
+
--rt-amber-400: #f49f5a;
|
|
60
|
+
--rt-danger-50: #fef2f2;
|
|
61
|
+
--rt-danger-500: #dc2626;
|
|
62
|
+
--rt-danger-600: #d32f2f;
|
|
63
|
+
--rt-danger-700: #b91c1c;
|
|
64
|
+
--rt-info-50: #eff6ff;
|
|
65
|
+
--rt-info-500: #2563eb;
|
|
66
|
+
--rt-info-600: #1d4ed8;
|
|
67
|
+
/* Spacing — 8px base (off-grid half-steps помечены @deprecated). */
|
|
68
|
+
--rt-space-0: 0;
|
|
69
|
+
--rt-space-0-5: 2px;
|
|
70
|
+
--rt-space-1: 4px;
|
|
71
|
+
/* @deprecated off-grid — округлять к --rt-space-2 (8) или --rt-space-1 (4). */
|
|
72
|
+
--rt-space-1-5: 6px;
|
|
73
|
+
--rt-space-2: 8px;
|
|
74
|
+
/* @deprecated off-grid — округлять к --rt-space-2 (8) или --rt-space-md (16). */
|
|
75
|
+
--rt-space-2-5: 10px;
|
|
76
|
+
/* @deprecated off-grid — округлять к --rt-space-md (16). */
|
|
77
|
+
--rt-space-3: 12px;
|
|
78
|
+
--rt-space-4: 16px;
|
|
79
|
+
--rt-space-5: 20px;
|
|
80
|
+
--rt-space-6: 24px;
|
|
81
|
+
/* @deprecated off-grid — заведён под промежуток между группами панели навигации. */
|
|
82
|
+
--rt-space-7: 28px;
|
|
83
|
+
--rt-space-8: 32px;
|
|
84
|
+
--rt-space-10: 40px;
|
|
85
|
+
--rt-space-12: 48px;
|
|
86
|
+
--rt-space-16: 64px;
|
|
87
|
+
--rt-space-20: 80px;
|
|
88
|
+
--rt-space-24: 96px;
|
|
89
|
+
/* Radius */
|
|
90
|
+
--rt-radius-none: 0;
|
|
91
|
+
--rt-radius-xs: 2px;
|
|
92
|
+
--rt-radius-sm: 4px;
|
|
93
|
+
--rt-radius-ms: 6px;
|
|
94
|
+
--rt-radius-md: 8px;
|
|
95
|
+
--rt-radius-lg: 10px;
|
|
96
|
+
--rt-radius-xl: 15px;
|
|
97
|
+
--rt-radius-2xl: 20px;
|
|
98
|
+
--rt-radius-full: 9999px;
|
|
99
|
+
/* Typography — font-family */
|
|
100
|
+
/* Noto-начертания идут после Montserrat запасными: они подхватывают тайский,
|
|
101
|
+
хангыль и деванагари, которых в основном шрифте нет, и не трогают латиницу
|
|
102
|
+
с кириллицей — браузер берёт из них только недостающие знаки. */
|
|
103
|
+
--rt-font-family-sans: 'Montserrat', 'Noto Sans Thai', 'Noto Sans KR', 'Noto Sans Devanagari', system-ui, sans-serif;
|
|
104
|
+
--rt-font-family-mono: 'JetBrains Mono', ui-monospace, monospace;
|
|
105
|
+
/* Typography — text size scale */
|
|
106
|
+
/* Ступень ниже 2xs — только для узких экранов: цена в клетке календаря
|
|
107
|
+
набрана неразрывным пробелом и не переносится, поэтому семь колонок
|
|
108
|
+
упираются в ширину строки, а не в отступы */
|
|
109
|
+
--rt-text-3xs: 9px;
|
|
110
|
+
--rt-text-2xs: 10px;
|
|
111
|
+
--rt-text-xs: 12px;
|
|
112
|
+
--rt-text-sm: 14px;
|
|
113
|
+
--rt-text-md: 16px;
|
|
114
|
+
--rt-text-lg: 18px;
|
|
115
|
+
--rt-text-xl: 20px;
|
|
116
|
+
--rt-text-2xl: 24px;
|
|
117
|
+
--rt-text-3xl: 32px;
|
|
118
|
+
--rt-text-4xl: 40px;
|
|
119
|
+
/* Typography — line-height */
|
|
120
|
+
--rt-leading-none: 1;
|
|
121
|
+
--rt-leading-tight: 1.2;
|
|
122
|
+
--rt-leading-snug: 1.35;
|
|
123
|
+
--rt-leading-normal: 1.5;
|
|
124
|
+
--rt-leading-relaxed: 1.65;
|
|
125
|
+
/* Typography — font-weight */
|
|
126
|
+
--rt-font-weight-regular: 400;
|
|
127
|
+
--rt-font-weight-medium: 500;
|
|
128
|
+
--rt-font-weight-semibold: 600;
|
|
129
|
+
--rt-font-weight-bold: 700;
|
|
130
|
+
/* Shadows — shadow-card литерал (НЕ алиас на shadow-md) */
|
|
131
|
+
--rt-shadow-none: none;
|
|
132
|
+
--rt-shadow-sm: 0 1px 2px rgb(0 0 0 / 5%);
|
|
133
|
+
--rt-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 6%);
|
|
134
|
+
--rt-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 6%);
|
|
135
|
+
--rt-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 12%), 0 8px 10px -6px rgb(0 0 0 / 8%);
|
|
136
|
+
--rt-shadow-card: 0 4px 16px rgb(0 0 0 / 8%);
|
|
137
|
+
/* Soft glow shadow для карточек/секций — широкое размытие. */
|
|
138
|
+
--rt-shadow-card-soft: 0 0 40px rgb(0 0 0 / 10%);
|
|
139
|
+
/* Тень панели навигации — три слоя от плотного к рассеянному: панель на
|
|
140
|
+
полтора экрана шириной должна отделяться от страницы без тёмной кромки. */
|
|
141
|
+
--rt-shadow-nav-panel: 0 8px 24px rgb(0 0 0 / 8%), 0 12px 32px rgb(0 0 0 / 4%), 0 16px 48px rgb(0 0 0 / 2%);
|
|
142
|
+
/* Тень попапа профиля — один плотный слой: панель узкая, и рассеянные слои
|
|
143
|
+
панели навигации размазывают её край вместо того, чтобы его очертить. */
|
|
144
|
+
--rt-shadow-profile-menu: 0 16px 32px rgb(0 0 0 / 15%);
|
|
145
|
+
/* Form-control size primitives — raw-шкала высот/min-height для полей.
|
|
146
|
+
Semantic-слой (--rt-input-*) ссылается на эти значения. */
|
|
147
|
+
--rt-control-height-sm: 36px;
|
|
148
|
+
--rt-control-height-md: 45px;
|
|
149
|
+
--rt-control-height-lg: 52px;
|
|
150
|
+
--rt-control-textarea-min-height-sm: 80px;
|
|
151
|
+
--rt-control-textarea-min-height-md: 120px;
|
|
152
|
+
--rt-control-textarea-min-height-lg: 160px;
|
|
153
|
+
--rt-control-panel-max-height: 256px;
|
|
154
|
+
--rt-control-max-width: 400px;
|
|
155
|
+
/* Opacity states */
|
|
156
|
+
--rt-opacity-disabled: 0.6;
|
|
157
|
+
/* Motion */
|
|
158
|
+
--rt-duration-fast: 120ms;
|
|
159
|
+
--rt-duration-base: 200ms;
|
|
160
|
+
--rt-duration-slow: 400ms;
|
|
161
|
+
--rt-duration-slower: 500ms;
|
|
162
|
+
/* Typography helpers */
|
|
163
|
+
--rt-letter-spacing-wide: 0.03em;
|
|
164
|
+
/* Border-width */
|
|
165
|
+
--rt-border-width-thin: 1px;
|
|
166
|
+
--rt-border-width-medium: 2px;
|
|
167
|
+
--rt-border-width-thick: 3px;
|
|
168
|
+
/* Alpha overlays — для backdrop'ов и focus-ring tint'ов. */
|
|
169
|
+
--rt-overlay-black-4: rgb(0 0 0 / 4%);
|
|
170
|
+
--rt-overlay-white-4: rgb(255 255 255 / 4%);
|
|
171
|
+
--rt-overlay-white-25: rgb(250 250 250 / 25%); /* disabled-текст на графите */
|
|
172
|
+
--rt-overlay-white-40: rgb(250 250 250 / 40%); /* muted-текст на графите */
|
|
173
|
+
--rt-overlay-black-50: rgb(0 0 0 / 50%);
|
|
174
|
+
--rt-overlay-blue-8: rgb(21 93 252 / 8%);
|
|
175
|
+
--rt-overlay-blue-24: rgb(21 93 252 / 24%);
|
|
176
|
+
--rt-overlay-danger-16: rgb(220 38 38 / 16%);
|
|
177
|
+
--rt-overlay-amber-16: rgb(244 159 90 / 16%);
|
|
178
|
+
/* Z-index */
|
|
179
|
+
--rt-z-base: 0;
|
|
180
|
+
--rt-z-dropdown: 1000;
|
|
181
|
+
--rt-z-sticky: 1100;
|
|
182
|
+
--rt-z-fixed: 1200;
|
|
183
|
+
--rt-z-modal-backdrop: 1300;
|
|
184
|
+
--rt-z-modal: 1400;
|
|
185
|
+
--rt-z-popover: 1500;
|
|
186
|
+
--rt-z-tooltip: 1600;
|
|
187
|
+
/* Breakpoints — справочные CSS-vars (для JS-чтения `getComputedStyle`);
|
|
188
|
+
реальные media queries используют SCSS-переменные из `_breakpoints.scss`. */
|
|
189
|
+
--rt-bp-sm: 480px;
|
|
190
|
+
--rt-bp-md: 768px;
|
|
191
|
+
--rt-bp-lg: 1080px;
|
|
192
|
+
--rt-bp-xl: 1380px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* Semantic design tokens — light defaults. */
|
|
196
|
+
:root {
|
|
197
|
+
/* Background */
|
|
198
|
+
--rt-color-bg-page: var(--rt-neutral-50);
|
|
199
|
+
--rt-color-bg-surface: var(--rt-neutral-0);
|
|
200
|
+
--rt-color-bg-surface-subtle: var(--rt-neutral-100);
|
|
201
|
+
--rt-color-bg-surface-subtle-2: var(--rt-neutral-200);
|
|
202
|
+
--rt-color-bg-hover: var(--rt-neutral-100);
|
|
203
|
+
--rt-color-bg-subtle: var(--rt-neutral-100);
|
|
204
|
+
--rt-color-bg-overlay: var(--rt-overlay-black-50);
|
|
205
|
+
--rt-color-bg-inverse: var(--rt-neutral-900);
|
|
206
|
+
/* Text */
|
|
207
|
+
--rt-color-text-primary: var(--rt-neutral-900);
|
|
208
|
+
--rt-color-text-muted: var(--rt-neutral-500);
|
|
209
|
+
--rt-color-text-disabled: var(--rt-neutral-400);
|
|
210
|
+
--rt-color-text-inverse: var(--rt-neutral-0);
|
|
211
|
+
--rt-color-text-link: var(--rt-blue-500);
|
|
212
|
+
--rt-color-text-link-hover: var(--rt-blue-600);
|
|
213
|
+
/* Border */
|
|
214
|
+
--rt-color-border-default: var(--rt-neutral-200);
|
|
215
|
+
--rt-color-border-strong: var(--rt-neutral-300);
|
|
216
|
+
--rt-color-border-subtle: var(--rt-neutral-200);
|
|
217
|
+
--rt-color-border-focus: var(--rt-blue-500);
|
|
218
|
+
/* Action */
|
|
219
|
+
--rt-color-action-primary: var(--rt-blue-500);
|
|
220
|
+
--rt-color-action-primary-hover: var(--rt-blue-600);
|
|
221
|
+
--rt-color-action-primary-subtle: var(--rt-overlay-blue-8);
|
|
222
|
+
/* Focus-ring tint — насыщеннее subtle, для visible 3px outline. */
|
|
223
|
+
--rt-color-action-primary-soft: var(--rt-overlay-blue-24);
|
|
224
|
+
--rt-color-action-on-primary: var(--rt-neutral-0);
|
|
225
|
+
--rt-color-action-secondary: var(--rt-neutral-200);
|
|
226
|
+
--rt-color-action-on-secondary: var(--rt-neutral-900);
|
|
227
|
+
/* Focus-ring composite — для interactive элементов с custom focus-visible. */
|
|
228
|
+
--rt-shadow-focus-ring: 0 0 0 3px var(--rt-color-action-primary-soft);
|
|
229
|
+
--rt-shadow-focus-ring-danger: 0 0 0 3px var(--rt-overlay-danger-16);
|
|
230
|
+
/* Stepper (rt-stepper) — рельса прогресса. Текущий шаг — янтарный (одинаков
|
|
231
|
+
в обеих темах); трек/прогресс переопределяются в dark на приглушённые. */
|
|
232
|
+
--rt-color-stepper-current: var(--rt-amber-400);
|
|
233
|
+
--rt-color-stepper-current-subtle: var(--rt-overlay-amber-16);
|
|
234
|
+
--rt-color-stepper-track: var(--rt-gray-350);
|
|
235
|
+
--rt-color-stepper-progress: var(--rt-color-action-primary);
|
|
236
|
+
/* Step-indicator ring — halo вокруг активного пункта rt-stepper. */
|
|
237
|
+
--rt-shadow-step-indicator: 0 0 0 4px var(--rt-color-stepper-current-subtle);
|
|
238
|
+
/* Status-dot ring — halo вокруг точки «объект занят сейчас». */
|
|
239
|
+
--rt-shadow-status-dot: 0 0 0 3px var(--rt-color-state-success-bg);
|
|
240
|
+
/* State */
|
|
241
|
+
--rt-color-state-success: var(--rt-success-500);
|
|
242
|
+
--rt-color-state-success-bg: var(--rt-success-50);
|
|
243
|
+
--rt-color-state-warning: var(--rt-warning-500);
|
|
244
|
+
--rt-color-state-warning-bg: var(--rt-warning-50);
|
|
245
|
+
--rt-color-state-danger: var(--rt-danger-500);
|
|
246
|
+
--rt-color-state-danger-bg: var(--rt-danger-50);
|
|
247
|
+
--rt-color-state-error-text: var(--rt-danger-600);
|
|
248
|
+
--rt-color-state-info: var(--rt-info-500);
|
|
249
|
+
--rt-color-state-info-bg: var(--rt-info-50);
|
|
250
|
+
/* Chat — пузыри переписки. Входящее и своё различаются фоном, а не рамкой:
|
|
251
|
+
рамка на каждом пузыре дробит ленту. Отметка прочтения синяя — единственный
|
|
252
|
+
цветной элемент подвала пузыря, остальные статусы приглушены. */
|
|
253
|
+
--rt-chat-bubble-in-bg: var(--rt-blue-50);
|
|
254
|
+
--rt-chat-bubble-in-author: var(--rt-blue-700);
|
|
255
|
+
--rt-chat-bubble-own-bg: var(--rt-neutral-100);
|
|
256
|
+
--rt-chat-bubble-own-author: var(--rt-neutral-500);
|
|
257
|
+
--rt-chat-bubble-date: var(--rt-color-text-muted);
|
|
258
|
+
--rt-chat-status-read: var(--rt-blue-400);
|
|
259
|
+
/* Special — Auth surface (gradient bg + transparent card в dark) */
|
|
260
|
+
--rt-color-bg-page-auth: var(--rt-neutral-50);
|
|
261
|
+
--rt-color-bg-surface-auth-card: var(--rt-neutral-0);
|
|
262
|
+
/* Spacing aliases — named semantic aliases на primitive numeric scale */
|
|
263
|
+
--rt-space-2xs: 2px;
|
|
264
|
+
--rt-space-xs: var(--rt-space-1); /* 4px */
|
|
265
|
+
--rt-space-sm: var(--rt-space-2); /* 8px */
|
|
266
|
+
--rt-space-md: var(--rt-space-4); /* 16px */
|
|
267
|
+
--rt-space-lg: var(--rt-space-6); /* 24px */
|
|
268
|
+
--rt-space-xl: var(--rt-space-8); /* 32px */
|
|
269
|
+
--rt-space-2xl: var(--rt-space-12); /* 48px */
|
|
270
|
+
--rt-space-3xl: var(--rt-space-16); /* 64px */
|
|
271
|
+
/* Text size base — semantic alias для default body text */
|
|
272
|
+
--rt-text-base: 16px;
|
|
273
|
+
/* Form input — composition tokens. Единый контракт для всего input-семейства
|
|
274
|
+
(rt-input, rt-input-number, rt-autocomplete, rt-select, rt-multiselect,
|
|
275
|
+
rt-textarea). Namespace --rt-input-* / --rt-textarea-*. Компоненты
|
|
276
|
+
потребляют ТОЛЬКО эти токены, не primitives и не литералы. */
|
|
277
|
+
/* Colors */
|
|
278
|
+
--rt-input-color-bg: var(--rt-color-bg-surface-subtle);
|
|
279
|
+
--rt-input-color-bg-disabled: var(--rt-color-bg-surface-subtle);
|
|
280
|
+
--rt-input-color-bg-hover: var(--rt-overlay-black-4);
|
|
281
|
+
--rt-input-color-border: var(--rt-color-border-default);
|
|
282
|
+
--rt-input-color-border-focus: var(--rt-color-action-primary);
|
|
283
|
+
--rt-input-color-border-error: var(--rt-color-state-danger);
|
|
284
|
+
--rt-input-color-text: var(--rt-color-text-primary);
|
|
285
|
+
--rt-input-color-text-placeholder: var(--rt-color-text-muted);
|
|
286
|
+
/* Sizes (single-line height scale) */
|
|
287
|
+
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
288
|
+
--rt-input-height-md: var(--rt-control-height-md);
|
|
289
|
+
--rt-input-height-lg: var(--rt-control-height-lg);
|
|
290
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
291
|
+
/* Кап ширины одиночного контрола (input/select) в тулбарах list-страниц —
|
|
292
|
+
внутри flex-баров контрол без ограничения растягивается на всю строку. */
|
|
293
|
+
--rt-input-max-width: var(--rt-control-max-width);
|
|
294
|
+
/* Radius / spacing / border */
|
|
295
|
+
--rt-input-radius: var(--rt-radius-lg);
|
|
296
|
+
--rt-input-padding-x: var(--rt-space-3);
|
|
297
|
+
--rt-input-padding-y: var(--rt-space-0);
|
|
298
|
+
--rt-input-border-width: var(--rt-border-width-thin);
|
|
299
|
+
--rt-input-focus-outline-offset: var(--rt-border-width-thin);
|
|
300
|
+
/* Typography */
|
|
301
|
+
--rt-input-font-size: var(--rt-text-sm);
|
|
302
|
+
--rt-input-line-height: var(--rt-leading-none);
|
|
303
|
+
/* State / motion */
|
|
304
|
+
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
305
|
+
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
306
|
+
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
307
|
+
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
308
|
+
/* Textarea overrides (multi-line) */
|
|
309
|
+
--rt-textarea-min-height-sm: var(--rt-control-textarea-min-height-sm);
|
|
310
|
+
--rt-textarea-min-height-md: var(--rt-control-textarea-min-height-md);
|
|
311
|
+
--rt-textarea-min-height-lg: var(--rt-control-textarea-min-height-lg);
|
|
312
|
+
--rt-textarea-min-height: var(--rt-textarea-min-height-md);
|
|
313
|
+
--rt-textarea-padding-y: var(--rt-space-sm);
|
|
314
|
+
--rt-textarea-line-height: var(--rt-leading-snug);
|
|
315
|
+
/* Dropdown panel (select / multiselect / autocomplete popup). */
|
|
316
|
+
--rt-input-panel-max-height: var(--rt-control-panel-max-height);
|
|
317
|
+
/* Icon-button hover-overlay — отдельный namespace (вне input-family),
|
|
318
|
+
тот же primitive-источник. */
|
|
319
|
+
--rt-icon-button-color-bg-hover: var(--rt-overlay-black-4);
|
|
320
|
+
/* Counter (rt-counter) и строка вокруг него (rt-counter-row). Значение
|
|
321
|
+
набирается табличными цифрами и держит ширину, иначе кнопки прыгают
|
|
322
|
+
при переходе через десяток. */
|
|
323
|
+
--rt-counter-gap: var(--rt-space-sm);
|
|
324
|
+
--rt-counter-value-min-width: 24px;
|
|
325
|
+
--rt-counter-value-font-size: var(--rt-text-md);
|
|
326
|
+
--rt-counter-value-color: var(--rt-color-text-primary);
|
|
327
|
+
--rt-counter-row-gap: var(--rt-space-md);
|
|
328
|
+
--rt-counter-row-padding-y: var(--rt-space-md);
|
|
329
|
+
--rt-counter-row-color-border: var(--rt-color-border-subtle);
|
|
330
|
+
--rt-counter-row-label-font-size: var(--rt-text-md);
|
|
331
|
+
--rt-counter-row-label-color: var(--rt-color-text-primary);
|
|
332
|
+
--rt-counter-row-hint-font-size: var(--rt-text-sm);
|
|
333
|
+
--rt-counter-row-hint-color: var(--rt-color-text-muted);
|
|
334
|
+
/* Toggle-switch (rt-toggle-switch) — трек, бегунок и иконки состояния. */
|
|
335
|
+
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
336
|
+
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
337
|
+
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
338
|
+
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
339
|
+
--rt-toggle-color-icon: var(--rt-amber-400);
|
|
340
|
+
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
341
|
+
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
342
|
+
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
343
|
+
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
344
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
345
|
+
страницы задаёт тот, кто её ставит. */
|
|
346
|
+
--rt-nav-header-padding: var(--rt-space-2-5) var(--rt-space-3);
|
|
347
|
+
--rt-nav-header-color-bg: var(--rt-neutral-150);
|
|
348
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
349
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
350
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
351
|
+
--rt-nav-item-height: 28px;
|
|
352
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
353
|
+
--rt-nav-item-padding: var(--rt-space-1-5) var(--rt-space-2);
|
|
354
|
+
--rt-nav-item-content-gap: var(--rt-space-1-5);
|
|
355
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
356
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
357
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
358
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
359
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
360
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
361
|
+
--rt-nav-item-color-bg: var(--rt-neutral-150);
|
|
362
|
+
--rt-nav-item-color-border: var(--rt-neutral-150);
|
|
363
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
364
|
+
--rt-nav-item-color-caret: var(--rt-neutral-250);
|
|
365
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
366
|
+
же границы. */
|
|
367
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
368
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
369
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
370
|
+
как второй цвет, а не как выключенное состояние. */
|
|
371
|
+
--rt-nav-color-disabled: var(--rt-neutral-350);
|
|
372
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
373
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
374
|
+
список действий, а не как выпадающее меню. */
|
|
375
|
+
--rt-profile-menu-min-width: 240px;
|
|
376
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
377
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
378
|
+
--rt-profile-avatar-size: 42px;
|
|
379
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
380
|
+
--rt-profile-item-padding-y: var(--rt-space-3);
|
|
381
|
+
--rt-profile-item-content-gap: var(--rt-space-2-5);
|
|
382
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
383
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
384
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
385
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
386
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
387
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
388
|
+
--rt-profile-row-inset: var(--rt-space-2-5);
|
|
389
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
390
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
391
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
392
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
393
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
394
|
+
--rt-nav-panel-column-width: 250px;
|
|
395
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
396
|
+
--rt-nav-panel-padding: var(--rt-space-3);
|
|
397
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
398
|
+
--rt-nav-panel-group-gap: var(--rt-space-7);
|
|
399
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
400
|
+
--rt-nav-panel-item-height: 24px;
|
|
401
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
402
|
+
--rt-nav-panel-columns: 1;
|
|
403
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
404
|
+
--rt-nav-panel-color-border: var(--rt-neutral-250);
|
|
405
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
406
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
407
|
+
десятка пунктов под ним читаются построчно. */
|
|
408
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
409
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
410
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
411
|
+
--rt-nav-panel-item-color: var(--rt-neutral-520);
|
|
412
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-150);
|
|
413
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
414
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
415
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
416
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
417
|
+
/* Заголовок группы светлее пункта, но оба берут порог AA на белой панели:
|
|
418
|
+
4.95:1 у пункта и 4.54:1 у заголовка. */
|
|
419
|
+
--rt-nav-panel-group-color: var(--rt-neutral-510);
|
|
420
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-1-5);
|
|
421
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
422
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
423
|
+
содержимого пункта. */
|
|
424
|
+
--rt-nav-caret-size: 12px;
|
|
425
|
+
--rt-nav-marker-size: 4px;
|
|
426
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
427
|
+
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
428
|
+
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
429
|
+
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
430
|
+
токены. */
|
|
431
|
+
--rt-field-gap: var(--rt-space-xs);
|
|
432
|
+
--rt-field-label-font-size: var(--rt-text-sm);
|
|
433
|
+
--rt-field-label-font-weight: var(--rt-font-weight-medium);
|
|
434
|
+
--rt-field-label-color: var(--rt-color-text-muted);
|
|
435
|
+
--rt-field-label-help-gap: var(--rt-space-xs);
|
|
436
|
+
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
437
|
+
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
438
|
+
--rt-field-error-font-size: var(--rt-text-xs);
|
|
439
|
+
--rt-field-error-color: var(--rt-color-state-danger);
|
|
440
|
+
--rt-field-required-color: var(--rt-color-state-danger);
|
|
441
|
+
--rt-field-value-font-size: var(--rt-text-sm);
|
|
442
|
+
--rt-field-value-color: var(--rt-color-text-primary);
|
|
443
|
+
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/* На тач-устройствах инпут не меньше 16px: WebKit (весь iOS, включая Chrome)
|
|
447
|
+
зумит страницу при фокусе на поле с font-size < 16px — отсюда горизонтальный
|
|
448
|
+
сдвиг вёрстки. Десктоп сохраняет плотный 14px. */
|
|
449
|
+
@media (pointer: coarse) {
|
|
450
|
+
:root {
|
|
451
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/* Dark theme — переопределение СЕМАНТИЧЕСКИХ токенов (примитивы неизменны).
|
|
455
|
+
|
|
456
|
+
Тело токенов вынесено в @mixin, чтобы тот же набор переопределений можно было
|
|
457
|
+
применить не только на html-уровне (тема приложения), но и к локальному
|
|
458
|
+
контейнеру (side-by-side light/dark в Storybook) — без дублирования значений.
|
|
459
|
+
|
|
460
|
+
База (`rt-theme-dark-tokens`) — тёплый графит для приложений и всех
|
|
461
|
+
CDK-overlay'ев (асайды/диалоги/меню рендерятся на уровне body, вне
|
|
462
|
+
host-классов шеллов — поэтому графит держим на :root, иначе overlay'и
|
|
463
|
+
не наследовали бы палитру). */
|
|
464
|
+
:root[data-theme=dark],
|
|
465
|
+
html.rt-theme-dark {
|
|
466
|
+
/* Background — тёплый графит */
|
|
467
|
+
--rt-color-bg-page: var(--rt-charcoal-900);
|
|
468
|
+
--rt-color-bg-surface: var(--rt-charcoal-800);
|
|
469
|
+
--rt-color-bg-surface-subtle: var(--rt-charcoal-950);
|
|
470
|
+
--rt-color-bg-hover: var(--rt-charcoal-700);
|
|
471
|
+
--rt-color-bg-subtle: var(--rt-charcoal-950);
|
|
472
|
+
--rt-color-bg-overlay: rgb(0 0 0 / 70%);
|
|
473
|
+
--rt-color-bg-inverse: var(--rt-neutral-0);
|
|
474
|
+
/* Text — почти белый на графите */
|
|
475
|
+
--rt-color-text-primary: var(--rt-neutral-50);
|
|
476
|
+
--rt-color-text-muted: var(--rt-overlay-white-40);
|
|
477
|
+
--rt-color-text-disabled: var(--rt-overlay-white-25);
|
|
478
|
+
--rt-color-text-inverse: var(--rt-neutral-900);
|
|
479
|
+
--rt-color-text-link: var(--rt-blue-300);
|
|
480
|
+
--rt-color-text-link-hover: var(--rt-blue-500);
|
|
481
|
+
/* Border — приглушённые на графите */
|
|
482
|
+
--rt-color-border-default: var(--rt-charcoal-border);
|
|
483
|
+
--rt-color-border-strong: var(--rt-charcoal-border-strong);
|
|
484
|
+
--rt-color-border-subtle: var(--rt-charcoal-border);
|
|
485
|
+
--rt-color-border-focus: var(--rt-blue-500);
|
|
486
|
+
/* Input border видим в dark (в light — transparent). */
|
|
487
|
+
--rt-input-color-border: var(--rt-charcoal-border);
|
|
488
|
+
/* Stepper — в dark рельса уходит от яркого синего к приглушённому серо-синему
|
|
489
|
+
(текущий шаг остаётся янтарным из light-семантики). */
|
|
490
|
+
--rt-color-stepper-track: var(--rt-navy-600);
|
|
491
|
+
--rt-color-stepper-progress: var(--rt-slate-300);
|
|
492
|
+
/* Навигация — вся шкала серых разворачивается: подложка уходит глубже
|
|
493
|
+
поверхности, а приглушённые подписи становятся светлее фона, а не темнее.
|
|
494
|
+
Плашка шапки садится на глубокий графит, активный пункт поднимается на
|
|
495
|
+
поверхность карточки — то же отношение, что и в светлой теме. */
|
|
496
|
+
--rt-nav-header-color-bg: var(--rt-charcoal-950);
|
|
497
|
+
--rt-nav-item-color-bg: var(--rt-charcoal-950);
|
|
498
|
+
--rt-nav-item-color-border: var(--rt-charcoal-950);
|
|
499
|
+
--rt-nav-item-color-bg-active: var(--rt-charcoal-800);
|
|
500
|
+
--rt-nav-item-color-caret: var(--rt-neutral-520);
|
|
501
|
+
--rt-nav-panel-color-bg: var(--rt-charcoal-800);
|
|
502
|
+
--rt-nav-panel-color-border: var(--rt-neutral-520);
|
|
503
|
+
--rt-nav-panel-item-color: var(--rt-neutral-280);
|
|
504
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-charcoal-950);
|
|
505
|
+
--rt-nav-panel-group-color: var(--rt-neutral-420);
|
|
506
|
+
--rt-nav-color-disabled: var(--rt-neutral-520);
|
|
507
|
+
/* Action — primary остаётся синим в обеих темах */
|
|
508
|
+
--rt-color-action-primary-subtle: rgb(21 93 252 / 16%);
|
|
509
|
+
/* Focus-ring в dark — ярче для контрастности на тёмных фонах. */
|
|
510
|
+
--rt-color-action-primary-soft: rgb(21 93 252 / 32%);
|
|
511
|
+
--rt-color-action-secondary: var(--rt-charcoal-700);
|
|
512
|
+
--rt-color-action-on-secondary: var(--rt-neutral-50);
|
|
513
|
+
/* Soft card-shadow в dark — насыщеннее для отделения от фона. */
|
|
514
|
+
--rt-shadow-card-soft: 0 0 40px rgb(0 0 0 / 25%);
|
|
515
|
+
/* Hover-overlay инвертирован для dark (light overlay поверх тёмного фона). */
|
|
516
|
+
--rt-input-color-bg-hover: var(--rt-overlay-white-4);
|
|
517
|
+
--rt-icon-button-color-bg-hover: var(--rt-overlay-white-4);
|
|
518
|
+
/* Toggle-switch — трек уходит в подложку, а бегунок остаётся светлым:
|
|
519
|
+
общий bg-surface на обоих слил бы их в один силуэт. Тень на графите
|
|
520
|
+
не работает, роль разделителя берёт на себя контраст. */
|
|
521
|
+
--rt-toggle-color-track: var(--rt-charcoal-950);
|
|
522
|
+
--rt-toggle-color-thumb: var(--rt-neutral-50);
|
|
523
|
+
--rt-toggle-shadow-thumb: var(--rt-shadow-none);
|
|
524
|
+
/* State — surfaces под dark + ярче error-text */
|
|
525
|
+
--rt-color-state-success-bg: rgb(5 150 105 / 12%);
|
|
526
|
+
--rt-color-state-warning-bg: rgb(217 119 6 / 12%);
|
|
527
|
+
--rt-color-state-danger-bg: rgb(220 38 38 / 12%);
|
|
528
|
+
--rt-color-state-error-text: var(--rt-danger-500);
|
|
529
|
+
--rt-color-state-info-bg: rgb(37 99 235 / 12%);
|
|
530
|
+
/* Chat — на графите светлые фоны пузырей нечитаемы: входящее уходит в
|
|
531
|
+
полупрозрачный синий, своё — в глубокий графит. */
|
|
532
|
+
--rt-chat-bubble-in-bg: rgb(37 99 235 / 12%);
|
|
533
|
+
--rt-chat-bubble-in-author: var(--rt-blue-300);
|
|
534
|
+
--rt-chat-bubble-own-bg: var(--rt-charcoal-950);
|
|
535
|
+
--rt-chat-bubble-own-author: var(--rt-overlay-white-40);
|
|
536
|
+
--rt-chat-bubble-date: var(--rt-overlay-white-40);
|
|
537
|
+
--rt-chat-status-read: var(--rt-blue-300);
|
|
538
|
+
/* Special — Auth surface (градиентный фон логина + прозрачная карточка). */
|
|
539
|
+
--rt-color-bg-page-auth: linear-gradient(156deg, #122341 12.68%, #182142 99.28%);
|
|
540
|
+
--rt-color-bg-surface-auth-card: transparent;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* Body-level градиент — подложка экранов авторизации: их вьюпорт прозрачен
|
|
544
|
+
(`--rt-color-bg-surface-auth-card: transparent`) и просвечивает body.
|
|
545
|
+
Остальные экраны его не видят — rt-container кроет body непрозрачным фоном
|
|
546
|
+
страницы. Не shorthand `background:`, чтобы не сбросить body{}'ный
|
|
547
|
+
`background-color`. */
|
|
548
|
+
:root[data-theme=dark] body,
|
|
549
|
+
html.rt-theme-dark body {
|
|
550
|
+
background-attachment: fixed;
|
|
551
|
+
background-image: linear-gradient(156deg, #122341 12.68%, #182142 99.28%);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/* rt-logo (чёрный SVG) — инверсия для читаемости на тёмном фоне */
|
|
555
|
+
:root[data-theme=dark] .rt-logo,
|
|
556
|
+
html.rt-theme-dark .rt-logo {
|
|
557
|
+
filter: invert(1) brightness(1.5);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
::-webkit-scrollbar {
|
|
561
|
+
width: 12px;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
::-webkit-scrollbar:horizontal {
|
|
565
|
+
height: 12px;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
::-webkit-scrollbar-thumb {
|
|
569
|
+
border: var(--rt-border-width-thick) solid transparent;
|
|
570
|
+
border-radius: var(--rt-radius-md);
|
|
571
|
+
background: var(--rt-color-border-default);
|
|
572
|
+
background-clip: content-box;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
::-webkit-scrollbar-thumb:hover {
|
|
576
|
+
border: var(--rt-border-width-medium) solid transparent;
|
|
577
|
+
background: var(--rt-color-border-strong);
|
|
578
|
+
background-clip: content-box;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
::-webkit-scrollbar-track:hover {
|
|
582
|
+
border: var(--rt-border-width-thin) solid var(--rt-color-bg-subtle);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/* rt-* color namespace bridge — мост на семантические --rt-* токены.
|
|
586
|
+
Живёт здесь, потому что единственный потребитель — `.rt-button` ниже. */
|
|
587
|
+
:root {
|
|
588
|
+
--rt-color-primary: var(--rt-color-action-primary);
|
|
589
|
+
--rt-color-primary-hover: var(--rt-color-action-primary-hover);
|
|
590
|
+
--rt-color-primary-active: var(--rt-color-action-primary-hover);
|
|
591
|
+
--rt-color-on-primary: var(--rt-color-action-on-primary);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
.rt-button {
|
|
595
|
+
--rt-btn-height: 40px;
|
|
596
|
+
--rt-btn-padding: 0 1.25rem;
|
|
597
|
+
--rt-btn-gap: 0.5rem;
|
|
598
|
+
--rt-btn-radius: 10px;
|
|
599
|
+
--rt-btn-font-size: 0.95rem;
|
|
600
|
+
--rt-btn-icon-size: 1rem;
|
|
601
|
+
--rt-btn-spinner-size: 1rem;
|
|
602
|
+
--rt-btn-spinner-border-width: 2px;
|
|
603
|
+
--rt-btn-bg: var(--rt-color-primary, #10b981);
|
|
604
|
+
--rt-btn-bg-hover: var(--rt-color-primary-hover, #059669);
|
|
605
|
+
--rt-btn-bg-active: var(--rt-color-primary-active, #047857);
|
|
606
|
+
--rt-btn-color: var(--rt-color-on-primary, #fff);
|
|
607
|
+
--rt-btn-border-color: var(--rt-btn-bg);
|
|
608
|
+
--rt-btn-border-color-hover: var(--rt-btn-bg-hover);
|
|
609
|
+
--rt-btn-shadow: none;
|
|
610
|
+
display: inline-flex;
|
|
611
|
+
height: var(--rt-btn-height);
|
|
612
|
+
min-height: var(--rt-btn-height);
|
|
613
|
+
box-sizing: border-box;
|
|
614
|
+
align-items: center;
|
|
615
|
+
justify-content: center;
|
|
616
|
+
padding: var(--rt-btn-padding);
|
|
617
|
+
border: var(--rt-border-width-thin) solid var(--rt-btn-border-color);
|
|
618
|
+
border-radius: var(--rt-btn-radius);
|
|
619
|
+
margin: 0;
|
|
620
|
+
background: var(--rt-btn-bg);
|
|
621
|
+
box-shadow: var(--rt-btn-shadow);
|
|
622
|
+
color: var(--rt-btn-color);
|
|
623
|
+
cursor: pointer;
|
|
624
|
+
font-family: inherit;
|
|
625
|
+
font-size: var(--rt-btn-font-size);
|
|
626
|
+
font-weight: var(--rt-font-weight-medium);
|
|
627
|
+
gap: var(--rt-btn-gap);
|
|
628
|
+
line-height: var(--rt-leading-none);
|
|
629
|
+
outline: none;
|
|
630
|
+
-webkit-tap-highlight-color: transparent;
|
|
631
|
+
text-decoration: none;
|
|
632
|
+
transition: background-color var(--rt-duration-fast), color var(--rt-duration-fast), border-color var(--rt-duration-fast), box-shadow var(--rt-duration-fast);
|
|
633
|
+
user-select: none;
|
|
634
|
+
white-space: nowrap;
|
|
635
|
+
}
|
|
636
|
+
.rt-button:hover:not(:disabled) {
|
|
637
|
+
border-color: var(--rt-btn-border-color-hover);
|
|
638
|
+
background: var(--rt-btn-bg-hover);
|
|
639
|
+
}
|
|
640
|
+
.rt-button:active:not(:disabled) {
|
|
641
|
+
background: var(--rt-btn-bg-active);
|
|
642
|
+
}
|
|
643
|
+
.rt-button:focus-visible {
|
|
644
|
+
box-shadow: var(--rt-shadow-focus-ring);
|
|
645
|
+
outline: 2px solid transparent;
|
|
646
|
+
outline-offset: 2px;
|
|
647
|
+
}
|
|
648
|
+
.rt-button:disabled {
|
|
649
|
+
--rt-btn-bg: var(--rt-color-disabled, #d1d5db);
|
|
650
|
+
--rt-btn-bg-hover: var(--rt-color-disabled, #d1d5db);
|
|
651
|
+
--rt-btn-border-color: var(--rt-color-disabled, #d1d5db);
|
|
652
|
+
--rt-btn-border-color-hover: var(--rt-color-disabled, #d1d5db);
|
|
653
|
+
--rt-btn-color: var(--rt-color-on-disabled, #6b7280);
|
|
654
|
+
cursor: not-allowed;
|
|
655
|
+
}
|
|
656
|
+
.rt-button__icon {
|
|
657
|
+
display: inline-flex;
|
|
658
|
+
width: var(--rt-btn-icon-size);
|
|
659
|
+
height: var(--rt-btn-icon-size);
|
|
660
|
+
align-items: center;
|
|
661
|
+
justify-content: center;
|
|
662
|
+
font-size: var(--rt-btn-icon-size);
|
|
663
|
+
}
|
|
664
|
+
.rt-button__label {
|
|
665
|
+
display: inline-flex;
|
|
666
|
+
align-items: center;
|
|
667
|
+
white-space: nowrap;
|
|
668
|
+
}
|
|
669
|
+
.rt-button__spinner {
|
|
670
|
+
--rt-btn-spinner-fade-duration: 0.3s;
|
|
671
|
+
--rt-btn-spinner-rotation-duration: 0.7s;
|
|
672
|
+
display: inline-flex;
|
|
673
|
+
align-items: center;
|
|
674
|
+
justify-content: center;
|
|
675
|
+
animation: rt-button-fade-in var(--rt-btn-spinner-fade-duration) both;
|
|
676
|
+
}
|
|
677
|
+
.rt-button__spinner-circle {
|
|
678
|
+
display: inline-block;
|
|
679
|
+
width: var(--rt-btn-spinner-size);
|
|
680
|
+
height: var(--rt-btn-spinner-size);
|
|
681
|
+
border: var(--rt-btn-spinner-border-width) solid currentcolor;
|
|
682
|
+
border-radius: var(--rt-radius-full);
|
|
683
|
+
border-bottom-color: transparent;
|
|
684
|
+
animation: rt-button-spin var(--rt-btn-spinner-rotation-duration) linear infinite;
|
|
685
|
+
opacity: 0.85;
|
|
686
|
+
}
|
|
687
|
+
.rt-button--secondary {
|
|
688
|
+
--rt-btn-bg: var(--rt-color-secondary, #6b7280);
|
|
689
|
+
--rt-btn-bg-hover: var(--rt-color-secondary-hover, #4b5563);
|
|
690
|
+
--rt-btn-bg-active: var(--rt-color-secondary-active, #374151);
|
|
691
|
+
}
|
|
692
|
+
.rt-button--success {
|
|
693
|
+
--rt-btn-bg: var(--rt-color-success, #16a34a);
|
|
694
|
+
--rt-btn-bg-hover: var(--rt-color-success-hover, #15803d);
|
|
695
|
+
--rt-btn-bg-active: var(--rt-color-success-active, #166534);
|
|
696
|
+
}
|
|
697
|
+
.rt-button--warning {
|
|
698
|
+
--rt-btn-bg: var(--rt-color-warning, #f59e0b);
|
|
699
|
+
--rt-btn-bg-hover: var(--rt-color-warning-hover, #d97706);
|
|
700
|
+
--rt-btn-bg-active: var(--rt-color-warning-active, #b45309);
|
|
701
|
+
}
|
|
702
|
+
.rt-button--danger {
|
|
703
|
+
--rt-btn-bg: var(--rt-color-danger, #ef4444);
|
|
704
|
+
--rt-btn-bg-hover: var(--rt-color-danger-hover, #dc2626);
|
|
705
|
+
--rt-btn-bg-active: var(--rt-color-danger-active, #b91c1c);
|
|
706
|
+
}
|
|
707
|
+
.rt-button--info {
|
|
708
|
+
--rt-btn-bg: var(--rt-color-info, #0ea5e9);
|
|
709
|
+
--rt-btn-bg-hover: var(--rt-color-info-hover, #0284c7);
|
|
710
|
+
--rt-btn-bg-active: var(--rt-color-info-active, #0369a1);
|
|
711
|
+
}
|
|
712
|
+
.rt-button--outlined {
|
|
713
|
+
--rt-btn-bg: transparent;
|
|
714
|
+
--rt-btn-bg-hover: rgb(16 185 129 / 8%);
|
|
715
|
+
--rt-btn-bg-active: rgb(16 185 129 / 16%);
|
|
716
|
+
--rt-btn-color: var(--rt-color-primary, #10b981);
|
|
717
|
+
--rt-btn-border-color: currentcolor;
|
|
718
|
+
--rt-btn-border-color-hover: currentcolor;
|
|
719
|
+
--rt-btn-shadow: none;
|
|
720
|
+
}
|
|
721
|
+
.rt-button--outlined.rt-button--secondary {
|
|
722
|
+
--rt-btn-color: var(--rt-color-secondary, #6b7280);
|
|
723
|
+
}
|
|
724
|
+
.rt-button--outlined.rt-button--success {
|
|
725
|
+
--rt-btn-color: var(--rt-color-success, #16a34a);
|
|
726
|
+
}
|
|
727
|
+
.rt-button--outlined.rt-button--warning {
|
|
728
|
+
--rt-btn-color: var(--rt-color-warning, #f59e0b);
|
|
729
|
+
}
|
|
730
|
+
.rt-button--outlined.rt-button--danger {
|
|
731
|
+
--rt-btn-color: var(--rt-color-danger, #ef4444);
|
|
732
|
+
}
|
|
733
|
+
.rt-button--outlined.rt-button--info {
|
|
734
|
+
--rt-btn-color: var(--rt-color-info, #0ea5e9);
|
|
735
|
+
}
|
|
736
|
+
.rt-button--text {
|
|
737
|
+
--rt-btn-bg: transparent;
|
|
738
|
+
--rt-btn-bg-hover: rgb(16 185 129 / 8%);
|
|
739
|
+
--rt-btn-bg-active: rgb(16 185 129 / 16%);
|
|
740
|
+
--rt-btn-color: var(--rt-color-primary, #10b981);
|
|
741
|
+
--rt-btn-border-color: transparent;
|
|
742
|
+
--rt-btn-border-color-hover: transparent;
|
|
743
|
+
--rt-btn-shadow: none;
|
|
744
|
+
}
|
|
745
|
+
.rt-button--text.rt-button--secondary {
|
|
746
|
+
--rt-btn-color: var(--rt-color-secondary, #6b7280);
|
|
747
|
+
}
|
|
748
|
+
.rt-button--text.rt-button--success {
|
|
749
|
+
--rt-btn-color: var(--rt-color-success, #16a34a);
|
|
750
|
+
}
|
|
751
|
+
.rt-button--text.rt-button--warning {
|
|
752
|
+
--rt-btn-color: var(--rt-color-warning, #f59e0b);
|
|
753
|
+
}
|
|
754
|
+
.rt-button--text.rt-button--danger {
|
|
755
|
+
--rt-btn-color: var(--rt-color-danger, #ef4444);
|
|
756
|
+
}
|
|
757
|
+
.rt-button--text.rt-button--info {
|
|
758
|
+
--rt-btn-color: var(--rt-color-info, #0ea5e9);
|
|
759
|
+
}
|
|
760
|
+
.rt-button--rounded {
|
|
761
|
+
--rt-btn-radius: 999px;
|
|
762
|
+
}
|
|
763
|
+
.rt-button--sm {
|
|
764
|
+
--rt-btn-height: 30px;
|
|
765
|
+
--rt-btn-padding: 0 0.875rem;
|
|
766
|
+
--rt-btn-font-size: 0.8125rem;
|
|
767
|
+
--rt-btn-icon-size: 0.875rem;
|
|
768
|
+
--rt-btn-spinner-size: 0.875rem;
|
|
769
|
+
}
|
|
770
|
+
.rt-button--lg {
|
|
771
|
+
--rt-btn-height: 50px;
|
|
772
|
+
--rt-btn-padding: 0 1.5rem;
|
|
773
|
+
--rt-btn-font-size: 1.0625rem;
|
|
774
|
+
--rt-btn-icon-size: 1.125rem;
|
|
775
|
+
--rt-btn-spinner-size: 1.125rem;
|
|
776
|
+
}
|
|
777
|
+
.rt-button--icon-only {
|
|
778
|
+
width: var(--rt-btn-height);
|
|
779
|
+
padding: 0;
|
|
780
|
+
gap: 0;
|
|
781
|
+
}
|
|
782
|
+
.rt-button--icon-only.rt-button--rounded {
|
|
783
|
+
--rt-btn-radius: 50%;
|
|
784
|
+
}
|
|
785
|
+
.rt-button--loading {
|
|
786
|
+
cursor: wait;
|
|
787
|
+
pointer-events: none;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
@keyframes rt-button-spin {
|
|
791
|
+
to {
|
|
792
|
+
transform: rotate(360deg);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
@keyframes rt-button-fade-in {
|
|
796
|
+
from {
|
|
797
|
+
opacity: 0;
|
|
798
|
+
}
|
|
799
|
+
to {
|
|
800
|
+
opacity: 1;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
@keyframes rt-button-fade-out {
|
|
804
|
+
from {
|
|
805
|
+
opacity: 1;
|
|
806
|
+
}
|
|
807
|
+
to {
|
|
808
|
+
opacity: 0;
|
|
809
|
+
}
|
|
810
|
+
}
|