Introduction
The styleguide is a UI/UX bible for for designers and developers. We use it to maintain modular front-end code and visual consistency across the web app.
How to use?
- Use the existed patterns
- If the existed patterns do not solve the design problem, there are two options:
- Alter a pre-existing pattern to solve the problem, and implement that change across all of Roblox via a change to the styleguide.
- Build a new pattern, and integrate it into the canon of Roblox’s UI patterns for future use.
Breadcrumb
Buttons
Width
Play, Buy Robux, Upgrade
Call to Action Buttons
Action button
Growth Buttons
Play, Buy Robux, Upgrade
https://confluence.roblox.com/display/MOBAPP/Growth+Buttons
Secondary Action Buttons
Trade, See all, Create New
Control + Configure Buttons
Edit, Share, Save, Cancel
Alert Buttons
Trade, See all, Create New
Icon Buttons
Buy Buttons
Used in game datails page for purchase game pass
Toggle
Usage: listen "toggleBtnClick" event to get toggle status and element id
Cards
- Store Cards: game details page
- Game Cards: home page, game page, profile page
- Item Cards: inventory page, favoriate page
- Avatar Cards: home page, friends page, comment at game details page
Game Store Cards
Background color for items is $gray-4
-
Fit Around 18 Letters999,999,999
-
Fit Around 18 Letters999,999,999
-
Fit Around 18 LettersFree
-
Fit Around 18 LettersFree
Extra Large Game Tile
480x270(Desktop), 294x166(Mobile)
Extra Large Game Tile With Instant Play
With Play button (hover)
Game Cards 150x150
150x150 is used for games page
Game Cards 126x126
126x126 is used for game detail page
Extra Large Item Tile
480x270(Desktop), 294x166(Mobile)
Feature Item Cards
- Feature Item Card: catalog page, also list view at moblie size
- Inventory page/Favorite page: 6 per each row for inventory/favorite tab content
- Item Cards: 7 per each row for recommend items
Feature Cards/List view in Mobile
Feature Item Card: catalog page, also list view at moblie size
Item Cards - 7 recommend items
7 per each row for recommend items
Item Cards - 6 recommend items
6 per each row for inventory/favorite tab content
Avatar Headshot Cards
- avatar-headshot-sm: chat, leadboard/running game at game details page
- avatar-group: chat group/party
- avatar-headshot-md: feed at home page, comment
- avatar-headshot-lg: home avatar, profile avatar
Avatar Card without box shadow
It is used when avatar without link to profile page
Avatar FullBody
Avatar FullBody
Avatar Cards
- line 1: a.ka/you're friend/mutual friend/following/online/offline
- line 2: currently doing (Playing/Creating/Website)
Carousels
There are three types of carousels: carousel for game details page, slider shows for profile page and scrolling carousel for games page. The first two carousels exist in _carousel.scss
Group and Game
Sliding Carousel
Colors
Gray
Blue
Green
Red
Orange
Shadow
Themes
Container
Section
Section is used for solid content in one container, like friends in home page, about in profile page
header title
See AllContainer List
Single
Double
Stacked
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet.
Container-empty
Empty container, individual window with default message
Section Content off
Inside page content, no content return, place holder for new users
Form Control
Basic form
Validation states
Username: 3-20 characters, no spaces
Please check email format
Search
Search with dropdown
Number Input
Slider
Angular Slider
For the new angular slider please visit this page.
Radio
Radio pills
Checkbox
File Upload
This example is using the fileUpload widget in CoreUI
- Add FileUpload and SystemFeedback static content components to your page
- Add fileUpload and systemFeedback modules to your page
- Add system-feedback component to the top of your page
- Create fileUploadInfo object and pass in as a component binding to file-upload component
You can set the following properties on fileUploadInfo
- allowedFileTypes: An array of allowed file type extensions (ex. ['.png', '.jpg', '.bmp']). Default accepts all file types
- previewSrc: The source of the image preview, usually a thumbnail url
Access the following properties on fileUploadInfo
- file: The file that has been selected
- fileSelected: Whether or not a file has been selected
Iconography
- add class active to turn on the icon hover and active status
- add class inactive to turn off the icon
Generic
Navigation Icons
Common Regular
Common Small
Games
Social
Abuse Report
Branded
BC
Labels
Negative
Placeholder
Placeholde Game thumbnails
Thumbnail Validation Status
Icon Size
Define and generate icons : icon-variant($type, $name, $index, $size: 28x28, $hasHover: false, $numberOfGrid: 1)
Update exsiting icon size/hover status : get-icon($type, $index, $size: 28x28, $hasHover: false)
-
icon-robux
Icon Labels
Define an icon label:
- To get correct size of icon: get-label-icon($type, $name, $index, $size, $hasHover)
- To get correct text: get-label-text($background-color, $padding, $font-size, $border-radius)
-
Sale
-
New
-
Logo
Menu Icons (UIBlox)
Status Icons
Social Media Icons
Spot Icons
Action Icons
Loading
Default (css class)
Small (css class)
Menu
Dropdown Menu jQuery
- Add 'data-toggle="dropdown"' in the trigger element and 'data-toggle="dropdown-menu"' in the menu list
- Review /js/reference/widget.js as usage reference
Dropdown Menu Angularjs
Using ui bootstrap dropdown
Native Selection
It is used for mobile browser by taking native browser behavior at phone/tablet
Popover
Popover jQuery
Need to insert data-toggle as popover in the element attribute; For proper cross-browser and cross-platform behavior, recommend to use the a tag and include a tabindex attribute.
Popover AngularJS
How to use?
- popover-class: Custom class to be applied to the popover.
- popover-append-to-body: Should the popover be appended to '$body' instead of the parent element? (default: false)
- popover-placement: default: top
- popover-trigger: default: click
- For more details how to config popover: More details
Hover Popover AngularJS
Extended from the previous popover angularjs library, add hover-popover directive to trigger popover on hover as open, leave from trigger element is close
- How to set up?
- In component module definition, inject ui.bootstrap
- In trigger directive, add hover-popover
- Turn off default trigger: popover-trigger=" 'none' "
- Add manual trigger: popover-is-open="hoverPopoverParams.isOpen"
-
Setup hover-popover-params in controller. In the demo, it will be hoverPopoverDemoController.js
- hoverPopoverSelector is to define what range the mouse can stay once popover is open. When mouse leaves the selected area, popover will be closed. In the demo, it selects sg-hover-popver which means the whole example section will be mouse moving area.
- triggerSelector is to define which element will be the trigger point to open popover
- hoverPopoverDirective.js is main definition for hover popover
- "HoverPopover.EnableClose" event is to listen any special case to ask hover popover close in any customize condition
- Developers need to define its own icon and context, in the demo, it is only reference.
Modal
Please view this page for modal implementation.Notification
Highlight
Highlight new or unread items
Site Wide Banner
Come join us at twitch.tv/roblox for the next level!
Message Banner
System Feedback
Pagination
Pagination Angular
- Use cursor pagination directive and pass in a valid cursor object
Status
Message Status
- Usage : Chat, Private message
- Mixin name : message-status($className)
-
Note:
- read/unread color will override exist font color style, e.g. text-link
- unread status has secondary color, e.g timestamp
Scroll Bar
Scroll Bar jQuery
- Include jQuery and jquery.mCustomScrollbar.concat.min.js
- Include jquery.mCustomScrollbar.css
- Add data-toggle="scrollbar" to the wanted element, in the widget.js, "$('[data-toggle="scrollbar"]').mCustomScrollbar" will build the custom scrollbar
- Review /js/Reference/widget.js as usage reference
Table
Item | Detail | Note |
---|---|---|
Lorem Ipsum | Mauris augue nisl, pharetra vel faucibus vestibulum, pharetra a lorem. Quisque in neque dui. | Fusce vitae sem egestas |
Lorem Ipsum | Mauris augue nisl, pharetra vel faucibus vestibulum, pharetra a lorem. Quisque in neque dui. | Fusce vitae sem egestas |
Lorem Ipsum | Mauris augue nisl, pharetra vel faucibus vestibulum, pharetra a lorem. Quisque in neque dui. | Fusce vitae sem egestas |
Lorem Ipsum | Mauris augue nisl, pharetra vel faucibus vestibulum, pharetra a lorem. Quisque in neque dui. | Fusce vitae sem egestas |
Lorem Ipsum | Mauris augue nisl, pharetra vel faucibus vestibulum, pharetra a lorem. Quisque in neque dui. | Fusce vitae sem egestas |
Tabs
Horizontal Tabs jQuery
Vertical Tabs jQuery
This example only has vertical tab style
Vertical Menu
This example only has vertical tab style
Image and Thumbnail
Game Icon/Item
1:1



Avatar
Headshot



Full body


Game Thumbnail

Placeholder
Game Icon Placeholder
Asset Icon Placeholder
Avatar Headshot Icon Placeholder
Avatar Fullbody Icon Placeholder
Tooltip
Tooltip jQuery
Need to insert data-toggle as tooltip in the element attribute
Typing
Typing
Typography
HCo Gotham SSm | Check new Reference Page
Header
Transition table
Page Header
Username/Group Name Header/Game Detail Header
Section and Form Header
Content Title within Container
Popup Header
Body
Transition table
- default = Body
- font-bold = Header 2
- small, small-oneline = Caption Body
- xsmall, xxsmall = Footer
Card Description (Multiple lines): Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vulputate facilisis consectetur. Nunc lacinia leo a velit porta, in vulputate velit viverra. Fusce pretium mattis orci sed facilisis. Suspendisse vitae ultricies quam. Praesent euismod nisl tempor velit consectetur, eget scelerisque dolor fermentum.
Keep spaces and line-breaks, with 'Source Sans Pro' font and 0 margin:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vulputate facilisis consectetur. Nunc lacinia leo a velit porta, in vulputate velit viverra. Fusce pretium mattis orci sed facilisis. Suspendisse vitae ultricies quam. Praesent euismod nisl tempor velit consectetur, eget scelerisque dolor fermentum.
More Specific Use Case
Transition table
- text-robux-lg, text-subject = Header 1
- text-name, text-link, text-link-secondary, text-lead, text-warning, text-footer-nav(Privacy), text-label = Header 2
- text-footer-nav(except Privacy) = SubHeader 2
- text-description, text-favorite, text-robux, text-roblox = Body
- text-pastname, text-report-ads, text-report, text-error = Caption Header
- text-secondary, text-date-hint, ad-identification-text, text-tooltips = Caption Body
- text-footer = Footer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vulputate facilisis consectetur. Nunc lacinia leo a velit porta, in vulputate velit viverra. Fusce pretium mattis orci sed facilisis. Suspendisse vitae ultricies quam. Secondary Text Link praesent euismod nisl tempor velit consectetur, eget scelerisque dolor fermentum.
Long Text Treatment
Single Line
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Multiple line
using mixin: get-multi-lines($className, $lineHeight, $lineCount, $bgColor)
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis rutrum ex, laoreet malesuada risus. Donec tempor aliquam eros, vel vehicula diam pretium in.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis rutrum ex, laoreet malesuada risus. Donec tempor aliquam eros, vel vehicula diam pretium in. Etiam hendrerit, dui quis suscipit auctor, ipsum ante aliquet magna, ut volutpat libero diam nec nisi. Nam sodales sapien at iaculis tincidunt. In bibendum non eros sit amet consectetur. Aenean facilisis erat tortor, hendrerit feugiat turpis egestas id. Vestibulum fermentum quam vitae pellentesque malesuada. Integer at dictum est. Suspendisse sit amet tincidunt ante. Morbi euismod neque sit amet lectus lobortis hendrerit. Phasellus at mauris id ex ultrices lacinia. Fusce pretium, orci eget lobortis faucibus, turpis dui ultrices est, sit amet eleifend lorem ipsum et nisi. Praesent in urna a tortor posuere mollis sed quis tellus.
Multiple lines with Toggle button
Truncate file if the file have more than 5 lines.
Read more as link text
Include "para-overflow-page-loading" class in your paragraph. (It's being hidden by JS)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis rutrum ex, laoreet malesuada risus. Donec tempor aliquam eros, vel vehicula diam pretium in. Etiam hendrerit, dui quis suscipit auctor, ipsum ante aliquet magna, ut volutpat libero diam nec nisi. Nam sodales sapien at iaculis tincidunt. In bibendum non eros sit amet consectetur. Aenean facilisis erat tortor, hendrerit feugiat turpis egestas id. Vestibulum fermentum quam vitae pellentesque malesuada. Integer at dictum est. Suspendisse sit amet tincidunt ante. Morbi euismod neque sit amet lectus lobortis hendrerit. Phasellus at mauris id ex ultrices lacinia. Fusce pretium, orci eget lobortis faucibus, turpis dui ultrices est, sit amet eleifend lorem ipsum et nisi. Praesent in urna a tortor posuere mollis sed quis tellus. Read More
Read more for item and game pass description (text link on desktop, button on mobile)
Include "content-overflow-page-loading" class in your paragraph. (It's being hidden by JS)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis rutrum ex, laoreet malesuada risus. Donec tempor aliquam eros, vel vehicula diam pretium in. Etiam hendrerit, dui quis suscipit auctor, ipsum ante aliquet magna, ut volutpat libero diam nec nisi. Nam sodales sapien at iaculis tincidunt. In bibendum non eros sit amet consectetur. Aenean facilisis erat tortor, hendrerit feugiat turpis egestas id. Vestibulum fermentum quam vitae pellentesque malesuada. Integer at dictum est. Suspendisse sit amet tincidunt ante. Morbi euismod neque sit amet lectus lobortis hendrerit. Phasellus at mauris id ex ultrices lacinia. Fusce pretium, orci eget lobortis faucibus, turpis dui ultrices est, sit amet eleifend lorem ipsum et nisi. Praesent in urna a tortor posuere mollis sed quis tellus. Read More
Dynamic Ellipsis
Display Utilities
Cursor
Mouse hover on the html element will be pointer
Invisible
Give html element visibility: hidden