Spacing

Whitespace is referred to as negative space or empty space in a page. For the key freelancer interface we prefer a compact UI - this means keeping our usage of whitespace tight where we can do improve the information density of our pages. For instances like marketing pages we use larger spacing tokens to add more breathing room and create a greater impact with our brand storytelling.
Our spacing scales are defined in two categories:
Spacing guide

1. Component Spacing Scale

- This scale contains spacing tokens in the range from 4px - 48px.
- Use this scale to build individual elements and components.
- It includes tokens needed to create appropriate spacial relationships for detail-level designs.

2. Layout Spacing Scale

- This scale contains spacing tokens in the range from 16px - 96px.
- Use this scale to arrange components and other UI parts into a pull page layout.
- This scale contains larger increments that are used to control the density of a design.
- Use the smaller layout tokens (16px - 48px) to create more dense components and direct relationships.
- Use the larger tokens (64px - 96px) to increase the amount of white space and to disassociate sections.

Some common use-cases for spacing tokens:

Enum
Value
Common use-case
Enum
NONE
Value
0
Common use-case
Mainly for removing margins from smaller screens
Enum
XXXSMALL
Value
4px
Common use-case
Used for compact spacing in between text components
Enum
XXSMALL
Value
8px
Common use-case
Spacing buttons and text
Enum
XSMALL
Value
12px
Common use-case
When 16px may *feel* too large
Enum
SMALL
Value
16px
Common use-case
Margins in small modules such as tooltips, margins in showcase cards, user cards and text
Enum
MID
Value
24px
Common use-case
Margins in card elements and as margin from the left/right/top/bottom border of the card
Enum
LARGE
Value
32px
Common use-case
Margins in modals and big cards that require more white space around the content
Enum
XLARGE
Value
48px
Common use-case
Margins in modals and big cards that require more white space around the content
Enum
XXLARGE
Value
64px
Common use-case
Extremely large cards for margins such as full view of entries on contest and showcase
Enum
XXXLARGE
Value
72px
Common use-case
Used to separate sections on landing pages
Enum
XXXXLARGE
Value
96px
Common use-case
Used to separate sections on landing pages and section heroes
NOTE: Spacing is measured as the distance from element to element. In CSS it might not be exactly the same numbers as in design software. I.e. Text by default have a small margin at the bottom in HTML/CSS which is added to this measurement. In design software the spacing measurements often begin at the text baseline.

Usage

Any component supports a mobile first responsive spacing inputs. Supported margin values are defined by the Margin enum found in @freelancer/ui/margin/margin.directive.ts.
Component
Component

Here's how it works:

Give the example above, the margin of the first element is XXXSMALL by default. From tablet and up, the margin changes to LARGE then changes to XXXXLARGE from desktop and up.

Breakpoints:

[flMarginRightTablet] / [flMarginBottomTablet]: 768px;
[flMarginRightDesktop] / [flMarginBottomDesktop]: 960px;

Other Examples

Component
Component
For the example above, we're utilising the [flMarginBottom] inputs where we'll have a MID margin on mobile then we remove the margin on tablet and add a XXXLARGE margin from desktop and up.
Component
Component
On the example above, we're only setting a SMALL right margin only for tablet and up which means that there is no margin for screens that are smaller than tablets.
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.