`.
5 | export default function (count) {
6 | count = count || 1
7 |
8 | const children = []
9 |
10 | for (let i = 0; i < count; i++) {
11 | children.push(
12 |
13 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmodtempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodoconsequat. Duis aute irure dolor in reprehenderit in voluptate velit essecillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat nonproident, sunt in culpa qui officia deserunt mollit anim id est laborum.
14 |
15 | )
16 | }
17 |
18 | return children
19 | }
20 |
--------------------------------------------------------------------------------
/source/fake/_data_table_cols.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | //======================================
4 | // Generates fake data in this format...
5 | //======================================
6 |
7 | [
8 | {
9 | title: 'Date',
10 | type: 'date',
11 | field: 'date',
12 | sortable: true
13 | },
14 | {
15 | title: 'Description',
16 | field: 'description',
17 | sortable: true
18 | },
19 | {
20 | title: 'Category',
21 | field: 'category',
22 | sortable: true
23 | },
24 | {
25 | title: 'Amount',
26 | type: 'currency',
27 | field: 'amount',
28 | sortable: true
29 | },
30 | {
31 | title: 'Balance',
32 | field: 'balance',
33 | type: 'currency'
34 | }
35 | ]
36 |
37 | */
38 |
39 | export default function () {
40 | // Columns.
41 | const columns = [
42 | {
43 | title: 'Date',
44 | type: 'date',
45 | field: 'date',
46 | sortable: true
47 | },
48 | {
49 | title: 'Description',
50 | field: 'description',
51 | sortable: true
52 | },
53 | {
54 | title: 'Category',
55 | field: 'category',
56 | sortable: true
57 | },
58 | {
59 | title: 'Amount',
60 | type: 'currency',
61 | field: 'amount',
62 | sortable: true
63 | },
64 | {
65 | title: 'Balance',
66 | field: 'balance',
67 | type: 'currency'
68 | }
69 | ]
70 |
71 | // Expose object.
72 | return columns
73 | }
74 |
--------------------------------------------------------------------------------
/source/fake/_data_table_rows.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import utils from '../utils'
3 |
4 | /*
5 |
6 | //======================================
7 | // Generates fake data in this format...
8 | //======================================
9 |
10 | [
11 | {
12 | date: 1444338711008,
13 | description: "Lorem ipsum dolor sit amet...",
14 | category: "Expense",
15 | amount: -657.8544315416366,
16 | balance: 19342.145568458363
17 | },
18 | {
19 | date: 1444252311008,
20 | description: "Ut enim ad minim veniam...",
21 | category: "Revenue",
22 | amount: 225.9504753164947,
23 | balance: 19568.096043774858
24 | }
25 |
26 | // Etc.
27 | ]
28 |
29 | */
30 |
31 | export default function (count, balance) {
32 | // Number of rows to generate.
33 | count = count || 60
34 |
35 | // Starting balance.
36 | balance = balance || 20000
37 |
38 | // Random currency.
39 | function generateCurrency (negative) {
40 | let modifier = 1
41 |
42 | if (negative) {
43 | modifier = -1
44 | }
45 |
46 | let num = Math.random()
47 | num = num * 100
48 | num = num * modifier
49 |
50 | return num
51 | }
52 |
53 | // Generate row.
54 | function generateRow (i) {
55 | const x = i % 2 === 0
56 | const amount = generateCurrency(x)
57 |
58 | const description = x
59 | ? 'Lorem ipsum dolor sit amet...'
60 | : 'Ut enim ad minim veniam...'
61 |
62 | const category = x
63 | ? 'Withdrawl'
64 | : 'Deposit'
65 |
66 | balance += amount
67 |
68 | return {
69 | date: utils.today(-i),
70 | description: description,
71 | category: category,
72 | amount: amount,
73 | balance: balance
74 | }
75 | }
76 |
77 | // Used in loop.
78 | let data = []
79 |
80 | // Build data.
81 | for (let i = 0; i < count; i++) {
82 | let row = generateRow(i)
83 | data.push(row)
84 | }
85 |
86 | // Expose object.
87 | return data
88 | }
89 |
--------------------------------------------------------------------------------
/source/fake/_list.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 |
4 | // Generates dummy list items.
5 | export default function (count) {
6 | count = count || 3
7 |
8 | const children = []
9 |
10 | for (let i = 0; i < count; i++) {
11 | children.push(
12 |
13 | List Item {i + 1}
14 |
15 | )
16 | }
17 |
18 | return children
19 | }
20 |
--------------------------------------------------------------------------------
/source/fake/_tabs.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 | import TabPanel from '../components/tabs/template_panel'
4 |
5 | // Generate dummy tab content.
6 | export default function (count) {
7 | count = count || 3
8 |
9 | let panels = []
10 |
11 | for (let i = 0; i < count; i++) {
12 | let label = 'Tab ' + (i + 1)
13 |
14 | panels.push(
15 |
16 |
17 | Tab content for "{label}"
18 |
19 |
20 | )
21 | }
22 |
23 | return panels
24 | }
25 |
--------------------------------------------------------------------------------
/source/fake/index.js:
--------------------------------------------------------------------------------
1 | // Import individual files.
2 | import accordion from './_accordion'
3 | import box from './_box'
4 | import dataTableCols from './_data_table_cols'
5 | import dataTableRows from './_data_table_rows'
6 | import list from './_list'
7 | import tabs from './_tabs'
8 |
9 | // Export object.
10 | export default {
11 | accordion: accordion,
12 | box: box,
13 | dataTableCols: dataTableCols,
14 | dataTableRows: dataTableRows,
15 | list: list,
16 | tabs: tabs
17 | }
18 |
--------------------------------------------------------------------------------
/source/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/source/index.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 | import ReactDOM from 'react-dom'
4 | import { Provider } from 'react-redux'
5 | import { createStore } from 'redux'
6 |
7 | // CSS.
8 | import './sass/index.scss'
9 |
10 | // Routes.
11 | import routes from './routes'
12 |
13 | // Redux root reducer.
14 | import rootReducer from './redux'
15 |
16 | // Redux store.
17 | const store = createStore(rootReducer)
18 |
19 | // Redux provicer.
20 | const template = (
21 |
22 | {routes}
23 |
24 | )
25 |
26 | // Insertion point.
27 | const el = document.getElementById('app')
28 |
29 | // Render the app.
30 | ReactDOM.render(template, el)
31 |
--------------------------------------------------------------------------------
/source/layouts/app/header.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 | import { Link } from 'react-router'
4 | import { Grid, GridContainer } from 'unsemantic'
5 |
6 | // UI components.
7 | import ListSeparator from '../../components/list_separator'
8 | import Search from '../../components/form_search'
9 |
10 | // Define class.
11 | class AppHeader extends React.Component {
12 | // Render method.
13 | render () {
14 | // Expose UI.
15 | return (
16 |
20 |
21 |
22 |
23 |
27 |
28 |
29 | ACME
30 |
31 |
32 |
33 |
34 |
38 |
39 |
40 |
41 |
42 | Accounts
43 |
44 |
45 |
46 | Profile
47 |
48 |
49 |
50 | GitHub
51 |
52 |
53 |
54 |
55 |
56 |
57 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | )
70 | }
71 | }
72 |
73 | // Export.
74 | export default AppHeader
75 |
--------------------------------------------------------------------------------
/source/layouts/app/index.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 |
4 | // UI components.
5 | import AppWrapper from './wrapper'
6 | import AppHeader from './header'
7 | import AppMain from './main'
8 | import AppFooter from './footer'
9 |
10 | // Define class.
11 | class App extends React.Component {
12 | // Render method.
13 | render () {
14 | return (
15 |
16 |
17 |
18 |
19 | {this.props.children}
20 |
21 |
22 |
23 |
24 | )
25 | }
26 | }
27 |
28 | // Validation.
29 | App.propTypes = {
30 | children: React.PropTypes.node
31 | }
32 |
33 | // Export.
34 | export default App
35 |
--------------------------------------------------------------------------------
/source/layouts/app/main.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 |
4 | // Define class.
5 | class AppMain extends React.Component {
6 | // Render method.
7 | render () {
8 | // Expose UI.
9 | return (
10 |
11 | {this.props.children}
12 |
13 | )
14 | }
15 | }
16 |
17 | // Validation.
18 | AppMain.propTypes = {
19 | children: React.PropTypes.node
20 | }
21 |
22 | // Export.
23 | export default AppMain
24 |
--------------------------------------------------------------------------------
/source/layouts/app/wrapper.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 |
4 | // Define class.
5 | class AppWrapper extends React.Component {
6 | // Render method.
7 | render () {
8 | // Expose UI.
9 | return (
10 |
11 | {this.props.children}
12 |
13 | )
14 | }
15 | }
16 |
17 | // Validation.
18 | AppWrapper.propTypes = {
19 | children: React.PropTypes.node
20 | }
21 |
22 | // Export.
23 | export default AppWrapper
24 |
--------------------------------------------------------------------------------
/source/pages/404/index.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 | import { Grid, GridContainer } from 'unsemantic'
4 |
5 | // Utility methods.
6 | import utils from '../../utils'
7 |
8 | // Layout components.
9 | import App from '../../layouts/app'
10 |
11 | // Misc components.
12 | import Markdown from '../../components_misc/markdown/text'
13 |
14 | // Define class.
15 | class Page extends React.Component {
16 | constructor (props) {
17 | // Pass `props` into scope.
18 | super(props)
19 |
20 | // Set page title.
21 | utils.title(props)
22 | }
23 |
24 | // Render method.
25 | render () {
26 | // Expose UI.
27 | return (
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | )
42 | }
43 | }
44 |
45 | // Export.
46 | export default Page
47 |
--------------------------------------------------------------------------------
/source/redux/_types.js:
--------------------------------------------------------------------------------
1 | /*
2 | We're assigning each action type to
3 | a constant, to ensure uniqueness.
4 | */
5 |
6 | export const UPDATE_SAVINGS_TABLE = 'UPDATE_SAVINGS_TABLE'
7 |
8 | export const UPDATE_CHECKING_TABLE = 'UPDATE_CHECKING_TABLE'
9 |
10 | export const UPDATE_ACCOUNTS_TABS = 'UPDATE_ACCOUNTS_TABS'
11 |
12 | export const UPDATE_FAQ_ACCORDION = 'UPDATE_FAQ_ACCORDION'
13 |
14 | export const UPDATE_PROFILE_FORM = 'UPDATE_PROFILE_FORM'
15 |
--------------------------------------------------------------------------------
/source/redux/actions/accounts_tabs_actions.js:
--------------------------------------------------------------------------------
1 | // Action types.
2 | import * as types from '../_types'
3 |
4 | export function updateAccountsTabsAction (payload) {
5 | return {
6 | type: types.UPDATE_ACCOUNTS_TABS,
7 | payload: payload
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/source/redux/actions/checking_table_actions.js:
--------------------------------------------------------------------------------
1 | // Action types.
2 | import * as types from '../_types'
3 |
4 | export function updateCheckingTableAction (payload) {
5 | return {
6 | type: types.UPDATE_CHECKING_TABLE,
7 | payload: payload
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/source/redux/actions/faq_accordion_actions.js:
--------------------------------------------------------------------------------
1 | // Action types.
2 | import * as types from '../_types'
3 |
4 | export function updateFaqAccordionAction (payload) {
5 | return {
6 | type: types.UPDATE_FAQ_ACCORDION,
7 | payload: payload
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/source/redux/actions/profile_form_actions.js:
--------------------------------------------------------------------------------
1 | // Action types.
2 | import * as types from '../_types'
3 |
4 | export function updateProfileFormAction (payload) {
5 | return {
6 | type: types.UPDATE_PROFILE_FORM,
7 | payload: payload
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/source/redux/actions/savings_table_actions.js:
--------------------------------------------------------------------------------
1 | // Action types.
2 | import * as types from '../_types'
3 |
4 | export function updateSavingsTableAction (payload) {
5 | return {
6 | type: types.UPDATE_SAVINGS_TABLE,
7 | payload: payload
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/source/redux/index.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import { combineReducers } from 'redux'
3 |
4 | // Child reducers.
5 | import accountsTabsReducer from './reducers/accounts_tabs_reducer'
6 | import checkingTableReducer from './reducers/checking_table_reducer'
7 | import faqAccordionReducer from './reducers/faq_accordion_reducer'
8 | import profileFormReducer from './reducers/profile_form_reducer'
9 | import savingsTableReducer from './reducers/savings_table_reducer'
10 |
11 | // Bundle into root.
12 | const rootReducer = combineReducers({
13 | accountsTabsReducer,
14 | checkingTableReducer,
15 | faqAccordionReducer,
16 | profileFormReducer,
17 | savingsTableReducer
18 | })
19 |
20 | // Export.
21 | export default rootReducer
22 |
--------------------------------------------------------------------------------
/source/redux/reducers/accounts_tabs_reducer.js:
--------------------------------------------------------------------------------
1 | // Utility methods.
2 | import utils from '../../utils'
3 |
4 | // Action types.
5 | import * as types from '../_types'
6 |
7 | // Default.
8 | let defaultState = utils.storage.get('accountsTabsReducer')
9 |
10 | // Default.
11 | if (!defaultState) {
12 | defaultState = {
13 | selected: 0
14 | }
15 | }
16 |
17 | // Define reducer.
18 | function accountsTabsReducer (state, action) {
19 | state = state || defaultState
20 |
21 | // Pivot on action type.
22 | switch (action.type) {
23 | case types.UPDATE_ACCOUNTS_TABS:
24 | state = Object.assign({}, state, action.payload)
25 | }
26 |
27 | // Set cache.
28 | utils.storage.set('accountsTabsReducer', state)
29 |
30 | // Expose state.
31 | return state
32 | }
33 |
34 | // Export.
35 | export default accountsTabsReducer
36 |
--------------------------------------------------------------------------------
/source/redux/reducers/checking_table_reducer.js:
--------------------------------------------------------------------------------
1 | // Utility methods.
2 | import utils from '../../utils'
3 |
4 | // Fake data.
5 | import fake from '../../fake'
6 |
7 | // Action types.
8 | import * as types from '../_types'
9 |
10 | // Default.
11 | let defaultState = utils.storage.get('checkingTableReducer')
12 |
13 | // Default.
14 | if (!defaultState) {
15 | defaultState = {
16 | columns: fake.dataTableCols(),
17 | data: fake.dataTableRows(70, 9000),
18 | pageCurrent: 0,
19 | pageSize: 15,
20 | sortDirection: null,
21 | sortIndex: null
22 | }
23 | }
24 |
25 | // Define reducer.
26 | function checkingTableReducer (state, action) {
27 | state = state || defaultState
28 |
29 | // Pivot on action type.
30 | switch (action.type) {
31 | case types.UPDATE_CHECKING_TABLE:
32 | state = Object.assign({}, state, action.payload)
33 | }
34 |
35 | // Set cache.
36 | utils.storage.set('checkingTableReducer', state)
37 |
38 | // Expose state.
39 | return state
40 | }
41 |
42 | // Export.
43 | export default checkingTableReducer
44 |
--------------------------------------------------------------------------------
/source/redux/reducers/faq_accordion_reducer.js:
--------------------------------------------------------------------------------
1 | // Utility methods.
2 | import utils from '../../utils'
3 |
4 | // Action types.
5 | import * as types from '../_types'
6 |
7 | // Default.
8 | let defaultState = utils.storage.get('faqAccordionReducer')
9 |
10 | // Default.
11 | if (!defaultState) {
12 | defaultState = {}
13 | }
14 |
15 | // Define reducer.
16 | function faqAccordionReducer (state, action) {
17 | state = state || defaultState
18 |
19 | // Pivot on action type.
20 | switch (action.type) {
21 | case types.UPDATE_FAQ_ACCORDION:
22 | state = Object.assign({}, state, action.payload)
23 | }
24 |
25 | // Set cache.
26 | utils.storage.set('faqAccordionReducer', state)
27 |
28 | // Expose state.
29 | return state
30 | }
31 |
32 | // Export.
33 | export default faqAccordionReducer
34 |
--------------------------------------------------------------------------------
/source/redux/reducers/profile_form_reducer.js:
--------------------------------------------------------------------------------
1 | // Utility methods.
2 | import utils from '../../utils'
3 |
4 | // Action types.
5 | import * as types from '../_types'
6 |
7 | // Get cache..
8 | let defaultState = utils.storage.get('profileFormReducer')
9 |
10 | // Default.
11 | if (!defaultState) {
12 | defaultState = {
13 | data: [
14 | {
15 | name: 'inputFirstName',
16 | value: 'Jonathan'
17 | },
18 | {
19 | name: 'inputMiddleInitial',
20 | value: 'W'
21 | },
22 | {
23 | name: 'inputLastName',
24 | value: 'Rogersonian'
25 | },
26 | {
27 | name: 'inputBirthDate',
28 | value: '02/10/1990'
29 | },
30 | {
31 | name: 'inputSsn',
32 | value: '007-50-1337'
33 | },
34 | {
35 | name: 'inputEmail',
36 | value: 'jwr@example.com'
37 | },
38 | {
39 | name: 'inputPhone',
40 | value: '555-867-5309'
41 | },
42 | {
43 | name: 'inputAddress1',
44 | value: '1234 Fifth Street'
45 | },
46 | {
47 | name: 'inputAddress2',
48 | value: 'Apartment B'
49 | },
50 | {
51 | name: 'inputCity',
52 | value: 'Beverly Hills'
53 | },
54 | {
55 | name: 'inputState',
56 | value: 'CA'
57 | },
58 | {
59 | name: 'inputZip',
60 | value: '90210'
61 | },
62 | {
63 | name: 'inputAllergies',
64 | value: 'No food allergies, but I am deathly allergic to cats.'
65 | },
66 | {
67 | name: 'inputCombatTraining',
68 | value: 'yes',
69 | checked: true
70 | },
71 | {
72 | name: 'inputCombatTraining',
73 | value: 'no',
74 | checked: false
75 | },
76 | {
77 | name: 'inputLicenseToKill',
78 | value: 'yes',
79 | checked: true
80 | },
81 | {
82 | name: 'inputLicenseToKill',
83 | value: 'no',
84 | checked: false
85 | },
86 | {
87 | name: 'inputFarewell',
88 | value: 'Tell the commander that it *was* me who set fire to his car. Sorry! :)'
89 | },
90 | {
91 | name: 'inputAgreeToTerms',
92 | value: 'I agree to these terms.',
93 | checked: false
94 | }
95 | ]
96 | }
97 | }
98 |
99 | // Define reducer.
100 | function profileFormReducer (state, action) {
101 | state = state || defaultState
102 |
103 | // Pivot on action type.
104 | switch (action.type) {
105 | case types.UPDATE_PROFILE_FORM:
106 | state = Object.assign({}, state, action.payload)
107 | }
108 |
109 | // Set cache.
110 | utils.storage.set('profileFormReducer', state)
111 |
112 | // Expose state.
113 | return state
114 | }
115 |
116 | // Export.
117 | export default profileFormReducer
118 |
--------------------------------------------------------------------------------
/source/redux/reducers/savings_table_reducer.js:
--------------------------------------------------------------------------------
1 | // Utility methods.
2 | import utils from '../../utils'
3 |
4 | // Fake data.
5 | import fake from '../../fake'
6 |
7 | // Action types.
8 | import * as types from '../_types'
9 |
10 | // Get cache..
11 | let defaultState = utils.storage.get('savingsTableReducer')
12 |
13 | // Default.
14 | if (!defaultState) {
15 | defaultState = {
16 | columns: fake.dataTableCols(),
17 | data: fake.dataTableRows(70, 9000),
18 | pageCurrent: 0,
19 | pageSize: 15,
20 | sortDirection: null,
21 | sortIndex: null
22 | }
23 | }
24 |
25 | // Define reducer.
26 | function savingsTableReducer (state, action) {
27 | state = state || defaultState
28 |
29 | // Pivot on action type.
30 | switch (action.type) {
31 | case types.UPDATE_SAVINGS_TABLE:
32 | state = Object.assign({}, state, action.payload)
33 | }
34 |
35 | // Set cache.
36 | utils.storage.set('savingsTableReducer', state)
37 |
38 | // Expose state.
39 | return state
40 | }
41 |
42 | // Export.
43 | export default savingsTableReducer
44 |
--------------------------------------------------------------------------------
/source/routes.js:
--------------------------------------------------------------------------------
1 | // Dependencies.
2 | import React from 'react'
3 | import { Router, Route, useRouterHistory } from 'react-router'
4 | import { createHashHistory } from 'history'
5 |
6 | // Pages.
7 | import Accounts from './pages/accounts'
8 | import Profile from './pages/profile'
9 | import NotFound from './pages/404'
10 |
11 | // History tracking.
12 | const history =
13 | useRouterHistory(createHashHistory)({queryKey: false})
14 |
15 | // Match routes to pages.
16 | const routes = (
17 |
18 |
19 |
24 |
25 |
30 |
31 |
36 |
37 |
38 | )
39 |
40 | // Expose routes.
41 | export default routes
42 |
--------------------------------------------------------------------------------
/source/sass/index.scss:
--------------------------------------------------------------------------------
1 | // Reset & Global styles.
2 | //==================================================
3 |
4 | @import "./partials/reset";
5 | @import "./partials/global";
6 |
7 | // Grid.
8 | //==================================================
9 |
10 | @import "../../node_modules/unsemantic/grid";
11 |
12 | // Layout.
13 | //==================================================
14 |
15 | @import "./partials/t7-app";
16 |
17 | // UI components.
18 | //==================================================
19 |
20 | @import "./partials/t7-accordion";
21 | @import "./partials/t7-box";
22 | @import "./partials/t7-data-table";
23 | @import "./partials/t7-dropdown";
24 | @import "./partials/t7-figure";
25 | @import "./partials/t7-form";
26 | @import "./partials/t7-helper";
27 | @import "./partials/t7-list-clean";
28 | @import "./partials/t7-list-inline";
29 | @import "./partials/t7-list-separator";
30 | @import "./partials/t7-search-table";
31 | @import "./partials/t7-tabs";
--------------------------------------------------------------------------------
/source/sass/partials/_global.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Basic HTML
3 | ============================================================
4 | */
5 |
6 | body {
7 | background: #fff;
8 | color: #333;
9 |
10 | font-family: "Helvetica Neue", Arial, "Liberation Sans", FreeSans, sans-serif;
11 |
12 | font-size: 13px;
13 | line-height: 1.5;
14 | }
15 |
16 | hr {
17 | border-top: 1px solid #ddd;
18 | clear: both;
19 | height: 0;
20 | }
21 |
22 | a {
23 | cursor: pointer;
24 | }
25 |
26 | small {
27 | font-size: 11px;
28 | }
29 |
30 | /*
31 | Abbreviations in labels.
32 | ============================================================
33 | */
34 |
35 | abbr[title] {
36 | border: 0;
37 | text-decoration: none;
38 | }
39 |
40 | label abbr[title="Required"] {
41 | color: #c96;
42 | font-family: "Courier New", monospace;
43 | font-size: 16px;
44 | font-weight: bold;
45 | line-height: 0;
46 |
47 | padding-left: 2px;
48 | }
49 |
50 | /*
51 | Images.
52 | ============================================================
53 | */
54 |
55 | img {
56 | display: inline-block;
57 | max-width: 100%;
58 | }
59 |
60 | br + img,
61 | br + figure {
62 | margin-top: 5px;
63 | }
64 |
65 | /*
66 | Code blocks.
67 | ============================================================
68 | */
69 |
70 | pre,
71 | code {
72 | font-family: "DejaVu Sans Mono", Menlo, Consolas, monospace;
73 | }
74 |
75 | /*
76 | Headings
77 | ============================================================
78 | */
79 |
80 | h1 {
81 | font-size: 25px;
82 | }
83 |
84 | h2 {
85 | font-size: 23px;
86 | }
87 |
88 | h3 {
89 | font-size: 21px;
90 | }
91 |
92 | h4 {
93 | font-size: 19px;
94 | }
95 |
96 | h5 {
97 | font-size: 17px;
98 | }
99 |
100 | h6 {
101 | font-size: 15px;
102 | }
103 |
104 | h1 small,
105 | h2 small {
106 | color: #999;
107 | font-size: 13px;
108 | font-weight: normal;
109 | }
110 |
111 | @media (max-width: 767px) {
112 | h1 small {
113 | display: block;
114 | padding-top: 10px;
115 | }
116 | }
117 |
118 | @media (min-width: 768px) {
119 | h1 small {
120 | padding-left: 10px;
121 | }
122 | }
123 |
124 | /*
125 | Spacing
126 | ============================================================
127 | */
128 |
129 | ol {
130 | list-style: decimal;
131 | }
132 |
133 | ul {
134 | list-style: disc;
135 | }
136 |
137 | li {
138 | margin-left: 30px;
139 | }
140 |
141 | p,
142 | dl,
143 | hr,
144 | h1,
145 | h2,
146 | h3,
147 | h4,
148 | h5,
149 | h6,
150 | ol,
151 | ul,
152 | pre,
153 | table,
154 | address,
155 | fieldset,
156 | figure {
157 | margin-bottom: 20px;
158 | }
--------------------------------------------------------------------------------
/source/sass/partials/_reset.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Reset.
3 | ============================================================
4 | */
5 |
6 | *,
7 | *:before,
8 | *:after {
9 | box-sizing: inherit;
10 | font-family: inherit;
11 | font-size: 100%;
12 | text-rendering: inherit;
13 | }
14 |
15 | a,
16 | abbr,
17 | acronym,
18 | address,
19 | applet,
20 | article,
21 | aside,
22 | audio,
23 | b,
24 | big,
25 | blockquote,
26 | body,
27 | canvas,
28 | caption,
29 | center,
30 | cite,
31 | code,
32 | dd,
33 | del,
34 | details,
35 | dfn,
36 | dialog,
37 | div,
38 | dl,
39 | dt,
40 | em,
41 | embed,
42 | fieldset,
43 | figcaption,
44 | figure,
45 | font,
46 | footer,
47 | form,
48 | h1,
49 | h2,
50 | h3,
51 | h4,
52 | h5,
53 | h6,
54 | header,
55 | hgroup,
56 | hr,
57 | html,
58 | i,
59 | iframe,
60 | img,
61 | ins,
62 | kbd,
63 | label,
64 | legend,
65 | li,
66 | main,
67 | mark,
68 | menu,
69 | meter,
70 | nav,
71 | object,
72 | ol,
73 | output,
74 | p,
75 | pre,
76 | progress,
77 | q,
78 | rp,
79 | rt,
80 | ruby,
81 | s,
82 | samp,
83 | section,
84 | small,
85 | span,
86 | strike,
87 | strong,
88 | sub,
89 | summary,
90 | sup,
91 | table,
92 | tbody,
93 | td,
94 | tfoot,
95 | th,
96 | thead,
97 | time,
98 | tr,
99 | tt,
100 | u,
101 | ul,
102 | var,
103 | video,
104 | xmp {
105 | border: 0;
106 | margin: 0;
107 | padding: 0;
108 | }
109 |
110 | html,
111 | body {
112 | height: 100%;
113 | }
114 |
115 | html {
116 | box-sizing: border-box;
117 | text-rendering: optimizeSpeed;
118 | }
119 |
120 | b,
121 | strong {
122 | /*
123 | Makes browsers agree.
124 | IE + Opera = font-weight: bold.
125 | Gecko + WebKit = font-weight: bolder.
126 | */
127 | font-weight: bold;
128 | }
129 |
130 | img {
131 | color: transparent;
132 | font-size: 0;
133 | vertical-align: middle;
134 | /*
135 | For IE.
136 | http://css-tricks.com/ie-fix-bicubic-scaling-for-images
137 | */
138 | -ms-interpolation-mode: bicubic;
139 | }
140 |
141 | li {
142 | /*
143 | For IE6 + IE7:
144 | "display: list-item" keeps bullets from
145 | disappearing if hasLayout is triggered.
146 | */
147 | display: list-item;
148 | }
149 |
150 | article,
151 | aside,
152 | details,
153 | figcaption,
154 | figure,
155 | footer,
156 | header,
157 | main,
158 | menu,
159 | nav,
160 | section,
161 | summary {
162 | /*
163 | Block level HTML5 tags.
164 | */
165 | display: block;
166 | }
167 |
168 | table {
169 | border-collapse: collapse;
170 | border-spacing: 0;
171 | }
172 |
173 | th,
174 | td,
175 | caption {
176 | font-weight: normal;
177 | vertical-align: top;
178 | text-align: left;
179 | }
180 |
181 | q {
182 | quotes: none;
183 | }
184 |
185 | q:before,
186 | q:after {
187 | content: "";
188 | content: none;
189 | }
190 |
191 | sub,
192 | sup,
193 | small {
194 | font-size: 75%;
195 | }
196 |
197 | sub,
198 | sup {
199 | line-height: 0;
200 | position: relative;
201 | vertical-align: baseline;
202 | }
203 |
204 | sub {
205 | bottom: -0.25em;
206 | }
207 |
208 | sup {
209 | top: -0.5em;
210 | }
211 |
212 | svg {
213 | /*
214 | For IE9. Without, occasionally draws shapes
215 | outside the boundaries of