Some new code for the new layout.

This commit is contained in:
James Cole
2018-12-23 07:21:47 +01:00
parent 17e85ca2cf
commit 91deac706c
16 changed files with 426 additions and 163 deletions

154
package-lock.json generated
View File

@@ -522,6 +522,17 @@
"babel-types": "6.26.0"
}
},
"babel-helper-builder-react-jsx": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
"integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"esutils": "2.0.2"
}
},
"babel-helper-call-delegate": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
@@ -689,6 +700,18 @@
"integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
"dev": true
},
"babel-plugin-syntax-flow": {
"version": "6.18.0",
"resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
"integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=",
"dev": true
},
"babel-plugin-syntax-jsx": {
"version": "6.18.0",
"resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
"dev": true
},
"babel-plugin-syntax-object-rest-spread": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
@@ -957,6 +980,16 @@
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-flow-strip-types": {
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
"integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
"dev": true,
"requires": {
"babel-plugin-syntax-flow": "6.18.0",
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-object-rest-spread": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
@@ -967,6 +1000,46 @@
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-react-display-name": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
"integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
"dev": true,
"requires": {
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-react-jsx": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
"integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
"dev": true,
"requires": {
"babel-helper-builder-react-jsx": "6.26.0",
"babel-plugin-syntax-jsx": "6.18.0",
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-react-jsx-self": {
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz",
"integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=",
"dev": true,
"requires": {
"babel-plugin-syntax-jsx": "6.18.0",
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-react-jsx-source": {
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
"integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
"dev": true,
"requires": {
"babel-plugin-syntax-jsx": "6.18.0",
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-regenerator": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
@@ -1033,6 +1106,29 @@
"semver": "5.5.0"
}
},
"babel-preset-flow": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz",
"integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=",
"dev": true,
"requires": {
"babel-plugin-transform-flow-strip-types": "6.22.0"
}
},
"babel-preset-react": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz",
"integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=",
"dev": true,
"requires": {
"babel-plugin-syntax-jsx": "6.18.0",
"babel-plugin-transform-react-display-name": "6.25.0",
"babel-plugin-transform-react-jsx": "6.24.1",
"babel-plugin-transform-react-jsx-self": "6.22.0",
"babel-plugin-transform-react-jsx-source": "6.22.0",
"babel-preset-flow": "6.23.0"
}
},
"babel-register": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
@@ -1365,10 +1461,10 @@
"hoek": "2.16.3"
}
},
"bootstrap-sass": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz",
"integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg=",
"bootstrap": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.2.1.tgz",
"integrity": "sha512-tt/7vIv3Gm2mnd/WeDx36nfGGHleil0Wg8IeB7eMrVkY0fZ5iTaBisSh8oNANc2IBsCc6vCgCNTIM/IEN0+50Q==",
"dev": true
},
"brace-expansion": {
@@ -10073,6 +10169,16 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"prop-types": {
"version": "15.6.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
"integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"dev": true,
"requires": {
"loose-envify": "1.3.1",
"object-assign": "4.1.1"
}
},
"proxy-addr": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
@@ -10285,6 +10391,30 @@
}
}
},
"react": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz",
"integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==",
"dev": true,
"requires": {
"loose-envify": "1.3.1",
"object-assign": "4.1.1",
"prop-types": "15.6.2",
"scheduler": "0.12.0"
}
},
"react-dom": {
"version": "16.7.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz",
"integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==",
"dev": true,
"requires": {
"loose-envify": "1.3.1",
"object-assign": "4.1.1",
"prop-types": "15.6.2",
"scheduler": "0.12.0"
}
},
"read-all-stream": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
@@ -10796,6 +10926,16 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
"scheduler": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz",
"integrity": "sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==",
"dev": true,
"requires": {
"loose-envify": "1.3.1",
"object-assign": "4.1.1"
}
},
"schema-utils": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
@@ -12795,12 +12935,6 @@
"indexof": "0.0.1"
}
},
"vue": {
"version": "2.5.13",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz",
"integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==",
"dev": true
},
"vue-hot-reload-api": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz",

23
package.json Executable file → Normal file
View File

@@ -3,22 +3,25 @@
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.17",
"bootstrap-sass": "^3.3.7",
"axios": "^0.18",
"babel-preset-react": "^6.23.0",
"bootstrap": "^4.0.0",
"cross-env": "^5.1",
"jquery": "^3.1.1",
"laravel-mix": "^1.0",
"lodash": "^4.17.4",
"vue": "^2.5.7"
},
"dependencies": {
"font-awesome": "^4.7.0"
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.5",
"popper.js": "^1.12",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -9,16 +9,16 @@ shim: {
'core': ['bootstrap', 'jquery'],
},
paths: {
'core': 'assets/js/core',
'jquery': 'assets/js/vendors/jquery-3.2.1.min',
'bootstrap': 'assets/js/vendors/bootstrap.bundle.min',
'sparkline': 'assets/js/vendors/jquery.sparkline.min',
'selectize': 'assets/js/vendors/selectize.min',
'tablesorter': 'assets/js/vendors/jquery.tablesorter.min',
'vector-map': 'assets/js/vendors/jquery-jvectormap-2.0.3.min',
'vector-map-de': 'assets/js/vendors/jquery-jvectormap-de-merc',
'vector-map-world': 'assets/js/vendors/jquery-jvectormap-world-mill',
'circle-progress': 'assets/js/vendors/circle-progress.min',
'core': 'v2/assets/js/core',
'jquery': 'v2/assets/js/vendors/jquery-3.2.1.min',
'bootstrap': 'v2/assets/js/vendors/bootstrap.bundle.min',
'sparkline': 'v2/assets/js/vendors/jquery.sparkline.min',
'selectize': 'v2/assets/js/vendors/selectize.min',
'tablesorter': 'v2/assets/js/vendors/jquery.tablesorter.min',
'vector-map': 'v2/assets/js/vendors/jquery-jvectormap-2.0.3.min',
'vector-map-de': 'v2/assets/js/vendors/jquery-jvectormap-de-merc',
'vector-map-world': 'v2/assets/js/vendors/jquery-jvectormap-world-mill',
'circle-progress': 'v2/assets/js/vendors/circle-progress.min',
}
});
window.tabler = {

View File

@@ -4,7 +4,7 @@ require.config({
'd3': ['core'],
},
paths: {
'd3': 'assets/plugins/charts-c3/js/d3.v3.min',
'c3': 'assets/plugins/charts-c3/js/c3.min',
'd3': 'v2/assets/plugins/charts-c3/js/d3.v3.min',
'c3': 'v2/assets/plugins/charts-c3/js/c3.min',
}
});

View File

@@ -3,6 +3,6 @@ require.config({
'input-mask': ['jquery', 'core']
},
paths: {
'input-mask': 'assets/plugins/input-mask/js/jquery.mask.min'
'input-mask': 'v2/assets/plugins/input-mask/js/jquery.mask.min'
}
});

16
resources/js/app.js vendored Normal file
View File

@@ -0,0 +1,16 @@
/**
* First we will load all of this project's JavaScript dependencies which
* includes React and other helpers. It's a great starting point while
* building robust, powerful web applications using React + Laravel.
*/
require('./bootstrap');
/**
* Next, we will create a fresh React component instance and attach it to
* the page. Then, you may begin adding components to this application
* or customize the JavaScript scaffolding to fit your unique needs.
*/
require('./components/Example');

56
resources/js/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,56 @@
window._ = require('lodash');
/**
* We'll load jQuery and the Bootstrap jQuery plugin which provides support
* for JavaScript based Bootstrap features such as modals and tabs. This
* code may be modified to fit the specific needs of your application.
*/
try {
window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('bootstrap');
} catch (e) {}
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
* CSRF token as a header based on the value of the "XSRF" token cookie.
*/
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
/**
* Next we will register the CSRF Token as a common header with Axios so that
* all outgoing HTTP requests automatically have it attached. This is just
* a simple convenience so we don't have to attach every token manually.
*/
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting
* allows your team to easily build robust real-time web applications.
*/
// import Echo from 'laravel-echo'
// window.Pusher = require('pusher-js');
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// encrypted: true
// });

26
resources/js/components/Example.js vendored Normal file
View File

@@ -0,0 +1,26 @@
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
export default class Example extends Component {
render() {
return (
<div className="container">
<div className="row justify-content-center">
<div className="col-md-8">
<div className="card">
<div className="card-header">Example Component</div>
<div className="card-body">
I'm an example component!
</div>
</div>
</div>
</div>
</div>
);
}
}
if (document.getElementById('example')) {
ReactDOM.render(<Example />, document.getElementById('example'));
}

View File

@@ -41,6 +41,7 @@ return [
'cancel' => 'Cancel',
'from' => 'From',
'to' => 'To',
'structure' => 'Structure',
'help_translating' => 'This help text is not yet available in your language. <a href="https://crowdin.com/project/firefly-iii-help">Will you help translate?</a>',
'showEverything' => 'Show everything',
'never' => 'Never',
@@ -113,6 +114,7 @@ return [
'cannot_redirect_to_account' => 'Firefly III cannot redirect you to the correct page. Apologies.',
'sum_of_expenses' => 'Sum of expenses',
'sum_of_income' => 'Sum of income',
'liabilities' => 'Liabilities',
'spent_in_specific_budget' => 'Spent in budget ":budget"',
'sum_of_expenses_in_budget' => 'Spent total in budget ":budget"',
'left_in_budget_limit' => 'Left to spend according to budgeting',
@@ -913,7 +915,10 @@ return [
'income' => 'Revenue / income',
'transfers' => 'Transfers',
'moneyManagement' => 'Money management',
'money_management' => 'Money management',
'tools' => 'Tools',
'piggyBanks' => 'Piggy banks',
'piggy_banks' => 'Piggy banks',
'bills' => 'Bills',
'withdrawal' => 'Withdrawal',
'opening_balance' => 'Opening balance',

View File

@@ -1,6 +1,8 @@
{% extends "./layout/default" %}
{% block content %}
<div class="row row-cards">
<div class="col-6 col-sm-4 col-lg-2">
<div class="card">
<div class="card-body p-3 text-center">
@@ -73,6 +75,7 @@
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-header">

View File

@@ -20,8 +20,8 @@
Firefly III
</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i,500,500i,600,600i,700,700i&amp;subset=latin-ext">
<link rel="stylesheet" href="v2/lib/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="v2/assets/css/gf-source.css">
<script src="v2/assets/js/require.min.js"></script>
<script>
requirejs.config({
@@ -46,79 +46,8 @@
<div class="header py-4">
<div class="container">
<div class="d-flex">
<a class="header-brand" href="./index.html">
<img src="v2/demo/brand/tabler.svg" class="header-brand-img" alt="tabler logo">
</a>
<div class="d-flex order-lg-2 ml-auto">
<div class="nav-item d-none d-md-flex">
<a href="https://github.com/tabler/tabler" class="btn btn-sm btn-outline-primary" target="_blank">Source code</a>
</div>
<div class="dropdown d-none d-md-flex">
<a class="nav-link icon" data-toggle="dropdown">
<i class="fe fe-bell"></i>
<span class="nav-unread"></span>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/male/41.jpg)"></span>
<div>
<strong>Nathan</strong> pushed new commit: Fix page load performance issue.
<div class="small text-muted">10 minutes ago</div>
</div>
</a>
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/female/1.jpg)"></span>
<div>
<strong>Alice</strong> started new task: Tabler UI design.
<div class="small text-muted">1 hour ago</div>
</div>
</a>
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/female/18.jpg)"></span>
<div>
<strong>Rose</strong> deployed new version of NodeJS REST Api V3
<div class="small text-muted">2 hours ago</div>
</div>
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item text-center text-muted-dark">Mark all as read</a>
</div>
</div>
<div class="dropdown">
<a href="#" class="nav-link pr-0 leading-none" data-toggle="dropdown">
<span class="avatar" style="background-image: url(./demo/faces/female/25.jpg)"></span>
<span class="ml-2 d-none d-lg-block">
<span class="text-default">Jane Pearson</span>
<small class="text-muted d-block mt-1">Administrator</small>
</span>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-user"></i> Profile
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-settings"></i> Settings
</a>
<a class="dropdown-item" href="#">
<span class="float-right"><span class="badge badge-primary">6</span></span>
<i class="dropdown-icon fe fe-mail"></i> Inbox
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-send"></i> Message
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-help-circle"></i> Need help?
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-log-out"></i> Sign out
</a>
</div>
</div>
</div>
<a href="#" class="header-toggler d-lg-none ml-3 ml-lg-0" data-toggle="collapse" data-target="#headerMenuCollapse">
<span class="header-toggler-icon"></span>
</a>
{# favicons #}
{% include('partials.top_bar') %}
</div>
</div>
</div>
@@ -126,64 +55,16 @@
<div class="container">
<div class="row align-items-center">
<div class="col-lg-3 ml-auto">
<form class="input-icon my-3 my-lg-0">
<input type="search" class="form-control header-search" placeholder="Search&hellip;" tabindex="1">
<form class="input-icon my-3 my-lg-0" action="{{ route('search.index') }}" method="get">
<input type="search" class="form-control header-search" placeholder="Search&hellip;" name="q" tabindex="1">
<div class="input-icon-addon">
<i class="fe fe-search"></i>
</div>
</form>
</div>
<div class="col-lg order-lg-first">
<ul class="nav nav-tabs border-0 flex-column flex-lg-row">
<li class="nav-item">
<a href="./index.html" class="nav-link active"><i class="fe fe-home"></i> Home</a>
</li>
<li class="nav-item">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fe fe-box"></i> Interface</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="./cards.html" class="dropdown-item ">Cards design</a>
<a href="./charts.html" class="dropdown-item ">Charts</a>
<a href="./pricing-cards.html" class="dropdown-item ">Pricing cards</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fe fe-calendar"></i> Components</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="./maps.html" class="dropdown-item ">Maps</a>
<a href="./icons.html" class="dropdown-item ">Icons</a>
<a href="./store.html" class="dropdown-item ">Store</a>
<a href="./blog.html" class="dropdown-item ">Blog</a>
<a href="./carousel.html" class="dropdown-item ">Carousel</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fe fe-file"></i> Pages</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="./profile.html" class="dropdown-item ">Profile</a>
<a href="./login.html" class="dropdown-item ">Login</a>
<a href="./register.html" class="dropdown-item ">Register</a>
<a href="./forgot-password.html" class="dropdown-item ">Forgot password</a>
<a href="./400.html" class="dropdown-item ">400 error</a>
<a href="./401.html" class="dropdown-item ">401 error</a>
<a href="./403.html" class="dropdown-item ">403 error</a>
<a href="./404.html" class="dropdown-item ">404 error</a>
<a href="./500.html" class="dropdown-item ">500 error</a>
<a href="./503.html" class="dropdown-item ">503 error</a>
<a href="./email.html" class="dropdown-item ">Email</a>
<a href="./empty.html" class="dropdown-item ">Empty page</a>
<a href="./rtl.html" class="dropdown-item ">RTL mode</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="./form-elements.html" class="nav-link"><i class="fe fe-check-square"></i> Forms</a>
</li>
<li class="nav-item">
<a href="./gallery.html" class="nav-link"><i class="fe fe-image"></i> Gallery</a>
</li>
<li class="nav-item">
<a href="./docs/index.html" class="nav-link"><i class="fe fe-file-text"></i> Documentation</a>
</li>
</ul>
{# favicons #}
{% include('partials.top_menu') %}
</div>
</div>
</div>
@@ -192,7 +73,8 @@
<div class="container">
<div class="page-header">
<h1 class="page-title">
Dashboard
{{ title }}
<small class="text-muted">{{ subTitle }}</small>
</h1>
</div>
{% block content %}{% endblock %}

View File

@@ -0,0 +1,88 @@
<a class="header-brand" href="{{ route('index') }}">
<img src="v2/assets/images/basic-logo-ff3.png" class="header-brand-img" alt="Firefly III">
</a>
<div class="d-flex order-lg-2 ml-auto">
{# SOURCE CODE LINK #}
{#
<div class="nav-item d-none d-md-flex">
<a href="https://github.com/tabler/tabler" class="btn btn-sm btn-outline-primary" target="_blank">Source code</a>
</div>
#}
{# TOP MENU WITH ALERTS, NOT IN USE #}
{#
<div class="dropdown d-none d-md-flex">
<a class="nav-link icon" data-toggle="dropdown">
<i class="fe fe-bell"></i>
<span class="nav-unread"></span>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/male/41.jpg)"></span>
<div>
<strong>Nathan</strong> pushed new commit: Fix page load performance issue.
<div class="small text-muted">10 minutes ago</div>
</div>
</a>
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/female/1.jpg)"></span>
<div>
<strong>Alice</strong> started new task: Tabler UI design.
<div class="small text-muted">1 hour ago</div>
</div>
</a>
<a href="#" class="dropdown-item d-flex">
<span class="avatar mr-3 align-self-center" style="background-image: url(demo/faces/female/18.jpg)"></span>
<div>
<strong>Rose</strong> deployed new version of NodeJS REST Api V3
<div class="small text-muted">2 hours ago</div>
</div>
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item text-center text-muted-dark">Mark all as read</a>
</div>
</div>
#}
<div class="dropdown">
<a href="#" class="nav-link pr-0 leading-none" data-toggle="dropdown">
<span class="avatar" {#style="background-image: url(./demo/faces/female/25.jpg)"#}></span>
<span class="ml-2 d-none d-lg-block">
<span class="text-default">{{ Auth.user.email }}</span>
<small class="text-muted d-block mt-1">USER ROLE</small>
</span>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
<a class="dropdown-item" href="{{ route('profile.index') }}">
<i class="dropdown-icon fa fa-user"></i> {{ 'profile'|_ }}
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fa fa-gear"></i> {{ 'preferences'|_ }}
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fa fa-hand-spock-o"></i> {{ 'administration'|_ }}
</a>
{#
<a class="dropdown-item" href="#">
<span class="float-right"><span class="badge badge-primary">6</span></span>
<i class="dropdown-icon fe fe-mail"></i> Inbox
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-send"></i> Message
</a>
#}
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-help-circle"></i> {{ 'need_help'|_ }}
</a>
<a class="dropdown-item" href="#">
<i class="dropdown-icon fe fe-log-out"></i> {{ 'logout'|_ }}
</a>
</div>
</div>
</div>
<a href="#" class="header-toggler d-lg-none ml-3 ml-lg-0" data-toggle="collapse" data-target="#headerMenuCollapse">
<span class="header-toggler-icon"></span>
</a>

View File

@@ -0,0 +1,49 @@
<ul class="nav nav-tabs border-0 flex-column flex-lg-row">
<li class="nav-item">
<a href="{{ route('index') }}" class="nav-link active"><i class="fa fa-home"></i> {{ 'dashboard'|_ }}</a>
</li>
<li class="nav-item">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fa fa-repeat"></i> {{ 'transactions'|_ }}</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="{{ route('transactions.show', ['withdrawal']) }}" class="dropdown-item ">{{ 'expenses'|_ }}</a>
<a href="{{ route('transactions.show', ['expense']) }}" class="dropdown-item ">{{ 'income'|_ }}</a>
<a href="{{ route('transactions.show', ['transfer']) }}" class="dropdown-item ">{{ 'transfers'|_ }}</a>
</div>
</li>
<li class="nav-item">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fa fa-credit-card"></i> {{ 'accounts'|_ }}</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="{{ route('accounts.show', ['asset']) }}" class="dropdown-item ">{{ 'asset_accounts'|_ }}</a>
<a href="{{ route('accounts.show', ['expense']) }}" class="dropdown-item ">{{ 'expense_accounts'|_ }}</a>
<a href="{{ route('accounts.show', ['revenue']) }}" class="dropdown-item ">{{ 'revenue_accounts'|_ }}</a>
<a href="{{ route('accounts.show', ['liabilities']) }}" class="dropdown-item ">{{ 'liabilities'|_ }}</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fa fa-database"></i> {{ 'structure'|_ }}</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="{{ route('categories.index') }}" class="dropdown-item ">{{ 'categories'|_ }}</a>
<a href="{{ route('budgets.index') }}" class="dropdown-item ">{{ 'budgets'|_ }}</a>
<a href="{{ route('tags.index') }}" class="dropdown-item ">{{ 'tags'|_ }}</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fa fa-filter"></i> {{ 'money_management'|_ }}</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="{{ route('bills.index') }}" class="dropdown-item ">{{ 'bills'|_ }}</a>
<a href="{{ route('piggy-banks.index') }}" class="dropdown-item ">{{ 'piggy_banks'|_ }}</a>
<a href="{{ route('reports.index') }}" class="dropdown-item ">{{ 'reports'|_ }}</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="javascript:void(0)" class="nav-link" data-toggle="dropdown"><i class="fa fa-gears"></i> {{ 'tools'|_ }}</a>
<div class="dropdown-menu dropdown-menu-arrow">
<a href="{{ route('rules.index') }}" class="dropdown-item ">{{ 'rules'|_ }}</a>
<a href="{{ route('recurring.index') }}" class="dropdown-item ">{{ 'recurrences'|_ }}</a>
<a href="{{ route('currencies.index') }}" class="dropdown-item ">{{ 'currencies'|_ }}</a>
<a href="{{ route('import.index') }}" class="dropdown-item ">{{ 'import_data'|_ }}</a>
<a href="{{ route('export.index') }}" class="dropdown-item ">{{ 'export_data'|_ }}</a>
</div>
</li>
</ul>

5
webpack.mix.js vendored
View File

@@ -1,4 +1,4 @@
let mix = require('laravel-mix');
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
@@ -11,4 +11,5 @@ let mix = require('laravel-mix');
|
*/
mix.js('resources/assets/js/app.js', 'public/js');
mix.react('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');