├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .eslintrc.typescript.json
├── .gitignore
├── .gitlab-ci.yml
├── .npmignore
├── .prettierrc
├── .size-limit.json
├── LICENSE
├── README.md
├── changelog.md
├── docs
├── components
│ ├── App.js
│ ├── Button.js
│ ├── Footer.js
│ ├── H1.js
│ ├── H2.js
│ ├── H3.js
│ ├── Informer.js
│ ├── InlineCode.js
│ ├── Link.js
│ ├── Playground.js
│ ├── PreCode.js
│ ├── PropTypesTable.js
│ ├── Route.js
│ ├── SideNav.js
│ ├── icons
│ │ ├── Arrow.js
│ │ ├── Chevron.js
│ │ ├── FullGithub.js
│ │ ├── Github.js
│ │ ├── Logo.js
│ │ ├── Medium.js
│ │ ├── Pdf.js
│ │ └── Sketch.js
│ ├── with-doc.js
│ └── with-error.js
├── config.js
├── index.js
├── lib
│ ├── component-list.js
│ ├── env.js
│ └── export-meta.js
├── page-list.js
├── pages
│ ├── components
│ │ ├── Avatar
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Button
│ │ │ ├── examples-react-router.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Calendar
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Checkbox
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── ComplexSearch
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Dropdown
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── FieldGroup
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Hint
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── IconButton
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Input
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Loader
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Menu
│ │ │ ├── examples-react-router.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Notification
│ │ │ ├── examples-decorator.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Pagination
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Popup
│ │ │ ├── examples-decorator.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Radio
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Select
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── SideNav
│ │ │ ├── examples-href.js
│ │ │ ├── examples-react-router.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Slider
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Snackbar
│ │ │ ├── examples-decorator.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Spinner
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Stepper
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── SvgIcon
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Switcher
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Tabs
│ │ │ ├── examples-react-router.js
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── TagsInput
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Textarea
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Toggle
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Tooltip
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ ├── Typography
│ │ │ ├── examples.js
│ │ │ └── index.md
│ │ └── icons
│ │ │ ├── examples-forms.js
│ │ │ ├── examples-profiles.js
│ │ │ ├── examples-services.js
│ │ │ └── index.md
│ ├── index.js
│ └── usage
│ │ ├── contribute
│ │ └── index.md
│ │ └── install
│ │ └── index.md
├── scripts
│ └── publish-site.js
├── utils
│ ├── create-source-url.js
│ ├── load-style-sheet.js
│ └── theming.js
└── webpack.config.js
├── examples
├── simple
│ ├── .babelrc
│ ├── .gitignore
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── App.js
│ │ └── index.js
│ └── webpack.config.js
├── ssr
│ ├── .babelrc
│ ├── .gitignore
│ ├── client
│ │ └── index.js
│ ├── common
│ │ └── App.js
│ ├── package-lock.json
│ ├── package.json
│ ├── server
│ │ ├── index.js
│ │ └── server.js
│ └── webpack.config.js
└── theming
│ ├── .babelrc
│ ├── .gitignore
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── App.js
│ └── index.js
│ └── webpack.config.js
├── karma.conf.js
├── package-lock.json
├── package.json
├── scripts
├── ci-git-push-prepare.sh
└── copy-files.js
├── src
├── Avatar
│ ├── Avatar.d.ts
│ ├── Avatar.js
│ ├── Avatar.test.js
│ ├── index.d.ts
│ ├── index.js
│ └── profilesIconMap.js
├── Button
│ ├── Button.d.ts
│ ├── Button.js
│ ├── Button.test.js
│ ├── index.d.ts
│ └── index.js
├── Calendar
│ ├── Calendar.d.ts
│ ├── Calendar.js
│ ├── Calendar.test.js
│ ├── index.d.ts
│ └── index.js
├── Checkbox
│ ├── Checkbox.d.ts
│ ├── Checkbox.js
│ ├── Checkbox.test.js
│ ├── TickIcon.js
│ ├── TickIconSmall.js
│ ├── index.d.ts
│ └── index.js
├── ComplexSearch
│ ├── ComplexSearch.d.ts
│ ├── ComplexSearch.js
│ ├── ComplexSearch.test.js
│ ├── ServiceSearch.d.ts
│ ├── ServiceSearch.js
│ ├── ServiceSearch.test.js
│ ├── SimpleSearch.d.ts
│ ├── SimpleSearch.js
│ ├── SimpleSearch.test.js
│ ├── SourceButtons.d.ts
│ ├── SourceButtons.js
│ ├── SuggestDropdown.d.ts
│ ├── SuggestDropdown.js
│ ├── SuggestItem.d.ts
│ ├── SuggestItem.js
│ ├── context.js
│ ├── icons
│ │ ├── .eslintrc
│ │ ├── ClearIcon.js
│ │ ├── GlobalSourceIcon.js
│ │ ├── MediaSearchIcon.js
│ │ ├── SearchIcon.js
│ │ ├── ServiceSearchIcon.js
│ │ └── ServiceSourceIcon.js
│ ├── index.d.ts
│ ├── index.js
│ ├── provideSearch.js
│ └── provideSearchDropdown.js
├── Dropdown
│ ├── Dropdown.d.ts
│ ├── Dropdown.js
│ ├── DropdownContent.js
│ ├── index.d.ts
│ └── index.js
├── FieldGroup
│ ├── FieldGroup.d.ts
│ ├── FieldGroup.js
│ ├── FieldGroup.test.js
│ ├── index.d.ts
│ └── index.js
├── FieldStatus
│ ├── FieldStatus.d.ts
│ ├── FieldStatus.js
│ ├── index.d.ts
│ └── index.js
├── FocusManager
│ ├── FocusManager.d.ts
│ ├── FocusManager.js
│ ├── index.d.ts
│ └── index.js
├── FormGroup
│ ├── FormGroup.d.ts
│ ├── FormGroup.js
│ ├── FormGroup.test.js
│ ├── index.d.ts
│ └── index.js
├── Hint
│ ├── Hint.d.ts
│ ├── Hint.js
│ ├── Hint.test.js
│ ├── HintContent.js
│ ├── index.d.ts
│ └── index.js
├── IconButton
│ ├── IconButton.d.ts
│ ├── IconButton.js
│ ├── IconButton.test.js
│ ├── index.d.ts
│ └── index.js
├── Input
│ ├── Input.d.ts
│ ├── Input.js
│ ├── Input.test.js
│ ├── index.d.ts
│ └── index.js
├── Loader
│ ├── Loader.d.ts
│ ├── Loader.js
│ ├── Loader.test.js
│ ├── index.d.ts
│ └── index.js
├── Menu
│ ├── Menu.d.ts
│ ├── Menu.js
│ ├── Menu.test.js
│ ├── MenuItem.d.ts
│ ├── MenuItem.js
│ ├── context.js
│ ├── index.d.ts
│ └── index.js
├── Notification
│ ├── Notification.d.ts
│ ├── Notification.js
│ ├── Notification.test.js
│ ├── index.d.ts
│ ├── index.js
│ ├── provideNotification.d.ts
│ ├── provideNotification.js
│ └── provideNotification.test.js
├── OnClickOutside
│ ├── OnClickOutside.d.ts
│ ├── OnClickOutside.js
│ ├── index.d.ts
│ └── index.js
├── Overlay
│ ├── FixedOverlay.d.ts
│ ├── FixedOverlay.js
│ ├── FixedOverlay.test.js
│ ├── RelativeOverlay.d.ts
│ ├── RelativeOverlay.js
│ ├── RelativeOverlay.test.js
│ ├── index.d.ts
│ └── index.js
├── Pagination
│ ├── Pagination.d.ts
│ ├── Pagination.js
│ ├── Pagination.test.js
│ ├── index.d.ts
│ └── index.js
├── Popup
│ ├── Popup.d.ts
│ ├── Popup.js
│ ├── Popup.test.js
│ ├── index.d.ts
│ ├── index.js
│ ├── providePopup.d.ts
│ ├── providePopup.js
│ └── providePopup.test.js
├── Radio
│ ├── Radio.test.js
│ ├── RadioButton.d.ts
│ ├── RadioButton.js
│ ├── RadioButtonGroup.d.ts
│ ├── RadioButtonGroup.js
│ ├── context.js
│ ├── index.d.ts
│ └── index.js
├── Select
│ ├── ClearIconSmall.js
│ ├── Select.d.ts
│ ├── Select.js
│ ├── Select.test.js
│ ├── index.d.ts
│ └── index.js
├── SideNav
│ ├── SideNav.d.ts
│ ├── SideNav.js
│ ├── SideNav.test.js
│ ├── SideNavItem.d.ts
│ ├── SideNavItem.js
│ ├── index.d.ts
│ └── index.js
├── Slider
│ ├── Slider.d.ts
│ ├── Slider.js
│ ├── Slider.test.js
│ ├── index.d.ts
│ └── index.js
├── Snackbar
│ ├── Snackbar.d.ts
│ ├── Snackbar.js
│ ├── Snackbar.test.js
│ ├── index.d.ts
│ ├── index.js
│ ├── provideSnackbar.d.ts
│ ├── provideSnackbar.js
│ └── provideSnackbar.test.js
├── Spinner
│ ├── Spinner.d.ts
│ ├── Spinner.js
│ ├── Spinner.test.js
│ ├── index.d.ts
│ └── index.js
├── Stepper
│ ├── Step.d.ts
│ ├── Step.js
│ ├── Stepper.d.ts
│ ├── Stepper.js
│ ├── Stepper.test.js
│ ├── index.d.ts
│ └── index.js
├── SvgIcon
│ ├── SvgIcon.d.ts
│ ├── SvgIcon.js
│ ├── index.d.ts
│ └── index.js
├── Switcher
│ ├── Switcher.d.ts
│ ├── Switcher.js
│ ├── Switcher.test.js
│ ├── index.d.ts
│ └── index.js
├── Tabs
│ ├── Tabs.d.ts
│ ├── Tabs.js
│ ├── Tabs.test.js
│ ├── TabsItem.d.ts
│ ├── TabsItem.js
│ ├── context.js
│ ├── index.d.ts
│ └── index.js
├── TagsInput
│ ├── ClearIcon.js
│ ├── TagsInput.d.ts
│ ├── TagsInput.js
│ ├── TagsInput.test.js
│ ├── TagsInputItem.d.ts
│ ├── TagsInputItem.js
│ ├── TagsInputItem.test.js
│ ├── index.d.ts
│ └── index.js
├── Textarea
│ ├── Textarea.d.ts
│ ├── Textarea.js
│ ├── Textarea.test.js
│ ├── index.d.ts
│ └── index.js
├── Toggle
│ ├── Toggle.d.ts
│ ├── Toggle.js
│ ├── Toggle.test.js
│ ├── ToggleOption.d.ts
│ ├── ToggleOption.js
│ ├── index.d.ts
│ └── index.js
├── Tooltip
│ ├── Tooltip.d.ts
│ ├── Tooltip.js
│ ├── TooltipContent.js
│ ├── index.d.ts
│ └── index.js
├── Typography
│ ├── Description.d.ts
│ ├── Description.js
│ ├── Epigraph.d.ts
│ ├── Epigraph.js
│ ├── GalleryDescription.d.ts
│ ├── GalleryDescription.js
│ ├── H1.d.ts
│ ├── H1.js
│ ├── H2.d.ts
│ ├── H2.js
│ ├── H3.d.ts
│ ├── H3.js
│ ├── List.d.ts
│ ├── List.js
│ ├── PhotoSource.d.ts
│ ├── PhotoSource.js
│ ├── Quote.d.ts
│ ├── Quote.js
│ ├── Source.d.ts
│ ├── Source.js
│ ├── Text.d.ts
│ ├── Text.js
│ ├── Timestamp.d.ts
│ ├── Timestamp.js
│ ├── Typography.d.ts
│ ├── Typography.js
│ ├── Typography.test.js
│ ├── index.d.ts
│ └── index.js
├── VisibilityAnimation
│ ├── VisibilityAnimation.d.ts
│ ├── VisibilityAnimation.js
│ ├── VisibilityAnimation.test.js
│ ├── index.d.ts
│ └── index.js
├── constants
│ ├── keys.js
│ ├── overlay.js
│ └── z-indexes.js
├── hoc
│ ├── provide-render-to-layer.d.ts
│ ├── provide-render-to-layer.js
│ ├── render-to-layer.d.ts
│ ├── render-to-layer.js
│ ├── window-events.d.ts
│ ├── window-events.js
│ ├── z-index-stack.d.ts
│ └── z-index-stack.js
├── icons
│ ├── .eslintrc.json
│ ├── forms
│ │ ├── AddIcon.js
│ │ ├── AppsIcon.js
│ │ ├── ArchiveIcon.js
│ │ ├── AttachIcon.js
│ │ ├── AttentionIcon.js
│ │ ├── AuthenticatorIcon.js
│ │ ├── BlockIcon.js
│ │ ├── BookIcon.js
│ │ ├── BurgerIcon.js
│ │ ├── CalendarIcon.js
│ │ ├── CaretDownIcon.js
│ │ ├── CaretUpIcon.js
│ │ ├── ChartAreaIcon.js
│ │ ├── ChartBarIcon.js
│ │ ├── ChartLineIcon.js
│ │ ├── ChartPieIcon.js
│ │ ├── ChevronDownCompactIcon.js
│ │ ├── ChevronDownIcon.js
│ │ ├── ChevronLeftCompactIcon.js
│ │ ├── ChevronLeftIcon.js
│ │ ├── ChevronRightCompactIcon.js
│ │ ├── ChevronRightIcon.js
│ │ ├── ChevronUpCompactIcon.js
│ │ ├── ChevronUpIcon.js
│ │ ├── ClearCompactIcon.js
│ │ ├── ClearIcon.js
│ │ ├── ClockIcon.js
│ │ ├── ClosedEyeIcon.js
│ │ ├── CodeIcon.js
│ │ ├── CommentIcon.js
│ │ ├── CommentWriteIcon.js
│ │ ├── ConfigIcon.js
│ │ ├── CreditCardIcon.js
│ │ ├── DialogIcon.js
│ │ ├── DislikeIcon.js
│ │ ├── DownloadIcon.js
│ │ ├── DraftIcon.js
│ │ ├── EditIcon.js
│ │ ├── EllipsisIcon.js
│ │ ├── EmailDoneIcon.js
│ │ ├── EmailIcon.js
│ │ ├── EmailReadIcon.js
│ │ ├── EyeIcon.js
│ │ ├── FaceIcon.js
│ │ ├── FilterFillIcon.js
│ │ ├── FilterIcon.js
│ │ ├── FolderIcon.js
│ │ ├── FontMinusIcon.js
│ │ ├── FontPlusIcon.js
│ │ ├── ForwardIcon.js
│ │ ├── FullscreenExitIcon.js
│ │ ├── FullscreenIcon.js
│ │ ├── GiftIcon.js
│ │ ├── GlobeIcon.js
│ │ ├── GridIcon.js
│ │ ├── GroupAddIcon.js
│ │ ├── GroupIcon.js
│ │ ├── GuideIcon.js
│ │ ├── HelpIcon.js
│ │ ├── HistoryIcon.js
│ │ ├── HoldIcon.js
│ │ ├── IdeaIcon.js
│ │ ├── InfoIcon.js
│ │ ├── KeyboardIcon.js
│ │ ├── LayoutFullIcon.js
│ │ ├── LayoutIcon.js
│ │ ├── LayoutWideIcon.js
│ │ ├── LikeIcon.js
│ │ ├── LoadIcon.js
│ │ ├── LockFillIcon.js
│ │ ├── LockIcon.js
│ │ ├── LockOpenIcon.js
│ │ ├── LockOutlineIcon.js
│ │ ├── LoginIcon.js
│ │ ├── LogoutIcon.js
│ │ ├── MinusCompactIcon.js
│ │ ├── MinusIcon.js
│ │ ├── MonologIcon.js
│ │ ├── MoveIcon.js
│ │ ├── NotebookIcon.js
│ │ ├── NotificationIcon.js
│ │ ├── OpenIcon.js
│ │ ├── OutboxIcon.js
│ │ ├── PauseIcon.js
│ │ ├── PercentIcon.js
│ │ ├── PersonFillIcon.js
│ │ ├── PersonIcon.js
│ │ ├── PhoneIcon.js
│ │ ├── PhotoCameraIcon.js
│ │ ├── PlayIcon.js
│ │ ├── PlusCompactIcon.js
│ │ ├── PlusIcon.js
│ │ ├── PrintIcon.js
│ │ ├── PrivacyIcon.js
│ │ ├── PurchaseIcon.js
│ │ ├── QuestionIcon.js
│ │ ├── RecordIcon.js
│ │ ├── RedoIcon.js
│ │ ├── RefreshIcon.js
│ │ ├── RemoveIcon.js
│ │ ├── ReplyAllIcon.js
│ │ ├── ReplyIcon.js
│ │ ├── RobotIcon.js
│ │ ├── SaveIcon.js
│ │ ├── SearchIcon.js
│ │ ├── SendIcon.js
│ │ ├── SettingsIcon.js
│ │ ├── ShareIcon.js
│ │ ├── SmileIcon.js
│ │ ├── SortIcon.js
│ │ ├── StarCrossIcon.js
│ │ ├── StarFillIcon.js
│ │ ├── StarIcon.js
│ │ ├── StickerIcon.js
│ │ ├── TickIcon.js
│ │ ├── UndoIcon.js
│ │ ├── UserIcon.js
│ │ ├── VolumeIcon.js
│ │ ├── VolumeMuteIcon.js
│ │ ├── WizardIcon.js
│ │ ├── index.d.ts
│ │ └── index.js
│ ├── index.d.ts
│ ├── index.js
│ ├── profiles
│ │ ├── AppleIcon.js
│ │ ├── ChampionatIcon.js
│ │ ├── FacebookIcon.js
│ │ ├── GoogleIcon.js
│ │ ├── InstagramIcon.js
│ │ ├── LivejournalIcon.js
│ │ ├── MailruIcon.js
│ │ ├── OdnoklassnikiIcon.js
│ │ ├── PgumosruIcon.js
│ │ ├── RamblerIcon.js
│ │ ├── RssIcon.js
│ │ ├── SberbankIcon.js
│ │ ├── TelegramIcon.js
│ │ ├── TwitterIcon.js
│ │ ├── VkontakteIcon.js
│ │ ├── YoutubeIcon.js
│ │ ├── index.d.ts
│ │ └── index.js
│ └── services
│ │ ├── RamblerAfishaIcon.js
│ │ ├── RamblerAutoIcon.js
│ │ ├── RamblerBrowserIcon.js
│ │ ├── RamblerClassIcon.js
│ │ ├── RamblerDoctorIcon.js
│ │ ├── RamblerFinanceIcon.js
│ │ ├── RamblerGamesIcon.js
│ │ ├── RamblerHeadIcon.js
│ │ ├── RamblerHelpIcon.js
│ │ ├── RamblerHoroscopesIcon.js
│ │ ├── RamblerKassaIcon.js
│ │ ├── RamblerLikesIcon.js
│ │ ├── RamblerLiveIcon.js
│ │ ├── RamblerLoveIcon.js
│ │ ├── RamblerMailIcon.js
│ │ ├── RamblerMoneyIcon.js
│ │ ├── RamblerNewsIcon.js
│ │ ├── RamblerOrganizationsIcon.js
│ │ ├── RamblerPicturesIcon.js
│ │ ├── RamblerPromoCodesIcon.js
│ │ ├── RamblerRadioIcon.js
│ │ ├── RamblerSearchIcon.js
│ │ ├── RamblerSoftIcon.js
│ │ ├── RamblerSportIcon.js
│ │ ├── RamblerStarLifeIcon.js
│ │ ├── RamblerTVIcon.js
│ │ ├── RamblerTop100Icon.js
│ │ ├── RamblerTravelIcon.js
│ │ ├── RamblerVideoIcon.js
│ │ ├── RamblerWeatherIcon.js
│ │ ├── RamblerWeekendIcon.js
│ │ ├── RamblerWomanIcon.js
│ │ ├── index.d.ts
│ │ └── index.js
├── index.d.ts
├── index.js
├── index.test.js
├── theme
│ ├── ThemeProvider.d.ts
│ ├── ThemeProvider.js
│ ├── base.js
│ ├── colors.js
│ ├── create-theme.d.ts
│ ├── create-theme.js
│ ├── create-use-styles.js
│ ├── i18n.js
│ ├── index.d.ts
│ ├── index.js
│ ├── index.test.js
│ ├── jss.d.ts
│ ├── jss.js
│ ├── with-base-theme.js
│ └── with-styles.js
└── utils
│ ├── DOM.d.ts
│ ├── DOM.js
│ ├── browser.js
│ ├── colors.js
│ ├── compose.js
│ ├── createGetMemoizedRef.js
│ ├── focus-source.js
│ ├── get-display-name.js
│ ├── mixins.js
│ ├── raf.js
│ └── uuid.js
├── static
├── brand.png
├── components.png
├── favicon-32x32.png
├── guidelines.png
├── hiring-mobile.png
├── hiring.png
├── index.html
├── intro-mobile.png
├── intro.png
├── products.png
└── share-ratio.png
├── test
├── init.js
└── utils.js
└── tsconfig.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 |
--------------------------------------------------------------------------------
/.eslintrc.typescript.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "./.eslintrc.json",
4 | "plugin:@typescript-eslint/recommended",
5 | "prettier/@typescript-eslint"
6 | ],
7 | "parser": "@typescript-eslint/parser"
8 | }
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | *.log
4 | *.css.json
5 | local_font/
6 | .publish
7 | build/
8 | npm-debug.*.*
9 | .idea/
10 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | build/
3 | *.css.json
4 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true,
4 | "bracketSpacing": false,
5 | "jsxBracketSameLine": true
6 | }
7 |
--------------------------------------------------------------------------------
/.size-limit.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "The initial cost people pay for using one component with commonjs build",
4 | "limit": "30 KB",
5 | "path": ["build/Button/index.js", "!build/**/*.test.js"]
6 | },
7 | {
8 | "name": "The initial cost people pay for using one component with es build",
9 | "limit": "27 KB",
10 | "path": "build/es/index.js",
11 | "import": "{Button}"
12 | },
13 | {
14 | "name": "The size of the commonjs library components",
15 | "limit": "109 KB",
16 | "path": [
17 | "build/**/*.js",
18 | "!build/icons/**/*.js",
19 | "!build/es/**/*.js",
20 | "!build/index.js",
21 | "!build/**/*.test.js"
22 | ]
23 | },
24 | {
25 | "name": "The size of the commonjs library build with all icons",
26 | "limit": "149 KB",
27 | "path": "build/index.js"
28 | },
29 | {
30 | "name": "The size of the es library build with all icons",
31 | "limit": "138 KB",
32 | "path": "build/es/index.js"
33 | }
34 | ]
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Rambler UI
2 |
3 | > Общие React компоненты для проектов вертикалей Рамблера.
4 |
5 | ## Установка
6 |
7 | ```sh
8 | npm install --save rambler-ui
9 | ```
10 |
11 | ## Использование
12 |
13 | ```js
14 | // src/index.js
15 | import React from 'react'
16 | import {render} from 'react-dom'
17 | import App from './App'
18 |
19 | render(, document.getElementById('app'))
20 |
21 | // src/App.js
22 | import React from 'react'
23 | import Button from 'rambler-ui/Button'
24 |
25 | export default () => (
26 |
27 |
30 |
31 | )
32 | ```
33 |
34 | Более подробно про установку и использование можно прочитать в [документации](https://ui-kit.rambler.ru/#/usage/install) и в описании [API компонентов](https://ui-kit.rambler.ru/#/components/Avatar).
35 |
36 | ## [Разработка](https://ui-kit.rambler.ru/#/usage/contribute)
37 |
38 | ## Лицензия
39 |
40 | MIT
41 |
--------------------------------------------------------------------------------
/docs/components/H1.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import {withStyles, fontFamily} from 'docs/utils/theming'
4 |
5 | const styles = {
6 | root: {
7 | margin: 0,
8 | fontFamily: fontFamily.Roboto,
9 | fontSize: 40,
10 | fontWeight: 300,
11 | lineHeight: '50px',
12 | overflow: 'hidden',
13 | textOverflow: 'ellipsis'
14 | }
15 | }
16 |
17 | const H1 = ({classes, style, children}) => (
18 |
19 | {children}
20 |
21 | )
22 |
23 | H1.propTypes = {
24 | children: PropTypes.node
25 | }
26 |
27 | export default withStyles(styles)(H1)
28 |
--------------------------------------------------------------------------------
/docs/components/H2.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import {withStyles, fontFamily} from 'docs/utils/theming'
4 |
5 | const styles = {
6 | root: {
7 | marginTop: 40,
8 | marginBottom: 25,
9 | fontFamily: fontFamily.CorsicaRamblerLX,
10 | fontSize: 35,
11 | fontWeight: 500,
12 | lineHeight: '35px'
13 | }
14 | }
15 |
16 | const H2 = ({classes, children}) => {children}
17 |
18 | H2.propTypes = {
19 | children: PropTypes.node
20 | }
21 |
22 | export default withStyles(styles)(H2)
23 |
--------------------------------------------------------------------------------
/docs/components/H3.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import {withStyles, fontFamily} from 'docs/utils/theming'
4 |
5 | const styles = {
6 | root: {
7 | marginTop: 40,
8 | marginBottom: 10,
9 | fontFamily: fontFamily.CorsicaRamblerLX,
10 | fontSize: 25,
11 | fontWeight: 500,
12 | lineHeight: '35px'
13 | }
14 | }
15 |
16 | const H3 = ({classes, children}) => {children}
17 |
18 | H3.propTypes = {
19 | children: PropTypes.node
20 | }
21 |
22 | export default withStyles(styles)(H3)
23 |
--------------------------------------------------------------------------------
/docs/components/InlineCode.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import {withStyles, fontFamily} from 'docs/utils/theming'
4 |
5 | const styles = {
6 | root: {
7 | display: 'inline',
8 | padding: '.2em .3em',
9 | backgroundColor: 'rgba(238, 242, 244, .5)',
10 | fontFamily: fontFamily.Menlo,
11 | fontSize: '92%',
12 | lineHeight: '18px'
13 | }
14 | }
15 |
16 | const InlineCode = ({classes, children}) => (
17 | {children}
18 | )
19 |
20 | InlineCode.propTypes = {
21 | children: PropTypes.node
22 | }
23 |
24 | export default withStyles(styles)(InlineCode)
25 |
--------------------------------------------------------------------------------
/docs/components/PreCode.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import {withStyles, fontFamily} from 'docs/utils/theming'
4 |
5 | const styles = {
6 | root: {
7 | padding: '14px 25px 14px 20px',
8 | overflow: 'auto',
9 | backgroundColor: 'rgba(238, 242, 244, .5)',
10 | fontFamily: fontFamily.Menlo,
11 | fontSize: 13,
12 | lineHeight: '18px',
13 | '& code': {
14 | padding: 0,
15 | backgroundColor: 'transparent',
16 | fontFamily: 'inherit'
17 | }
18 | }
19 | }
20 |
21 | const PreCode = ({classes, children}) => (
22 | {children}
23 | )
24 |
25 | PreCode.propTypes = {
26 | children: PropTypes.node
27 | }
28 |
29 | export default withStyles(styles)(PreCode)
30 |
--------------------------------------------------------------------------------
/docs/components/Route.js:
--------------------------------------------------------------------------------
1 | import React, {PureComponent} from 'react'
2 | import PropTypes from 'prop-types'
3 | import {Route as DomRoute} from 'react-router-dom'
4 |
5 | export default class Route extends PureComponent {
6 | static propTypes = {
7 | /**
8 | * Адрес
9 | */
10 | path: PropTypes.string
11 | }
12 |
13 | component = null
14 |
15 | async componentDidMount() {
16 | let {path} = this.props
17 | const {default: component} = await import(
18 | /* webpackMode: "lazy" */ `docs/pages${path}`
19 | )
20 | this.component = component
21 | this.forceUpdate()
22 | }
23 |
24 | render() {
25 | return
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/docs/components/icons/Arrow.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import PropTypes from 'prop-types'
3 | import SvgIcon from 'rambler-ui/SvgIcon'
4 |
5 | export default function ArrowIcon({color, ...props}) {
6 | return (
7 |
13 |
14 |
15 | )
16 | }
17 |
18 | ArrowIcon.propTypes = {
19 | color: PropTypes.string
20 | }
21 |
--------------------------------------------------------------------------------
/docs/components/icons/Chevron.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import SvgIcon from 'rambler-ui/SvgIcon'
3 |
4 | /* eslint-disable max-len */
5 | export default function ChevronIcon(props) {
6 | return (
7 |
8 |
9 |
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/docs/components/icons/Medium.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import SvgIcon from 'rambler-ui/SvgIcon'
3 |
4 | /* eslint-disable max-len */
5 | export default function MediumIcon(props) {
6 | return (
7 |
8 |
9 |
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/docs/components/icons/Sketch.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import SvgIcon from 'rambler-ui/SvgIcon'
3 |
4 | /* eslint-disable max-len */
5 | export default function SketchIcon(props) {
6 | return (
7 |
8 |
9 |
13 |
17 |
22 |
23 | )
24 | }
25 |
--------------------------------------------------------------------------------
/docs/config.js:
--------------------------------------------------------------------------------
1 | import env from /* preval */ './lib/env'
2 |
3 | const targets = env.targets
4 | let config = env
5 |
6 | if (targets) {
7 | const targetConfig = targets[location.hostname]
8 | if (targetConfig) config = {...config, ...targetConfig}
9 | delete config.targets
10 | }
11 |
12 | export default config
13 |
--------------------------------------------------------------------------------
/docs/lib/env.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | const cp = require('child_process')
3 |
4 | const {NODE_ENV = 'development', CI_COMMIT_REF_NAME} = process.env
5 |
6 | const base = {
7 | repo: 'git@gitlab.rambler.ru:rambler-ui/rambler-ui',
8 | branch:
9 | CI_COMMIT_REF_NAME ||
10 | cp
11 | .execSync('git rev-parse --abbrev-ref HEAD')
12 | .toString()
13 | .trim()
14 | }
15 |
16 | let env
17 |
18 | if (NODE_ENV === 'development')
19 | env = {
20 | repoLink: 'https://github.com/rambler-digital-solutions/rambler-ui/',
21 | pathPrefix: ''
22 | }
23 |
24 | if (NODE_ENV === 'production')
25 | env = {
26 | targets: {
27 | 'rambler-ui.pages.rambler-co.ru': {
28 | repoLink: 'https://gitlab.rambler.ru/rambler-ui/rambler-ui/',
29 | pathPrefix: '/rambler-ui'
30 | },
31 | 'ui-kit.rambler.ru': {
32 | repoLink: 'https://github.com/rambler-digital-solutions/rambler-ui/',
33 | pathPrefix: ''
34 | }
35 | }
36 | }
37 |
38 | module.exports = Object.assign({}, base, env)
39 |
--------------------------------------------------------------------------------
/docs/page-list.js:
--------------------------------------------------------------------------------
1 | import components from /* preval */ './lib/component-list'
2 |
3 | export default [
4 | {
5 | title: 'Компоненты',
6 | path: '/components',
7 | children: components
8 | },
9 | {
10 | title: 'Как использовать',
11 | path: '/usage',
12 | children: [
13 | {
14 | title: 'Установка',
15 | path: '/usage/install'
16 | },
17 | {
18 | title: 'Разработка',
19 | path: '/usage/contribute'
20 | }
21 | ]
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/docs/pages/components/Avatar/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Avatar/Avatar'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Avatar
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Button/examples-react-router.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Link} from 'react-router-dom'
3 | import Button from 'rambler-ui/Button'
4 |
5 | export default function ButtonRouterExample() {
6 | return (
7 |
8 | }>Кнопка-ссылка
9 |
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/docs/pages/components/Button/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import examplesCodeRouter from '!!raw-loader!./examples-react-router'
3 | import code from '!!raw-loader!rambler-ui/Button/Button'
4 |
5 | import Playground from 'docs/components/Playground'
6 | import PropTypesTable from 'docs/components/PropTypesTable'
7 |
8 | # Button
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример использования с `react-router`
14 |
15 |
16 | ### Свойства ``
17 |
18 |
--------------------------------------------------------------------------------
/docs/pages/components/Calendar/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Calendar/Calendar'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Calendar
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Checkbox/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Checkbox/Checkbox'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Checkbox
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/ComplexSearch/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import codeSearch from '!!raw-loader!rambler-ui/ComplexSearch/ComplexSearch'
5 | import codeServiceSearch from '!!raw-loader!rambler-ui/ComplexSearch/ServiceSearch'
6 | import codeSimpleSearch from '!!raw-loader!rambler-ui/ComplexSearch/SimpleSearch'
7 | import codeItem from '!!raw-loader!rambler-ui/ComplexSearch/SuggestItem'
8 |
9 | # ComplexSearch
10 |
11 | ### Пример
12 |
13 |
14 | ### Свойства ``
15 |
16 |
17 | ### Свойства ``
18 |
19 |
20 | ### Свойства ``
21 |
22 |
23 | ### Свойства ``
24 |
25 |
--------------------------------------------------------------------------------
/docs/pages/components/Dropdown/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Dropdown/Dropdown'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Dropdown
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/FieldGroup/index.md:
--------------------------------------------------------------------------------
1 | import examplesBaseCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/FieldGroup/FieldGroup'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # FieldGroup
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Hint/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Hint/Hint'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Hint
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/IconButton/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/IconButton/IconButton'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # IconButton
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Input/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import code from '!!raw-loader!rambler-ui/Input/Input'
5 | import codeFormGroup from '!!raw-loader!rambler-ui/FormGroup/FormGroup'
6 | import codeFieldStatus from '!!raw-loader!rambler-ui/FieldStatus/FieldStatus'
7 |
8 | # Input
9 |
10 | ### Пример
11 |
12 |
13 | ### Свойства ``
14 |
15 |
16 | ### Свойства ``
17 |
18 |
19 | ### Свойства ``
20 |
21 |
--------------------------------------------------------------------------------
/docs/pages/components/Loader/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Loader/Loader'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Loader
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Menu/examples-react-router.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Link} from 'react-router-dom'
3 | import {Menu, MenuItem} from 'rambler-ui/Menu'
4 |
5 | export default function MenuRouterExample() {
6 | return (
7 |
8 |
17 |
18 | )
19 | }
20 |
--------------------------------------------------------------------------------
/docs/pages/components/Menu/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import examplesRouter from '!!raw-loader!./examples-react-router'
5 | import codeMenu from '!!raw-loader!rambler-ui/Menu/Menu'
6 | import codeMenuItem from '!!raw-loader!rambler-ui/Menu/MenuItem'
7 |
8 | # Menu
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример использования с `react-router`
14 |
15 |
16 | ### Свойства ``
17 |
18 |
19 | ### Свойства ``
20 |
21 |
--------------------------------------------------------------------------------
/docs/pages/components/Notification/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import examplesDecoratorCode from '!!raw-loader!./examples-decorator'
3 | import code from '!!raw-loader!rambler-ui/Notification/Notification'
4 |
5 | import Playground from 'docs/components/Playground'
6 | import PropTypesTable from 'docs/components/PropTypesTable'
7 |
8 | # Notification
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример с декоратором
14 |
15 |
16 | ### Свойства ``
17 |
18 |
--------------------------------------------------------------------------------
/docs/pages/components/Pagination/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Pagination/Pagination'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Pagination
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Popup/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import examplesDecoratorCode from '!!raw-loader!./examples-decorator'
3 | import code from '!!raw-loader!rambler-ui/Popup/Popup'
4 |
5 | import Playground from 'docs/components/Playground'
6 | import PropTypesTable from 'docs/components/PropTypesTable'
7 |
8 | # Popup
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример с декоратором
14 |
15 |
16 | ### Свойства ``
17 |
18 |
--------------------------------------------------------------------------------
/docs/pages/components/Radio/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import codeRadioButton from '!!raw-loader!rambler-ui/Radio/RadioButton'
5 | import codeRadioButtonGroup from '!!raw-loader!rambler-ui/Radio/RadioButtonGroup'
6 |
7 | # Radio
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства ``
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/Select/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import codeSelect from '!!raw-loader!rambler-ui/Select/Select'
5 | import codeMenuItem from '!!raw-loader!rambler-ui/Menu/MenuItem'
6 |
7 | # Select
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства ``
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/SideNav/examples-react-router.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Link} from 'react-router-dom'
3 | import {SideNav, SideNavItem} from 'rambler-ui/SideNav'
4 | import {BookIcon, EmailIcon, PhoneIcon} from 'rambler-ui/icons/forms'
5 |
6 | export default function SideNavRouterExample() {
7 | return (
8 |
9 |
10 | } icon={}>
11 | Личные данные
12 |
13 | } icon={}>
14 | Адреса электронной почты
15 |
16 | (
18 |
19 | )}
20 | icon={}>
21 | Телефонные номера
22 |
23 |
24 |
25 | )
26 | }
27 |
--------------------------------------------------------------------------------
/docs/pages/components/SideNav/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import examplesCodeHref from '!!raw-loader!./examples-href'
3 | import examplesCodeRouter from '!!raw-loader!./examples-react-router'
4 | import codeSideNav from '!!raw-loader!rambler-ui/SideNav/SideNav'
5 | import codeSideNavItem from '!!raw-loader!rambler-ui/SideNav/SideNavItem'
6 |
7 | import Playground from 'docs/components/Playground'
8 | import PropTypesTable from 'docs/components/PropTypesTable'
9 |
10 | # SideNav
11 |
12 | ### Пример
13 |
14 |
15 | ### Пример со ссылками
16 |
17 |
18 | ### Пример использования с `react-router`
19 |
20 |
21 | ### Свойства ``
22 |
23 |
24 | ### Свойства ``
25 |
26 |
--------------------------------------------------------------------------------
/docs/pages/components/Slider/examples.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 | import Slider from 'rambler-ui/Slider'
3 |
4 | export default class SliderExample extends Component {
5 | state = {
6 | value: 200
7 | }
8 |
9 | onChange = (event, value) => {
10 | this.setState({value})
11 | }
12 |
13 | render() {
14 | return (
15 |
16 |
23 |
24 | )
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/docs/pages/components/Slider/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Slider/Slider'
3 | import Playground from 'docs/components/Playground'
4 | import PropTypesTable from 'docs/components/PropTypesTable'
5 |
6 | # Slider
7 |
8 | ### Пример
9 |
10 |
11 | ### Свойства ``
12 |
13 |
--------------------------------------------------------------------------------
/docs/pages/components/Snackbar/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import examplesDecoratorCode from '!!raw-loader!./examples-decorator'
3 | import code from '!!raw-loader!rambler-ui/Snackbar/Snackbar'
4 |
5 | import Playground from 'docs/components/Playground'
6 | import PropTypesTable from 'docs/components/PropTypesTable'
7 |
8 | # Snackbar
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример с декоратором
14 |
15 |
16 | ### Свойства ``
17 |
18 |
--------------------------------------------------------------------------------
/docs/pages/components/Spinner/examples.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Spinner from 'rambler-ui/Spinner'
3 |
4 | export default function SpinnerExample() {
5 | return (
6 |
7 |
8 |
Default
9 |
10 |
11 |
12 |
inline: true, color: currentColor, size: 3
13 |
14 | Что-то произойдет через 5 секунд{' '}
15 |
16 |
17 |
18 |
19 | )
20 | }
21 |
--------------------------------------------------------------------------------
/docs/pages/components/Spinner/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Spinner/Spinner'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Spinner
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Stepper/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import codeStep from '!!raw-loader!rambler-ui/Stepper/Step'
5 | import codeStepper from '!!raw-loader!rambler-ui/Stepper/Stepper'
6 |
7 | # Stepper
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства ``
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/SvgIcon/examples.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import SvgIcon from 'rambler-ui/SvgIcon'
3 |
4 | const icons = [
5 | {},
6 | {size: 'small', color: 'red'},
7 | {size: 'large', color: 'blue'}
8 | ]
9 |
10 | export default function SvgIconExample() {
11 | return (
12 |
13 | {icons.map((props, i) => (
14 |
19 | ))}
20 |
21 | )
22 | }
23 |
--------------------------------------------------------------------------------
/docs/pages/components/SvgIcon/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/SvgIcon/SvgIcon'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # SvgIcon
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Switcher/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Switcher/Switcher'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Switcher
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Tabs/examples-react-router.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Tabs, TabsItem} from 'rambler-ui/Tabs'
3 | import {Link} from 'react-router-dom'
4 |
5 | export default function TabsRouterExample() {
6 | return (
7 |
8 |
9 | }>Кнопка-ссылка
10 | (
12 |
13 | )}>
14 | Кнопка-ссылка
15 |
16 |
17 |
18 | )
19 | }
20 |
--------------------------------------------------------------------------------
/docs/pages/components/Tabs/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import examplesRouter from '!!raw-loader!./examples-react-router'
5 | import codeTabs from '!!raw-loader!rambler-ui/Tabs/Tabs'
6 | import codeTabsItem from '!!raw-loader!rambler-ui/Tabs/TabsItem'
7 |
8 | # Tabs
9 |
10 | ### Пример
11 |
12 |
13 | ### Пример использования с `react-router`
14 |
15 |
16 | ### Свойства ``
17 |
18 |
19 | ### Свойства ``
20 |
21 |
--------------------------------------------------------------------------------
/docs/pages/components/TagsInput/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import code from '!!raw-loader!rambler-ui/TagsInput/TagsInput'
5 | import codeItem from '!!raw-loader!rambler-ui/TagsInput/TagsInputItem'
6 |
7 | # TagsInput
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства ``
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/Textarea/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Textarea/Textarea'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Textarea
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Toggle/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import codeToggle from '!!raw-loader!rambler-ui/Toggle/Toggle'
5 | import codeToggleOption from '!!raw-loader!rambler-ui/Toggle/ToggleOption'
6 |
7 | # Toggle
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства ``
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/Tooltip/index.md:
--------------------------------------------------------------------------------
1 | import examplesCode from '!!raw-loader!./examples'
2 | import code from '!!raw-loader!rambler-ui/Tooltip/Tooltip'
3 |
4 | import Playground from 'docs/components/Playground'
5 | import PropTypesTable from 'docs/components/PropTypesTable'
6 |
7 | # Tooltip
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
--------------------------------------------------------------------------------
/docs/pages/components/Typography/index.md:
--------------------------------------------------------------------------------
1 | import Playground from 'docs/components/Playground'
2 | import PropTypesTable from 'docs/components/PropTypesTable'
3 | import examples from '!!raw-loader!./examples'
4 | import code from '!!raw-loader!rambler-ui/Typography/Typography'
5 | import listCode from '!!raw-loader!rambler-ui/Typography/List'
6 |
7 | # Typography
8 |
9 | ### Пример
10 |
11 |
12 | ### Свойства ``
13 |
14 |
15 | ### Свойства `
`
16 |
17 |
--------------------------------------------------------------------------------
/docs/pages/components/icons/examples-forms.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Tooltip from 'rambler-ui/Tooltip'
3 | import * as icons from 'rambler-ui/icons/forms'
4 |
5 | const styles = {
6 | display: 'inline-block',
7 | margin: 10
8 | }
9 |
10 | export default function FormIconsExamples() {
11 | return (
12 |
13 | {Object.keys(icons)
14 | .filter(iconName => iconName === icons[iconName].displayName)
15 | .map(iconName => {
16 | const Icon = icons[iconName]
17 | return (
18 |
19 | `}>
20 |
21 |
22 |
23 | )
24 | })}
25 |
26 | )
27 | }
28 |
--------------------------------------------------------------------------------
/docs/pages/components/icons/examples-services.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Tooltip from 'rambler-ui/Tooltip'
3 | import * as icons from 'rambler-ui/icons/services'
4 |
5 | const styles = {
6 | display: 'inline-block',
7 | margin: 10
8 | }
9 |
10 | export default function ServiceIconsExamples() {
11 | return (
12 |
13 | {Object.keys(icons).map(iconName => {
14 | const Icon = icons[iconName]
15 | return (
16 |
17 | `}>
18 |
19 |
20 |
21 | )
22 | })}
23 |
24 | )
25 | }
26 |
--------------------------------------------------------------------------------
/docs/pages/components/icons/index.md:
--------------------------------------------------------------------------------
1 | import examplesFormsCode from '!!raw-loader!./examples-forms'
2 | import examplesProfilesCode from '!!raw-loader!./examples-profiles'
3 | import examplesServicesCode from '!!raw-loader!./examples-services'
4 | import svgIconCode from '!!raw-loader!rambler-ui/SvgIcon/SvgIcon'
5 |
6 | import Playground from 'docs/components/Playground'
7 | import PropTypesTable from 'docs/components/PropTypesTable'
8 |
9 | # Icons
10 |
11 | ### Иконки форм
12 |
13 |
14 |
15 | ### Иконки профилей
16 |
17 |
18 |
19 | ### Иконки сервисов
20 |
21 |
22 |
23 | ### Свойства иконок
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/utils/create-source-url.js:
--------------------------------------------------------------------------------
1 | import config from 'docs/config'
2 |
3 | const cache = {}
4 |
5 | export default function createSourceUrl(pathname) {
6 | if (cache[pathname]) return cache[pathname]
7 | const path = pathname.substring(1).split(/\//)
8 | const prefix = path[0]
9 | if (prefix !== 'components')
10 | return `${config.repoLink}tree/${config.branch}/docs/pages${pathname}/index.md`
11 | const filename = path.pop()
12 | if (filename == null || prefix === filename) return
13 | return `${config.repoLink}tree/${config.branch}/src/${filename}`
14 | }
15 |
--------------------------------------------------------------------------------
/docs/utils/load-style-sheet.js:
--------------------------------------------------------------------------------
1 | export default function loadStyleSheet(href) {
2 | return new Promise((resolve, reject) => {
3 | const link = document.createElement('link')
4 |
5 | link.onload = () => {
6 | resolve(link)
7 | }
8 |
9 | link.onerror = () => {
10 | reject(new Error('font stylesheet not loaded'))
11 | }
12 |
13 | link.type = 'text/css'
14 | link.rel = 'stylesheet'
15 | link.href = href
16 |
17 | document.head.appendChild(link)
18 | })
19 | }
20 |
--------------------------------------------------------------------------------
/examples/simple/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-react"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/examples/simple/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | build
4 | *.log
5 | npm-debug.*.*
6 |
--------------------------------------------------------------------------------
/examples/simple/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Simple Rambler UI example
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/examples/simple/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rambler-ui-simple-example",
3 | "version": "0.0.0",
4 | "description": "Simple Rambler UI example",
5 | "scripts": {
6 | "start": "webpack-dev-server -d"
7 | },
8 | "dependencies": {
9 | "rambler-ui": "file:../../build",
10 | "react": "file:../../node_modules/react",
11 | "react-dom": "file:../../node_modules/react-dom"
12 | },
13 | "devDependencies": {
14 | "@babel/core": "^7.8.7",
15 | "@babel/preset-env": "^7.8.7",
16 | "@babel/preset-react": "^7.8.3",
17 | "babel-loader": "^8.0.6",
18 | "webpack": "^4.42.0",
19 | "webpack-dev-server": "^3.10.3"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/simple/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Button from 'rambler-ui/Button'
3 |
4 | const App = () => (
5 |
6 |
7 |
8 | )
9 |
10 | export default App
11 |
--------------------------------------------------------------------------------
/examples/simple/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 | import App from './App'
4 |
5 | render(, document.getElementById('app'))
6 |
--------------------------------------------------------------------------------
/examples/simple/webpack.config.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | module.exports = {
3 | entry: './src/index.js',
4 | output: {
5 | filename: 'index.js',
6 | path: `${__dirname}/build`,
7 | publicPath: '/'
8 | },
9 | module: {
10 | rules: [
11 | {
12 | test: /\.js$/,
13 | exclude: /node_modules/,
14 | use: ['babel-loader']
15 | }
16 | ]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/examples/ssr/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-react"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/examples/ssr/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | build
4 | *.log
5 | npm-debug.*.*
6 |
--------------------------------------------------------------------------------
/examples/ssr/client/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 | import {ThemeProvider} from 'rambler-ui/theme'
4 | import App from '../common/App'
5 |
6 | const app = (
7 |
8 |
9 |
10 | )
11 |
12 | render(app, document.getElementById('app'), () => {
13 | const styles = document.getElementById('server-styles')
14 | styles.parentNode.removeChild(styles)
15 | })
16 |
--------------------------------------------------------------------------------
/examples/ssr/common/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Button from 'rambler-ui/Button'
3 |
4 | const App = () => (
5 |
6 |
7 |
8 | )
9 |
10 | export default App
11 |
--------------------------------------------------------------------------------
/examples/ssr/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rambler-ui-ssr-example",
3 | "version": "0.0.0",
4 | "description": "Rambler UI example with SSR",
5 | "scripts": {
6 | "start": "webpack -p && node server/index.js"
7 | },
8 | "dependencies": {
9 | "@babel/register": "^7.8.6",
10 | "koa": "^2.11.0",
11 | "koa-static": "^5.0.0",
12 | "rambler-ui": "file:../../build",
13 | "react": "file:../../node_modules/react",
14 | "react-dom": "file:../../node_modules/react-dom"
15 | },
16 | "devDependencies": {
17 | "@babel/core": "^7.8.7",
18 | "@babel/preset-env": "^7.8.7",
19 | "@babel/preset-react": "^7.8.3",
20 | "babel-loader": "^8.0.6",
21 | "webpack": "^4.42.0",
22 | "webpack-dev-server": "^3.10.3"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/examples/ssr/server/index.js:
--------------------------------------------------------------------------------
1 | require('@babel/register')
2 | require('./server')
3 |
--------------------------------------------------------------------------------
/examples/ssr/webpack.config.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | module.exports = {
3 | entry: './client/index.js',
4 | output: {
5 | filename: 'index.js',
6 | path: `${__dirname}/build`,
7 | publicPath: '/'
8 | },
9 | module: {
10 | rules: [
11 | {
12 | test: /\.js$/,
13 | exclude: /node_modules/,
14 | use: ['babel-loader']
15 | }
16 | ]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/examples/theming/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-react"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/examples/theming/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | build
4 | *.log
5 | npm-debug.*.*
6 |
--------------------------------------------------------------------------------
/examples/theming/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Rambler UI example with custom theme
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/examples/theming/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rambler-ui-theming-example",
3 | "version": "0.0.0",
4 | "description": "Rambler UI example with custom theme",
5 | "scripts": {
6 | "start": "webpack-dev-server -d"
7 | },
8 | "dependencies": {
9 | "rambler-ui": "file:../../build",
10 | "react": "file:../../node_modules/react",
11 | "react-dom": "file:../../node_modules/react-dom"
12 | },
13 | "devDependencies": {
14 | "@babel/core": "^7.8.7",
15 | "@babel/preset-env": "^7.8.7",
16 | "@babel/preset-react": "^7.8.3",
17 | "babel-loader": "^8.0.6",
18 | "webpack": "^4.42.0",
19 | "webpack-dev-server": "^3.10.3"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/examples/theming/src/App.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import Button from 'rambler-ui/Button'
3 |
4 | const App = () => (
5 |
6 |
7 |
8 | )
9 |
10 | export default App
11 |
--------------------------------------------------------------------------------
/examples/theming/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 | import {ThemeProvider, createTheme, colors} from 'rambler-ui/theme'
4 | import App from './App'
5 |
6 | const theme = createTheme({
7 | colors: Object.assign(colors, {
8 | primary: '#db7093'
9 | }),
10 | button: {
11 | borderRadius: 5
12 | }
13 | })
14 |
15 | const app = (
16 |
17 |
18 |
19 | )
20 |
21 | render(app, document.getElementById('app'))
22 |
--------------------------------------------------------------------------------
/examples/theming/webpack.config.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | module.exports = {
3 | entry: './src/index.js',
4 | output: {
5 | filename: 'index.js',
6 | path: `${__dirname}/build`,
7 | publicPath: '/'
8 | },
9 | module: {
10 | rules: [
11 | {
12 | test: /\.js$/,
13 | exclude: /node_modules/,
14 | use: ['babel-loader']
15 | }
16 | ]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/scripts/ci-git-push-prepare.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 |
3 | ssh_host=$1
4 | private_key=$2
5 |
6 | if [ -z "$private_key" ]; then
7 | >&2 echo "Set private key to environment variable"
8 | exit 1
9 | fi
10 |
11 | mkdir -p ~/.ssh
12 | echo "$private_key" | tr -d '\r' > ~/.ssh/id_rsa
13 | chmod 600 ~/.ssh/id_rsa
14 | ssh-keyscan -H "$ssh_host" >> ~/.ssh/known_hosts
15 |
--------------------------------------------------------------------------------
/scripts/copy-files.js:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | const path = require('path')
3 | const fs = require('fs')
4 | const glob = require('glob')
5 |
6 | const packagePath = process.cwd()
7 | const srcPath = path.join(packagePath, './src')
8 | const buildPath = path.join(packagePath, './build')
9 |
10 | try {
11 | const declarationFiles = glob.sync('**/*.d.ts', {cwd: srcPath})
12 | const metaFiles = [
13 | '.npmignore',
14 | 'package.json',
15 | 'package-lock.json',
16 | 'README.md'
17 | ]
18 | declarationFiles.forEach(file => {
19 | fs.copyFileSync(path.resolve(srcPath, file), path.resolve(buildPath, file))
20 | })
21 | console.log('declaration files copied successfully')
22 | metaFiles.forEach(file => {
23 | fs.copyFileSync(
24 | path.resolve(packagePath, file),
25 | path.resolve(buildPath, file)
26 | )
27 | })
28 | console.log('package meta files copied successfully')
29 | } catch (error) {
30 | console.error(error)
31 | process.exit(1)
32 | }
33 |
--------------------------------------------------------------------------------
/src/Avatar/Avatar.d.ts:
--------------------------------------------------------------------------------
1 | import {PureComponent, ReactElement, HTMLProps, Ref} from 'react'
2 |
3 | export type AvatarShape = 'circle' | 'square' | 'rounded'
4 |
5 | export type ProfileType =
6 | | 'facebook'
7 | | 'championat'
8 | | 'google'
9 | | 'instagram'
10 | | 'livejournal'
11 | | 'mailru'
12 | | 'odnoklassniki'
13 | | 'pgumosru'
14 | | 'rambler'
15 | | 'twitter'
16 | | 'vkontakte'
17 |
18 | export interface AvatarProps extends Omit, 'ref'> {
19 | backgroundColor?: string
20 | iconBackgroundColor?: string
21 | src: string
22 | fallbackSrc?: string
23 | size?: number
24 | shape?: AvatarShape
25 | profileType?: ProfileType
26 | container?: ReactElement
27 | ref?: Ref>
28 | }
29 |
30 | export default class Avatar extends PureComponent<
31 | AvatarProps,
32 | {}
33 | > {}
34 |
--------------------------------------------------------------------------------
/src/Avatar/index.d.ts:
--------------------------------------------------------------------------------
1 | export {default} from './Avatar'
2 | export * from './Avatar'
3 |
--------------------------------------------------------------------------------
/src/Avatar/index.js:
--------------------------------------------------------------------------------
1 | export {default} from './Avatar'
2 |
--------------------------------------------------------------------------------
/src/Button/Button.d.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ReactElement,
3 | ReactNode,
4 | PureComponent,
5 | SyntheticEvent,
6 | HTMLProps,
7 | Ref
8 | } from 'react'
9 | import {HorizontalPosition, Size, ButtonType} from '..'
10 |
11 | export interface ButtonProps
12 | extends Omit, 'size' | 'onClick' | 'ref'> {
13 | className?: string
14 | type?: ButtonType
15 | icon?: ReactNode
16 | iconPosition?: Exclude
17 | size?: Size
18 | onClick?: (event: SyntheticEvent) => void | Promise
19 | container?: ReactElement
20 | overlay?: ReactElement
21 | disabled?: boolean
22 | block?: boolean
23 | buttonType?: string
24 | width?: number | string
25 | loading?: boolean
26 | rounded?: boolean
27 | nodeRef?: Ref
28 | ref?: Ref