From 7ae68f079ddfb74c9a1b17c4f30dfe4c258d4a9f Mon Sep 17 00:00:00 2001 From: Zero~Informatique Date: Fri, 20 Dec 2019 17:47:04 +0100 Subject: Viewer project foundations --- viewer/src/assets/scss/_buefy_variables.scss | 152 +++++++++++++++++++++++++++ viewer/src/assets/scss/buefy.scss | 37 +++++++ viewer/src/assets/scss/global.scss | 14 +++ viewer/src/locales/en.json | 3 + viewer/src/main.ts | 15 +++ viewer/src/plugins/buefy.ts | 9 ++ viewer/src/plugins/fontawesome.js | 9 ++ viewer/src/plugins/i18n.ts | 23 ++++ viewer/src/router/index.ts | 18 ++++ viewer/src/shims-tsx.d.ts | 13 +++ viewer/src/shims-vue.d.ts | 4 + viewer/src/views/LdGallery.vue | 82 +++++++++++++++ viewer/src/views/Root.vue | 18 ++++ 13 files changed, 397 insertions(+) create mode 100644 viewer/src/assets/scss/_buefy_variables.scss create mode 100644 viewer/src/assets/scss/buefy.scss create mode 100644 viewer/src/assets/scss/global.scss create mode 100644 viewer/src/locales/en.json create mode 100644 viewer/src/main.ts create mode 100644 viewer/src/plugins/buefy.ts create mode 100644 viewer/src/plugins/fontawesome.js create mode 100644 viewer/src/plugins/i18n.ts create mode 100644 viewer/src/router/index.ts create mode 100644 viewer/src/shims-tsx.d.ts create mode 100644 viewer/src/shims-vue.d.ts create mode 100644 viewer/src/views/LdGallery.vue create mode 100644 viewer/src/views/Root.vue (limited to 'viewer/src') diff --git a/viewer/src/assets/scss/_buefy_variables.scss b/viewer/src/assets/scss/_buefy_variables.scss new file mode 100644 index 0000000..716a1ec --- /dev/null +++ b/viewer/src/assets/scss/_buefy_variables.scss @@ -0,0 +1,152 @@ +// Included below are all the defined variables from Bulma +// Modify as needed, removing the !default attribute. + +// Colors + +$black: hsl(0, 0%, 4%) !default; +$black-bis: hsl(0, 0%, 7%) !default; +$black-ter: hsl(0, 0%, 14%) !default; + +$grey-darker: hsl(0, 0%, 21%) !default; +$grey-dark: hsl(0, 0%, 29%) !default; +$grey: hsl(0, 0%, 48%) !default; +$grey-light: hsl(0, 0%, 71%) !default; +$grey-lighter: hsl(0, 0%, 86%) !default; + +$white-ter: hsl(0, 0%, 96%) !default; +$white-bis: hsl(0, 0%, 98%) !default; +$white: hsl(0, 0%, 100%) !default; + +$orange: hsl(14, 100%, 53%) !default; +$yellow: hsl(48, 100%, 67%) !default; +$green: hsl(141, 71%, 48%) !default; +$turquoise: hsl(171, 100%, 41%) !default; +$cyan: hsl(204, 86%, 53%) !default; +$blue: hsl(217, 71%, 53%) !default; +$purple: hsl(271, 100%, 71%) !default; +$red: hsl(348, 100%, 61%) !default; + +// Typography + +$family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default; +$family-monospace: monospace !default; +$render-mode: optimizeLegibility !default; + +$size-1: 3rem !default; +$size-2: 2.5rem !default; +$size-3: 2rem !default; +$size-4: 1.5rem !default; +$size-5: 1.25rem !default; +$size-6: 1rem !default; +$size-7: 0.75rem !default; + +$weight-light: 300 !default; +$weight-normal: 400 !default; +$weight-medium: 500 !default; +$weight-semibold: 600 !default; +$weight-bold: 700 !default; + +// Responsiveness + +// The container horizontal gap, which acts as the offset for breakpoints +$gap: 32px !default; +// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16 +$tablet: 769px !default; +// 960px container + 4rem +$desktop: 960px + (2 * $gap) !default; +// 1152px container + 4rem +$widescreen: 1152px + (2 * $gap) !default; +// 1344px container + 4rem; +$fullhd: 1344px + (2 * $gap) !default; + +// Miscellaneous + +$easing: ease-out !default; +$radius-small: 2px !default; +$radius: 3px !default; +$radius-large: 5px !default; +$radius-rounded: 290486px !default; +$speed: 86ms !default; + +// Flags + +$variable-columns: true !default; + + +// The default Bulma derived variables are declared below + +$primary: $turquoise !default; + +$info: $cyan !default; +$success: $green !default; +$warning: $yellow !default; +$danger: $red !default; + +$light: $white-ter !default; +$dark: $grey-darker !default; + +// Invert colors + +$orange-invert: findColorInvert($orange) !default; +$yellow-invert: findColorInvert($yellow) !default; +$green-invert: findColorInvert($green) !default; +$turquoise-invert: findColorInvert($turquoise) !default; +$cyan-invert: findColorInvert($cyan) !default; +$blue-invert: findColorInvert($blue) !default; +$purple-invert: findColorInvert($purple) !default; +$red-invert: findColorInvert($red) !default; + +$primary-invert: $turquoise-invert !default; +$info-invert: $cyan-invert !default; +$success-invert: $green-invert !default; +$warning-invert: $yellow-invert !default; +$danger-invert: $red-invert !default; +$light-invert: $dark !default; +$dark-invert: $light !default; + +// General colors + +$background: $white-ter !default; + +$border: $grey-lighter !default; +$border-hover: $grey-light !default; + +// Text colors + +$text: $grey-dark !default; +$text-invert: findColorInvert($text) !default; +$text-light: $grey !default; +$text-strong: $grey-darker !default; + +// Code colors + +$code: $red !default; +$code-background: $background !default; + +$pre: $text !default; +$pre-background: $background !default; + +// Link colors + +$link: $blue !default; +$link-invert: $blue-invert !default; +$link-visited: $purple !default; + +$link-hover: $grey-darker !default; +$link-hover-border: $grey-light !default; + +$link-focus: $grey-darker !default; +$link-focus-border: $blue !default; + +$link-active: $grey-darker !default; +$link-active-border: $grey-dark !default; + +// Typography + +$family-primary: $family-sans-serif !default; +$family-code: $family-monospace !default; + +$size-small: $size-7 !default; +$size-normal: $size-6 !default; +$size-medium: $size-5 !default; +$size-large: $size-4 !default; diff --git a/viewer/src/assets/scss/buefy.scss b/viewer/src/assets/scss/buefy.scss new file mode 100644 index 0000000..5249899 --- /dev/null +++ b/viewer/src/assets/scss/buefy.scss @@ -0,0 +1,37 @@ +@import "~bulma/sass/utilities/initial-variables"; +@import "~bulma/sass/utilities/functions"; +// 1. Set your own initial variables and derived +// variables in _variables.scss +@import "buefy_variables"; + +// 2. Setup your Custom Colors +$linkedin: #0077b5; +$linkedin-invert: findColorInvert($linkedin); +$twitter: #55acee; +$twitter-invert: findColorInvert($twitter); +$github: #333; +$github-invert: findColorInvert($github); + +@import "~bulma/sass/utilities/derived-variables"; + +// 3. Add new color variables to the color map. +$addColors: ( + "twitter": ( + $twitter, + $twitter-invert + ), + "linkedin": ( + $linkedin, + $linkedin-invert + ), + "github": ( + $github, + $github-invert + ) +); +$colors: map-merge($colors, $addColors); + +@import "~bulma"; +@import "~buefy/src/scss/buefy"; + +// 4. Provide custom buefy overrides and site styles here diff --git a/viewer/src/assets/scss/global.scss b/viewer/src/assets/scss/global.scss new file mode 100644 index 0000000..0bfeab9 --- /dev/null +++ b/viewer/src/assets/scss/global.scss @@ -0,0 +1,14 @@ +// Global CSS + +// === Forms + +.required label::after { + content: "*"; + color: red; +} + +// === Tools + +.nowrap { + white-space: nowrap; +} diff --git a/viewer/src/locales/en.json b/viewer/src/locales/en.json new file mode 100644 index 0000000..d966983 --- /dev/null +++ b/viewer/src/locales/en.json @@ -0,0 +1,3 @@ +{ + "message": "hello i18n !!" +} \ No newline at end of file diff --git a/viewer/src/main.ts b/viewer/src/main.ts new file mode 100644 index 0000000..352b565 --- /dev/null +++ b/viewer/src/main.ts @@ -0,0 +1,15 @@ +import Vue from "vue"; +import "@/assets/scss/global.scss"; +import "@/plugins/fontawesome"; +import "@/plugins/buefy"; +import i18n from "@/plugins/i18n"; +import router from "@/router"; +import LdGallery from "@/views/LdGallery.vue"; + +Vue.config.productionTip = false; + +new Vue({ + router, + i18n, + render: h => h(LdGallery), +}).$mount("#ldgallery"); diff --git a/viewer/src/plugins/buefy.ts b/viewer/src/plugins/buefy.ts new file mode 100644 index 0000000..a880cee --- /dev/null +++ b/viewer/src/plugins/buefy.ts @@ -0,0 +1,9 @@ +import Vue from "vue"; + +import Buefy from "buefy"; +import "@/assets/scss/buefy.scss"; + +Vue.use(Buefy, { + defaultIconComponent: 'fa-icon', + defaultIconPack: 'fas', +}); diff --git a/viewer/src/plugins/fontawesome.js b/viewer/src/plugins/fontawesome.js new file mode 100644 index 0000000..9bf4dba --- /dev/null +++ b/viewer/src/plugins/fontawesome.js @@ -0,0 +1,9 @@ +import Vue from "vue"; + +import { library } from "@fortawesome/fontawesome-svg-core"; +import { faExpandArrowsAlt } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; + +library.add(faExpandArrowsAlt); + +Vue.component("fa-icon", FontAwesomeIcon); diff --git a/viewer/src/plugins/i18n.ts b/viewer/src/plugins/i18n.ts new file mode 100644 index 0000000..da2cd87 --- /dev/null +++ b/viewer/src/plugins/i18n.ts @@ -0,0 +1,23 @@ +import Vue from "vue"; +import VueI18n, { LocaleMessages } from "vue-i18n"; + +Vue.use(VueI18n); + +function loadLocaleMessages(): LocaleMessages { + const locales = require.context("@/locales", true, /[A-Za-z0-9-_,\s]+\.json$/i); + const messages: LocaleMessages = {}; + locales.keys().forEach(key => { + const matched = key.match(/([A-Za-z0-9-_]+)\./i); + if (matched && matched.length > 1) { + const locale = matched[1]; + messages[locale] = locales(key); + } + }); + return messages; +} + +export default new VueI18n({ + locale: process.env.VUE_APP_I18N_LOCALE || "en", + fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || "en", + messages: loadLocaleMessages(), +}); diff --git a/viewer/src/router/index.ts b/viewer/src/router/index.ts new file mode 100644 index 0000000..03ae1cd --- /dev/null +++ b/viewer/src/router/index.ts @@ -0,0 +1,18 @@ +import Vue from "vue"; +import VueRouter from "vue-router"; + +Vue.use(VueRouter); + +const routes = [ + { + path: "/", + name: "root", + component: () => import(/* webpackChunkName: "root" */ "@/views/Root.vue"), + }, +]; + +const router = new VueRouter({ + routes, +}); + +export default router; diff --git a/viewer/src/shims-tsx.d.ts b/viewer/src/shims-tsx.d.ts new file mode 100644 index 0000000..2bcdf9f --- /dev/null +++ b/viewer/src/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from "vue"; + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any; + } + } +} diff --git a/viewer/src/shims-vue.d.ts b/viewer/src/shims-vue.d.ts new file mode 100644 index 0000000..0660bd6 --- /dev/null +++ b/viewer/src/shims-vue.d.ts @@ -0,0 +1,4 @@ +declare module "*.vue" { + import Vue from "vue"; + export default Vue; +} diff --git a/viewer/src/views/LdGallery.vue b/viewer/src/views/LdGallery.vue new file mode 100644 index 0000000..a77dc24 --- /dev/null +++ b/viewer/src/views/LdGallery.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/viewer/src/views/Root.vue b/viewer/src/views/Root.vue new file mode 100644 index 0000000..384dcbe --- /dev/null +++ b/viewer/src/views/Root.vue @@ -0,0 +1,18 @@ + + + + + -- cgit v1.2.3