MVP #5 #68
|
@ -11,8 +11,11 @@
|
||||||
"@beyonk/svelte-mapbox": "^8.1.4",
|
"@beyonk/svelte-mapbox": "^8.1.4",
|
||||||
"@bytemd/plugin-gfm": "^1.17.4",
|
"@bytemd/plugin-gfm": "^1.17.4",
|
||||||
"@lottiefiles/svelte-lottie-player": "^0.3.0",
|
"@lottiefiles/svelte-lottie-player": "^0.3.0",
|
||||||
|
"@popperjs/core": "^2.11.6",
|
||||||
"appwrite": "^10.1.0",
|
"appwrite": "^10.1.0",
|
||||||
"bytemd": "^1.17.4",
|
"bytemd": "^1.17.4",
|
||||||
|
"classnames": "^2.3.2",
|
||||||
|
"flowbite": "^1.6.3",
|
||||||
"html5-qrcode": "^2.3.0",
|
"html5-qrcode": "^2.3.0",
|
||||||
"mapbox": "^1.0.0-beta10",
|
"mapbox": "^1.0.0-beta10",
|
||||||
"mapbox-gl": "^2.10.0",
|
"mapbox-gl": "^2.10.0",
|
||||||
|
@ -31,7 +34,7 @@
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.27.5",
|
||||||
"eslint-plugin-n": "^15.6.1",
|
"eslint-plugin-n": "^15.6.1",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"flowbite-svelte": "^0.28.4",
|
"flowbite-svelte": "^0.28.11",
|
||||||
"postcss": "^8.4.19",
|
"postcss": "^8.4.19",
|
||||||
"sass": "^1.56.1",
|
"sass": "^1.56.1",
|
||||||
"svelte": "^3.52.0",
|
"svelte": "^3.52.0",
|
||||||
|
@ -1758,8 +1761,7 @@
|
||||||
"node_modules/classnames": {
|
"node_modules/classnames": {
|
||||||
"version": "2.3.2",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
|
||||||
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==",
|
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/cli-color": {
|
"node_modules/cli-color": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
|
@ -3195,24 +3197,23 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/flowbite": {
|
"node_modules/flowbite": {
|
||||||
"version": "1.5.4",
|
"version": "1.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.6.3.tgz",
|
||||||
"integrity": "sha512-A4VTeJE+aHSbwrMzWvpTADhNgX8Njpb3DqRL26pFkOupklPg8cmNstZK8cXrFnBPxomOiX/OazZnhQM1BIZADQ==",
|
"integrity": "sha512-wTtAzZBLrUYqUBoTSNcMAeJrZNAcdx04EDgXWnkQ7gkKoAPFvLaq/H/Zw0JKZLVKFpKxqJ7PlvocfDApSHjhvw==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.9.3",
|
"@popperjs/core": "^2.9.3",
|
||||||
"mini-svg-data-uri": "^1.4.3"
|
"mini-svg-data-uri": "^1.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/flowbite-svelte": {
|
"node_modules/flowbite-svelte": {
|
||||||
"version": "0.28.4",
|
"version": "0.28.11",
|
||||||
"resolved": "https://registry.npmjs.org/flowbite-svelte/-/flowbite-svelte-0.28.4.tgz",
|
"resolved": "https://registry.npmjs.org/flowbite-svelte/-/flowbite-svelte-0.28.11.tgz",
|
||||||
"integrity": "sha512-7E/LJrM1TdOSdn+mhp4Vx4hROEgO9ymXjZK+c87/qa/29VgQZTG9cqMtYFB9XormbCSxgffxTLGk4F1NiN4rgA==",
|
"integrity": "sha512-wbpJvqRJj9UcZfYX1UJwRaculY1teMBU24TltgOd/edHi07wbT3ooJpFqurf8G1yToWHbIMD672ws31EplYj+w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"classnames": "^2.3.2",
|
"classnames": "^2.3.2",
|
||||||
"flowbite": "^1.5.3"
|
"flowbite": "^1.5.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0",
|
"node": ">=16.0.0",
|
||||||
|
@ -5175,7 +5176,6 @@
|
||||||
"version": "1.4.4",
|
"version": "1.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
|
||||||
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
|
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"mini-svg-data-uri": "cli.js"
|
"mini-svg-data-uri": "cli.js"
|
||||||
}
|
}
|
||||||
|
@ -8398,8 +8398,7 @@
|
||||||
"classnames": {
|
"classnames": {
|
||||||
"version": "2.3.2",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
|
||||||
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==",
|
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"cli-color": {
|
"cli-color": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
|
@ -9397,24 +9396,23 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"flowbite": {
|
"flowbite": {
|
||||||
"version": "1.5.4",
|
"version": "1.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/flowbite/-/flowbite-1.6.3.tgz",
|
||||||
"integrity": "sha512-A4VTeJE+aHSbwrMzWvpTADhNgX8Njpb3DqRL26pFkOupklPg8cmNstZK8cXrFnBPxomOiX/OazZnhQM1BIZADQ==",
|
"integrity": "sha512-wTtAzZBLrUYqUBoTSNcMAeJrZNAcdx04EDgXWnkQ7gkKoAPFvLaq/H/Zw0JKZLVKFpKxqJ7PlvocfDApSHjhvw==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"@popperjs/core": "^2.9.3",
|
"@popperjs/core": "^2.9.3",
|
||||||
"mini-svg-data-uri": "^1.4.3"
|
"mini-svg-data-uri": "^1.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flowbite-svelte": {
|
"flowbite-svelte": {
|
||||||
"version": "0.28.4",
|
"version": "0.28.11",
|
||||||
"resolved": "https://registry.npmjs.org/flowbite-svelte/-/flowbite-svelte-0.28.4.tgz",
|
"resolved": "https://registry.npmjs.org/flowbite-svelte/-/flowbite-svelte-0.28.11.tgz",
|
||||||
"integrity": "sha512-7E/LJrM1TdOSdn+mhp4Vx4hROEgO9ymXjZK+c87/qa/29VgQZTG9cqMtYFB9XormbCSxgffxTLGk4F1NiN4rgA==",
|
"integrity": "sha512-wbpJvqRJj9UcZfYX1UJwRaculY1teMBU24TltgOd/edHi07wbT3ooJpFqurf8G1yToWHbIMD672ws31EplYj+w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"classnames": "^2.3.2",
|
"classnames": "^2.3.2",
|
||||||
"flowbite": "^1.5.3"
|
"flowbite": "^1.5.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"for-each": {
|
"for-each": {
|
||||||
|
@ -10744,8 +10742,7 @@
|
||||||
"mini-svg-data-uri": {
|
"mini-svg-data-uri": {
|
||||||
"version": "1.4.4",
|
"version": "1.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
|
||||||
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
|
"integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.27.5",
|
||||||
"eslint-plugin-n": "^15.6.1",
|
"eslint-plugin-n": "^15.6.1",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"flowbite-svelte": "^0.28.4",
|
"flowbite-svelte": "^0.28.11",
|
||||||
"postcss": "^8.4.19",
|
"postcss": "^8.4.19",
|
||||||
"sass": "^1.56.1",
|
"sass": "^1.56.1",
|
||||||
"svelte": "^3.52.0",
|
"svelte": "^3.52.0",
|
||||||
|
@ -32,8 +32,11 @@
|
||||||
"@beyonk/svelte-mapbox": "^8.1.4",
|
"@beyonk/svelte-mapbox": "^8.1.4",
|
||||||
"@bytemd/plugin-gfm": "^1.17.4",
|
"@bytemd/plugin-gfm": "^1.17.4",
|
||||||
"@lottiefiles/svelte-lottie-player": "^0.3.0",
|
"@lottiefiles/svelte-lottie-player": "^0.3.0",
|
||||||
|
"@popperjs/core": "^2.11.6",
|
||||||
"appwrite": "^10.1.0",
|
"appwrite": "^10.1.0",
|
||||||
"bytemd": "^1.17.4",
|
"bytemd": "^1.17.4",
|
||||||
|
"classnames": "^2.3.2",
|
||||||
|
"flowbite": "^1.6.3",
|
||||||
"html5-qrcode": "^2.3.0",
|
"html5-qrcode": "^2.3.0",
|
||||||
"mapbox": "^1.0.0-beta10",
|
"mapbox": "^1.0.0-beta10",
|
||||||
"mapbox-gl": "^2.10.0",
|
"mapbox-gl": "^2.10.0",
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/login',
|
path: '/login',
|
||||||
component: () => import('$routes/log_in.svelte'),
|
component: () => import('$routes/login/log_in.svelte'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/register',
|
path: '/register',
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
export let placeholder = ''
|
export let placeholder = ''
|
||||||
export let value = ''
|
export let value = ''
|
||||||
|
|
||||||
export let input
|
export let input = null
|
||||||
let vissible = false
|
let vissible = false
|
||||||
|
|
||||||
function changeVisibility(i) {
|
function changeVisibility(i) {
|
||||||
|
|
|
@ -1,21 +1,32 @@
|
||||||
<script>
|
<script lang="ts">
|
||||||
import { account, user } from '$lib/appwrite'
|
import { account, user } from '$lib/appwrite'
|
||||||
|
import Button from '$lib/components/Buttons/Button.svelte'
|
||||||
|
import Loading from '$lib/components/Common/Loading.svelte'
|
||||||
import { navigate } from 'svelte-routing'
|
import { navigate } from 'svelte-routing'
|
||||||
import HiddenInput from '../lib/components/Inputs/Hidden_Input.svelte'
|
import HiddenInput from '../../lib/components/Inputs/Hidden_Input.svelte'
|
||||||
import GoogleLogo from '../lib/svg/GoogleLogo.svelte'
|
import GoogleLogo from '../../lib/svg/GoogleLogo.svelte'
|
||||||
import TopImage from '../lib/svg/Top-Image.svelte'
|
import TopImage from '../../lib/svg/Top-Image.svelte'
|
||||||
|
import { Alert, Helper } from 'flowbite-svelte'
|
||||||
|
|
||||||
export let purpose = 'login' //possible values login, register
|
export let purpose = 'login' //possible values login, register
|
||||||
|
|
||||||
let email = ''
|
let email = ''
|
||||||
let password = ''
|
let password = ''
|
||||||
|
|
||||||
$: console.log($user)
|
let state: 'loading' | 'basic' = 'basic'
|
||||||
|
let error: string | null = null
|
||||||
|
|
||||||
const emailLogin = async () => {
|
const emailLogin = async () => {
|
||||||
|
state = 'loading'
|
||||||
|
error = null
|
||||||
|
try {
|
||||||
await user.createEmailSession(email, password)
|
await user.createEmailSession(email, password)
|
||||||
//if (navigation.canGoBack) navigation.back()
|
//if (navigation.canGoBack) navigation.back()
|
||||||
navigate('/')
|
navigate('/')
|
||||||
|
} catch (err) {
|
||||||
|
error = JSON.parse(JSON.stringify(err)).response.message
|
||||||
|
state = 'basic'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -36,11 +47,20 @@
|
||||||
|
|
||||||
<!--2 forms from components-->
|
<!--2 forms from components-->
|
||||||
<div class="form">
|
<div class="form">
|
||||||
<form>
|
{#if error}
|
||||||
|
<Helper color="red">{error}</Helper>
|
||||||
|
{/if}
|
||||||
|
<div class="inform">
|
||||||
<input bind:value={email} type="text" placeholder="E-mail" autocomplete="email" required />
|
<input bind:value={email} type="text" placeholder="E-mail" autocomplete="email" required />
|
||||||
<HiddenInput bind:value={password} placeholder="Password" />
|
<HiddenInput bind:value={password} placeholder="Password" />
|
||||||
<input on:click={() => emailLogin()} type="button" value="Sign in" />
|
<button class="loginButton" on:click={() => emailLogin()}>
|
||||||
</form>
|
{#if state === 'loading'}
|
||||||
|
<Loading class="text-white" />
|
||||||
|
{:else}
|
||||||
|
Sign in
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="continue_with">
|
<div class="continue_with">
|
||||||
|
@ -158,7 +178,7 @@
|
||||||
width: calc(100% - 24px);
|
width: calc(100% - 24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
.inform {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -194,7 +214,7 @@
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type='button'] {
|
.loginButton {
|
||||||
background-color: #4263eb;
|
background-color: #4263eb;
|
||||||
color: white;
|
color: white;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
import { navigate } from '$lib/router'
|
import { navigate } from '$lib/router'
|
||||||
import Error from '$root/src/__error.svelte'
|
import Error from '$root/src/__error.svelte'
|
||||||
import { ID } from 'appwrite'
|
import { ID } from 'appwrite'
|
||||||
|
import { Helper } from 'flowbite-svelte'
|
||||||
import HiddenInput from '../../lib/components/Inputs/Hidden_Input.svelte'
|
import HiddenInput from '../../lib/components/Inputs/Hidden_Input.svelte'
|
||||||
import GoogleLogo from '../../lib/svg/GoogleLogo.svelte'
|
import GoogleLogo from '../../lib/svg/GoogleLogo.svelte'
|
||||||
import TopImage from '../../lib/svg/Top-Image.svelte'
|
import TopImage from '../../lib/svg/Top-Image.svelte'
|
||||||
|
@ -15,22 +16,25 @@
|
||||||
let erantId = ''
|
let erantId = ''
|
||||||
|
|
||||||
let state: 'email-sent' | 'register' | 'loading' = 'register'
|
let state: 'email-sent' | 'register' | 'loading' = 'register'
|
||||||
|
let error: string | null = null
|
||||||
|
|
||||||
const register = async () => {
|
const register = async () => {
|
||||||
//if (password === repeatPassword || name.length < 8 || email.length < 8) throw new Error('conditions are not fine')
|
//if (password === repeatPassword || name.length < 8 || email.length < 8) throw new Error('conditions are not fine')
|
||||||
try {
|
try {
|
||||||
state = 'loading'
|
state = 'loading'
|
||||||
|
error = null
|
||||||
await account.create(ID.unique(), email, password, name)
|
await account.create(ID.unique(), email, password, name)
|
||||||
await account.createEmailSession(email, password)
|
await account.createEmailSession(email, password)
|
||||||
await account.createVerification(`${location.origin}/register/emailverification/${erantId}`)
|
await account.createVerification(`${location.origin}/register/emailverification/${erantId}`)
|
||||||
state = 'email-sent'
|
state = 'email-sent'
|
||||||
} catch (error) {
|
} catch (err) {
|
||||||
|
error = JSON.parse(JSON.stringify(err)).response.message
|
||||||
state = 'register'
|
state = 'register'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if state === 'register'}
|
{#if state !== 'email-sent'}
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="top-image">
|
<div class="top-image">
|
||||||
<TopImage />
|
<TopImage />
|
||||||
|
@ -39,14 +43,23 @@
|
||||||
<h1 class="headline">Register</h1>
|
<h1 class="headline">Register</h1>
|
||||||
|
|
||||||
<div class="form">
|
<div class="form">
|
||||||
<form>
|
{#if error}
|
||||||
|
<Helper color="red">{error}</Helper>
|
||||||
|
{/if}
|
||||||
|
<div class="inform">
|
||||||
<input bind:value={name} type="text" placeholder="Name" autocomplete="full-name" required />
|
<input bind:value={name} type="text" placeholder="Name" autocomplete="full-name" required />
|
||||||
<input bind:value={email} type="text" placeholder="E-mail" autocomplete="email" required />
|
<input bind:value={email} type="text" placeholder="E-mail" autocomplete="email" required />
|
||||||
<input bind:value={erantId} type="text" placeholder="erantId" autocomplete="email" required />
|
<input bind:value={erantId} type="text" placeholder="erantId" autocomplete="email" required />
|
||||||
<HiddenInput bind:value={password} placeholder="Password" />
|
<HiddenInput bind:value={password} placeholder="Password" />
|
||||||
<HiddenInput bind:value={repeatPassword} placeholder="Re-type password" />
|
<HiddenInput bind:value={repeatPassword} placeholder="Re-type password" />
|
||||||
<input class="cursor-pointer" on:click={() => register()} type="button" value="Sign up" />
|
<button class="loginButton" on:click={() => register()}>
|
||||||
</form>
|
{#if state === 'loading'}
|
||||||
|
<Loading class="text-white" />
|
||||||
|
{:else}
|
||||||
|
Sign in
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="continue_with">
|
<div class="continue_with">
|
||||||
|
@ -64,12 +77,8 @@
|
||||||
<p>Already have an account? <a href="/login">Log In</a></p>
|
<p>Already have an account? <a href="/login">Log In</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if state === 'email-sent'}
|
{:else}
|
||||||
<div class="w-full h-full flex justify-center items-center">email has been sent</div>
|
<div class="w-full h-full flex justify-center items-center absolute">email has been sent</div>
|
||||||
{:else if state === 'loading'}
|
|
||||||
<div class="w-full h-full flex items-center justify-center">
|
|
||||||
<Loading />
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
@ -166,7 +175,7 @@
|
||||||
width: calc(100% - 24px);
|
width: calc(100% - 24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
.inform {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -202,7 +211,7 @@
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type='button'] {
|
.loginButton {
|
||||||
background-color: #4263eb;
|
background-color: #4263eb;
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
/** @type {import('tailwindcss').Config} */
|
/** @type {import('tailwindcss').Config} */
|
||||||
module.exports = {
|
module.exports = {
|
||||||
content: ['./index.html', './src/**/*.{html,svelte,js,ts}'],
|
content: ['./index.html', './src/**/*.{html,svelte,js,ts}', './node_modules/flowbite-svelte/**/*.{html,js,svelte,ts}'],
|
||||||
theme: {
|
theme: {
|
||||||
extend: {},
|
extend: {},
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: [require('flowbite/plugin')],
|
||||||
|
darkMode: 'class',
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue