Du lundi au vendredi de 9h à 17h
Service client +33 (0)4 79 96 30 69
Nous contacter
Le Service Client Travelski:
+33 (0)4 79 96 30 69

A votre disposition depuis la Savoie du lundi au vendredi de 9h à 17h

J'appelle

📔 Design System - Travelski

The design system consists of 2 files, styles.css and index.js which must be loaded into the main block of page.
Main dependencies: Bootstrap 4.0+ and jQuery 3.0+ which are needed for it to work correctly.
Font dependencies: Raleway is initialized from google-fonts cdn. DaisyScript is a font-file that needs to be loaded as a content file into the main block.
Same for tf-awesome related fonts which are needed for the icons.

Typography

Font Family

# You can use .tf-font-raleway to set elements to Raleway font.
entire page uses Raleway as the main font by default.

# Daisy Script .tf-font-daisy
Jour 1 Jour 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
* Font-size in example is set to 32px


Font Size

.font-9

.font-10

.font-11

.font-12

.font-13

.font-14

.font-15

.font-16

.font-17

.font-18

.font-19

.font-20

.font-21

.font-22

.font-23

.font-24

.font-25

.font-26

.font-27

.font-28

.font-29

.font-30

.font-31

.font-32


Font Weight

.weight-300
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-400
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-500 (default)
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-600
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-700 or .font-weight-bold (bootstrap weight 700 equivalent)
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-800
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

.weight-900
Lorem ipsum dolor sit, amet consectetur adipisicing elit.

Colors

Text

.text-red

.text-blue

.text-dark-blue

.text-light-blue

.text-lighter-blue

.text-green

.text-gray

.text-turquoise

.text-orange

.text-white


Text Hover
.text-hover--red
.text-hover--blue
.text-hover--dark-blue
.text-hover--light-blue
.text-hover--lighter-blue
.text-hover--green
.text-hover--gray
.text-hover--turquoise
.text-hover--orange
.text-hover--white

Backgrounds

.bg-red

.bg-blue

.bg-dark-blue

.bg-light-blue

.bg-lighter-blue

.bg-green

.bg-gray

.bg-turquoise

.bg-orange

.bg-white

.bg-none


Opacity
.opacity-1 .opacity-2 .opacity-3 .opacity-4 .opacity-5 .opacity-6 .opacity-7 .opacity-8 .opacity-9

.opacity-1--hover .opacity-2--hover .opacity-3--hover .opacity-4--hover .opacity-5--hover .opacity-6--hover .opacity-7--hover .opacity-8--hover .opacity-9--hover

Background Opacity
.bg-red--opacity-3 .bg-blue--opacity-5

* you can use any bg-color that is supported by the design system
opacity modifier can be from 1 to 10


Background Hover
.bg-hover--red
.bg-hover--blue
.bg-hover--dark-blue
.bg-hover--light-blue
.bg-hover--lighter-blue
.bg-hover--green
.bg-hover--gray
.bg-hover--turquoise
.bg-hover--orange
.bg-hover--white

Cursors

.cursor-pointer .cursor-default

Elevation

.elevation-0
.elevation-1
.elevation-2
.elevation-3
.elevation-4
.elevation-5
.inset-shadow

Borders

.border-red .border-blue .border-dark-blue .border-light-blue .border-lighter-blue

.border-green .border-gray .border-turquoise .border-orange .border-white

.border-1 .border-2 .border-3 .border-4

.tf-border-rounded .tf-border-rounded--top .tf-border-rounded--bottom .tf-border-curved

Sizing

.min-(w,h)-100
Min width/height 100%

.h-0
Height 0px

Spacing

.z-index-n1
.z-index-(1..10)
Z-index

.translate-(l,t,r,b)-50pc
Move (translate) node to specific direction for 50% of its size

.text-elipsis
For long texts...

Interaction

.pointer-events-none
Z-index

Responsiveness

Support for
* .text-sm-darkblue - .bg-sm-blue - all border-sm-red types and .elevation-sm-1 etc...
* all types of bootstrap padding and margin in this format: .p-sm-1 .m-sm-auto etc...
* font sizes from 8 to 50 in this format: font-sm-42 etc...
* and width sizing in this format: w-sm-100, w-sm-50 etc...
Resize your window to see effects: .text-sm-orange - .text-md-orange - .text-lg-orange

How to make images fit in container
.tf-img-fit

📦 Components

Icons

These are TravelFactory specific icons, we also utilize FontAwesome icons.

.tf-icon-caret .tf-icon-caret-open .tf-icon-arrow-right .tf-icon-arrow-left .tf-icon-caret-triangle

.tf-icon-ideas .tf-icon-participants .tf-icon-dates .tf-icon-stations .tf-icon-pistes

.tf-icon-wifi .tf-icon-animaux .tf-icon-agenda .tf-icon-avis .tf-icon-lave

.tf-icon-commerces .tf-icon-dormir .tf-icon-download .tf-icon-enfants .tf-icon-enneigement

.tf-icon-esf .tf-icon-infos .tf-icon-localisation .tf-icon-manger .tf-icon-photo

.tf-icon-plane .tf-icon-plan-empty .tf-icon-plan .tf-icon-sortir .tf-icon-train

.tf-icon-visites .tf-icon-webcam .tf-icon-website .tf-icon-info .tf-icon-phone

.tf-icon-para .tf-icon-house .tf-icon-ski .tf-icon-boot .tf-icon-tickets

.tf-icon-checkpoint .tf-icon-group .tf-icon-snow-slopes .tf-icon-car .tf-icon-plane-2

.tf-icon-train-2 .tf-icon-package .tf-icon-restaurant .tf-icon-beer .tf-icon-hot-drink

.tf-icon-ski-2

* Icons are customizable just like font-awesome .tf-icon-photo | .font-28 | .text-light-blue



.tf-icon-altitude

.tf-icon-compte

.tf-icon-phone-on

.tf-icon-phone-off

.tf-icon-parking

.tf-icon-meteo

.tf-icon-meteo-cloud-empty

.tf-icon-meteo-cloud-filled

.tf-icon-meteo-part-cloud-empty

.tf-icon-meteo-part-cloud-filled

.tf-icon-plus

.tf-icon-club

.tf-icon-yoonly

* These icons are static and not customizable



Text Decoration

.line-through
.line-through--left

Buttons





                <button class="tf-btn--blue">Blue</button>
<button class="tf-btn--blue tf-btn--round">Round</button>
<button class="tf-btn--blue tf-btn--round tf-btn--outline">Outline</button>

<button class="tf-btn--green">Green</button>
<button class="tf-btn--green tf-btn--round">Round</button>
<button class="tf-btn--green tf-btn--round tf-btn--outline">Outline</button>

<button class="tf-btn--red">Red</button>
<button class="tf-btn--red tf-btn--round">Round</button>
<button class="tf-btn--red tf-btn--round tf-btn--outline">Outline</button>

<button class="tf-btn--circle-1">C1</button>
<button class="tf-btn--circle-2">C2</button>
<button class="tf-btn--circle-3">C3</button>

<button class=" tf-btn--elevated text-blue">Elevated</button>
<button class="tf-btn--circle-2 tf-btn--elevated text-blue bg-white">
<span class="tf-icon-website font-20"></span>
</button>

            

Dropdowns & Inputs

Hoverable Dropdown 1
Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero nostrum necessitatibus deserunt minima maiores consequuntur eaque nesciunt ratione, nemo commodi placeat excepturi delectus provident, tempore consectetur doloremque quo numquam esse!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti fuga esse illo saepe eum, aperiam itaque nostrum beatae alias ducimus praesentium facere, velit fugiat voluptatem, mollitia doloremque incidunt molestiae? Quia?
Hoverable Dropdown 2
Lorem ipsum dolor sit amet consectetur adipisicing elit. Libero nostrum necessitatibus deserunt minima maiores consequuntur eaque nesciunt ratione, nemo commodi placeat excepturi delectus provident, tempore consectetur doloremque quo numquam esse!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti fuga esse illo saepe eum, aperiam itaque nostrum beatae alias ducimus praesentium facere, velit fugiat voluptatem, mollitia doloremque incidunt molestiae? Quia?
Lorem ipsum.
Lorem ipsum.
Lorem ipsum.
                <div class="tf-dropdown">
Hoverable Dropdown 1
<div class="tf-dropdown-content tf-menu-dropdown"></div>
</div>

<div class="tf-dropdown">
Hoverable Dropdown 2
<div class="tf-dropdown-content tf-menu-dropdown--2"></div>
</div>

<div class="tf-dropdown tf-icon-info">
<div class="tf-dropdown-content tf-menu-dropdown--3"></div>
</div>


<div class="dropdown tf-select">
<span class="tf-icon tf-icon-agenda text-light-blue"></span>
<button class="dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Select Dropdown
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>

        <div class="tf-select">
<select>
    <option></option>
</select>
<i class="tf-icon-caret"></i>
</div>

    
                <div class="tf-text-dropdown">
<div class="dropdown-content">
    <p>After their first full lineup was realized...</p>
</div>
<div id="collapse-1" class="collapse dropdown-content">
    <p>Lorem ipsum dolor sit amet</p>
</div>
<div class="collapsed dropdown-toggle" data-toggle="collapse" data-target="#collapse-1" aria-expanded="false">
    Lire plus 
</div>
</div>

            
                <label class="tf-checkbox">
<input type="checkbox">
<span class="checkmark"></span>
</label>

            

Cards

Plagne 1800

Adrenaline Shot

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo a inventore repellat ipsa, aspernatur saepe exercitationem quae, et numquam blanditiis accusantium. Vitae rerum, est repudiandae expedita repellendus eius similique facere!

<div class="tf-card-image tf-border-rounded">
<img class="tf-border-rounded" src="images/pic-1.png">
<div class="card-content">
    <p class="font-27 font-weight-bold">Plagne 1800</p>
</div>
</div>

<div class="tf-card-image-hover">
<img src="images/pic-2.png">
<div class="card-content">
    <div class="card-title">
        <p class="font-24 font-weight-bold">Adrenaline Shot</p>
    </div>
    <p class="hidden-content font-14 font-weight-bold">Lorem ipsum dolor sit amet</p>
</div>
</div>

Domaine
Un toboggan aquatique de plus de mille milliards de kilomètres
Un toboggan aquatique de plus de mille milliards de kilomètres
<div class="tf-card"">
<div class="card-body">
    <div class="card-title">Domaine</div>
    <div class="card-content">
        <div class="row">
            <div class="col-6">
                Un toboggan aquatique de plus de mille
                milliards de kilomètres
            </div>
            <div class="col-6">
                Un toboggan aquatique de plus de mille
                milliards de kilomètres
            </div>
        </div>
    </div>
</div>
</div>
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
<div class="tf-collapse">
<div class="card-header">
    <button class="btn" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
        Collapsible Group Item #1
    </button>
    <span class="tf-icon-caret"></span>
</div>

<div id="collapseOne" class="collapse show">
    <div class="card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid.
    </div>
</div>
</div>

Ribbon
-60%
<div class="position-relative">
<div class="tf-ribbon">                    
    <div class="tf-promo">-60%</div>
</div>
</div>

    

Timeline

Devis Option Réservation enregistrée Paiement du solde J-30 Réception documents de voyage J-7 Départ
<div class="tf-timeline">
<span class="tf-timeline__item tf-timeline__item--active">
    Devis
</span>
<span class="tf-timeline__item tf-timeline__item--active">
    Option
</span>
<span class="tf-timeline__item">
    Réservation enregistrée
</span>
<span class="tf-timeline__item">
    Paiement du solde J-30
</span>
<span class="tf-timeline__item">
    Réception documents de voyage J-7
</span>
<span class="tf-timeline__item">
    Départ
</span>
</div>

Containers

.tf-scroll-container--50vh
Container with max height 50vh and overflow auto. Can be used dropdowns with long content.

.tf-layer
Container that takes full width and height of the closest absolute positioned ansestor. Can be used for loading layers.

✨ Animations

Transitions

  • .tf-transition-all-250
  • .tf-transition-all-500
  • .tf-transition-all-750
  • .tf-transition-all-1000

JavaScript

Tabs

Start by giving your wrapper element a nav-tabs attriute data-nav-tabs="mainNavTab" and a .nav-tabs class to your element.

Each child of your wrapper acts as a toggler of tab-panes, give it a data-tab-pane="pane-1" attribute.

Each tab that you want to hide/show, must have both the data-nav-tabs and data-tab-pane attributes with the corresponding values to hide and show themselves.

data-nav-tabs="main"

data-nav-tabs="main" | data-tab-pane="pane-1"

data-nav-tabs="main" | data-tab-pane="pane-2"

Toggle

Toggle between any class with data-toggle-class="myClass" and a selector data-toggle-class-target="#toggleMe" attribute.

data-toggle-class="bg-red" | data-toggle-class-target="#toggleMe" (click me)

id="toggleMe"

Hide-show

Needed dependency tf.libs.scroll-tester.js

Consider you have an element with a data-on-inside-screen-class="bg-red" attribute.
This element will toggle the class *bg-red every time the target attribute is on our screen.
Now let's specify our target attribute now which will be affected data-on-inside-screen-class-target=".mySelector"

*on-outside attributes data-on-outside-screen-class and data-on-outside-screen-class-target

Scroll-to

Scroll-to is a replacement for the native anchoring system, simply add this attribute data-scroll-to="#mySelector" to your element.

Scroll to anchor (click me)

Modal iframe

Inject iframe into boostrap modal, using custom data attribute, wrap and basic jquery event listener

Just follow html exemple bellow, jquery code is there only for undesrtanding

                      
                        <div data-modal-iframe-target="my-iframe" data-modal-iframe-url="https://...">
                            Btn
                        </div>
                        <div class="modal ..." data-modal-iframe="my-iframe">
                            ...
                            iframe
                            ...
                        </div>
                        
                        $('body').on('click', '[data-modal-iframe-target]', function(){
                            const obj = $(this);
                            const id = obj.attr('data-modal-iframe-target');
                            const url = obj.attr('data-modal-iframe-url');
                            const modalObj = $('[data-modal-iframe="'+id+'"]');
                            modalObj.find('iframe').attr('src', url);
                            modalObj.modal('show');
                        });