@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,366 @@
|
|
|
1
|
+
.rt-chat {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
|
|
5
|
+
// Встроенная drop-обёртка несёт колоночную раскладку чата (тред/композер
|
|
6
|
+
// стопкой) и служит позиционным якорем для drag-оверлея. Тред/композер
|
|
7
|
+
// проецируются внутрь, BEM-контекст `rt-chat` сохраняется (DI декларации).
|
|
8
|
+
> .rt-file-drop {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex: 1 1 auto;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: var(--rt-space-3);
|
|
13
|
+
min-block-size: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Полноэкранный режим — overlay поверх страницы. Чат заполняет вьюпорт как
|
|
17
|
+
// flex-колонка: скроллится только тред, а композер и футер (доменные действия
|
|
18
|
+
// потребителя) остаются прижаты к низу и всегда видны. Раньше overflow-y был
|
|
19
|
+
// на всём чате — тред рос на все сообщения и выталкивал композер за экран.
|
|
20
|
+
// Собственный фон нужен только здесь: в обычном режиме фон даёт потребитель.
|
|
21
|
+
&--expanded {
|
|
22
|
+
position: fixed;
|
|
23
|
+
z-index: var(--rt-z-modal);
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
padding: var(--rt-space-md);
|
|
26
|
+
background: var(--rt-color-bg-surface);
|
|
27
|
+
inset: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&--expanded > .rt-file-drop {
|
|
31
|
+
block-size: 100%;
|
|
32
|
+
|
|
33
|
+
// На широких экранах чат не растягивается на весь вьюпорт: тред и
|
|
34
|
+
// композер иначе разрежены. Свыше 1440px фиксируем колонку по центру.
|
|
35
|
+
@media (width >= 1441px) {
|
|
36
|
+
inline-size: 1000px;
|
|
37
|
+
margin-inline: auto;
|
|
38
|
+
max-inline-size: 100%;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&--expanded &__thread-viewport {
|
|
43
|
+
flex: 1 1 auto;
|
|
44
|
+
min-block-size: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&--expanded &__thread {
|
|
48
|
+
max-height: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Fill-режим: чат занимает всю высоту контейнера, тред растягивается на
|
|
52
|
+
// свободное место, композер остаётся прижатым к низу.
|
|
53
|
+
&--fill {
|
|
54
|
+
block-size: 100%;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&--fill &__thread-viewport {
|
|
58
|
+
flex: 1 1 auto;
|
|
59
|
+
min-block-size: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&--fill &__thread {
|
|
63
|
+
max-height: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&__title {
|
|
67
|
+
margin: 0;
|
|
68
|
+
color: var(--rt-color-text-primary);
|
|
69
|
+
font-family: var(--rt-font-family-sans);
|
|
70
|
+
font-size: var(--rt-text-md);
|
|
71
|
+
font-weight: var(--rt-font-weight-bold);
|
|
72
|
+
letter-spacing: var(--rt-letter-spacing-wide);
|
|
73
|
+
line-height: var(--rt-leading-snug);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&__thread-viewport {
|
|
77
|
+
position: relative;
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
|
|
81
|
+
// Пузыри меряют максимальную ширину в процентах от треда: без contain
|
|
82
|
+
// длинное неразрывное слово сначала распирает тред, и только потом от
|
|
83
|
+
// него считаются проценты — лента уезжает по горизонтали.
|
|
84
|
+
contain: inline-size;
|
|
85
|
+
min-block-size: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&__thread {
|
|
89
|
+
display: flex;
|
|
90
|
+
max-height: 280px;
|
|
91
|
+
flex: 1 1 auto;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: var(--rt-space-4);
|
|
94
|
+
min-block-size: 0;
|
|
95
|
+
overflow-y: auto;
|
|
96
|
+
|
|
97
|
+
&--frozen {
|
|
98
|
+
overflow-y: hidden;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&__thread-overlay {
|
|
103
|
+
position: absolute;
|
|
104
|
+
z-index: 1;
|
|
105
|
+
display: flex;
|
|
106
|
+
align-items: center;
|
|
107
|
+
justify-content: center;
|
|
108
|
+
background: color-mix(in srgb, var(--rt-color-bg-surface) 60%, transparent);
|
|
109
|
+
inset: 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&__footer-slot {
|
|
113
|
+
display: flex;
|
|
114
|
+
flex-direction: column;
|
|
115
|
+
|
|
116
|
+
&:empty {
|
|
117
|
+
display: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
&--blocked {
|
|
121
|
+
opacity: 0.6;
|
|
122
|
+
pointer-events: none;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Строка сообщения — общий hover-контейнер пузыря и боковой кнопки удаления.
|
|
127
|
+
// Ховер отслеживается по всей строке, поэтому переход курсора с текста на
|
|
128
|
+
// кнопку (она снаружи пузыря) непрерывен: кнопка не пропадает в зазоре.
|
|
129
|
+
&__message-row {
|
|
130
|
+
display: flex;
|
|
131
|
+
max-width: min(80%, 480px);
|
|
132
|
+
align-items: center;
|
|
133
|
+
|
|
134
|
+
// Входящие — влево, свои — вправо. max-width на строке: пузырь + кнопка
|
|
135
|
+
// вместе не растягиваются через весь тред.
|
|
136
|
+
align-self: flex-start;
|
|
137
|
+
gap: var(--rt-space-1-5);
|
|
138
|
+
|
|
139
|
+
&--own {
|
|
140
|
+
align-self: flex-end;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Кнопка проявляется по наведению/фокусу в пределах всей строки.
|
|
144
|
+
&:hover .rt-chat__message-delete,
|
|
145
|
+
&:focus-within .rt-chat__message-delete {
|
|
146
|
+
opacity: 1;
|
|
147
|
+
pointer-events: auto;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
&__message {
|
|
152
|
+
display: flex;
|
|
153
|
+
min-width: 0;
|
|
154
|
+
|
|
155
|
+
// grow:0 — пузырь обнимает контент (короткие не растягиваются); shrink:1 +
|
|
156
|
+
// min-width:0 — длинный текст переносится внутри строки, не распирая её.
|
|
157
|
+
flex: 0 1 auto;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
padding: var(--rt-space-2-5);
|
|
160
|
+
|
|
161
|
+
// Срезанный угол со стороны автора заменяет «хвостик» пузыря: направление
|
|
162
|
+
// видно даже когда соседние сообщения одного цвета идут подряд.
|
|
163
|
+
border-radius: var(--rt-radius-lg) var(--rt-radius-lg) var(--rt-radius-lg) 0;
|
|
164
|
+
background: var(--rt-chat-bubble-in-bg);
|
|
165
|
+
gap: var(--rt-space-2-5);
|
|
166
|
+
|
|
167
|
+
&--own {
|
|
168
|
+
border-radius: var(--rt-radius-lg) var(--rt-radius-lg) 0 var(--rt-radius-lg);
|
|
169
|
+
background: var(--rt-chat-bubble-own-bg);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Удалённое сообщение остаётся в ленте, но приглушено и с пунктиром.
|
|
173
|
+
&--deleted {
|
|
174
|
+
border: var(--rt-border-width-thin) dashed var(--rt-color-border-default);
|
|
175
|
+
background: transparent;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
&__message-author {
|
|
180
|
+
margin: 0;
|
|
181
|
+
color: var(--rt-chat-bubble-in-author);
|
|
182
|
+
font-size: var(--rt-text-2xs);
|
|
183
|
+
font-weight: var(--rt-font-weight-bold);
|
|
184
|
+
letter-spacing: var(--rt-letter-spacing-wide);
|
|
185
|
+
line-height: var(--rt-leading-snug);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
&__message--own &__message-author {
|
|
189
|
+
color: var(--rt-chat-bubble-own-author);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
&__message-text {
|
|
193
|
+
margin: 0;
|
|
194
|
+
color: var(--rt-color-text-primary);
|
|
195
|
+
font-size: var(--rt-text-xs);
|
|
196
|
+
font-weight: var(--rt-font-weight-regular);
|
|
197
|
+
line-height: var(--rt-leading-snug);
|
|
198
|
+
white-space: pre-wrap;
|
|
199
|
+
|
|
200
|
+
// Плейсхолдер удалённого сообщения — курсив, приглушённый цвет.
|
|
201
|
+
&--deleted {
|
|
202
|
+
color: var(--rt-color-text-muted);
|
|
203
|
+
font-style: italic;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Боковая кнопка удаления: flex-сосед пузыря (не наезжает на текст), место
|
|
208
|
+
// под неё зарезервировано всегда (opacity, не display) — тред не «прыгает»
|
|
209
|
+
// при наведении. Проявляется по ховеру строки (см. `&__message-row`).
|
|
210
|
+
&__message-delete {
|
|
211
|
+
flex: 0 0 auto;
|
|
212
|
+
opacity: 0;
|
|
213
|
+
pointer-events: none;
|
|
214
|
+
transition: opacity var(--rt-duration-fast) ease;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
&__message-attachment {
|
|
218
|
+
display: block;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
&__message-footer {
|
|
222
|
+
display: flex;
|
|
223
|
+
align-items: center;
|
|
224
|
+
gap: var(--rt-space-1);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
&__message-date {
|
|
228
|
+
color: var(--rt-chat-bubble-date);
|
|
229
|
+
font-size: var(--rt-text-xs);
|
|
230
|
+
line-height: var(--rt-leading-none);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Пер-месседж статус своего сообщения: часы / двойной чек / «!»+retry.
|
|
234
|
+
// sending и sent приглушены — цветом выделены только два состояния, о
|
|
235
|
+
// которых стоит знать: прочитано (синий) и не ушло (красный).
|
|
236
|
+
&__message-status {
|
|
237
|
+
display: inline-flex;
|
|
238
|
+
align-items: center;
|
|
239
|
+
color: var(--rt-color-text-muted);
|
|
240
|
+
gap: var(--rt-space-0-5);
|
|
241
|
+
|
|
242
|
+
&--status--read {
|
|
243
|
+
color: var(--rt-chat-status-read);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
&--status--failed {
|
|
247
|
+
color: var(--rt-color-state-danger);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
&__status-icon {
|
|
252
|
+
font-size: var(--rt-text-sm);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Скелетон-пузырь повторяет геометрию `&__message`, чтобы подмена на реальное
|
|
256
|
+
// сообщение не сдвигала тред.
|
|
257
|
+
&__message-skeleton {
|
|
258
|
+
display: flex;
|
|
259
|
+
max-width: min(80%, 480px);
|
|
260
|
+
flex-direction: column;
|
|
261
|
+
align-self: flex-start;
|
|
262
|
+
padding: var(--rt-space-2-5);
|
|
263
|
+
border-radius: var(--rt-radius-lg) var(--rt-radius-lg) var(--rt-radius-lg) 0;
|
|
264
|
+
background: var(--rt-chat-bubble-in-bg);
|
|
265
|
+
gap: var(--rt-space-1);
|
|
266
|
+
|
|
267
|
+
&--own {
|
|
268
|
+
align-self: flex-end;
|
|
269
|
+
border-radius: var(--rt-radius-lg) var(--rt-radius-lg) 0 var(--rt-radius-lg);
|
|
270
|
+
background: var(--rt-chat-bubble-own-bg);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
&__skeleton-line {
|
|
275
|
+
display: block;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Кнопка-ссылка (привязка Telegram) внутри пузыря сообщения — прижата влево
|
|
279
|
+
// под текстом. Класс — на span'е, а не на rtButton: host-class rt-button затёр
|
|
280
|
+
// бы rtElem. Вид (outlined) даёт сам rtButton.
|
|
281
|
+
&__message-deeplink {
|
|
282
|
+
display: flex;
|
|
283
|
+
justify-content: flex-start;
|
|
284
|
+
margin-top: var(--rt-space-1);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Композер (и note-замена) отбиваем от ленты сильнее общего gap'а, чтобы поле
|
|
288
|
+
// ввода визуально отделялось от последнего сообщения.
|
|
289
|
+
&__composer,
|
|
290
|
+
&__composer-rich,
|
|
291
|
+
&__reply-block {
|
|
292
|
+
margin-top: var(--rt-space-3);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
&__composer {
|
|
296
|
+
display: flex;
|
|
297
|
+
flex-direction: column;
|
|
298
|
+
gap: var(--rt-space-2-5);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
&__composer-files {
|
|
302
|
+
display: flex;
|
|
303
|
+
flex-wrap: wrap;
|
|
304
|
+
gap: var(--rt-space-2);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Поле ввода — одна рамка на скрепку и текст: скрепка снаружи читалась бы
|
|
308
|
+
// как отдельное действие, а не как часть сообщения. Геометрия взята из
|
|
309
|
+
// input-токенов, поэтому поле совпадает с остальными контролами формы.
|
|
310
|
+
&__composer-field {
|
|
311
|
+
display: flex;
|
|
312
|
+
box-sizing: border-box;
|
|
313
|
+
align-items: center;
|
|
314
|
+
border: var(--rt-input-border-width) solid var(--rt-input-color-border);
|
|
315
|
+
border-radius: var(--rt-input-radius);
|
|
316
|
+
background-color: var(--rt-input-color-bg);
|
|
317
|
+
gap: var(--rt-space-1);
|
|
318
|
+
min-block-size: var(--rt-input-height);
|
|
319
|
+
padding-inline: var(--rt-input-padding-x);
|
|
320
|
+
transition: var(--rt-input-transition);
|
|
321
|
+
|
|
322
|
+
// Подсветка на всём поле, а не на textarea: рамка принадлежит обёртке.
|
|
323
|
+
&:focus-within {
|
|
324
|
+
border-color: var(--rt-input-color-border-focus);
|
|
325
|
+
box-shadow: var(--rt-input-focus-shadow);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
&--attach {
|
|
329
|
+
padding-inline-start: var(--rt-space-1);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
&__composer-input {
|
|
334
|
+
// Именно content-box: cdkTextareaAutosize задаёт height по высоте строк,
|
|
335
|
+
// не прибавляя вертикальные поля. С глобальным border-box поле выходит
|
|
336
|
+
// ровно на одну строку меньше, и текст режется нижней границей.
|
|
337
|
+
box-sizing: content-box;
|
|
338
|
+
flex: 1 1 auto;
|
|
339
|
+
border: 0;
|
|
340
|
+
background: transparent;
|
|
341
|
+
color: var(--rt-input-color-text);
|
|
342
|
+
font-family: inherit;
|
|
343
|
+
font-size: var(--rt-input-font-size);
|
|
344
|
+
inline-size: 100%;
|
|
345
|
+
line-height: var(--rt-textarea-line-height);
|
|
346
|
+
padding-block: var(--rt-space-2);
|
|
347
|
+
resize: none;
|
|
348
|
+
|
|
349
|
+
&::placeholder {
|
|
350
|
+
color: var(--rt-input-color-text-placeholder);
|
|
351
|
+
opacity: 1;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
&:focus-visible {
|
|
355
|
+
outline: none;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
&:disabled {
|
|
359
|
+
cursor: not-allowed;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
&__composer-send {
|
|
364
|
+
inline-size: 100%;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.rt-checkbox {
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
padding: 0;
|
|
9
|
+
border: none;
|
|
10
|
+
background: none;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
gap: var(--rt-space-sm);
|
|
13
|
+
text-align: start;
|
|
14
|
+
|
|
15
|
+
&:focus-visible {
|
|
16
|
+
border-radius: var(--rt-radius-sm);
|
|
17
|
+
box-shadow: var(--rt-shadow-focus-ring);
|
|
18
|
+
outline: 2px solid transparent;
|
|
19
|
+
outline-offset: 2px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&--disabled {
|
|
23
|
+
cursor: not-allowed;
|
|
24
|
+
opacity: 0.5;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&__box {
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
width: 18px;
|
|
30
|
+
height: 18px;
|
|
31
|
+
flex-shrink: 0;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
border: var(--rt-input-border-width) solid var(--rt-color-border-strong);
|
|
35
|
+
border-radius: var(--rt-radius-sm);
|
|
36
|
+
background: var(--rt-color-bg-surface);
|
|
37
|
+
transition:
|
|
38
|
+
background var(--rt-duration-fast) ease,
|
|
39
|
+
border-color var(--rt-duration-fast) ease;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&--checked &__box,
|
|
43
|
+
&--indeterminate &__box {
|
|
44
|
+
border-color: var(--rt-color-action-primary);
|
|
45
|
+
background: var(--rt-color-action-primary);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&__label {
|
|
49
|
+
color: var(--rt-color-text-primary);
|
|
50
|
+
font-size: var(--rt-text-sm);
|
|
51
|
+
user-select: none;
|
|
52
|
+
|
|
53
|
+
&:empty {
|
|
54
|
+
display: none;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
.rt-collapsible-text {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: var(--rt-space-sm);
|
|
5
|
+
|
|
6
|
+
&__text {
|
|
7
|
+
display: block;
|
|
8
|
+
|
|
9
|
+
&--clamped {
|
|
10
|
+
display: -webkit-box;
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
-webkit-box-orient: vertical;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&__paragraph {
|
|
17
|
+
margin: 0;
|
|
18
|
+
color: var(--rt-color-text-primary);
|
|
19
|
+
font-family: var(--rt-font-family-sans);
|
|
20
|
+
font-size: var(--rt-text-xs);
|
|
21
|
+
font-weight: var(--rt-font-weight-regular);
|
|
22
|
+
letter-spacing: var(--rt-letter-spacing-wide);
|
|
23
|
+
line-height: var(--rt-leading-snug);
|
|
24
|
+
|
|
25
|
+
& + & {
|
|
26
|
+
margin-top: var(--rt-space-sm);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&__toggle {
|
|
31
|
+
align-self: flex-start;
|
|
32
|
+
padding: 0;
|
|
33
|
+
border: 0;
|
|
34
|
+
background: transparent;
|
|
35
|
+
color: var(--rt-color-text-link);
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
font-family: var(--rt-font-family-sans);
|
|
38
|
+
font-size: var(--rt-text-xs);
|
|
39
|
+
font-weight: var(--rt-font-weight-medium);
|
|
40
|
+
letter-spacing: var(--rt-letter-spacing-wide);
|
|
41
|
+
line-height: var(--rt-leading-snug);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* rt-confirm-popover — панель подтверждения в CDK Overlay. ViewEncapsulation.None.
|
|
2
|
+
Селекторы префиксованы `.rt-confirm-popover`. */
|
|
3
|
+
|
|
4
|
+
.rt-confirm-popover {
|
|
5
|
+
display: flex;
|
|
6
|
+
width: 280px;
|
|
7
|
+
max-width: 280px;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
padding: var(--rt-space-md);
|
|
10
|
+
border: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
|
|
11
|
+
border-radius: var(--rt-radius-md);
|
|
12
|
+
background: var(--rt-color-bg-surface);
|
|
13
|
+
box-shadow: var(--rt-shadow-lg);
|
|
14
|
+
gap: var(--rt-space-sm);
|
|
15
|
+
|
|
16
|
+
&__title {
|
|
17
|
+
margin: 0;
|
|
18
|
+
color: var(--rt-color-text-primary);
|
|
19
|
+
font-size: var(--rt-text-sm);
|
|
20
|
+
font-weight: var(--rt-font-weight-semibold);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&__message {
|
|
24
|
+
margin: 0;
|
|
25
|
+
color: var(--rt-color-text-primary);
|
|
26
|
+
font-size: var(--rt-text-sm);
|
|
27
|
+
line-height: var(--rt-leading-normal);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&__actions {
|
|
31
|
+
display: flex;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
gap: var(--rt-space-sm);
|
|
34
|
+
margin-block-start: var(--rt-space-xs);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
.rt-container {
|
|
2
|
+
display: grid;
|
|
3
|
+
min-height: 100%;
|
|
4
|
+
flex: 1 1 auto;
|
|
5
|
+
background-color: var(--rt-color-bg-page, #f5f5f5);
|
|
6
|
+
color: var(--rt-color-text-primary, #222);
|
|
7
|
+
grid-template: 'header header' auto 'left-sidenav toolbar' auto 'left-sidenav content' 1fr / auto 1fr;
|
|
8
|
+
|
|
9
|
+
&__header {
|
|
10
|
+
// Хедер закреплён вверху: при скролле документа (высота контейнера не
|
|
11
|
+
// ограничена вьюпортом) grid-строка header уезжала бы вверх. sticky top:0
|
|
12
|
+
// держит её на месте. z-index:1 — выше later-DOM контента, но ниже CDK
|
|
13
|
+
// overlay асайдов (1000). Работает благодаря `html { overflow-x: clip }`
|
|
14
|
+
// (clip, в отличие от hidden, не создаёт scroll-контейнер и не ломает sticky).
|
|
15
|
+
position: sticky;
|
|
16
|
+
z-index: 1;
|
|
17
|
+
top: 0;
|
|
18
|
+
display: block;
|
|
19
|
+
grid-area: header;
|
|
20
|
+
|
|
21
|
+
// Обёртка прозрачна: спроецированный хедер даёт собственный фон. Свой
|
|
22
|
+
// bg-surface здесь протекал бы за скруглёнными нижними углами хедера —
|
|
23
|
+
// в тёмной теме это давало серые «уголки» (surface ≠ фон хедера).
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&__left-sidenav {
|
|
27
|
+
display: block;
|
|
28
|
+
padding: var(--rt-space-md);
|
|
29
|
+
border-right: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
|
|
30
|
+
background-color: var(--rt-color-bg-surface, #fff);
|
|
31
|
+
grid-area: left-sidenav;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&__toolbar {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
padding: var(--rt-space-sm) var(--rt-space-md);
|
|
38
|
+
border-bottom: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
|
|
39
|
+
background-color: var(--rt-color-bg-surface, #fff);
|
|
40
|
+
grid-area: toolbar;
|
|
41
|
+
|
|
42
|
+
&--slot--left {
|
|
43
|
+
justify-content: flex-start;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&--slot--center {
|
|
47
|
+
justify-content: center;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&--slot--right {
|
|
51
|
+
justify-content: flex-end;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&__content {
|
|
56
|
+
display: flex;
|
|
57
|
+
overflow: auto;
|
|
58
|
+
min-height: 0;
|
|
59
|
+
flex-direction: column;
|
|
60
|
+
grid-area: content;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* App-shell раскладка (opt-in `height="viewport"`): контейнер жёстко равен
|
|
65
|
+
вьюпорту, документ не скроллится вовсе — скроллятся зоны внутри, каждая сама.
|
|
66
|
+
В дефолтном `auto` контейнер не ограничен вьюпортом (растёт под контент), из-за
|
|
67
|
+
чего `&__content { overflow: auto }` никогда не переполняется: скролл забирает
|
|
68
|
+
документ и утаскивает нав-рейл вместе со списком и лентой чата одним движением.
|
|
69
|
+
`min-block-size` сбрасываем — иначе `min-height: 100%` спорит с фиксированной
|
|
70
|
+
высотой, если родитель окажется выше вьюпорта. */
|
|
71
|
+
.rt-container--viewport {
|
|
72
|
+
block-size: 100dvh;
|
|
73
|
+
min-block-size: 0;
|
|
74
|
+
|
|
75
|
+
/* Content перестаёт быть скролл-владельцем: он клипает, а скроллит то, что
|
|
76
|
+
внутри (список диалогов, лента чата) — у каждой зоны свой overflow. */
|
|
77
|
+
.rt-container__content {
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Нав-рейлу высоты вьюпорта хватает, скролла на нём быть не должно. `auto`,
|
|
82
|
+
а не `hidden`: в низком окне пункты меню иначе стали бы недостижимы. */
|
|
83
|
+
.rt-container__left-sidenav {
|
|
84
|
+
overflow: auto;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Backdrop + overlay панели CDK Overlay (persistent attach режим).
|
|
89
|
+
Cc-container владеет CDK Overlay для правой sidenav — стили глобальные
|
|
90
|
+
(ViewEncapsulation.None), живут тут чтобы не зависеть от подгрузки rt-aside
|
|
91
|
+
компонента (он tree-shake'тся когда не used active route'ом).
|
|
92
|
+
|
|
93
|
+
Двойной селектор `.cdk-overlay-backdrop.rt-aside-backdrop` нужен для specificity:
|
|
94
|
+
CDK Overlay добавляет `.cdk-overlay-backdrop-showing { opacity: 1 }` сразу при
|
|
95
|
+
attach; при persistent overlay backdrop должен оставаться скрытым пока aside
|
|
96
|
+
не открыт. Два класса > одиночный — наш opacity:0 побеждает. */
|
|
97
|
+
.cdk-overlay-backdrop.rt-aside-backdrop {
|
|
98
|
+
/* stylelint-disable-next-line property-no-vendor-prefix -- Safari < 18 */
|
|
99
|
+
-webkit-backdrop-filter: blur(5px);
|
|
100
|
+
backdrop-filter: blur(5px);
|
|
101
|
+
background: rgb(0 0 0 / 45%);
|
|
102
|
+
opacity: 0;
|
|
103
|
+
pointer-events: none;
|
|
104
|
+
transition: opacity var(--rt-duration-base) ease;
|
|
105
|
+
|
|
106
|
+
&.rt-aside-backdrop--visible {
|
|
107
|
+
opacity: 1;
|
|
108
|
+
pointer-events: auto;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.rt-aside-overlay {
|
|
113
|
+
height: 100dvh;
|
|
114
|
+
transition: transform var(--rt-duration-base) ease;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Закрытая панель нажатий не ловит. На узком экране она шириной во весь вьюпорт,
|
|
118
|
+
и пока её сдвиг за край экрана не досчитан, она перекрывает страницу целиком:
|
|
119
|
+
выглядит это нормально, а нажатия уходят в пустоту. Селектор из двух классов —
|
|
120
|
+
чтобы правило не зависело от порядка, в котором браузер получил стили панели и
|
|
121
|
+
стили контейнера. */
|
|
122
|
+
.rt-aside-overlay:not(.rt-aside-overlay--open) {
|
|
123
|
+
pointer-events: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Стартовое положение за краем экрана не анимируется: переход из него начинается,
|
|
127
|
+
как только вьюпорт задаёт панели ширину, и всю анимацию держит панель на месте. */
|
|
128
|
+
.rt-aside-overlay.rt-aside-overlay--entering {
|
|
129
|
+
transition: none;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.rt-aside-overlay--position-right.rt-aside-overlay--entering,
|
|
133
|
+
.rt-aside-overlay--position-right.rt-aside-overlay--leaving {
|
|
134
|
+
transform: translateX(100%);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.rt-aside-overlay--position-left.rt-aside-overlay--entering,
|
|
138
|
+
.rt-aside-overlay--position-left.rt-aside-overlay--leaving {
|
|
139
|
+
transform: translateX(-100%);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.rt-aside-overlay--position-right.rt-aside-overlay--open,
|
|
143
|
+
.rt-aside-overlay--position-left.rt-aside-overlay--open {
|
|
144
|
+
transform: translateX(0);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@media (width <= 768px) {
|
|
148
|
+
.rt-aside-overlay {
|
|
149
|
+
width: 100dvw;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Opt-in: левый sidenav сворачивается в нижний ряд grid'а (таб-бар).
|
|
153
|
+
// Контент занимает всю ширину и скроллится в своём `1fr` над баром —
|
|
154
|
+
// бар остаётся видимым без position:fixed и без привязки к его высоте.
|
|
155
|
+
.rt-container--mobile-left-bottom {
|
|
156
|
+
grid-template:
|
|
157
|
+
'header' auto
|
|
158
|
+
'toolbar' auto
|
|
159
|
+
'content' 1fr
|
|
160
|
+
'left-sidenav' auto
|
|
161
|
+
/ 1fr;
|
|
162
|
+
|
|
163
|
+
.rt-container__left-sidenav {
|
|
164
|
+
padding: 0;
|
|
165
|
+
border-top: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
|
|
166
|
+
border-right: none;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@media (prefers-reduced-motion: reduce) {
|
|
172
|
+
.rt-aside-overlay {
|
|
173
|
+
transition: none;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
gap: var(--rt-counter-gap);
|
|
5
|
+
|
|
6
|
+
.rt-counter {
|
|
7
|
+
&__value {
|
|
8
|
+
min-width: var(--rt-counter-value-min-width);
|
|
9
|
+
color: var(--rt-counter-value-color);
|
|
10
|
+
font-size: var(--rt-counter-value-font-size);
|
|
11
|
+
font-variant-numeric: tabular-nums;
|
|
12
|
+
text-align: center;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|