Gisle Aune
3 years ago
14 changed files with 14638 additions and 3115 deletions
-
22211package-lock.json
-
3package.json
-
2src/lib/components/frontpage/ItemLink.svelte
-
3src/lib/components/frontpage/RequirementLink.svelte
-
2src/lib/components/frontpage/SprintLink.svelte
-
1src/lib/components/layout/Entry.svelte
-
27src/lib/components/layout/EntryBgIcon.svelte
-
14src/lib/components/layout/EntryCompletionIcon.svelte
-
35src/lib/components/layout/EntryProgress.svelte
-
24src/lib/components/layout/EntryStatusIcon.svelte
-
67src/lib/components/layout/Icon.svelte
-
44src/lib/components/layout/StatusColor.svelte
-
2src/lib/models/status.ts
-
4src/routes/indexdata.json.ts
22211
package-lock.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,27 @@ |
|||||
|
<script lang="ts"> |
||||
|
import Icon, { DEFAULT_ICON } from "./Icon.svelte"; |
||||
|
import type { IconName } from "./Icon.svelte"; |
||||
|
|
||||
|
export let name: IconName = DEFAULT_ICON; |
||||
|
</script> |
||||
|
|
||||
|
<div class="bgicon"> |
||||
|
<Icon name={name} /> |
||||
|
</div> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
div.bgicon { |
||||
|
position: relative; |
||||
|
top: 0.1em; |
||||
|
height: 0; |
||||
|
width: 2ch; |
||||
|
font-size: 3em; |
||||
|
margin-left: auto; |
||||
|
background: none; |
||||
|
pointer-events: none; |
||||
|
|
||||
|
:global(.icon) { |
||||
|
opacity: 0.10; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,14 @@ |
|||||
|
<script lang="ts"> |
||||
|
import Status from "$lib/models/status"; |
||||
|
|
||||
|
import EntryBgIcon from "./EntryBgIcon.svelte"; |
||||
|
import StatusColor from "./StatusColor.svelte"; |
||||
|
|
||||
|
export let condition: boolean; |
||||
|
</script> |
||||
|
|
||||
|
{#if condition} |
||||
|
<StatusColor status={Status.Completed}> |
||||
|
<EntryBgIcon name="check" /> |
||||
|
</StatusColor> |
||||
|
{/if} |
@ -0,0 +1,24 @@ |
|||||
|
<script lang="ts"> |
||||
|
import type Status from "$lib/models/status"; |
||||
|
import EntryBgIcon from "./EntryBgIcon.svelte"; |
||||
|
import type { IconName } from "./Icon.svelte"; |
||||
|
import StatusColor from "./StatusColor.svelte"; |
||||
|
|
||||
|
export let status: Status; |
||||
|
let icon: IconName |
||||
|
|
||||
|
$: switch (status) { |
||||
|
case 0: icon = "hourglass"; break; |
||||
|
case 1: icon = "lightbulb"; break; |
||||
|
case 2: icon = "calendar"; break; |
||||
|
case 3: icon = "spinner"; break; |
||||
|
case 4: icon = "check"; break; |
||||
|
case 5: icon = "times"; break; |
||||
|
case 6: icon = "times"; break; |
||||
|
default: icon = "question"; |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<StatusColor status={status}> |
||||
|
<EntryBgIcon name={icon} /> |
||||
|
</StatusColor> |
@ -0,0 +1,67 @@ |
|||||
|
<script lang="ts"> |
||||
|
import Icon from "fa-svelte"; |
||||
|
|
||||
|
export let name: IconName = "question"; |
||||
|
export let block: boolean = false; |
||||
|
</script> |
||||
|
|
||||
|
{#if block} |
||||
|
<div> |
||||
|
<Icon class="icon" icon={icons[name] || icons.question} /> |
||||
|
</div> |
||||
|
{:else} |
||||
|
<Icon class="icon" icon={icons[name] || icons.question} /> |
||||
|
{/if} |
||||
|
|
||||
|
<style> |
||||
|
div { |
||||
|
margin: auto; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<script lang="ts" context="module"> |
||||
|
import { faQuestion } from "@fortawesome/free-solid-svg-icons/faQuestion"; |
||||
|
import { faPlus } from "@fortawesome/free-solid-svg-icons/faPlus"; |
||||
|
import { faPen } from "@fortawesome/free-solid-svg-icons/faPen"; |
||||
|
import { faArchive } from "@fortawesome/free-solid-svg-icons/faArchive"; |
||||
|
import { faCheck } from "@fortawesome/free-solid-svg-icons/faCheck"; |
||||
|
import { faCog } from "@fortawesome/free-solid-svg-icons/faCog"; |
||||
|
import { faLink } from "@fortawesome/free-solid-svg-icons/faLink"; |
||||
|
import { faStar } from "@fortawesome/free-solid-svg-icons/faStar"; |
||||
|
import { faTimes } from "@fortawesome/free-solid-svg-icons/faTimes"; |
||||
|
import { faSpinner } from "@fortawesome/free-solid-svg-icons/faSpinner"; |
||||
|
import { faHourglass } from "@fortawesome/free-solid-svg-icons/faHourglass"; |
||||
|
import { faCalendar } from "@fortawesome/free-solid-svg-icons/faCalendar"; |
||||
|
import { faExpand } from "@fortawesome/free-solid-svg-icons/faExpand"; |
||||
|
import { faSearch } from "@fortawesome/free-solid-svg-icons/faSearch"; |
||||
|
import { faClock } from "@fortawesome/free-solid-svg-icons/faClock"; |
||||
|
import { faThumbtack } from "@fortawesome/free-solid-svg-icons/faThumbtack"; |
||||
|
import { faHistory } from "@fortawesome/free-solid-svg-icons/faHistory"; |
||||
|
import { faLightbulb } from "@fortawesome/free-solid-svg-icons/faLightbulb"; |
||||
|
|
||||
|
const icons = { |
||||
|
"clock": faClock, |
||||
|
"thumbtack": faThumbtack, |
||||
|
"history": faHistory, |
||||
|
"question": faQuestion, |
||||
|
"plus": faPlus, |
||||
|
"pen": faPen, |
||||
|
"archive": faArchive, |
||||
|
"check": faCheck, |
||||
|
"cog": faCog, |
||||
|
"link": faLink, |
||||
|
"star": faStar, |
||||
|
"times": faTimes, |
||||
|
"lightbulb": faLightbulb, |
||||
|
"spinner": faSpinner, |
||||
|
"hourglass": faHourglass, |
||||
|
"calendar": faCalendar, |
||||
|
"expand": faExpand, |
||||
|
"search": faSearch, |
||||
|
}; |
||||
|
|
||||
|
export type IconName = keyof typeof icons; |
||||
|
|
||||
|
export const iconNames = Object.keys(icons).sort() as IconName[]; |
||||
|
export const DEFAULT_ICON: IconName = "question"; |
||||
|
</script> |
@ -0,0 +1,44 @@ |
|||||
|
<script lang="ts"> |
||||
|
import type Status from "$lib/models/status"; |
||||
|
|
||||
|
export let status: Status; |
||||
|
</script> |
||||
|
|
||||
|
<span class="status-color status-{status}"><slot></slot></span> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
// Blocked = 0 |
||||
|
span.status-color.status-0 { |
||||
|
color: #78c9ff; |
||||
|
} |
||||
|
|
||||
|
// Available = 1 |
||||
|
span.status-color.status-1 { |
||||
|
color: #e7e55e; |
||||
|
} |
||||
|
|
||||
|
// Background = 2 |
||||
|
span.status-color.status-2 { |
||||
|
color: #e7a75e; |
||||
|
} |
||||
|
|
||||
|
// Active = 3 |
||||
|
span.status-color.status-3 { |
||||
|
color: #bdbdbd; |
||||
|
} |
||||
|
|
||||
|
// Completed = 4 |
||||
|
span.status-color.status-4 { |
||||
|
color: #78ff78; |
||||
|
} |
||||
|
|
||||
|
// Failed = 5 |
||||
|
span.status-color.status-5 { |
||||
|
color: #852a24; |
||||
|
} |
||||
|
|
||||
|
// Dropped = 6 |
||||
|
span.status-color.status-6 { |
||||
|
color: #e75ed0; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue