Browse Source

feat: Skeleton layout

develop
Dale 1 month ago
parent
commit
71f32ef097
Signed by: Deiru <deiru2k@gmail.com> GPG Key ID: AA250C0277B927E1
23 changed files with 2486 additions and 126 deletions
  1. +1
    -1
      default.nix
  2. +3
    -0
      package.json
  3. +29
    -22
      src/App.vue
  4. BIN
      src/assets/fonts/FiraCode-Retina.woff2
  5. BIN
      src/assets/fonts/Poppins-Medium.ttf
  6. BIN
      src/assets/fonts/poppins-v12-latin-regular.woff
  7. BIN
      src/assets/fonts/poppins-v12-latin-regular.woff2
  8. +35
    -0
      src/assets/global.scss
  9. BIN
      src/assets/yuuka.jpg
  10. +12
    -32
      src/components/HelloWorld.vue
  11. +58
    -11
      src/components/ui/Button.vue
  12. +22
    -15
      src/components/ui/grid/Col.vue
  13. +4
    -5
      src/components/ui/grid/Row.vue
  14. +40
    -0
      src/components/ui/layout/Navbar.vue
  15. +46
    -0
      src/components/ui/layout/Page.vue
  16. +76
    -0
      src/components/ui/layout/Sidebar.vue
  17. +8
    -0
      src/main.ts
  18. +4
    -3
      src/router/index.ts
  19. +3
    -4
      src/views/Home.vue
  20. +0
    -0
      src/views/stories/Test.stories.ts
  21. +113
    -0
      src/views/subscriptions/Subscriptions.vue
  22. +40
    -17
      yarn.lock
  23. +1992
    -16
      yarn.nix

+ 1
- 1
default.nix View File

@@ -4,7 +4,7 @@ let
artifactName = "miracle-tv-frontend";
version = "0.1.0";
src = ./.;
nodePkg = pkgs.nodejs-14_x;
nodePkg = pkgs.nodejs-12_x;
yarnPkg = pkgs.yarn.override { nodejs = nodePkg; };
vueCliPkg = pkgs.nodePackages."@vue/cli".override { nodejs = nodePkg; };
in mkYarnPackage rec {


+ 3
- 0
package.json View File

@@ -34,8 +34,11 @@
"flexboxgrid": "^6.3.1",
"miracle-tv-shared": "git+https://code.gensokyo.social/Gensokyo.social/miracle-tv-shared.git#c2f78e7633",
"ramda": "^0.27.1",
"sass": "^1.26.10",
"sass-loader": "^10.0.1",
"tslib": "^2.0.1",
"typescript": "~3.9.3",
"url-loader": "^4.1.0",
"vue": "^2.6.11",
"vue-class-component": "^7.2.3",
"vue-property-decorator": "^8.4.2",


+ 29
- 22
src/App.vue View File

@@ -1,32 +1,39 @@
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<Page>
<router-view/>
</div>
</Page>
</template>

<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import '@/assets/global.scss';

#nav {
padding: 30px;
}
import Page from '@/components/ui/layout/Page.vue';

#nav a {
font-weight: bold;
color: #2c3e50;
@Component({ components: { Page } })
export default class App extends Vue {}
</script>

<style>
body, html {
padding: 0px;
margin: 0px;
width: 100%;
height: 100%;
font-family: "Poppins";
font-size: 1rem;
}

#nav a.router-link-exact-active {
color: #42b983;
:root {
--MainTextColor: #cacaca;
--MainTextAccentColor: #6AFC6F;
--MainBackgroundColor: #191B22;
--MainAccentColor: #145216;
--MainAccentTextColor: #6AFC6F;
--MainBorderColor: rgba(106, 252, 111, 0.5);
--MainLinkColor: #BFE9D6;

--SuccessColor: #6AFC6F;
--FailColor: #EC8A8A;
}
</style>

BIN
src/assets/fonts/FiraCode-Retina.woff2 View File


BIN
src/assets/fonts/Poppins-Medium.ttf View File


BIN
src/assets/fonts/poppins-v12-latin-regular.woff View File


BIN
src/assets/fonts/poppins-v12-latin-regular.woff2 View File


+ 35
- 0
src/assets/global.scss View File

@@ -0,0 +1,35 @@
/* poppins-regular - latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: local('Poppins Regular'), local('Poppins-Regular'),
url("fonts/poppins-v12-latin-regular.woff2") format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url("fonts/poppins-v12-latin-regular.woff") format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}

@font-face {
font-family: FiraCode;
src: url("fonts/FiraCode-Retina.woff2") format("woff2");
}

h1, h2, h3, h4 {
margin-top: 0;
padding-top: 0;
}

h1 { font-size: 2rem; display: flex; justify-content: space-between; }
h1 > span.right { display: inline-flex; align-items: center; }

a {
color: var(--MainTextColor);
transition: color 0.2s ease-out;
text-decoration: none;
margin: 0 5px 0 5px;
cursor: pointer;
}
a::before {
content: '>=';
font-family: FiraCode;
}
a:hover { color: var(--MainLinkColor); transition: color 0.2s ease-in; }

BIN
src/assets/yuuka.jpg View File

Before After
Width: 850  |  Height: 744  |  Size: 164KB

+ 12
- 32
src/components/HelloWorld.vue View File

@@ -1,36 +1,16 @@
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br>
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript" target="_blank" rel="noopener">typescript</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-mocha" target="_blank" rel="noopener">unit-mocha</a></li>
</ul>
<h3>Essential Links</h3>
<ul>
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
</ul>
</div>
<Row>
<Col :xs="6" :xs-offset="3">
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript" target="_blank" rel="noopener">typescript</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-mocha" target="_blank" rel="noopener">unit-mocha</a></li>
</ul>
</Col>
</Row>
</template>

<script lang="ts">


+ 58
- 11
src/components/ui/Button.vue View File

@@ -1,9 +1,5 @@
<template>
<Row>
<Col :xs="6" :xs-offset="3">
<button class="ui_button">{{label}}</button>
</Col>
</Row>
<button :class="['ui-button', size, {'inverted': inverted}]"><slot /></button>
</template>

<script lang="ts">
@@ -14,15 +10,66 @@ import Col from '@/components/ui/grid/Col.vue';

@Component({ components: { Row, Col } })
export default class Button extends Vue {
@Prop({ type: String }) label!: string;
@Prop({ type: String, default: 'md' }) size!: 'sm' | 'lg' | 'md';
@Prop({ type: String, default: false }) inverted!: boolean;
}
</script>

<style scoped>
.ui_button {
border: 1px solid lightgray;
border-radius: 3px;
background-color: darkgray;
color: black;
.ui-button {
border: 1px solid var(--MainAccentColor);
border-radius: 5px;
background-color: var(--MainBackgroundColor);
color: var(--MainTextColor);
transition: all 0.2s ease-in;
cursor: pointer;
margin: 0 5px 0 5px;
}
.ui-button:first-of-type {
margin-left: 0px;
}
.ui-button:last-of-type {
margin-right: 0px;
}

.ui-button.inverted {
color: var(--MainTextColor);
background-color: var(--MainAccentColor);
border-color: var(--MainBackgroundColor);
}

.ui-button > a::before {
content: '';
}

.ui-button > a:hover {
color: var(--MainTextColor);
}

.ui-button:hover {
background-color: var(--MainAccentColor);
border-color: var(--MainBackgroundColor);
transition: all 0.2s ease-out;
}

.ui-button.inverted:hover {
background-color: var(--MainBackgroundColor);
border-color: var(--MainBackgroundColor);
}

.ui-button.sm {
font-size: 1.2rem;
}

.ui-button.md {
font-size: 1.5rem;
}

.ui-button.lg {
font-size: 2rem;
}

.ui-button.xl {
font-size: 2.5rem;
}
</style>

+ 22
- 15
src/components/ui/grid/Col.vue View File

@@ -1,15 +1,15 @@
<tempalte>
<template>
<div :class="rowClasses">
<slot />
</div>
</tempalte>
</template>

<script lang="ts">
import * as R from 'ramda';
import { Prop, Component, Vue } from 'vue-property-decorator';

@Component
export default class Row extends Vue {
export default class Col extends Vue {
@Prop({ type: Number, default: 12 }) xs!: number;

@Prop({ type: Number }) sm!: number;
@@ -30,25 +30,32 @@ export default class Row extends Vue {

@Prop({ type: Number }) xlOffset!: number;

@Prop({ type: String }) className!: string;

private get rowClasses(): string[] {
const colClasses = [
(this.xs && `col-xs-${this.xs}`) || '',
(this.xs && `col-sm-${this.sm}`) || '',
(this.xs && `col-md-${this.md}`) || '',
(this.xs && `col-lg-${this.lg}`) || '',
(this.xs && `col-xl-${this.xl}`) || '',
this.xs ? `col-xs-${this.xs}` : '',
this.sm ? `col-sm-${this.sm}` : '',
this.md ? `col-md-${this.md}` : '',
this.lg ? `col-lg-${this.lg}` : '',
this.xl ? `col-xl-${this.xl}` : '',
];
const offsetClasses = [
(this.xs && `col-xs-offset-${this.xsOffset}`) || '',
(this.xs && `col-sm-offset-${this.smOffset}`) || '',
(this.xs && `col-md-offset-${this.mdOffset}`) || '',
(this.xs && `col-lg-offset-${this.lgOffset}`) || '',
(this.xs && `col-xl-offset-${this.xlOffset}`) || '',
this.xsOffset ? `col-xs-offset-${this.xsOffset}` : '',
this.smOffset ? `col-sm-offset-${this.smOffset}` : '',
this.mdOffset ? `col-md-offset-${this.mdOffset}` : '',
this.lgOffset ? `col-lg-offset-${this.lgOffset}` : '',
this.xlOffset ? `col-xl-offset-${this.xlOffset}` : '',
];

// return R.filter(
// R.pipe(R.identity, R.not),
// [...colClasses, ...offsetClasses],
// );

return R.filter(
R.isEmpty,
[...colClasses, ...offsetClasses],
R.pipe(R.isEmpty, R.not),
[...colClasses, ...offsetClasses, this.className],
);
}
}


+ 4
- 5
src/components/ui/grid/Row.vue View File

@@ -1,13 +1,12 @@
<tempalte>
<template>
<div class="row">
<slot />
</div>
</tempalte>
</template>

<script lang="ts">
import * as R from 'ramda';
import { Prop, Component, Vue } from 'vue-property-decorator';
import { Component, Vue } from 'vue-property-decorator';

@Component
@Component({ name: 'Row' })
export default class Row extends Vue {}
</script>

+ 40
- 0
src/components/ui/layout/Navbar.vue View File

@@ -0,0 +1,40 @@
<template>
<section id="navbar">
<span class="navbar-left">
<a href="/" class="navbar-brand">MiracleTV</a>
</span>
<span class="navbar-center">
<img class="navbar-logo" src="@/assets/logo.png" />
</span>
<span class="navbar-right">
<Button :inverted="true">
<a herf="">Sign in</a>
</Button>
<Button :inverted="true">
<a href="">SignUp</a>
</Button>
</span>
</section>
</template>

<style scoped>
#navbar {
background-color: var(--MainAccentColor);
color: var(--MainTextColor);
height: 40px;
width: 100%;
display: flex;
align-items: center;
padding: 0 10px 0 10px;
box-sizing: border-box;
z-index: 30;
justify-content: space-between;
}
.navbar-logo {
height: 30px;
width: auto;
}
.navbar-brand:before {
content: '';
}
</style>

+ 46
- 0
src/components/ui/layout/Page.vue View File

@@ -0,0 +1,46 @@
<template>
<div class="app-container">
<Navbar />
<div class="page-container">
<Sidebar />
<div class="page">
<slot />
</div>
</div>
</div>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

import Navbar from "./Navbar.vue";
import Sidebar from "./Sidebar.vue";

@Component({ components: { Navbar, Sidebar } })
export default class Page extends Vue {}
</script>

<style scoped>
.app-container {
height: 100%;
width: 100%;
position: relative;
z-index: 0;
}
.page-container {
height: calc(100% - 40px);
widht: 100%;
display: flex;
flex-direction: row;
box-sizing: border-box;
}
.page {
overflow-y: auto;
width: 100%;
height: 100%;
padding: 10px 10px 0 10px;
background-color: var(--MainBackgroundColor);
color: var(--MainTextColor);
box-sizing: border-box;
}
</style>

+ 76
- 0
src/components/ui/layout/Sidebar.vue View File

@@ -0,0 +1,76 @@
<template>
<section id="sidebar">
<h4 class="sidebar-title">Navigation</h4>
<ul class="sidebar-menu">
<li v-for="menuItem in links" :class="{'active': $route.path === menuItem.url}">
<router-link :to="menuItem.url">{{ menuItem.title }}</router-link>
</li>
</ul>
</section>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

interface ISidebarLink {
url: string;
title: string;
}

@Component
export default class Sidebar extends Vue {
private links: ISidebarLink[] = [
{ url: '/', title: 'Home' },
{ url: '/subs', title: 'Subscriptions' },
]
}
</script>

<style scoped>
#sidebar {
display: block;
height: 100%;
max-width: 170px;
width: auto;
background-color: var(--MainBackgroundColor);
color: var(--MainTextColor);
box-sizing: border-box;
border-right: 1px solid var(--MainAccentColor);
}

.sidebar-title {
margin: 0px;
padding: 10px 10px 0 10px;
}

ul.sidebar-menu {
list-style: none;
padding: 0;
margin: 0;
color: var(--MainTextColor);
}

ul.sidebar-menu > li > a,
ul.sidebar-menu > li > a:hover {
display: inline-block;
padding: 10px;
color: var(--MainTextColor);
width: 100%;
height: 100%;
margin: 0;
}

ul.sidebar-menu > li {
cursor: pointer;
transition: background-color 0.3s ease-in;
}

ul.sidebar-menu > li:hover {
background-color: var(--MainAccentColor);
transition: background-color 0.3s ease-out;
}

ul.sidebar-menu > li.active {
background-color: var(--MainAccentColor)
}
</style>

+ 8
- 0
src/main.ts View File

@@ -3,9 +3,17 @@ import App from './App.vue';
import router from './router';
import store from './store';
import 'flexboxgrid/dist/flexboxgrid.min.css';
import '@/assets/global.scss';

Vue.config.productionTip = false;

import { Row, Col } from '@/components/ui/grid';
import Button from '@/components/ui/Button.vue';

Vue.component('Row', Row);
Vue.component('Col', Col);
Vue.component('Button', Button);

new Vue({
router,
store,


+ 4
- 3
src/router/index.ts View File

@@ -1,6 +1,7 @@
import Vue from 'vue';
import VueRouter, { RouteConfig } from 'vue-router';
import Home from '../views/Home.vue';
import Subscriptions from '../views/subscriptions/Subscriptions.vue';

Vue.use(VueRouter);

@@ -11,12 +12,12 @@ const routes: Array<RouteConfig> = [
component: Home,
},
{
path: '/about',
name: 'About',
path: '/subs',
name: 'Subscriptions',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
component: Subscriptions,
},
];



+ 3
- 4
src/views/Home.vue View File

@@ -1,8 +1,7 @@
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
<div>
<h1>Home</h1>
</div>
</template>

<script>


+ 0
- 0
src/views/stories/Test.stories.ts View File


+ 113
- 0
src/views/subscriptions/Subscriptions.vue View File

@@ -0,0 +1,113 @@
<template>
<Row>
<Col :xs="12">
<h1>
Your Subscriptions
<span class="right">
<Button size="lg">Add</Button>
</span>
</h1>
<Row>
<Col :xs="12" :sm="6" :md="4" :lg="3" className="sub-col">
<div class="sub-container">
<div class="sub-image" />
<div class="sub-user">
Username
</div>
<div class="sub-live">
<span class="live-icon">⬤</span> Started 36 m ago
</div>
</div>
</Col>
<Col :xs="12" :sm="6" :md="4" :lg="3" className="sub-col">
<div class="sub-container">
<div class="sub-image" />
<div class="sub-user">Username</div>
</div>
</Col>
<Col :xs="12" :sm="6" :md="4" :lg="3" className="sub-col">
<div class="sub-container">
<div class="sub-image" />
<div class="sub-user">
Username
</div>
<div class="sub-live">
<span class="live-icon">⬤</span> Live for 04h 12m
</div>
</div>
</Col>
<Col :xs="12" :sm="6" :md="4" :lg="3" className="sub-col">
<div class="sub-container">
<div class="sub-image" />
<div class="sub-user">
Username
</div>
<div class="sub-live">
■ Finished 3 h ago
</div>
</div>
</Col>
<Col :xs="12" :sm="6" :md="4" :lg="3" className="sub-col">
<div class="sub-container">
<div class="sub-image" />
<div class="sub-user">
Username
</div>
<div class="sub-live">
<span class="live-icon">⬤</span> Live for 01h 59m
</div>
</div>
</Col>
</Row>
</Col>
</Row>
</template>

<style scoped>
.sub-col {
margin-bottom: 20px;
}
.sub-container {
position: relative;
height: 200px;
border: 3px solid var(--MainAccentColor)
}
.sub-container:hover {
cursor: pointer;
}
.sub-image {
position: absolute;
width: 100%;
height: 200px;
top: 0;
left: 0;
background-image: url(~@/assets/yuuka.jpg);
filter: brightness(40%);
background-size: cover;
}
.sub-user {
padding: 0 10px 0 10px;
position: absolute;
bottom: top;
left: 0;
border-bottom: 2px solid var(--MainAccentColor);
border-right: 2px solid var(--MainAccentColor);
border-bottom-right-radius: 5px;
background-color: var(--MainBackgroundColor);
color: var(--MainTextColor);
}
.sub-live {
padding: 0 10px 0 10px;
position: absolute;
bottom: 0;
right: 0;
border-top: 2px solid var(--MainAccentColor);
border-left: 2px solid var(--MainAccentColor);
border-top-left-radius: 5px;
background-color: var(--MainBackgroundColor);
color: var(--MainTextColor);
}
.live-icon {
color: var(--FailColor);
}
</style>

+ 40
- 17
yarn.lock View File

@@ -4431,6 +4431,21 @@ chokidar@3.0.2:
optionalDependencies:
fsevents "^2.0.6"

"chokidar@>=2.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1:
version "3.4.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==
dependencies:
anymatch "~3.1.1"
braces "~3.0.2"
glob-parent "~5.1.0"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.4.0"
optionalDependencies:
fsevents "~2.1.2"

chokidar@^2.0.0, chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
@@ -4450,21 +4465,6 @@ chokidar@^2.0.0, chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"

chokidar@^3.3.0, chokidar@^3.4.1:
version "3.4.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==
dependencies:
anymatch "~3.1.1"
braces "~3.0.2"
glob-parent "~5.1.0"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.4.0"
optionalDependencies:
fsevents "~2.1.2"

chownr@^1.1.1, chownr@^1.1.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
@@ -9023,6 +9023,11 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"

klona@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.3.tgz#98274552c513583ad7a01456a789a2a0b4a2a538"
integrity sha512-CgPOT3ZadDpXxKcfV56lEQ9OQSZ42Mk26gnozI+uN/k39vzD8toUhRQoqsX0m9Q3eMPEfsLWmtyUpK/yqST4yg==

latest-version@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
@@ -10011,7 +10016,7 @@ negotiator@0.6.2:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==

neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -12664,6 +12669,24 @@ sass-formatter@^0.4.2:
suf-regex "^0.0.22"
tslib "^1.10.0"

sass-loader@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.1.tgz#10c0364d8034f22fee25ddcc9eded20f99bbe3b4"
integrity sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==
dependencies:
klona "^2.0.3"
loader-utils "^2.0.0"
neo-async "^2.6.2"
schema-utils "^2.7.0"
semver "^7.3.2"

sass@^1.26.10:
version "1.26.10"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760"
integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==
dependencies:
chokidar ">=2.0.0 <4.0.0"

sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -14494,7 +14517,7 @@ url-loader@^2.2.0:
mime "^2.4.4"
schema-utils "^2.5.0"

url-loader@^4.0.0:
url-loader@^4.0.0, url-loader@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.0.tgz#c7d6b0d6b0fccd51ab3ffc58a78d32b8d89a7be2"
integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==


+ 1992
- 16
yarn.nix
File diff suppressed because it is too large
View File


Loading…
Cancel
Save