CLASSROOMIO-T-41: Implement dark/light mode switch
Co-authored-by: Rotimi Best <[email protected]> Merge-request: CLASSROOMIO-MR-8 Merged-by: Digdippa Team <[email protected]>
@@ -1,35 +1,35 @@
|
||||
<script>
|
||||
import marked from "marked";
|
||||
import PageNav from "../../../PageNav/index.svelte";
|
||||
import CloseButton from "../../../Buttons/Close/index.svelte";
|
||||
import TextField from "../../../Form/TextField.svelte";
|
||||
import marked from 'marked';
|
||||
import PageNav from '../../../PageNav/index.svelte';
|
||||
import CloseButton from '../../../Buttons/Close/index.svelte';
|
||||
import TextField from '../../../Form/TextField.svelte';
|
||||
// import SendButton from "../../../Buttons/Send/index.svelte";
|
||||
|
||||
export let handleClose;
|
||||
|
||||
let message = "";
|
||||
let message = '';
|
||||
let bodyRef;
|
||||
let chats = [
|
||||
{
|
||||
avatar: "https://picsum.photos/32/32/?random",
|
||||
name: "Evgeniy",
|
||||
avatar: 'https://picsum.photos/32/32/?random',
|
||||
name: 'Evgeniy',
|
||||
message: "I'am looking at this and it looks great",
|
||||
},
|
||||
{
|
||||
avatar: "https://picsum.photos/32/32/?random",
|
||||
name: "Sergey Semko",
|
||||
avatar: 'https://picsum.photos/32/32/?random',
|
||||
name: 'Sergey Semko',
|
||||
message:
|
||||
"Thanks for the feedback, what do you think about my website. https://rotimibest.com",
|
||||
'Thanks for the feedback, what do you think about my website. https://rotimibest.com',
|
||||
},
|
||||
{
|
||||
avatar: "https://picsum.photos/32/32/?random",
|
||||
name: "Vitalii Marushko",
|
||||
message: "Всем привет",
|
||||
avatar: 'https://picsum.photos/32/32/?random',
|
||||
name: 'Vitalii Marushko',
|
||||
message: 'Всем привет',
|
||||
},
|
||||
{
|
||||
avatar: "https://picsum.photos/32/32/?random",
|
||||
name: "Natasha",
|
||||
message: "Привет Виталий",
|
||||
avatar: 'https://picsum.photos/32/32/?random',
|
||||
name: 'Natasha',
|
||||
message: 'Привет Виталий',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
chats = [
|
||||
...chats,
|
||||
{
|
||||
avatar: "https://picsum.photos/32/32/?random",
|
||||
name: "You",
|
||||
avatar: 'https://picsum.photos/32/32/?random',
|
||||
name: 'You',
|
||||
message,
|
||||
},
|
||||
];
|
||||
@@ -57,7 +57,7 @@
|
||||
}
|
||||
|
||||
function handleKeyDown(e) {
|
||||
if (e.key === "Enter") {
|
||||
if (e.key === 'Enter') {
|
||||
handleSend();
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@
|
||||
height="20"
|
||||
src={chat.avatar}
|
||||
/>
|
||||
<p class="ml-2 text-sm font-bold">{chat.name}</p>
|
||||
<p class="dark:text-white ml-2 text-sm font-bold">{chat.name}</p>
|
||||
</div>
|
||||
<article class="prose prose-sm sm:prose pt-2 pl-8">
|
||||
{@html marked(chat.message)}
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
<script>
|
||||
export let value;
|
||||
export let label;
|
||||
export let type = "text";
|
||||
export let name = "text";
|
||||
export let type = 'text';
|
||||
export let name = 'text';
|
||||
export let handleLabelButton;
|
||||
export let handleInputButton;
|
||||
</script>
|
||||
|
||||
<div class="mb-3">
|
||||
{#if label}
|
||||
<p class="p-0 m-0 mb-1 uppercase text-sm font-bold text-gray-600">
|
||||
<p
|
||||
class="dark:text-white p-0 m-0 mb-1 uppercase text-sm font-bold text-gray-600"
|
||||
>
|
||||
{label}
|
||||
|
||||
{#if typeof handleLabelButton === "function"}
|
||||
{#if typeof handleLabelButton === 'function'}
|
||||
<button class="text-xl px-3 ml-5" on:click={handleLabelButton}>
|
||||
+
|
||||
</button>
|
||||
@@ -21,15 +23,15 @@
|
||||
{/if}
|
||||
|
||||
<div class="w-full">
|
||||
{#if type === "text"}
|
||||
{#if type === 'text'}
|
||||
<input type="text" {name} class="p-2 rounded-md w-4/5" bind:value />
|
||||
{/if}
|
||||
|
||||
{#if type === "date"}
|
||||
{#if type === 'date'}
|
||||
<input type="date" {name} class="p-2 rounded-md w-4/5" bind:value />
|
||||
{/if}
|
||||
|
||||
{#if typeof handleInputButton === "function"}
|
||||
{#if typeof handleInputButton === 'function'}
|
||||
<button class="text-xl px-3 ml-5" on:click={handleInputButton}>
|
||||
-
|
||||
</button>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<p class="p-0 m-0 mb-1 uppercase text-sm font-bold text-gray-600">
|
||||
<p
|
||||
class="dark:text-white p-0 m-0 mb-1 uppercase text-sm font-bold text-gray-600"
|
||||
>
|
||||
<slot />
|
||||
</p>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="p-4 bg-white-100 border-2 rounded-md mb-3">
|
||||
<div class="p-4 bg-white dark:bg-gray-800-100 border-2 rounded-md mb-3">
|
||||
{#if selectedOptionToView}
|
||||
<div>
|
||||
<div class="flex items-center mb-5">
|
||||
@@ -59,13 +59,13 @@
|
||||
{`<`}
|
||||
</button>
|
||||
<div class="flex-grow text-center">
|
||||
<h3 class="font-bold">Voted</h3>
|
||||
<h3 class="dark:text-white font-bold">Voted</h3>
|
||||
</div>
|
||||
</div>
|
||||
{#each selectedOptionToView.selectedBy as user}
|
||||
<div class="flex items-center mb-2">
|
||||
<Avatar src={user.avatar} name={user.label} className="mr-2" />
|
||||
<p>
|
||||
<p class="dark:text-white">
|
||||
{user.label}
|
||||
</p>
|
||||
</div>
|
||||
@@ -74,10 +74,10 @@
|
||||
{:else}
|
||||
<div class="flex mb-3 justify-between">
|
||||
<div>
|
||||
<h3 class="font-bold">
|
||||
<h3 class="dark:text-white font-bold">
|
||||
{poll.question}
|
||||
</h3>
|
||||
<p class="text-sm italic">
|
||||
<p class="dark:text-white text-sm italic">
|
||||
Created by <a
|
||||
class="text-blue-500"
|
||||
href="https://twitter.com/rotimi_best"
|
||||
@@ -102,13 +102,13 @@
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="mr-5">
|
||||
<Label>Expiration</Label>
|
||||
<p class="text-sm text-gray-600 mb-4">
|
||||
<p class="dark:text-white text-sm text-gray-600 mb-4">
|
||||
{poll.expiration || 'Today'}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-col items-center">
|
||||
<Label>Total Votes</Label>
|
||||
<p class="text-sm text-gray-600 mb-4">
|
||||
<p class="dark:text-white text-sm text-gray-600 mb-4">
|
||||
{totalVotes}
|
||||
</p>
|
||||
</div>
|
||||
@@ -117,7 +117,7 @@
|
||||
<Label>Responses</Label>
|
||||
{#each poll.options as option, index}
|
||||
<div class="border-b p-5">
|
||||
<p>
|
||||
<p class="dark:text-white">
|
||||
{option.label}
|
||||
</p>
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
{:else}
|
||||
{#each poll.options as option, index}
|
||||
<button
|
||||
class="bg-white rounded-md border-2 border-gray-500 {didUserSelect(
|
||||
class="bg-white dark:bg-gray-800 rounded-md border-2 border-gray-500 {didUserSelect(
|
||||
option
|
||||
) &&
|
||||
'focus:border-blue-700 border-blue-700'} text-black p-2 w-full mb-3 text-left relative"
|
||||
@@ -158,7 +158,7 @@
|
||||
<span
|
||||
class="progress absolute top-0 left-0 {didUserSelect(option)
|
||||
? 'bg-blue-700'
|
||||
: 'bg-gray-300'} h-full bg-opacity-25 "
|
||||
: 'bg-gray-300'} h-full bg-opacity-25"
|
||||
style="width: {calculatePercent(poll.options, option)}%;"
|
||||
/>
|
||||
<strong class="mr-3"
|
||||
@@ -169,11 +169,11 @@
|
||||
</button>
|
||||
{/each}
|
||||
<div class="flex items-center">
|
||||
<p class="text-sm text-gray-600">
|
||||
<p class="dark:text-white text-sm text-gray-600">
|
||||
Expires: {poll.expiration || 'Today'}
|
||||
</p>
|
||||
<span class="mx-2">|</span>
|
||||
<p class="text-sm text-gray-600">
|
||||
<p class="dark:text-white text-sm text-gray-600">
|
||||
Voted: {totalVotes}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
<script>
|
||||
import PageNav from "../../../PageNav/index.svelte";
|
||||
import CloseButton from "../../../Buttons/Close/index.svelte";
|
||||
import PrimaryButton from "../../../PrimaryButton/index.svelte";
|
||||
import { VARIANTS } from "../../../PrimaryButton/constants";
|
||||
import CreatePollForm from "./components/CreatePollForm.svelte";
|
||||
import Poll from "./components/Poll.svelte";
|
||||
import Tabs from "./components/Tabs.svelte";
|
||||
import PageNav from '../../../PageNav/index.svelte';
|
||||
import CloseButton from '../../../Buttons/Close/index.svelte';
|
||||
import PrimaryButton from '../../../PrimaryButton/index.svelte';
|
||||
import { VARIANTS } from '../../../PrimaryButton/constants';
|
||||
import CreatePollForm from './components/CreatePollForm.svelte';
|
||||
import Poll from './components/Poll.svelte';
|
||||
import Tabs from './components/Tabs.svelte';
|
||||
|
||||
export let handleClose;
|
||||
|
||||
const users = [
|
||||
{
|
||||
label: "Rich Harris",
|
||||
value: "rich-harris",
|
||||
avatar: "https://i.pravatar.cc/150?img=1",
|
||||
label: 'Rich Harris',
|
||||
value: 'rich-harris',
|
||||
avatar: 'https://i.pravatar.cc/150?img=1',
|
||||
},
|
||||
{
|
||||
label: "Linus Torvalds",
|
||||
value: "linus-torvalds",
|
||||
avatar: "https://i.pravatar.cc/150?img=2",
|
||||
label: 'Linus Torvalds',
|
||||
value: 'linus-torvalds',
|
||||
avatar: 'https://i.pravatar.cc/150?img=2',
|
||||
},
|
||||
{
|
||||
label: "Elon Musk",
|
||||
value: "elon-musk",
|
||||
avatar: "https://i.pravatar.cc/150?img=3",
|
||||
label: 'Elon Musk',
|
||||
value: 'elon-musk',
|
||||
avatar: 'https://i.pravatar.cc/150?img=3',
|
||||
},
|
||||
{
|
||||
label: "Satoshi Nakamoto",
|
||||
value: "satoshi-nakamoto",
|
||||
avatar: "https://i.pravatar.cc/150?img=4",
|
||||
label: 'Satoshi Nakamoto',
|
||||
value: 'satoshi-nakamoto',
|
||||
avatar: 'https://i.pravatar.cc/150?img=4',
|
||||
},
|
||||
];
|
||||
const tabs = [
|
||||
{
|
||||
label: "My polls",
|
||||
label: 'My polls',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
label: "Other polls",
|
||||
label: 'Other polls',
|
||||
value: 1,
|
||||
},
|
||||
];
|
||||
@@ -47,36 +47,36 @@
|
||||
let shouldCreatePoll = false;
|
||||
let polls = [
|
||||
{
|
||||
question: "Who is the creator of Svelte?",
|
||||
question: 'Who is the creator of Svelte?',
|
||||
author: users[0],
|
||||
status: "draft", // public
|
||||
status: 'draft', // public
|
||||
expiration: new Date().toDateString(),
|
||||
options: [
|
||||
{
|
||||
label: "Dan Abrahmov",
|
||||
label: 'Dan Abrahmov',
|
||||
selectedBy: [],
|
||||
},
|
||||
{
|
||||
label: "Evan You",
|
||||
label: 'Evan You',
|
||||
selectedBy: [
|
||||
{
|
||||
label: "Rich Harris",
|
||||
value: "rich-harris",
|
||||
avatar: "https://i.pravatar.cc/150?img=1",
|
||||
label: 'Rich Harris',
|
||||
value: 'rich-harris',
|
||||
avatar: 'https://i.pravatar.cc/150?img=1',
|
||||
},
|
||||
{
|
||||
label: "Linus Torvalds",
|
||||
value: "linus-torvalds",
|
||||
avatar: "https://i.pravatar.cc/150?img=2",
|
||||
label: 'Linus Torvalds',
|
||||
value: 'linus-torvalds',
|
||||
avatar: 'https://i.pravatar.cc/150?img=2',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Rich Harris",
|
||||
label: 'Rich Harris',
|
||||
selectedBy: [],
|
||||
},
|
||||
{
|
||||
label: "Yehuda Katz",
|
||||
label: 'Yehuda Katz',
|
||||
selectedBy: [],
|
||||
},
|
||||
],
|
||||
@@ -186,7 +186,7 @@
|
||||
{/if}
|
||||
{:else}
|
||||
<div
|
||||
class="bg-gray-100 border rounded-md h-60 flex items-center justify-center "
|
||||
class="bg-gray-100 dark:bg-gray-700 border rounded-md h-60 flex items-center justify-center"
|
||||
>
|
||||
<h2 class="text-xl font-bold">No polls to display</h2>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<script>
|
||||
import marked from "marked";
|
||||
import CheckmarkOutline20 from "carbon-icons-svelte/lib/CheckmarkOutline20";
|
||||
import PageNav from "../../../PageNav/index.svelte";
|
||||
import CloseButton from "../../../Buttons/Close/index.svelte";
|
||||
import Vote from "../../../Vote/index.svelte";
|
||||
import TextField from "../../../Form/TextField.svelte";
|
||||
import marked from 'marked';
|
||||
import CheckmarkOutline20 from 'carbon-icons-svelte/lib/CheckmarkOutline20';
|
||||
import PageNav from '../../../PageNav/index.svelte';
|
||||
import CloseButton from '../../../Buttons/Close/index.svelte';
|
||||
import Vote from '../../../Vote/index.svelte';
|
||||
import TextField from '../../../Form/TextField.svelte';
|
||||
|
||||
export let handleClose;
|
||||
let bodyRef;
|
||||
@@ -13,30 +13,30 @@
|
||||
let questions = [
|
||||
{
|
||||
id: 1,
|
||||
name: "Evgeniy",
|
||||
name: 'Evgeniy',
|
||||
question: "I'am looking at this and it looks great",
|
||||
vote: 1,
|
||||
answered: false,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "Sergey Semko",
|
||||
name: 'Sergey Semko',
|
||||
question:
|
||||
"Thanks for the feedback, what do you think about my website. https://rotimibest.com",
|
||||
'Thanks for the feedback, what do you think about my website. https://rotimibest.com',
|
||||
vote: 4,
|
||||
answered: false,
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "Vitalii Marushko",
|
||||
question: "Всем привет",
|
||||
name: 'Vitalii Marushko',
|
||||
question: 'Всем привет',
|
||||
vote: 20,
|
||||
answered: false,
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "Natasha",
|
||||
question: "Привет Виталий",
|
||||
name: 'Natasha',
|
||||
question: 'Привет Виталий',
|
||||
vote: 0,
|
||||
answered: false,
|
||||
},
|
||||
@@ -51,7 +51,7 @@
|
||||
...questions,
|
||||
{
|
||||
id: questions.length,
|
||||
name: "You",
|
||||
name: 'You',
|
||||
question,
|
||||
vote: 0,
|
||||
answered: false,
|
||||
@@ -82,7 +82,7 @@
|
||||
}
|
||||
|
||||
function handleKeyDown(e) {
|
||||
if (e.key === "Enter") {
|
||||
if (e.key === 'Enter') {
|
||||
handleSend();
|
||||
}
|
||||
}
|
||||
@@ -99,13 +99,13 @@
|
||||
<div class="flex items-start ml-2 mb-2 mt-2">
|
||||
<Vote bind:value={question.vote} />
|
||||
<div class="ml-2 flex-grow">
|
||||
<p class="text-sm font-bold">{question.name}</p>
|
||||
<p class="dark:text-white text-sm font-bold">{question.name}</p>
|
||||
<article class="prose prose-sm sm:prose">
|
||||
{@html marked(question.question)}
|
||||
</article>
|
||||
</div>
|
||||
<button
|
||||
class={`${question.answered && "active"}`}
|
||||
class={`${question.answered && 'active'}`}
|
||||
on:click={handleMarkAnswered(question.id)}
|
||||
>
|
||||
<CheckmarkOutline20 class="carbon-icon" />
|
||||
|
||||
@@ -57,7 +57,9 @@
|
||||
</button>
|
||||
|
||||
{#if facultyFilterOpened}
|
||||
<div class="w-48 bg-white border border-grey rounded-lg mt-2 py-3">
|
||||
<div
|
||||
class="w-48 bg-white dark:bg-gray-800 border border-grey rounded-lg mt-2 py-3"
|
||||
>
|
||||
{#each faculties as faculty}
|
||||
<div class="block px-4 py-3 border-b">
|
||||
<input
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</script>
|
||||
|
||||
<div class="w-full min-h-screen flex items-center justify-center mt-4">
|
||||
<div class="container border border-gray bg-white">
|
||||
<div class="container border border-gray bg-white dark:bg-gray-800">
|
||||
<div class="flex items-center flex-col p-2 lg:px-8 lg:py-3">
|
||||
{#if !showOnlyContent || showLogo}
|
||||
<div class="flex items-center w-full justify-center pt-4">
|
||||
@@ -38,7 +38,7 @@
|
||||
width="50"
|
||||
data-atf="1"
|
||||
/>
|
||||
<h4 class="text-xl">ClassroomIO</h4>
|
||||
<h4 class="dark:text-white text-xl">ClassroomIO</h4>
|
||||
</div>
|
||||
{/if}
|
||||
<form
|
||||
@@ -50,7 +50,7 @@
|
||||
</form>
|
||||
{#if !showOnlyContent}
|
||||
<div class="w-10/12 mb-3">
|
||||
<p class="text-sm mb-5">or sign up with:</p>
|
||||
<p class="dark:text-white text-sm mb-5">or sign up with:</p>
|
||||
<PrimaryButton
|
||||
variant={VARIANTS.OUTLINED}
|
||||
onClick={signInWithGoogle}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<script>
|
||||
import marked from "marked";
|
||||
import marked from 'marked';
|
||||
|
||||
export let code = "";
|
||||
export let code = '';
|
||||
</script>
|
||||
|
||||
<div class="bg-gray-200 p-5 rounded-md mb-3">
|
||||
{@html marked("```js\n" + code + "\n```")}
|
||||
<div class="bg-gray-200 dark:bg-gray-500 p-5 rounded-md mb-3">
|
||||
{@html marked('```js\n' + code + '\n```')}
|
||||
</div>
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
modalHeading="Delete question"
|
||||
>
|
||||
<div>
|
||||
<h1 class="text-lg">Are you sure you want to delete this question?</h1>
|
||||
<h1 class="dark:text-white text-lg">
|
||||
Are you sure you want to delete this question?
|
||||
</h1>
|
||||
|
||||
<div class="mt-5 flex items-center justify-between">
|
||||
<PrimaryButton
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
>
|
||||
{#if shouldDelete}
|
||||
<form on:submit|preventDefault={() => (shouldDelete = false)}>
|
||||
<h1 class="text-2xl">Are you sure?</h1>
|
||||
<h1 class="dark:text-white text-2xl">Are you sure?</h1>
|
||||
|
||||
<div class="mt-5 flex items-center justify-between">
|
||||
<PrimaryButton
|
||||
@@ -222,7 +222,7 @@
|
||||
handleOptionClick={handleOptionClick(question.id)}
|
||||
>
|
||||
<AddFilled24 class="carbon-icon" />
|
||||
<p class="ml-2 text-gray-600">Add</p>
|
||||
<p class="dark:text-white ml-2 text-gray-600">Add</p>
|
||||
</Dropdown> -->
|
||||
|
||||
<Select
|
||||
@@ -333,7 +333,7 @@
|
||||
onClick={handleAddOption(question.id)}
|
||||
>
|
||||
<AddFilled24 class="carbon-icon" />
|
||||
<p class="ml-2">Add option</p>
|
||||
<p class="dark:text-white ml-2">Add option</p>
|
||||
</PrimaryButton>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -116,9 +116,9 @@
|
||||
</div>
|
||||
<div class="border border-gray-300 rounded-md mt-2">
|
||||
<div
|
||||
class="hover:bg-gray-100 border-b border-t-0 border-l-0 border-r-0 border-gray-300 p-3"
|
||||
class="hover:bg-gray-100 dark:bg-gray-700 border-b border-t-0 border-l-0 border-r-0 border-gray-300 p-3"
|
||||
>
|
||||
<p class="font-bold text-lg">
|
||||
<p class="dark:text-white font-bold text-lg">
|
||||
Details
|
||||
{#if data.isEarly}
|
||||
<span
|
||||
@@ -137,30 +137,30 @@
|
||||
</div>
|
||||
|
||||
<div class="flex items-center text-sm p-3">
|
||||
<p class="font-bold w-2/5">Total grade</p>
|
||||
<p>{total} / {maxPoints}</p>
|
||||
<p class="dark:text-white font-bold w-2/5">Total grade</p>
|
||||
<p class="dark:text-white">{total} / {maxPoints}</p>
|
||||
</div>
|
||||
<!-- <div class="flex items-center text-sm p-3">
|
||||
<p class="font-bold w-1/2">Status</p>
|
||||
<p class="dark:text-white font-bold w-1/2">Status</p>
|
||||
<div class="flex items-center">
|
||||
<p class="rounded-full w-5 h-5 bg-yellow-300 mr-2" />
|
||||
<p>Grading</p>
|
||||
<p class="dark:text-white rounded-full w-5 h-5 bg-yellow-300 mr-2" />
|
||||
<p class="dark:text-white">Grading</p>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="flex items-center text-sm p-3">
|
||||
<p class="font-bold w-2/5">Student</p>
|
||||
<p class="dark:text-white font-bold w-2/5">Student</p>
|
||||
{#if data.student}
|
||||
<img
|
||||
alt="Student avatar"
|
||||
class="block rounded-full h-6 w-6"
|
||||
src={data.student.avatar_url}
|
||||
/>
|
||||
<p class="ml-2 text-sm">{data.student.fullname}</p>
|
||||
<p class="dark:text-white ml-2 text-sm">{data.student.fullname}</p>
|
||||
{/if}
|
||||
</div>
|
||||
<!-- <div class="flex items-center text-sm p-3">
|
||||
<p class="font-bold w-1/2">Teacher</p>
|
||||
<p>rotimi-best</p>
|
||||
<p class="dark:text-white font-bold w-1/2">Teacher</p>
|
||||
<p class="dark:text-white">rotimi-best</p>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
<div
|
||||
class="w-4/5 h-40 m-auto flex items-center justify-center text-center border-2 border-gray-200 rounded-md"
|
||||
>
|
||||
<h3 class="text-2xl">
|
||||
<h3 class="dark:text-white text-2xl">
|
||||
No questions added. <br />
|
||||
<RoleBasedSecurity allowedRoles="[1,2]">
|
||||
Click the <span class="text-blue-700">Edit</span> button to add.
|
||||
@@ -193,18 +193,18 @@
|
||||
<h2 class="my-1">{$questionnaire.title}</h2>
|
||||
|
||||
<div class="flex items-center">
|
||||
<p class="mx-2">
|
||||
<p class="dark:text-white mx-2">
|
||||
<strong>{$questionnaire.questions.length}</strong> questions
|
||||
</p>
|
||||
|
|
||||
<p class="mx-2">
|
||||
<p class="dark:text-white mx-2">
|
||||
<strong>{getTotalPossibleGrade()}</strong> points.
|
||||
</p>
|
||||
|
|
||||
<p class="mx-2">All required</p>
|
||||
<p class="dark:text-white mx-2">All required</p>
|
||||
{#if $questionnaire.due_by}
|
||||
|
|
||||
<p class="mx-2">
|
||||
<p class="dark:text-white mx-2">
|
||||
<strong>Due by:</strong>
|
||||
{new Date($questionnaire.due_by).toLocaleString()}
|
||||
</p>
|
||||
|
||||
@@ -168,16 +168,18 @@
|
||||
<div class="flex flex-wrap">
|
||||
{#each $lesson.exercises as exercise}
|
||||
<a
|
||||
class="w-52 bg-gray-100 px-4 py-7 mr-4 mb-4"
|
||||
class="w-52 bg-gray-100 dark:bg-gray-700 px-4 py-7 mr-4 mb-4"
|
||||
href="{path}/{exercise.id}"
|
||||
>
|
||||
<h3 class="text-xl">{exercise.title}</h3>
|
||||
<p class="mt-4 text-sm">Created Jul 3, 2021</p>
|
||||
<h3 class="dark:text-white text-xl">{exercise.title}</h3>
|
||||
<p class="dark:text-white mt-4 text-sm">Created Jul 3, 2021</p>
|
||||
</a>
|
||||
{:else}
|
||||
<Box>
|
||||
<AudioConsole32 class="carbon-icon w-80" />
|
||||
<h3 class="text-3xl text-gray-500">No Exercise Added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No Exercise Added
|
||||
</h3>
|
||||
</Box>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -81,7 +81,9 @@
|
||||
/>
|
||||
{:else}
|
||||
<Box>
|
||||
<h3 class="text-3xl text-gray-500">No slide added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No slide added
|
||||
</h3>
|
||||
<img alt="Slide not found" src="/notfound.webp" class="w-80" />
|
||||
</Box>
|
||||
{/if}
|
||||
@@ -99,7 +101,9 @@
|
||||
<MarkdownRender content={$lesson.materials.note} />
|
||||
{:else}
|
||||
<Box>
|
||||
<h3 class="text-3xl text-gray-500">No note added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No note added
|
||||
</h3>
|
||||
<img alt="Lesson note not found" src="/notfound.webp" class="w-80" />
|
||||
</Box>
|
||||
{/if}
|
||||
@@ -129,7 +133,9 @@
|
||||
{/each}
|
||||
{:else}
|
||||
<Box>
|
||||
<h3 class="text-3xl text-gray-500">No youtube video added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No youtube video added
|
||||
</h3>
|
||||
<img alt="Video not found" src="/notfound.webp" class="w-80" />
|
||||
</Box>
|
||||
{/if}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
class="carbon-icon-sort {isExpanded ? '' : 'carbon-icon-minimize'}"
|
||||
/>
|
||||
{/if}
|
||||
<span class="font-bold">{label}</span>
|
||||
<span class="dark:text-white font-bold">{label}</span>
|
||||
</div>
|
||||
{#if isExpanded}
|
||||
<div class="flex flex-col">
|
||||
@@ -52,6 +52,11 @@
|
||||
border-left: 3px solid var(--main-primary-color);
|
||||
}
|
||||
|
||||
:global(body.dark) .active,
|
||||
:global(body.dark) .item:hover {
|
||||
background-color: rgba(107, 114, 128);
|
||||
}
|
||||
|
||||
.active span {
|
||||
padding-left: 1.3rem;
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
class="root z-10 {!show && 'hide'} {$isMobile ? 'fixed shadow-xl' : 'sticky'}"
|
||||
>
|
||||
{#if show}
|
||||
<div class="relative h-full">
|
||||
<div class="relative h-full dark:bg-gray-700">
|
||||
<PageNav bind:title={$course.title} paddingClass="pl-2">
|
||||
<slot:fragment slot="image">
|
||||
<Avatar src={$course.logo} />
|
||||
@@ -280,10 +280,15 @@
|
||||
|
||||
.item {
|
||||
font-size: 0.875rem;
|
||||
font-weight: bold;
|
||||
&:hover {
|
||||
background-color: #cae2f9;
|
||||
}
|
||||
}
|
||||
:global(body.dark) .active,
|
||||
:global(body.dark) .item:hover {
|
||||
background-color: rgba(107, 114, 128);
|
||||
}
|
||||
|
||||
.navItems {
|
||||
height: 82%;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
modalHeading="Delete"
|
||||
>
|
||||
<div>
|
||||
<h1 class="text-lg">
|
||||
<h1 class="dark:text-white text-lg">
|
||||
Are you sure you want to delete <strong>{email}</strong>?
|
||||
</h1>
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
>
|
||||
{#if shouldDelete}
|
||||
<form on:submit|preventDefault={() => (shouldDelete = false)}>
|
||||
<h1 class="text-2xl">Are you sure?</h1>
|
||||
<h1 class="dark:text-white text-2xl">Are you sure?</h1>
|
||||
|
||||
<div class="mt-5 flex items-center justify-between">
|
||||
<PrimaryButton
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
class="root z-10 {!show && 'hide'} {$isMobile ? 'fixed shadow-xl' : 'sticky'}"
|
||||
>
|
||||
{#if show}
|
||||
<div class="relative h-full bg-white">
|
||||
<div class="relative h-full bg-white dark:bg-gray-800">
|
||||
<slot />
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
</div>
|
||||
|
||||
{#if giftToggled}
|
||||
<p class="font-bold mt-5">About Gift</p>
|
||||
<p class="dark:text-white font-bold mt-5">About Gift</p>
|
||||
|
||||
<div class="h-2/5">
|
||||
<TextEditor
|
||||
|
||||
@@ -132,24 +132,24 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-center px-2 w-full mb-2">
|
||||
<h3 class="">Page Builder</h3>
|
||||
<h3 class="dark:text-white">Page Builder</h3>
|
||||
</div>
|
||||
{#each sections as section}
|
||||
<button
|
||||
class="w-full flex items-center justify-between px-2 py-3 border border-b-0 border-gray-300"
|
||||
on:click={handleSectionSelect(section.key)}
|
||||
>
|
||||
<p class="mr-2">{section.title} section</p>
|
||||
<p class="dark:text-white mr-2">{section.title} section</p>
|
||||
<ChevronRight24 class="carbon-class" />
|
||||
</button>
|
||||
{/each}
|
||||
{:else}
|
||||
<!-- Title -->
|
||||
<div class="flex items-center {borderBottomGrey} w-full">
|
||||
<div class="flex items-center {borderBottomGrey} w-full">
|
||||
<IconButton onClick={handleClose}>
|
||||
<ArrowLeft24 class="carbon-icon" title="Go back" />
|
||||
</IconButton>
|
||||
<h3 class="">{selectedSection.title}</h3>
|
||||
<h3 class="dark:text-white">{selectedSection.title}</h3>
|
||||
</div>
|
||||
|
||||
<div class="p-2 h-4/5 overflow-y">
|
||||
|
||||
@@ -42,11 +42,13 @@
|
||||
<div class="p-10">
|
||||
<!-- Pricing -->
|
||||
<div class="mb-6">
|
||||
<p class="font-medium text-lg">
|
||||
<p class="dark:text-white font-medium text-lg">
|
||||
{formatter?.format(calculatedCost) || calculatedCost}
|
||||
</p>
|
||||
{#if courseData?.metadata?.showDiscount}
|
||||
<p class="font-light text-sm text-gray-500">
|
||||
<p
|
||||
class="dark:text-white font-light text-sm text-gray-500 dark:text-gray-200"
|
||||
>
|
||||
{discount}% Discount.
|
||||
<span class="line-through"
|
||||
>{formatter?.format(courseData?.cost || 0) || courseData.cost}</span
|
||||
@@ -68,7 +70,11 @@
|
||||
variant={VARIANTS.OUTLINED}
|
||||
onClick={addToCart}
|
||||
/>
|
||||
<p class="font-light text-sm text-gray-500">Early bird offer. Buy ASAP</p>
|
||||
<p
|
||||
class="dark:text-white font-light text-sm text-gray-500 dark:text-gray-200"
|
||||
>
|
||||
Early bird offer. Buy ASAP
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<title>{get(courseData, 'title', '')}</title>
|
||||
</svelte:head>
|
||||
|
||||
<div class="w-full bg-white flex flex-col items-center">
|
||||
<div class="w-full bg-white dark:bg-gray-800 flex flex-col items-center">
|
||||
<!-- Header Section -->
|
||||
<header class="banner w-full flex items-center justify-center p-">
|
||||
<div
|
||||
@@ -81,14 +81,14 @@
|
||||
>
|
||||
<!-- Course Description -->
|
||||
<div class="md:w-2/5 w-11/12 py-10">
|
||||
<h1 class="text-5xl text-white my-4 font-bold">
|
||||
<h1 class="dark:text-white text-5xl text-white my-4 font-bold">
|
||||
{get(courseData, 'title', '')}
|
||||
</h1>
|
||||
<p class="text-md text-white mb-6">
|
||||
<p class="dark:text-white text-md text-white mb-6">
|
||||
{get(courseData, 'description', '')}
|
||||
</p>
|
||||
|
||||
<p class="author my-3 text-sm">
|
||||
<p class="dark:text-white author my-3 text-sm">
|
||||
{get(courseData, 'metadata.instructor.name', '')}
|
||||
</p>
|
||||
<PrimaryButton
|
||||
@@ -141,7 +141,7 @@
|
||||
</header>
|
||||
<PricingSection className="md:hidden" {courseData} />
|
||||
<!-- Body -->
|
||||
<div class="bg-white w-full">
|
||||
<div class="bg-white dark:bg-gray-800 w-full">
|
||||
<div class="py-8 lg:w-10/12 w-full m-2 lg:m-auto flex justify-between">
|
||||
<!-- Course Details -->
|
||||
<div class="course-content w-full p-3 md:w-9/12 md:mr-14">
|
||||
@@ -169,7 +169,7 @@
|
||||
<!-- Sections - Course Description -->
|
||||
<section id="description" class="border-b border-gray-300 mt-8 pb-10">
|
||||
<h3 class="text-2xl font-bold mt-0 mb-3">Course Description</h3>
|
||||
<p class="text-sm font-light">
|
||||
<p class="dark:text-white text-sm font-light">
|
||||
{@html get(courseData, 'metadata.description', '')}
|
||||
</p>
|
||||
</section>
|
||||
@@ -185,7 +185,7 @@
|
||||
<!-- Sections - Certificate -->
|
||||
<section class="border-b border-gray-300 mt-8 pb-10">
|
||||
<h3 class="text-2xl font-bold mt-0">Certificate</h3>
|
||||
<p class="text-sm font-light mb-3">
|
||||
<p class="dark:text-white text-sm font-light mb-3">
|
||||
When you complete all of the courses in the program, you'll earn a
|
||||
Certificate to share with your professional network.
|
||||
</p>
|
||||
@@ -199,7 +199,7 @@
|
||||
<section id="lessons" class="border-b border-gray-300 mt-8 pb-10">
|
||||
<div class="flex items-center justify-between w-full mb-3">
|
||||
<h3 class="text-2xl font-bold mt-0 mb-3">Course Content</h3>
|
||||
<p class="text-sm font-light">
|
||||
<p class="dark:text-white text-sm font-light">
|
||||
<!-- {lessons.length} lessons -->
|
||||
{pluralize('lesson', lessons.length, true)}
|
||||
</p>
|
||||
@@ -213,7 +213,9 @@
|
||||
value={getLectureNo(index + 1, '0')}
|
||||
className="bg-blue-100 text-blue-700"
|
||||
/>
|
||||
<p class="ml-2 text-sm font-light">{lesson.title}</p>
|
||||
<p class="dark:text-white ml-2 text-sm font-light">
|
||||
{lesson.title}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="w-2/4">
|
||||
@@ -260,9 +262,13 @@
|
||||
src={get(instructor, 'imgUrl', '')}
|
||||
/>
|
||||
<div>
|
||||
<p class="text-md font-light">{get(instructor, 'name', '')}</p>
|
||||
<p class="text-xs font-light">{get(instructor, 'role', '')}</p>
|
||||
<p class="text-md font-light flex items-center">
|
||||
<p class="dark:text-white text-md font-light">
|
||||
{get(instructor, 'name', '')}
|
||||
</p>
|
||||
<p class="dark:text-white text-xs font-light">
|
||||
{get(instructor, 'role', '')}
|
||||
</p>
|
||||
<p class="dark:text-white text-md font-light flex items-center">
|
||||
<PlayFilled class="text-blue-700" />
|
||||
<span class="ml-1"
|
||||
>{get(instructor, 'courseNo', '')} courses</span
|
||||
@@ -271,7 +277,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-sm font-light">
|
||||
<p class="dark:text-white text-sm font-light">
|
||||
{get(instructor, 'description', '')}
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
</script>
|
||||
|
||||
<div
|
||||
class="root w-72 border bg-white mr-4 mb-4 rounded-md transition ease-in-out relative"
|
||||
class="root w-72 border bg-white dark:bg-gray-800 mr-4 mb-4 rounded-md transition ease-in-out relative"
|
||||
>
|
||||
<SkeletonPlaceholder style="width: 100%; height: 10rem;" />
|
||||
<div class="p-3 pb-0">
|
||||
|
||||
@@ -42,16 +42,16 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<a rel="prefetch" href="/courses/{id}" class=" text-black ">
|
||||
<a rel="prefetch" href="/courses/{id}" class=" text-black">
|
||||
<div
|
||||
class="root w-72 border bg-white mr-4 mb-4 rounded-md transition ease-in-out relative"
|
||||
class="root w-72 border bg-white dark:bg-gray-800 mr-4 mb-4 rounded-md transition ease-in-out relative"
|
||||
>
|
||||
<Dropdown
|
||||
options={getOptions()}
|
||||
classNames="absolute top-4 right-4"
|
||||
isIcon={true}
|
||||
>
|
||||
<div class="p-1 rounded-full bg-white">
|
||||
<div class="p-1 rounded-full bg-white dark:bg-gray-600">
|
||||
<OverflowMenuHorizontal24 class="carbon-icon" />
|
||||
</div>
|
||||
</Dropdown>
|
||||
@@ -61,17 +61,17 @@
|
||||
alt="Course Logo"
|
||||
/>
|
||||
<div class="p-3 pb-0">
|
||||
<h4 class="title text-md font-bold">
|
||||
<h4 class="dark:text-white title text-md font-bold">
|
||||
{title}
|
||||
</h4>
|
||||
<p
|
||||
class="description text-left text-sm font-small flex flex-col text-gray-500 my-3"
|
||||
class="description text-left text-sm font-small flex flex-col text-gray-500 dark:text-gray-200 my-3"
|
||||
title={description}
|
||||
>
|
||||
{description}
|
||||
</p>
|
||||
<div class="flex justify-between">
|
||||
<p>{totalLessons} lessons</p>
|
||||
<p class="dark:text-white">{totalLessons} lessons</p>
|
||||
<div class="rounded bg-{isPublished ? 'green' : 'red'}-200 py-1 px-2">
|
||||
{#if isPublished}
|
||||
Published
|
||||
@@ -80,7 +80,7 @@
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-gray-500 text-xs mt-1">
|
||||
<p class="dark:text-white text-gray-500 text-xs mt-1">
|
||||
{!cost ? 'free' : formatter.format(cost)}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
{:else}
|
||||
<Box>
|
||||
<CoursesEmptyIcon />
|
||||
<h3 class="text-2xl my-5">No Courses Created</h3>
|
||||
<p class="w-1/3 text-center">
|
||||
<h3 class="dark:text-white text-2xl my-5">No Courses Created</h3>
|
||||
<p class="dark:text-white w-1/3 text-center">
|
||||
Share your knowledge with the world by creating engaging courses for
|
||||
your students.
|
||||
</p>
|
||||
|
||||
@@ -45,11 +45,12 @@
|
||||
|
||||
{#if open}
|
||||
<div
|
||||
class="dropdown w-48 bg-white border border-grey rounded-lg mt-2 py-3 absolute"
|
||||
class="dropdown w-48 bg-white dark:bg-gray-800 border border-grey rounded-lg mt-2 py-3 absolute"
|
||||
>
|
||||
{#each options as option, index}
|
||||
<button
|
||||
class="block px-4 py-3 {!isOptionLast(index) && 'border-b'} w-full"
|
||||
class="block px-4 py-3 {!isOptionLast(index) &&
|
||||
'border-b'} w-full dark:text-white"
|
||||
on:click={onClick(option)}
|
||||
>
|
||||
{option.label}
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"
|
||||
/>
|
||||
</svg>
|
||||
<p>
|
||||
<p class="dark:text-white">
|
||||
Styling with Markdown is supported.
|
||||
<a
|
||||
target="_blank"
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
export let message;
|
||||
</script>
|
||||
|
||||
<p class="text-sm text-red-500">{message}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{message}</p>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<div {id} class="w-full bg-white {rootClass}">
|
||||
<div {id} class="w-full bg-white dark:bg-gray-800 {rootClass}">
|
||||
<div
|
||||
class="w-full relative flex items-center justify-between {!disableContainerPadding &&
|
||||
'p-5'}"
|
||||
@@ -30,7 +30,7 @@
|
||||
tabindex="0"
|
||||
on:click={handleClick}
|
||||
>
|
||||
<p class="font-bold flex items-center {titleClass}">
|
||||
<p class="dark:text-white font-bold flex items-center {titleClass}">
|
||||
{title}
|
||||
{#if supportsLink}
|
||||
<a
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
/>
|
||||
{#if isEditable}
|
||||
<input
|
||||
class="form-input p-2 mt-1 ml-1 block w-2/4 bg-gray-100 border-t-0 border-l-0 border-r-0 border-b-1"
|
||||
class="form-input p-2 mt-1 ml-1 block w-2/4 bg-gray-100 dark:bg-gray-700 border-t-0 border-l-0 border-r-0 border-b-1"
|
||||
type="text"
|
||||
placeholder="Your option"
|
||||
bind:value={label}
|
||||
on:change={onChange}
|
||||
/>
|
||||
{:else}
|
||||
<span class="ml-2">{label}</span>
|
||||
<span class="dark:text-white ml-2">{label}</span>
|
||||
{/if}
|
||||
|
||||
<slot name="iconbutton" />
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</script>
|
||||
|
||||
<label class="block {className}">
|
||||
<span class="text-gray-700">{label}</span>
|
||||
<span class="text-gray-700 dark:text-white">{label}</span>
|
||||
<input
|
||||
bind:value
|
||||
{placeholder}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</script>
|
||||
|
||||
<label class="block {className}">
|
||||
<span class="text-gray-700">{label}</span>
|
||||
<span class="text-gray-700 dark:text-white">{label}</span>
|
||||
<input
|
||||
bind:value
|
||||
on:input={onInput}
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
/>
|
||||
{#if isEditable}
|
||||
<input
|
||||
class="form-input p-2 mt-1 ml-1 block w-2/4 bg-gray-100 border-t-0 border-l-0 border-r-0 border-b-1"
|
||||
class="form-input p-2 mt-1 ml-1 block w-2/4 bg-gray-100 dark:bg-gray-700 border-t-0 border-l-0 border-r-0 border-b-1"
|
||||
type="text"
|
||||
placeholder="Your option"
|
||||
bind:value={label}
|
||||
on:change={onChange}
|
||||
/>
|
||||
{:else}
|
||||
<span class="ml-2">{label}</span>
|
||||
<span class="dark:text-white ml-2">{label}</span>
|
||||
{/if}
|
||||
|
||||
<slot name="iconbutton" />
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
</script>
|
||||
|
||||
<label class="block {className}">
|
||||
{#if label} <span class="text-gray-700 mr-2">{label}</span> {/if}
|
||||
{#if label}
|
||||
<span class="text-gray-700 dark:text-white mr-2">{label}</span>
|
||||
{/if}
|
||||
<select
|
||||
bind:value
|
||||
class="form-select block w-auto mt-1 {selectClassName}"
|
||||
@@ -26,7 +28,7 @@
|
||||
class:customColor={!!selectClassName}
|
||||
>
|
||||
{#each options as option}
|
||||
<option class="bg-white text-black" value={option}>
|
||||
<option class="bg-white dark:bg-gray-800 text-black" value={option}>
|
||||
{option[labelKey]}
|
||||
</option>
|
||||
{/each}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
export let maxRows = 3;
|
||||
export let className = '';
|
||||
export let labelClassName = '';
|
||||
export let bgColor = 'bg-gray-200';
|
||||
export let bgColor = 'bg-gray-200 dark:bg-gray-500';
|
||||
export let helperMessage = '';
|
||||
export let errorMessage = '';
|
||||
export let isRequired = false;
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<label class="block w-full relative {className}">
|
||||
{#if label}
|
||||
<p for="text-field" class={labelClassName}>
|
||||
<p for="text-field" class="dark:text-white {labelClassName}">
|
||||
{label}
|
||||
|
||||
{#if isRequired}
|
||||
@@ -38,7 +38,7 @@
|
||||
{placeholder}
|
||||
bind:value
|
||||
required={isRequired}
|
||||
class="form-textarea mt-1 block w-full
|
||||
class="form-textarea mt-1 block w-full
|
||||
{bgColor} border-t-0 border-l-0 border-r-0 border-b-1 {!!errorMessage
|
||||
? 'border-red-500'
|
||||
: 'border-gray-300'}"
|
||||
@@ -49,7 +49,7 @@
|
||||
{errorMessage}
|
||||
</p>
|
||||
{:else if helperMessage}
|
||||
<p class="text-sm text-gray-500">
|
||||
<p class="text-sm text-gray-500 dark:text-gray-200">
|
||||
{helperMessage}
|
||||
</p>
|
||||
{/if}
|
||||
|
||||
@@ -52,7 +52,10 @@
|
||||
|
||||
<label class="block relative {className}">
|
||||
{#if label}
|
||||
<label for="text-field" class="m-0 font-light {labelClassName}">
|
||||
<label
|
||||
for="text-field"
|
||||
class="dark:text-white m-0 font-light {labelClassName}"
|
||||
>
|
||||
{label}
|
||||
|
||||
{#if isRequired}
|
||||
@@ -83,9 +86,9 @@
|
||||
</span>
|
||||
{/if}
|
||||
{#if errorMessage}
|
||||
<p class="text-sm text-red-500">{errorMessage}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{errorMessage}</p>
|
||||
{:else if helperMessage}
|
||||
<p class="text-sm">
|
||||
<p class="dark:text-white text-sm">
|
||||
{helperMessage}
|
||||
</p>
|
||||
{/if}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -4,6 +4,7 @@
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
d="M18 22.5H6C5.60232 22.4995 5.22105 22.3414 4.93984 22.0602C4.65864 21.7789 4.50046 21.3977 4.5 21V3C4.5004 2.6023 4.65856 2.221 4.93978 1.93978C5.221 1.65856 5.6023 1.5004 6 1.5H18C18.3977 1.50046 18.779 1.65864 19.0602 1.93984C19.3414 2.22105 19.4995 2.60232 19.5 3V15.4636L15.75 13.5886L12 15.4636V3H6V21H18V18H19.5V21C19.4995 21.3977 19.3413 21.7789 19.0601 22.0601C18.7789 22.3413 18.3977 22.4995 18 22.5ZM15.75 11.9114L18 13.0364V3H13.5V13.0364L15.75 11.9114Z"
|
||||
|
||||
|
Before Width: | Height: | Size: 619 B After Width: | Height: | Size: 634 B |
@@ -4,6 +4,7 @@
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -9,6 +9,7 @@
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
@@ -24,6 +25,7 @@
|
||||
viewBox="0 0 16 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
d="M0.666748 8.00008C0.666748 8.00008 3.33341 2.66675 8.00008 2.66675C12.6667 2.66675 15.3334 8.00008 15.3334 8.00008C15.3334 8.00008 12.6667 13.3334 8.00008 13.3334C3.33341 13.3334 0.666748 8.00008 0.666748 8.00008Z"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="dark"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -20,17 +20,17 @@
|
||||
|
||||
{#if open}
|
||||
<div
|
||||
class="dialog fixed overflow-x-hidden overflow-y-auto inset-0 flex justify-center items-center z-50 bg-gray-100 bg-opacity-50"
|
||||
class="dialog fixed overflow-x-hidden overflow-y-auto inset-0 flex justify-center items-center z-50 bg-gray-100 dark:bg-gray-700 bg-opacity-50"
|
||||
on:click={onClose}
|
||||
>
|
||||
<div aria-hidden="true" class="backdrop" />
|
||||
<div
|
||||
class="{maxWidth ||
|
||||
'container'} bg-white mx-auto {width} shadow-lg p-5 pt-2 rounded-md"
|
||||
'container'} bg-white dark:bg-gray-800 mx-auto {width} shadow-lg p-5 pt-2 rounded-md"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
>
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<h3 class="text-xl m-0">
|
||||
<h3 class="dark:text-white text-xl m-0">
|
||||
{modalHeading}
|
||||
</h3>
|
||||
<CloseButton onClick={onClose} contained={true} />
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
<script>
|
||||
import NotificationIcon from 'carbon-icons-svelte/lib/Notification20';
|
||||
import Moon from 'carbon-icons-svelte/lib/Moon16';
|
||||
import Sun from 'carbon-icons-svelte/lib/Sun16';
|
||||
|
||||
import IconButton from '../IconButton/index.svelte';
|
||||
import { appStore } from '../../utils/store/app';
|
||||
import { toggleBodyByTheme } from '../../utils/functions/app';
|
||||
|
||||
export let navClass = '';
|
||||
|
||||
function toggleTheme() {
|
||||
$appStore.isDark = !$appStore.isDark;
|
||||
|
||||
toggleBodyByTheme($appStore.isDark);
|
||||
localStorage.setItem('theme', $appStore.isDark ? 'dark' : '');
|
||||
}
|
||||
</script>
|
||||
|
||||
<nav class="{navClass} flex w-full p-2 md:px-6 bg-blue-600">
|
||||
<ul class="flex w-full items-center">
|
||||
<div class="">
|
||||
<a href="/" title="Go to ClassroomIO Home" id="logo" class="text-lg">
|
||||
<a
|
||||
href={window.location.pathname}
|
||||
title="Go to ClassroomIO Home"
|
||||
id="logo"
|
||||
class="text-lg"
|
||||
>
|
||||
ClassroomIO
|
||||
</a>
|
||||
</div>
|
||||
@@ -17,6 +35,15 @@
|
||||
<li>
|
||||
<NotificationIcon class="text-white mr-2" />
|
||||
</li>
|
||||
<li>
|
||||
<IconButton size="small" onClick={toggleTheme}>
|
||||
{#if $appStore.isDark}
|
||||
<Sun class="text-white" />
|
||||
{:else}
|
||||
<Moon class="text-white" />
|
||||
{/if}
|
||||
</IconButton>
|
||||
</li>
|
||||
<li />
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
{:else}
|
||||
<Box>
|
||||
<AudienceEmptyIcon />
|
||||
<h3 class="text-2xl my-5">No audience to manage!</h3>
|
||||
<p class="w-1/3 text-center">
|
||||
<h3 class="dark:text-white text-2xl my-5">No audience to manage!</h3>
|
||||
<p class="dark:text-white w-1/3 text-center">
|
||||
Manage all your students here and stay connected with them.
|
||||
</p>
|
||||
</Box>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<p class="dark:text-white font-bold">
|
||||
<slot />
|
||||
</p>
|
||||
@@ -9,6 +9,7 @@
|
||||
import { supabase } from '../../../utils/functions/supabase';
|
||||
import { snackbarStore } from '../../Snackbar/store';
|
||||
import { SNACKBAR_SEVERITY } from '../../Snackbar/constants';
|
||||
import SectionTitle from '../SectionTitle.svelte';
|
||||
|
||||
let siteName;
|
||||
let errors = '';
|
||||
@@ -56,7 +57,7 @@
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4} class="text-lg"><strong>Add</strong></Column>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<p class="text-md text-gray-500 mb-5">
|
||||
<p class="text-md text-gray-500 dark:text-gray-200 mb-5">
|
||||
Add your team mates or collaborators to your organization. Start working
|
||||
together
|
||||
</p>
|
||||
@@ -86,11 +87,11 @@
|
||||
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4} class="text-lg"
|
||||
><strong>Custom domain</strong></Column
|
||||
><SectionTitle>Custom domain</SectionTitle></Column
|
||||
>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<div class="flex items-center">
|
||||
<p class="mr-3">Add your own domain name</p>
|
||||
<p class="dark:text-white mr-3">Add your own domain name</p>
|
||||
<ComingSoon />
|
||||
</div>
|
||||
</Column>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import { snackbarStore } from '../../Snackbar/store';
|
||||
import { SNACKBAR_SEVERITY } from '../../Snackbar/constants';
|
||||
import { currentOrg } from '../../../utils/store/org';
|
||||
import SectionTitle from '../SectionTitle.svelte';
|
||||
|
||||
let avatar;
|
||||
let loading = false;
|
||||
@@ -79,7 +80,9 @@
|
||||
|
||||
<Grid class="border rounded border-gray-200 w-full mt-5">
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Organization Profile</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}
|
||||
><SectionTitle>Organization Profile</SectionTitle></Column
|
||||
>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<TextField
|
||||
label="Organization Name"
|
||||
@@ -102,16 +105,18 @@
|
||||
</Column>
|
||||
</Row>
|
||||
<!-- <Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Theme</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}><SectionTitle>Theme</SectionTitle></Column>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<h4>Set your brand</h4>
|
||||
<h4 class="dark:text-white">Set your brand</h4>
|
||||
</Column>
|
||||
</Row> -->
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Custom Domain</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}
|
||||
><SectionTitle>Custom Domain</SectionTitle></Column
|
||||
>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<h4>Customise your Domain</h4>
|
||||
<p class="text-sm text-gray-500">
|
||||
<h4 class="dark:text-white">Customise your Domain</h4>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-200">
|
||||
Create a custom URL so your audience can get to your organization easily
|
||||
</p>
|
||||
<PrimaryButton
|
||||
@@ -123,10 +128,10 @@
|
||||
</Column>
|
||||
</Row>
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Team</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}><SectionTitle>Team</SectionTitle></Column>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<h4>Set up your website</h4>
|
||||
<p class="text-sm text-gray-500">
|
||||
<h4 class="dark:text-white">Set up your website</h4>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-200">
|
||||
Add team mates to your organization so you can both collaborate on
|
||||
projects.
|
||||
</p>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import { goto } from '@sapper/app';
|
||||
import { Grid, Row, Column } from 'carbon-components-svelte';
|
||||
import TextField from '../../Form/TextField.svelte';
|
||||
import SectionTitle from '../SectionTitle.svelte';
|
||||
import PrimaryButton from '../../PrimaryButton/index.svelte';
|
||||
import { VARIANTS } from '../../PrimaryButton/constants';
|
||||
import UploadImage from '../../UploadImage/index.svelte';
|
||||
@@ -82,7 +83,9 @@
|
||||
|
||||
<Grid class="border rounded border-gray-200 w-full mt-5">
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Profile Picture</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}>
|
||||
<SectionTitle>Profile Picture</SectionTitle>
|
||||
</Column>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<UploadImage
|
||||
bind:avatar
|
||||
@@ -92,7 +95,9 @@
|
||||
</Column>
|
||||
</Row>
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4}><strong>Personal Information</strong></Column>
|
||||
<Column sm={2} md={2} lg={4}>
|
||||
<SectionTitle>Personal Information</SectionTitle>
|
||||
</Column>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<TextField
|
||||
label="Full Name"
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
import { getOrgTeam } from '../../../utils/services/org';
|
||||
import { profile } from '../../../utils/store/user';
|
||||
import { supabase } from '../../../utils/functions/supabase';
|
||||
import SectionTitle from '../SectionTitle.svelte';
|
||||
|
||||
let emailsStr = '';
|
||||
let errorMessage = '';
|
||||
@@ -128,9 +129,11 @@
|
||||
|
||||
<Grid class="border rounded border-gray-200 w-full mt-5">
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4} class="text-lg"><strong>Add</strong></Column>
|
||||
<Column sm={2} md={2} lg={4} class="text-lg"
|
||||
><SectionTitle>Add</SectionTitle></Column
|
||||
>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
<p class="text-md text-gray-500 mb-5">
|
||||
<p class="text-md text-gray-500 dark:text-gray-200 mb-5">
|
||||
Add your team mates or collaborators to your organization. Start working
|
||||
together
|
||||
</p>
|
||||
@@ -161,7 +164,7 @@
|
||||
|
||||
<Row class="py-7 border border-t-0 border-l-0 border-r-0 border-gray-300">
|
||||
<Column sm={2} md={2} lg={4} class="text-lg"
|
||||
><strong>Members</strong></Column
|
||||
><SectionTitle>Members</SectionTitle></Column
|
||||
>
|
||||
<Column sm={2} md={6} lg={8}>
|
||||
{#if isFetching}
|
||||
@@ -170,7 +173,7 @@
|
||||
{#each $orgTeam as teamMember}
|
||||
<div class="flex justify-between items-center mb-5">
|
||||
<div class="flex">
|
||||
<p class="text-sm text-gray-500 mr-3">
|
||||
<p class="text-sm text-gray-500 dark:text-gray-200 mr-3">
|
||||
{teamMember.email}
|
||||
</p>
|
||||
<TextChip
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
import { profile } from '../../utils/store/user';
|
||||
|
||||
let orgSiteName = '';
|
||||
let activeClass = 'bg-gray-200';
|
||||
let activeClass = 'bg-gray-200 dark:bg-gray-500';
|
||||
let { page } = stores();
|
||||
|
||||
function isActive(pagePath, itemPath) {
|
||||
@@ -30,7 +30,7 @@
|
||||
$: orgSiteName = $currentOrg.siteName;
|
||||
</script>
|
||||
|
||||
<aside class="root bg-gray-100 h-full">
|
||||
<aside class="root bg-gray-100 dark:bg-gray-700 h-full">
|
||||
<div class="h-full flex flex-col">
|
||||
<div class="border-b border-gray-200 pt-5 px-4">
|
||||
{#if $currentOrg.avatar_url}
|
||||
@@ -53,46 +53,46 @@
|
||||
<ul class="my-5">
|
||||
<a href="/org/{orgSiteName}" class="text-black">
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 {isActive(
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500 {isActive(
|
||||
$page.path,
|
||||
`/org/${orgSiteName}`
|
||||
) && activeClass}"
|
||||
>
|
||||
<HomeIcon />
|
||||
<p class="ml-2">Home</p>
|
||||
<p class="dark:text-white ml-2">Home</p>
|
||||
</li>
|
||||
</a>
|
||||
<a href="/org/{orgSiteName}/courses" class="text-black">
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 {isActive(
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500 {isActive(
|
||||
$page.path,
|
||||
`/org/${orgSiteName}/courses`
|
||||
) && activeClass}"
|
||||
>
|
||||
<CourseIcon />
|
||||
<p class="ml-2">Courses</p>
|
||||
<p class="dark:text-white ml-2">Courses</p>
|
||||
</li>
|
||||
</a>
|
||||
<a href="/org/{orgSiteName}/site" class="text-black">
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 {isActive(
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500 {isActive(
|
||||
$page.path,
|
||||
`/org/${orgSiteName}/site`
|
||||
) && activeClass}"
|
||||
>
|
||||
<SiteSettingsIcon />
|
||||
<p class="ml-2">Site settings</p>
|
||||
<p class="dark:text-white ml-2">Site settings</p>
|
||||
</li>
|
||||
</a>
|
||||
<a href="/org/{orgSiteName}/audience" class="text-black">
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 {isActive(
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500 {isActive(
|
||||
$page.path,
|
||||
`/org/${orgSiteName}/audience`
|
||||
) && activeClass}"
|
||||
>
|
||||
<AudienceIcon />
|
||||
<p class="ml-2">Audience</p>
|
||||
<p class="dark:text-white ml-2">Audience</p>
|
||||
</li>
|
||||
</a>
|
||||
</ul>
|
||||
@@ -100,14 +100,16 @@
|
||||
<span class="flex-grow" />
|
||||
<ul class="my-5 pb-5 px-4">
|
||||
<a href="/help" class="text-black">
|
||||
<li class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200">
|
||||
<Help />
|
||||
<p class="ml-2">Help</p>
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500"
|
||||
>
|
||||
<Help class="carbon-icon" />
|
||||
<p class="dark:text-white ml-2">Help</p>
|
||||
</li>
|
||||
</a>
|
||||
<a href="/org/{orgSiteName}/settings" class="text-black">
|
||||
<li
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 {isActive(
|
||||
class="flex items-center py-3 px-4 mb-2 rounded hover:bg-gray-200 dark:hover:bg-gray-500 {isActive(
|
||||
$page.path,
|
||||
`/org/${orgSiteName}/settings`
|
||||
) && activeClass}"
|
||||
@@ -118,7 +120,7 @@
|
||||
width="w-7"
|
||||
height="h-7"
|
||||
/>
|
||||
<p class="ml-2">Settings</p>
|
||||
<p class="dark:text-white ml-2">Settings</p>
|
||||
</li>
|
||||
</a>
|
||||
</ul>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
open = !open;
|
||||
}}
|
||||
>
|
||||
<p class="text-lg font-bold">{$currentOrg.name}</p>
|
||||
<p class="dark:text-white text-lg font-bold">{$currentOrg.name}</p>
|
||||
<CaretSortIcon class="ml-2" />
|
||||
</div>
|
||||
<Popover bind:open closeOnOutsideClick align="bottom-left">
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="root mt-4 mx-auto {width} {className} relative {padding}">
|
||||
{#if $$slots.header}
|
||||
<div
|
||||
class="head flex items-center justify-between sticky right-0 w-full px-3"
|
||||
class="head dark:bg-gray-800 flex items-center justify-between sticky right-0 w-full px-3"
|
||||
>
|
||||
<slot name="header" />
|
||||
</div>
|
||||
@@ -26,6 +26,5 @@
|
||||
.head {
|
||||
top: 0px;
|
||||
z-index: 1;
|
||||
background-color: #fafbfc;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</script>
|
||||
|
||||
<div
|
||||
class="header flex items-center justify-between {!disableSticky &&
|
||||
class="header dark:bg-gray-700 flex items-center justify-between {!disableSticky &&
|
||||
'sticky'} {paddingClass} {dynamicRootClass}"
|
||||
style={overidableStyle}
|
||||
>
|
||||
@@ -28,7 +28,7 @@
|
||||
{#if isTitleEditable}
|
||||
{#if !enterEditTitleMode}
|
||||
<h4
|
||||
class="title editable-title hover:bg-gray-100 px-3 rounded-md overflow-ellipsis"
|
||||
class="title editable-title hover:bg-gray-100 dark:bg-gray-700 px-3 rounded-md overflow-ellipsis"
|
||||
on:click={() => (enterEditTitleMode = true)}
|
||||
>
|
||||
{title}
|
||||
@@ -49,7 +49,7 @@
|
||||
{:else}
|
||||
<div class="flex items-center" {title}>
|
||||
<slot name="image" />
|
||||
<h4 class="title">{title}</h4>
|
||||
<h4 class="dark:text-white title">{title}</h4>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
@@ -79,7 +79,6 @@
|
||||
.header {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
min-height: 61px;
|
||||
background-color: #fff;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ export const VARIANTS_CLASS = {
|
||||
[VARIANTS.OUTLINED]:
|
||||
'border border-blue-700 hover:border-black-300 hover:bg-blue-200 text-black',
|
||||
[VARIANTS.NONE]:
|
||||
'border-none hover:border-black-300 hover:bg-gray-200 text-black',
|
||||
'border-none hover:border-black-300 hover:bg-gray-200 dark:hover:bg-gray-500 text-black',
|
||||
[VARIANTS.TEXT]:
|
||||
'text-black hover:border border-t-0 border-l-0 border-r-0 border-black-300',
|
||||
[VARIANTS.TEXT_DANGER]:
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
className="w-20"
|
||||
isDisabled={disableGrading}
|
||||
/>
|
||||
<p class="ml-2 text-lg">/ {gradeMax}</p>
|
||||
<p class="dark:text-white ml-2 text-lg">/ {gradeMax}</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
@@ -82,7 +82,7 @@
|
||||
<div class="ml-4">
|
||||
{#each options as option}
|
||||
<button
|
||||
class="cursor-pointer text-left my-2 border-2 border-gray-300 rounded-md hover:bg-gray-200 w-full {getValidationClassName(
|
||||
class="cursor-pointer text-left my-2 border-2 border-gray-300 rounded-md hover:bg-gray-200 dark:hover:bg-gray-500 w-full {getValidationClassName(
|
||||
option
|
||||
)}"
|
||||
type="button"
|
||||
|
||||
@@ -62,7 +62,9 @@
|
||||
|
||||
<form on:submit|preventDefault={handleFormSubmit}>
|
||||
<div class="flex items-center justify-between">
|
||||
<h3 class="{labelClassName} {!isNaN(grade) && 'w-3/4'}">{title}</h3>
|
||||
<h3 class="dark:text-white {labelClassName} {!isNaN(grade) && 'w-3/4'}">
|
||||
{title}
|
||||
</h3>
|
||||
{#if !isNaN(grade)}
|
||||
<div class="flex items-center">
|
||||
<TextField
|
||||
@@ -72,7 +74,7 @@
|
||||
className="w-20"
|
||||
isDisabled={disableGrading}
|
||||
/>
|
||||
<p class="ml-2 text-lg">/ {gradeMax}</p>
|
||||
<p class="dark:text-white ml-2 text-lg">/ {gradeMax}</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
@@ -84,7 +86,7 @@
|
||||
<div class={!disableOptContainerMargin && 'ml-4'}>
|
||||
{#each options as option}
|
||||
<button
|
||||
class="cursor-pointer text-left my-2 border-2 border-gray-300 rounded-md hover:bg-gray-200 w-full {getValidationClassName(
|
||||
class="cursor-pointer text-left my-2 border-2 border-gray-300 rounded-md hover:bg-gray-200 dark:hover:bg-gray-500 w-full {getValidationClassName(
|
||||
option
|
||||
)}"
|
||||
type="button"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
className="w-20"
|
||||
isDisabled={disableGrading}
|
||||
/>
|
||||
<p class="ml-2 text-lg">/ {gradeMax}</p>
|
||||
<p class="dark:text-white ml-2 text-lg">/ {gradeMax}</p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
<div class="ml-4">
|
||||
{#if disabled}
|
||||
<div class="bg-gray-200 p-5 rounded-md mb-3">
|
||||
<div class="bg-gray-200 dark:bg-gray-500 p-5 rounded-md mb-3">
|
||||
{@html marked(defaultValue)}
|
||||
</div>
|
||||
{:else}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<div
|
||||
bind:this={ref}
|
||||
class="bg-white border {hasError
|
||||
class="bg-white dark:bg-gray-800 border {hasError
|
||||
? 'border-red-700'
|
||||
: 'border-gray hover:border-blue-700'} rounded-md mb-6 relative root"
|
||||
>
|
||||
@@ -49,7 +49,7 @@
|
||||
{#if typeof points !== 'undefined'}
|
||||
<div class="border-gray border-t-2 border-r-0 border-b-0 border-l-0 p-2">
|
||||
<div class="flex items-center w-40">
|
||||
<p class="text-sm mr-2">Points:</p>
|
||||
<p class="dark:text-white text-sm mr-2">Points:</p>
|
||||
<TextField
|
||||
placeholder="Points"
|
||||
bind:value={points}
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
// your script goes here
|
||||
const contributors = [
|
||||
{
|
||||
name: "Koskting",
|
||||
name: 'Koskting',
|
||||
},
|
||||
{
|
||||
name: "Koskting",
|
||||
name: 'Koskting',
|
||||
},
|
||||
{
|
||||
name: "Koskting",
|
||||
name: 'Koskting',
|
||||
},
|
||||
{
|
||||
name: "Koskting",
|
||||
name: 'Koskting',
|
||||
},
|
||||
{
|
||||
name: "Koskting",
|
||||
name: 'Koskting',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
@@ -23,7 +23,9 @@
|
||||
<div
|
||||
class="sidebar-root p-5 w-100 border border-1 border-gray rounded-md md:mt-12"
|
||||
>
|
||||
<h4 class="border-b border-gray text-base font-bold pb-1">Самые полезные</h4>
|
||||
<h4 class="dark:text-white border-b border-gray text-base font-bold pb-1">
|
||||
Самые полезные
|
||||
</h4>
|
||||
{#each contributors as contributor}
|
||||
<a class="flex pt-3" href="/{contributor.name}">
|
||||
<img
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
{:else}
|
||||
<Information24 class="carbon-icon" />
|
||||
{/if}
|
||||
<p class="ml-2 text-lg">{$snackbarStore.message}</p>
|
||||
<p class="dark:text-white ml-2 text-lg">{$snackbarStore.message}</p>
|
||||
</div>
|
||||
|
||||
<CloseButton onClick={handleClose} contained={true} color="text-white" />
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
<button
|
||||
class="relative border-r-1 border-t-0 border-b-0 border-l-0 rounded-none {currentTab ===
|
||||
tab.value
|
||||
? 'text-black font-bold bg-gray-100'
|
||||
: 'bg-gray-200 text-gray'} focus:outline-none w-40 text-left p-3"
|
||||
? 'text-black font-bold bg-gray-100 dark:bg-gray-700'
|
||||
: 'bg-gray-200 dark:bg-gray-500 text-gray'} focus:outline-none w-40 text-left p-3"
|
||||
on:click={onChange(tab.value)}
|
||||
>
|
||||
{tab.label}
|
||||
|
||||
@@ -57,6 +57,17 @@
|
||||
line-height: 1.25 !important;
|
||||
}
|
||||
}
|
||||
.dark .prose {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
white-space: pre-wrap;
|
||||
@@ -74,4 +85,8 @@
|
||||
.success :global(svg.carbon-icon) {
|
||||
fill: green;
|
||||
}
|
||||
|
||||
.dark :global(svg.carbon-icon) {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,13 +1,52 @@
|
||||
<script>
|
||||
import Star24 from "carbon-icons-svelte/lib/Star24";
|
||||
import StarFilled24 from "carbon-icons-svelte/lib/StarFilled24";
|
||||
import Link24 from "carbon-icons-svelte/lib/Link24";
|
||||
import Row from "./Row.svelte";
|
||||
import data from "./data";
|
||||
import Star24 from 'carbon-icons-svelte/lib/Star24';
|
||||
import StarFilled24 from 'carbon-icons-svelte/lib/StarFilled24';
|
||||
import Link24 from 'carbon-icons-svelte/lib/Link24';
|
||||
import Row from './Row.svelte';
|
||||
import data from './data';
|
||||
|
||||
let starred = false;
|
||||
</script>
|
||||
|
||||
<div class="sub-header flex justify-between mb-2">
|
||||
<h4 class="dark:text-white title">АИ-153</h4>
|
||||
<div class="flex justify-evenly items-center">
|
||||
{#if starred}
|
||||
<StarFilled24
|
||||
class="clickables mr-5 text-sm"
|
||||
on:click={() => (starred = !starred)}
|
||||
focusable="true"
|
||||
tabindex={0}
|
||||
/>
|
||||
{:else}
|
||||
<Star24
|
||||
class="clickables mr-5 text-sm"
|
||||
on:click={() => (starred = !starred)}
|
||||
focusable="true"
|
||||
tabindex="{1}/"
|
||||
/>
|
||||
{/if}
|
||||
|
||||
<Link24 class="clickables mr-5 text-sm" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="col">
|
||||
<div class="colItem">Пн</div>
|
||||
<div class="colItem">Вт</div>
|
||||
<div class="colItem">Ср</div>
|
||||
<div class="colItem">Чт</div>
|
||||
<div class="colItem">Пя</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<Row items={data.slice(0, 4)} />
|
||||
<Row items={data.slice(4, 8)} />
|
||||
<Row current items={data.slice(8, 12)} />
|
||||
<Row items={data.slice(12, 16)} />
|
||||
<Row items={data.slice(16, 20)} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.sub-header {
|
||||
padding: 10px 20px;
|
||||
@@ -52,40 +91,3 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="sub-header flex justify-between mb-2">
|
||||
<h4 class="title">АИ-153</h4>
|
||||
<div class="flex justify-evenly items-center">
|
||||
{#if starred}
|
||||
<StarFilled24
|
||||
class="clickables mr-5 text-sm"
|
||||
on:click={() => (starred = !starred)}
|
||||
focusable="true"
|
||||
tabindex={0} />
|
||||
{:else}
|
||||
<Star24
|
||||
class="clickables mr-5 text-sm"
|
||||
on:click={() => (starred = !starred)}
|
||||
focusable="true"
|
||||
tabindex="{1}/" />
|
||||
{/if}
|
||||
|
||||
<Link24 class="clickables mr-5 text-sm" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="col">
|
||||
<div class="colItem">Пн</div>
|
||||
<div class="colItem">Вт</div>
|
||||
<div class="colItem">Ср</div>
|
||||
<div class="colItem">Чт</div>
|
||||
<div class="colItem">Пя</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<Row items={data.slice(0, 4)} />
|
||||
<Row items={data.slice(4, 8)} />
|
||||
<Row current items={data.slice(8, 12)} />
|
||||
<Row items={data.slice(12, 16)} />
|
||||
<Row items={data.slice(16, 20)} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
<script>
|
||||
import Icon from "svelte-awesome/components/Icon.svelte";
|
||||
import { faTelegram } from "@fortawesome/free-brands-svg-icons";
|
||||
import { faEnvelope } from "@fortawesome/free-regular-svg-icons";
|
||||
import Icon from 'svelte-awesome/components/Icon.svelte';
|
||||
import { faTelegram } from '@fortawesome/free-brands-svg-icons';
|
||||
import { faEnvelope } from '@fortawesome/free-regular-svg-icons';
|
||||
|
||||
export let avatarUrl =
|
||||
"https://tailwindcss.com/_next/static/media/sarah-dayan.a8ff3f1095a58085a82e3bb6aab12eb2.jpg";
|
||||
export let name = "Sarah Dayan";
|
||||
export let title = "Staff Engineer, Algolia";
|
||||
'https://tailwindcss.com/_next/static/media/sarah-dayan.a8ff3f1095a58085a82e3bb6aab12eb2.jpg';
|
||||
export let name = 'Sarah Dayan';
|
||||
export let title = 'Staff Engineer, Algolia';
|
||||
export let mailLink;
|
||||
export let telegramLink;
|
||||
</script>
|
||||
|
||||
<figure class="w-52 bg-gray-100 px-4 py-7 mr-4 mb-4">
|
||||
<figure class="w-52 bg-gray-100 dark:bg-gray-700 px-4 py-7 mr-4 mb-4">
|
||||
<img
|
||||
class="w-32 h-32 rounded-full mx-auto"
|
||||
src={avatarUrl}
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="pt-6 text-center space-y-4">
|
||||
<div class="description font-medium flex flex-col justify-around">
|
||||
<div class="text-cyan-600">{name}</div>
|
||||
<div class="text-gray-500">{title}</div>
|
||||
<div class="text-gray-500 dark:text-gray-200">{title}</div>
|
||||
</div>
|
||||
</div>
|
||||
{#if telegramLink && mailLink}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<div class="w-3/5 h-3/5 m-auto flex flex-col items-center justify-center">
|
||||
<h1>Opps 😢</h1>
|
||||
<h2>Something wen't wrong and it's our fault.</h2>
|
||||
<p>Please screenshot this page and send to me.</p>
|
||||
<p class="dark:text-white">Please screenshot this page and send to me.</p>
|
||||
<pre>
|
||||
{errorContent}
|
||||
</pre>
|
||||
@@ -34,7 +34,7 @@
|
||||
<!-- {#if dev && error.stack}
|
||||
<h1>{status}</h1>
|
||||
|
||||
<p>{error.message}</p>
|
||||
<p class="dark:text-white">{error.message}</p>
|
||||
<pre>{error.stack}</pre>
|
||||
{/if} -->
|
||||
<style>
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
import { isMobile } from '../utils/store/useMobile';
|
||||
import { ROUTES_TO_HIDE_NAV, ROUTE } from '../utils/constants/routes';
|
||||
import { getOrganizations } from '../utils/services/org';
|
||||
import { toggleBodyByTheme } from '../utils/functions/app';
|
||||
import { appStore } from '../utils/store/app';
|
||||
|
||||
export let segment;
|
||||
export let config;
|
||||
@@ -155,6 +157,10 @@
|
||||
}
|
||||
);
|
||||
|
||||
// Update theme - dark or light mode
|
||||
$appStore.isDark = localStorage.getItem('theme') === 'dark';
|
||||
toggleBodyByTheme($appStore.isDark);
|
||||
|
||||
return () => {
|
||||
authListener.unsubscribe();
|
||||
};
|
||||
@@ -185,7 +191,7 @@
|
||||
<!-- <Nav {segment} /> -->
|
||||
<Snackbar />
|
||||
|
||||
<main>
|
||||
<main class="dark:bg-gray-800">
|
||||
{#if $preloading && $delayedPreloading}
|
||||
<Backdrop>
|
||||
<Moon size="60" color="#1d4ed8" unit="px" duration="1s" />
|
||||
@@ -203,7 +209,7 @@
|
||||
{#if isOrgPage($page.path)}
|
||||
<div class="org-root w-full flex items-center justify-between">
|
||||
<OrgSideBar />
|
||||
<div class="org-slot bg-white">
|
||||
<div class="org-slot bg-white dark:bg-gray-800">
|
||||
<slot />
|
||||
</div>
|
||||
</div>
|
||||
@@ -252,4 +258,8 @@
|
||||
:global(.bx--data-table-container) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
:global(.dark svg.dark path) {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -84,11 +84,11 @@
|
||||
<title>Admin Dashboard - ClassroomIO</title>
|
||||
</svelte:head>
|
||||
|
||||
<div class="root w-full py-10 bg-gray-100">
|
||||
<div class="root w-full py-10 bg-gray-100 dark:bg-gray-700">
|
||||
<div class="flex items-center justify-evenly max-w-6xl m-auto">
|
||||
{#each boxes as box}
|
||||
<div
|
||||
class="bg-white rounded-md py-3 px-16 active shadow-md hover:shadow-2xl border-2 hover:border-blue-700 cursor-pointer {animate}"
|
||||
class="bg-white dark:bg-gray-800 rounded-md py-3 px-16 active shadow-md hover:shadow-2xl border-2 hover:border-blue-700 cursor-pointer {animate}"
|
||||
>
|
||||
{#if box.icon === 'students'}
|
||||
<UserSpeaker32 class="carbon-icon" />
|
||||
@@ -97,43 +97,45 @@
|
||||
{:else if box.icon === 'courses'}
|
||||
<Book32 class="carbon-icon" />
|
||||
{/if}
|
||||
<p class="text-xl">{box.label}</p>
|
||||
<h3 class="text-3xl m-0 my-2">{box.value}</h3>
|
||||
<p class="dark:text-white text-xl">{box.label}</p>
|
||||
<h3 class="dark:text-white text-3xl m-0 my-2">{box.value}</h3>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-evenly mt-16">
|
||||
<div class="table rounded-md bg-white shadow-md">
|
||||
<div class="table rounded-md bg-white dark:bg-gray-800 shadow-md">
|
||||
<div class="flex border-t-0 {borderBottomGrey} p-3">
|
||||
<h3 class="m-0 py-3 pl-2 text-lg">Outstanding students</h3>
|
||||
<h3 class="dark:text-white m-0 py-3 pl-2 text-lg">
|
||||
Outstanding students
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
{#each topStudents as topStudent, index}
|
||||
<div
|
||||
class="flex items-center p-3 cursor-pointer {borderBottomGrey} hover:bg-gray-100"
|
||||
class="flex items-center p-3 cursor-pointer {borderBottomGrey} hover:bg-gray-100 dark:bg-gray-700"
|
||||
>
|
||||
<span class="mr-2">{index + 1}</span>
|
||||
<p class="text-lg">{topStudent.name}</p>
|
||||
<p class="dark:text-white text-lg">{topStudent.name}</p>
|
||||
<span class="flex-grow" />
|
||||
<p class="text-lg">{topStudent.score}</p>
|
||||
<p class="dark:text-white text-lg">{topStudent.score}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<div class="table rounded-md bg-white shadow-md">
|
||||
<div class="table rounded-md bg-white dark:bg-gray-800 shadow-md">
|
||||
<div class="flex border-t-0 {borderBottomGrey} p-3">
|
||||
<h3 class="m-0 py-3 pl-2 text-lg">Top rated courses</h3>
|
||||
<h3 class="dark:text-white m-0 py-3 pl-2 text-lg">Top rated courses</h3>
|
||||
</div>
|
||||
|
||||
{#each topCourses as topCourse, index}
|
||||
<div
|
||||
class="flex items-center p-3 cursor-pointer {borderBottomGrey} hover:bg-gray-100"
|
||||
class="flex items-center p-3 cursor-pointer {borderBottomGrey} hover:bg-gray-100 dark:bg-gray-700"
|
||||
>
|
||||
<span class="mr-2">{index + 1}</span>
|
||||
<p class="text-lg">{topCourse.title}</p>
|
||||
<p class="dark:text-white text-lg">{topCourse.title}</p>
|
||||
<span class="flex-grow" />
|
||||
<p class="text-lg">{topCourse.rating}</p>
|
||||
<p class="dark:text-white text-lg">{topCourse.rating}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
{#if facultyFilterOpened}
|
||||
<div
|
||||
class="w-48 bg-white border border-grey rounded-lg mt-2 py-3 absolute"
|
||||
class="w-48 bg-white dark:bg-gray-800 border border-grey rounded-lg mt-2 py-3 absolute"
|
||||
>
|
||||
{#each faculties as faculty}
|
||||
<div class="block px-4 py-3 border-b">
|
||||
|
||||
@@ -136,9 +136,9 @@
|
||||
<div
|
||||
class="flex items-center font-bold border-t-0 {borderBottomGrey} p-3"
|
||||
>
|
||||
<p class="w-1/4">Student</p>
|
||||
<p class="dark:text-white w-1/4">Student</p>
|
||||
{#each $lessons as lesson, index}
|
||||
<p class="col" title={lesson.title}>
|
||||
<p class="dark:text-white col" title={lesson.title}>
|
||||
{getLectureNo(index + 1)}
|
||||
</p>
|
||||
{/each}
|
||||
@@ -155,14 +155,16 @@
|
||||
class="w-8 h-8 rounded-full mr-2"
|
||||
/>
|
||||
<div class="text-sm">
|
||||
<p class="font-semibold">{student.profile.fullname}</p>
|
||||
<p class="dark:text-white font-semibold">
|
||||
{student.profile.fullname}
|
||||
</p>
|
||||
{#if student.assigned_student_id}
|
||||
<p>#{student.assigned_student_id}</p>
|
||||
<p class="dark:text-white">#{student.assigned_student_id}</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{#each $lessons as lesson}
|
||||
<p class="col">
|
||||
<p class="dark:text-white col">
|
||||
<input
|
||||
class="form-radio {isStudent && 'cursor-not-allowed'}"
|
||||
type="checkbox"
|
||||
@@ -180,7 +182,9 @@
|
||||
{:else}
|
||||
<Box>
|
||||
<AudioConsole32 class="carbon-icon w-80" />
|
||||
<h3 class="text-3xl text-gray-500">No Student Added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No Student Added
|
||||
</h3>
|
||||
</Box>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
</RoleBasedSecurity>
|
||||
|
||||
<div class="">
|
||||
<h3 class="text-3xl font-bold">
|
||||
<h3 class="dark:text-white text-3xl font-bold">
|
||||
{getLessonOrder(lesson.id)}.
|
||||
</h3>
|
||||
</div>
|
||||
@@ -206,7 +206,7 @@
|
||||
{#if lessonEditing === lesson.id}
|
||||
<TextField bind:value={lesson.title} autofocus={true} />
|
||||
{:else}
|
||||
<h3 class="text-2xl m-0 flex items-center">
|
||||
<h3 class="dark:text-white text-2xl m-0 flex items-center">
|
||||
<a
|
||||
href={isStudent && !lesson.is_complete
|
||||
? $page.path
|
||||
@@ -237,7 +237,7 @@
|
||||
labelKey="fullname"
|
||||
/>
|
||||
{:else if !lesson.profile}
|
||||
<p class="ml-2 text-sm">No tutor added</p>
|
||||
<p class="dark:text-white ml-2 text-sm">No tutor added</p>
|
||||
{:else}
|
||||
<a href="." class="flex items-center hover:underline">
|
||||
<img
|
||||
@@ -247,7 +247,7 @@
|
||||
height="20"
|
||||
src={lesson.profile.avatar_url}
|
||||
/>
|
||||
<p class="ml-2 text-sm">
|
||||
<p class="dark:text-white ml-2 text-sm">
|
||||
{lesson.profile.fullname}
|
||||
</p>
|
||||
</a>
|
||||
@@ -265,7 +265,7 @@
|
||||
/>
|
||||
{:else}
|
||||
<Time24 class="carbon-icon" />
|
||||
<p class="text-md ml-2">
|
||||
<p class="dark:text-white text-md ml-2">
|
||||
{new Date(lesson.lesson_at).toDateString()}
|
||||
</p>
|
||||
{/if}
|
||||
@@ -303,7 +303,9 @@
|
||||
</div>
|
||||
{:else}
|
||||
<Box>
|
||||
<h3 class="text-3xl text-gray-500">No lesson added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No lesson added
|
||||
</h3>
|
||||
<img alt="No lesson added" src="/notfound2.gif" class="w-80" />
|
||||
</Box>
|
||||
{/each}
|
||||
|
||||
@@ -103,12 +103,12 @@
|
||||
<div class="table rounded-md border border-gray-300 w-auto">
|
||||
<div class="flex items-center {borderBottomGrey}">
|
||||
<div class="box flex items-center p-3">
|
||||
<p class="w-40">Student</p>
|
||||
<p class="dark:text-white w-40">Student</p>
|
||||
</div>
|
||||
{#each $lessons as lesson, index}
|
||||
{#if lessonMapping[lesson.id]}
|
||||
<div class="box flex flex-col items-center {borderleftGrey}">
|
||||
<p class="col lesson-number" title={lesson.title}>
|
||||
<p class="dark:text-white col lesson-number" title={lesson.title}>
|
||||
{getLectureNo(index + 1)}
|
||||
</p>
|
||||
<div
|
||||
@@ -116,7 +116,8 @@
|
||||
>
|
||||
{#each Object.keys(lessonMapping[lesson.id]) as exerciseId, index}
|
||||
<p
|
||||
class="col text-sm {index && borderleftGrey}"
|
||||
class="col text-sm dark:text-white {index &&
|
||||
borderleftGrey}"
|
||||
title={lessonMapping[lesson.id][exerciseId].title}
|
||||
>
|
||||
{lessonMapping[lesson.id][exerciseId].title}
|
||||
@@ -128,7 +129,7 @@
|
||||
{/if}
|
||||
{/each}
|
||||
<div class="box flex items-center {borderleftGrey}">
|
||||
<p class="w-20 text-center">Total</p>
|
||||
<p class="dark:text-white w-20 text-center">Total</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -143,8 +144,10 @@
|
||||
class="w-8 h-8 rounded-full mr-2"
|
||||
/>
|
||||
<div class="text-sm">
|
||||
<p class="font-semibold">{student.profile.fullname}</p>
|
||||
<p>
|
||||
<p class="dark:text-white font-semibold">
|
||||
{student.profile.fullname}
|
||||
</p>
|
||||
<p class="dark:text-white">
|
||||
{`${
|
||||
student.assigned_student_id
|
||||
? '#' + student.assigned_student_id
|
||||
@@ -157,7 +160,7 @@
|
||||
{#if lessonMapping[lesson.id]}
|
||||
<div class="flex items-center">
|
||||
{#each Object.keys(lessonMapping[lesson.id]) as exerciseId}
|
||||
<p class="col">
|
||||
<p class="dark:text-white col">
|
||||
{studentMarksByExerciseId[student.id]
|
||||
? studentMarksByExerciseId[student.id][exerciseId] || '-'
|
||||
: '-'}
|
||||
@@ -169,7 +172,7 @@
|
||||
|
||||
<div class="w-20 flex items-center">
|
||||
<div class="text-sm">
|
||||
<p class="col">
|
||||
<p class="dark:text-white col">
|
||||
{calculateStudentTotal(studentMarksByExerciseId[student.id])}
|
||||
</p>
|
||||
</div>
|
||||
@@ -178,7 +181,9 @@
|
||||
{:else}
|
||||
<Box>
|
||||
<AudioConsole32 class="carbon-icon w-80" />
|
||||
<h3 class="text-3xl text-gray-500">No Student Added</h3>
|
||||
<h3 class="text-3xl text-gray-500 dark:text-gray-200">
|
||||
No Student Added
|
||||
</h3>
|
||||
</Box>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -136,12 +136,12 @@
|
||||
<div
|
||||
class="flex items-center font-bold border-t-0 {borderBottomGrey} p-3"
|
||||
>
|
||||
<span class="w-1/4 text-center">ID</span>
|
||||
<span class="dark:text-white w-1/4 text-center">ID</span>
|
||||
<!-- <span class="flex-grow" /> -->
|
||||
<p class="text-lg w-2/4">Name</p>
|
||||
<p class="text-lg w-1/4 ">Role</p>
|
||||
<p class="dark:text-white text-lg w-2/4">Name</p>
|
||||
<p class="dark:text-white text-lg w-1/4">Role</p>
|
||||
<RoleBasedSecurity allowedRoles={[1, 2]}>
|
||||
<p class="hidden lg:block text-lg w-20" />
|
||||
<p class="dark:text-white hidden lg:block text-lg w-20" />
|
||||
</RoleBasedSecurity>
|
||||
</div>
|
||||
|
||||
@@ -157,7 +157,9 @@
|
||||
/>
|
||||
{:else}
|
||||
<div class="student-id flex items-center justify-between relative">
|
||||
<p class="w-11/12">{person.assigned_student_id || '-'}</p>
|
||||
<p class="dark:text-white w-11/12">
|
||||
{person.assigned_student_id || '-'}
|
||||
</p>
|
||||
{#if !isStudent}
|
||||
<div class="absolute edit-btn">
|
||||
<IconButton
|
||||
@@ -182,7 +184,7 @@
|
||||
name={person.profile.fullname}
|
||||
/>
|
||||
<div class="ml-2 break-all">
|
||||
<p class="text-lg">{person.profile.fullname}</p>
|
||||
<p class="dark:text-white text-lg">{person.profile.fullname}</p>
|
||||
{#if !isStudent}
|
||||
<a
|
||||
href="mailto:{person.profile.email}"
|
||||
@@ -206,7 +208,9 @@
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<p class="text-lg w-1/4 ">{ROLE_LABEL[person.role_id]}</p>
|
||||
<p class="dark:text-white text-lg w-1/4">
|
||||
{ROLE_LABEL[person.role_id]}
|
||||
</p>
|
||||
|
||||
<RoleBasedSecurity allowedRoles={[1, 2]}>
|
||||
<div class="hidden lg:block w-20">
|
||||
|
||||
@@ -276,12 +276,12 @@
|
||||
<div class="flex items-center w-full">
|
||||
{#each sections as { id, title, items }, idx (id)}
|
||||
<div
|
||||
class="section rounded-md bg-gray-100 border border-gray-50 p-3 h-80 mr-3 overflow-hidden"
|
||||
class="section rounded-md bg-gray-100 dark:bg-gray-700 border border-gray-50 p-3 h-80 mr-3 overflow-hidden"
|
||||
animate:flip={{ duration: flipDurationMs }}
|
||||
>
|
||||
<div class="flex items-center mb-2">
|
||||
<Chip value={items.length} class="bg-set" />
|
||||
<p class="ml-2 font-bold">{title}</p>
|
||||
<p class="dark:text-white ml-2 font-bold">{title}</p>
|
||||
</div>
|
||||
<div
|
||||
class="content pr-2 overflow-y-auto mb-3"
|
||||
@@ -297,7 +297,7 @@
|
||||
<div
|
||||
class="border {item.isEarly
|
||||
? 'border-grey-700'
|
||||
: 'border-red-700'} w-full my-2 mx-0 rounded-md bg-white py-3 px-3"
|
||||
: 'border-red-700'} w-full my-2 mx-0 rounded-md bg-white dark:bg-gray-800 py-3 px-3"
|
||||
animate:flip={{ duration: flipDurationMs }}
|
||||
>
|
||||
<div
|
||||
@@ -311,7 +311,9 @@
|
||||
class="block rounded-full h-6 w-6"
|
||||
src={item.student.avatar_url}
|
||||
/>
|
||||
<p class="ml-2 text-sm">{item.student.username}</p>
|
||||
<p class="dark:text-white ml-2 text-sm">
|
||||
{item.student.username}
|
||||
</p>
|
||||
</div>
|
||||
<a
|
||||
class="text-blue-700 text-md font-bold"
|
||||
@@ -324,12 +326,14 @@
|
||||
href="{$page.path.replace('submissions', 'lessons')}/{item
|
||||
.lesson.id}/exercises/{item.exercise.id}"
|
||||
>
|
||||
<p class="text-grey text-sm">
|
||||
<p class="dark:text-white text-grey text-sm">
|
||||
#{item.lesson.title}
|
||||
{`${item.tutor ? 'created by' + item.tutor.name : ''}`}
|
||||
</p>
|
||||
</a>
|
||||
<p class="text-gray-500 text-xs">
|
||||
<p
|
||||
class="dark:text-white text-gray-500 dark:text-gray-200 text-xs"
|
||||
>
|
||||
{item.submittedAt}
|
||||
</p>
|
||||
<!-- <div class="badge rounded-md px-2 bg-green-500 text-white">
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
<title>Dashboard - ClassroomIO</title>
|
||||
</svelte:head>
|
||||
|
||||
<section class="root w-full py-10 bg-gray-100">
|
||||
<section class="root w-full py-10 bg-gray-100 dark:bg-gray-700">
|
||||
<div class="calendar-root flex mx-2">
|
||||
{#if !$isMobile}
|
||||
<div id="calendar">
|
||||
@@ -188,7 +188,7 @@
|
||||
<span class="text-md ml-2">🔒</span>
|
||||
{/if}
|
||||
</a>
|
||||
<p class="text-grey text-sm flex items-center">
|
||||
<p class="dark:text-white text-grey text-sm flex items-center">
|
||||
<a
|
||||
class="underline text-blue-700 my-2"
|
||||
href="/courses/{lessonData.course_id}"
|
||||
@@ -212,7 +212,9 @@
|
||||
{/if}
|
||||
</div>
|
||||
{:else}
|
||||
<p class="flex items-center justify-center w-full no-data">
|
||||
<p
|
||||
class="dark:text-white flex items-center justify-center w-full no-data"
|
||||
>
|
||||
No lesson on this day
|
||||
</p>
|
||||
{/each}
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
<div class="discussion-box">
|
||||
<Vote value={discussion.votes} />
|
||||
<div class="discussion-topic-author">
|
||||
<h4>
|
||||
<h4 class="dark:text-white">
|
||||
<a rel="prefetch" href="discussions/{discussion.id}"
|
||||
>{discussion.title}</a
|
||||
>
|
||||
|
||||
@@ -45,8 +45,12 @@
|
||||
class="block rounded-full"
|
||||
src="https://picsum.photos/32/32/?random"
|
||||
/>
|
||||
<p class="ml-2 text-sm">{discussion.author.name}</p>
|
||||
<p class="ml-2 text-sm text-gray-500">12h ago</p>
|
||||
<p class="dark:text-white ml-2 text-sm">{discussion.author.name}</p>
|
||||
<p
|
||||
class="dark:text-white ml-2 text-sm text-gray-500 dark:text-gray-200"
|
||||
>
|
||||
12h ago
|
||||
</p>
|
||||
</a>
|
||||
</header>
|
||||
<section class="prose prose-sm sm:prose p-2">
|
||||
@@ -75,8 +79,12 @@
|
||||
height="20"
|
||||
src={comment.avatar}
|
||||
/>
|
||||
<p class="ml-2 text-sm">{comment.name}</p>
|
||||
<p class="ml-2 text-sm text-gray-500">12h ago</p>
|
||||
<p class="dark:text-white ml-2 text-sm">{comment.name}</p>
|
||||
<p
|
||||
class="dark:text-white ml-2 text-sm text-gray-500 dark:text-gray-200"
|
||||
>
|
||||
12h ago
|
||||
</p>
|
||||
</a>
|
||||
|
||||
<CheckmarkOutline20 />
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
{#if success}
|
||||
<div class="mt-4 w-full flex items-center justify-center flex-col">
|
||||
<EmailSentIcon />
|
||||
<h3 class="text-xl font-semibold my-3">Email Sent!</h3>
|
||||
<p class="text-md mb-6 text-center">
|
||||
<h3 class="dark:text-white text-xl font-semibold my-3">Email Sent!</h3>
|
||||
<p class="dark:text-white text-md mb-6 text-center">
|
||||
We have sent a confirmation email to <span class="text-blue-700"
|
||||
>{fields.email}</span
|
||||
>. Kindly check your inbox to reset password or spam to reset your
|
||||
@@ -80,8 +80,12 @@
|
||||
</div>
|
||||
{:else}
|
||||
<div class="mt-4 w-full">
|
||||
<h3 class="text-xl font-semibold my-3">Forgot Password</h3>
|
||||
<p class="text-sm mb-6">We will send you a reset link to your email</p>
|
||||
<h3 class="dark:text-white text-xl font-semibold my-3">
|
||||
Forgot Password
|
||||
</h3>
|
||||
<p class="dark:text-white text-sm mb-6">
|
||||
We will send you a reset link to your email
|
||||
</p>
|
||||
<TextField
|
||||
label="Your email"
|
||||
bind:value={fields.email}
|
||||
@@ -94,7 +98,7 @@
|
||||
errorMessage={errors.email}
|
||||
/>
|
||||
{#if submitError}
|
||||
<p class="text-sm text-red-500">{submitError}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{submitError}</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -65,10 +65,10 @@
|
||||
/>
|
||||
-->
|
||||
<div>
|
||||
<h3 class="text-4xl text-center">
|
||||
<h3 class="dark:text-white text-4xl text-center">
|
||||
Classroom<span class="text-blue-700">IO</span>
|
||||
</h3>
|
||||
<p class="text-lg text-center">
|
||||
<p class="dark:text-white text-lg text-center">
|
||||
The operating system for classroooms of the future 🚀🚀🚀.
|
||||
</p>
|
||||
</div>
|
||||
@@ -76,7 +76,9 @@
|
||||
<form on:submit|preventDefault={handleSubmit} class="my-4">
|
||||
<div class="flex items-center flex-col sm:flex-row">
|
||||
{#if success}
|
||||
<p>You have been added successfully. Thanks for joining.</p>
|
||||
<p class="dark:text-white">
|
||||
You have been added successfully. Thanks for joining.
|
||||
</p>
|
||||
{:else}
|
||||
<TextField
|
||||
bind:value={email}
|
||||
@@ -97,9 +99,9 @@
|
||||
<div class="flex flex-col md:flex-row">
|
||||
{#each areas as area, index}
|
||||
<div
|
||||
class="box m-3 bg-white rounded-md py-3 px-12 active shadow-xl border-2 hover:border-blue-700 {animate}"
|
||||
class="box m-3 bg-white dark:bg-gray-800 rounded-md py-3 px-12 active shadow-xl border-2 hover:border-blue-700 {animate}"
|
||||
>
|
||||
<h3 class="text-3xl">
|
||||
<h3 class="dark:text-white text-3xl">
|
||||
{#if index === 0}
|
||||
<FlowStreamReference32 class="carbon-icon" />
|
||||
{:else if index === 1}
|
||||
@@ -109,7 +111,7 @@
|
||||
{/if}
|
||||
{area.title}
|
||||
</h3>
|
||||
<p>{area.description}</p>
|
||||
<p class="dark:text-white">{area.description}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
bind:formRef
|
||||
>
|
||||
<div class="mt-4 w-full">
|
||||
<p class="text-lg font-semibold mb-6">Welcome back</p>
|
||||
<p class="dark:text-white text-lg font-semibold mb-6">Welcome back</p>
|
||||
<TextField
|
||||
label="Your email"
|
||||
bind:value={fields.email}
|
||||
@@ -81,7 +81,7 @@
|
||||
errorMessage={errors.password}
|
||||
/>
|
||||
{#if submitError}
|
||||
<p class="text-sm text-red-500">{submitError}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{submitError}</p>
|
||||
{/if}
|
||||
<div class="w-full text-right">
|
||||
<a class="text-md text-blue-700" href="/forgot"> Forgot password? </a>
|
||||
|
||||
@@ -193,15 +193,15 @@
|
||||
width="50"
|
||||
data-atf="1"
|
||||
/>
|
||||
<h4 class="text-xl">ClassroomIO</h4>
|
||||
<h4 class="dark:text-white text-xl">ClassroomIO</h4>
|
||||
</div>
|
||||
|
||||
<!-- Loggedin Email -->
|
||||
<div
|
||||
class="w-64 flex items-center justify-center mb-6 py-6 bg-gray-100 rounded-2xl border border-gray-300"
|
||||
class="w-64 flex items-center justify-center mb-6 py-6 bg-gray-100 dark:bg-gray-700 rounded-2xl border border-gray-300"
|
||||
>
|
||||
<UserProfileIcon />
|
||||
<p class="text-sm ml-2">{$profile.email}</p>
|
||||
<p class="dark:text-white text-sm ml-2">{$profile.email}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -252,14 +252,17 @@
|
||||
<div
|
||||
class="w-full flex items-start flex-col justify-between mb-10"
|
||||
>
|
||||
<label for="text-field" class="m-0 text-lg font-normal mb-3">
|
||||
<label
|
||||
for="text-field"
|
||||
class="dark:text-white m-0 text-lg font-normal mb-3"
|
||||
>
|
||||
What brings you to ClassroomIO?
|
||||
</label>
|
||||
|
||||
<!-- Loop through Goals -->
|
||||
{#each educatorGoals as goal}
|
||||
<label
|
||||
class="w-full inline-flex items-center mb-1 font-light"
|
||||
class="dark:text-white w-full inline-flex items-center mb-1 font-light"
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
@@ -273,20 +276,25 @@
|
||||
{/each}
|
||||
<!-- Goal: Error message -->
|
||||
{#if errors.goal}
|
||||
<p class="text-sm text-red-500">{errors.goal}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">
|
||||
{errors.goal}
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Source Question -->
|
||||
<div class="w-full flex items-start flex-col justify-between">
|
||||
<label for="text-field" class="m-0 text-lg font-normal mb-3">
|
||||
<label
|
||||
for="text-field"
|
||||
class="dark:text-white m-0 text-lg font-normal mb-3"
|
||||
>
|
||||
How did you hear about us?
|
||||
</label>
|
||||
|
||||
<!-- Loop through Goals -->
|
||||
{#each sources as source}
|
||||
<label
|
||||
class="w-full inline-flex items-center mb-1 font-light"
|
||||
class="dark:text-white w-full inline-flex items-center mb-1 font-light"
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
@@ -300,7 +308,9 @@
|
||||
{/each}
|
||||
<!-- Goal: Error message -->
|
||||
{#if errors.source}
|
||||
<p class="text-sm text-red-500">{errors.source}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">
|
||||
{errors.source}
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<section class="w-full max-w-6xl mx-auto">
|
||||
<div class="py-10 px-5">
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Audience</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Audience</h1>
|
||||
<PrimaryButton
|
||||
label="Export"
|
||||
onClick={exportAudience}
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<section class="w-full max-w-7xl mx-auto">
|
||||
<div class="py-10 px-5">
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Courses</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Courses</h1>
|
||||
<PrimaryButton
|
||||
label="Create Course"
|
||||
onClick={() => ($createCourseModal.open = true)}
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
|
||||
<div class="py-10 px-5 w-full max-w-7xl mx-auto">
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Dashboard</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Dashboard</h1>
|
||||
<PrimaryButton label="Create Course" onClick={createCourse} />
|
||||
</div>
|
||||
|
||||
@@ -220,8 +220,8 @@
|
||||
<div
|
||||
class="box flex flex-col rounded border border-gray-200 justify-center px-5 mr-5 mb-5"
|
||||
>
|
||||
<p class="mb-2 text-sm">{box.label}</p>
|
||||
<p class="text-xl font-bold">{box.value}</p>
|
||||
<p class="dark:text-white mb-2 text-sm">{box.label}</p>
|
||||
<p class="dark:text-white text-xl font-bold">{box.value}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
@@ -229,7 +229,7 @@
|
||||
<div class="flex flex-wrap">
|
||||
<!-- Your Schedule -->
|
||||
<div>
|
||||
<p class="font-bold mb-7">Your Schedule</p>
|
||||
<p class="dark:text-white font-bold mb-7">Your Schedule</p>
|
||||
<div class="rounded border w-2/5 border-gray-200 mr-5 schedule-box">
|
||||
{#if !$isMobile}
|
||||
<div id="calendar" class="flex justify-center mt-5">
|
||||
@@ -253,7 +253,7 @@
|
||||
</Datepicker>
|
||||
</div>
|
||||
{:else}
|
||||
<p class="font-bold m-5">
|
||||
<p class="dark:text-white font-bold m-5">
|
||||
{formatDate($store?.selected)}
|
||||
</p>
|
||||
{/if}
|
||||
@@ -276,7 +276,7 @@
|
||||
<span class="text-md ml-2">🔒</span>
|
||||
{/if}
|
||||
</a>
|
||||
<p class="text-grey text-sm flex items-center">
|
||||
<p class="dark:text-white text-grey text-sm flex items-center">
|
||||
<a
|
||||
class="underline text-blue-700 my-2"
|
||||
href="/courses/{lessonData.course_id}"
|
||||
@@ -300,7 +300,9 @@
|
||||
{/if}
|
||||
</div>
|
||||
{:else}
|
||||
<p class="flex items-center justify-center w-full no-data">
|
||||
<p
|
||||
class="dark:text-white flex items-center justify-center w-full no-data"
|
||||
>
|
||||
No lesson on this day
|
||||
</p>
|
||||
{/each}
|
||||
@@ -309,22 +311,22 @@
|
||||
|
||||
<!-- Your Activities -->
|
||||
<div>
|
||||
<p class="font-bold mb-7">Your Activities</p>
|
||||
<p class="dark:text-white font-bold mb-7">Your Activities</p>
|
||||
<div class="rounded border border-gray-200 w-5 activities-box py-4 px-5">
|
||||
{#each activities as activity}
|
||||
<div class="flex mb-3 pb-3 border-b border-gray-200">
|
||||
<Avatar src={activity.avatar} name="avatar" />
|
||||
<div class="ml-2 flex">
|
||||
<div class="mr-2">
|
||||
<p>{activity.name}</p>
|
||||
<p class="mb-2 mt-1">
|
||||
<p class="dark:text-white">{activity.name}</p>
|
||||
<p class="dark:text-white mb-2 mt-1">
|
||||
{activity.description}
|
||||
</p>
|
||||
<a href={activity.link}>View</a>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>{activity.time}</p>
|
||||
<p class="dark:text-white">{activity.time}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
<section class="w-full max-w-6xl mx-auto">
|
||||
<div class="py-10 px-5">
|
||||
<a
|
||||
class="text-gray-500 text-md"
|
||||
class="text-gray-500 dark:text-gray-200 text-md"
|
||||
href={`/org/${$currentOrg.siteName}/settings`}>Back to Settings</a
|
||||
>
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Custom domain</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Custom domain</h1>
|
||||
</div>
|
||||
|
||||
<Domains />
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<section class="w-full max-w-6xl mx-auto">
|
||||
<div class="py-10 px-5">
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Settings</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Settings</h1>
|
||||
</div>
|
||||
|
||||
<OrgSettings />
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
<section class="w-full max-w-6xl mx-auto">
|
||||
<div class="py-10 px-5">
|
||||
<a
|
||||
class="text-gray-500 text-md"
|
||||
class="text-gray-500 dark:text-gray-200 text-md"
|
||||
href={`/org/${$currentOrg.siteName}/settings`}>Back to Settings</a
|
||||
>
|
||||
<div class="flex items-center justify-between mb-10">
|
||||
<h1 class="text-3xl font-bold">Team members</h1>
|
||||
<h1 class="dark:text-white text-3xl font-bold">Team members</h1>
|
||||
</div>
|
||||
|
||||
<TeamMembers />
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<div
|
||||
class="flex items-center justify-between {borderBottom} border-blue-700"
|
||||
>
|
||||
<h3 class="text-3xl text-blue-700">Teachers</h3>
|
||||
<h3 class="dark:text-white text-3xl text-blue-700">Teachers</h3>
|
||||
<IconButton
|
||||
toolTipProps={{ title: 'Add', direction: 'right' }}
|
||||
onClick={addTeacher}
|
||||
@@ -54,7 +54,7 @@
|
||||
borderBottom} border-gray-300"
|
||||
>
|
||||
<Avatar src={teacher.avatar} name={teacher.name} />
|
||||
<p class="ml-2">{teacher.name}</p>
|
||||
<p class="dark:text-white ml-2">{teacher.name}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
@@ -63,7 +63,7 @@
|
||||
<div
|
||||
class="flex items-center justify-between {borderBottom} border-blue-700"
|
||||
>
|
||||
<h3 class="text-3xl text-blue-700">Students</h3>
|
||||
<h3 class="dark:text-white text-3xl text-blue-700">Students</h3>
|
||||
<IconButton
|
||||
toolTipProps={{ title: 'Add', direction: 'right' }}
|
||||
onClick={addStudent}
|
||||
@@ -79,7 +79,7 @@
|
||||
borderBottom} border-gray-300"
|
||||
>
|
||||
<Avatar src={student.avatar} name={student.name} />
|
||||
<p class="ml-2">{student.name}</p>
|
||||
<p class="dark:text-white ml-2">{student.name}</p>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -171,23 +171,23 @@
|
||||
/>
|
||||
{/if}
|
||||
{:else}
|
||||
<h3 class="text-xl">{currentProfile.username}</h3>
|
||||
<h3 class="dark:text-white text-xl">{currentProfile.username}</h3>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="flex-grow" />
|
||||
<div class="flex-grow flex flex-wrap mx-3 w-3/5">
|
||||
<div class="mb-3 w-full">
|
||||
<h3 class="font-bold text-md m-0">Organizations</h3>
|
||||
<p class="text-gray-500 text-sm">
|
||||
<h3 class="dark:text-white font-bold text-md m-0">Organizations</h3>
|
||||
<p class="dark:text-white text-gray-500 dark:text-gray-200 text-sm">
|
||||
This are the organizations you work at
|
||||
</p>
|
||||
|
||||
<div class="hidden my-3 py-3 px-4 border shadow-sm rounded-md">
|
||||
<h4 class="m-0 font-normal">
|
||||
<h4 class="dark:text-white m-0 font-normal">
|
||||
<a class="text-blue-700 font-bold" href="/courses"> CitiBim </a>
|
||||
</h4>
|
||||
<p class="text-gray-500">
|
||||
<p class="dark:text-white text-gray-500 dark:text-gray-200">
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Non aliquam
|
||||
tenetur magnam. Alias cumque quaerat expedita dolores placeat
|
||||
laboriosam culpa, suscipit veritatis adipisci eius magni obcaecati.
|
||||
@@ -205,12 +205,12 @@
|
||||
</div>
|
||||
|
||||
<div class="hidden my-2 py-3 px-4 border shadow-sm rounded-md">
|
||||
<h4 class="m-0 font-normal">
|
||||
<h4 class="dark:text-white m-0 font-normal">
|
||||
<a class="text-blue-700 font-bold" href="/courses">
|
||||
Climate Change Group
|
||||
</a>
|
||||
</h4>
|
||||
<p class="text-gray-500">
|
||||
<p class="dark:text-white text-gray-500 dark:text-gray-200">
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo quasi
|
||||
autem quo possimus illum consequuntur repudiandae nobis error, porro
|
||||
</p>
|
||||
@@ -241,7 +241,7 @@
|
||||
<div>
|
||||
<Search32 />
|
||||
</div>
|
||||
<h3 class="text-xxl">Profile not found</h3>
|
||||
<h3 class="dark:text-white text-xxl">Profile not found</h3>
|
||||
</Box> -->
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
bind:formRef
|
||||
>
|
||||
<div class="mt-4 w-full">
|
||||
<h3 class="text-xl font-semibold my-3">New Password</h3>
|
||||
<p class="text-sm mb-6">Enter your new password details</p>
|
||||
<h3 class="dark:text-white text-xl font-semibold my-3">New Password</h3>
|
||||
<p class="dark:text-white text-sm mb-6">Enter your new password details</p>
|
||||
<TextField
|
||||
label="Your Password"
|
||||
bind:value={fields.password}
|
||||
@@ -97,7 +97,7 @@
|
||||
isRequired
|
||||
/>
|
||||
{#if submitError}
|
||||
<p class="text-sm text-red-500">{submitError}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{submitError}</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -74,7 +74,9 @@
|
||||
bind:formRef
|
||||
>
|
||||
<div class="mt-4 w-full">
|
||||
<p class="text-lg font-semibold mb-6">Create a free account</p>
|
||||
<p class="dark:text-white text-lg font-semibold mb-6">
|
||||
Create a free account
|
||||
</p>
|
||||
<!-- <TextField
|
||||
label="Full Name"
|
||||
bind:value={fields.name}
|
||||
@@ -122,7 +124,7 @@
|
||||
isRequired
|
||||
/>
|
||||
{#if submitError}
|
||||
<p class="text-sm text-red-500">{submitError}</p>
|
||||
<p class="dark:text-white text-sm text-red-500">{submitError}</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export function toggleBodyByTheme(isDark) {
|
||||
if (isDark) {
|
||||
document.body.className = document.body.className.concat(' ', 'dark');
|
||||
} else {
|
||||
document.body.className = document.body.className.replace('dark', '');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { writable } from 'svelte/store';
|
||||
|
||||
export const appStore = writable({
|
||||
isDark: false,
|
||||
});
|
||||
@@ -1,19 +1,17 @@
|
||||
module.exports = {
|
||||
darkMode: 'class',
|
||||
purge: {
|
||||
mode: "all",
|
||||
content: ["./**/**/*.html", "./**/**/*.svelte"],
|
||||
mode: 'all',
|
||||
content: ['./**/**/*.html', './**/**/*.svelte'],
|
||||
|
||||
options: {
|
||||
whitelistPatterns: [/svelte-/]
|
||||
}
|
||||
whitelistPatterns: [/svelte-/],
|
||||
},
|
||||
},
|
||||
|
||||
theme: {
|
||||
extend: {}
|
||||
extend: {},
|
||||
},
|
||||
variants: {},
|
||||
plugins: [
|
||||
require("@tailwindcss/typography"),
|
||||
require('@tailwindcss/forms')
|
||||
]
|
||||
plugins: [require('@tailwindcss/typography'), require('@tailwindcss/forms')],
|
||||
};
|
||||
|
||||