Skip to content
This repository has been archived by the owner on May 28, 2024. It is now read-only.

Commit

Permalink
Merge pull request #212 from starboardcoop/ui/donate
Browse files Browse the repository at this point in the history
ui/donate
  • Loading branch information
dillonfagan authored Jan 9, 2023
2 parents 4c87f80 + c1cf993 commit b372f05
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 20 deletions.
2 changes: 0 additions & 2 deletions src/lib/Foundation.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
<script context="module">
export { default as Button } from "./foundation/Button.svelte";
export { default as ButtonTheme } from "./foundation/buttonTheme";
export { default as Card } from "./foundation/Card.svelte";
export { default as Column } from "./foundation/Column.svelte";
export { default as Image } from "./foundation/Image.svelte";
Expand Down
22 changes: 13 additions & 9 deletions src/lib/foundation/Button.svelte
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
<script lang="ts">
import { createEventDispatcher } from "svelte";
import ButtonTheme from './buttonTheme';
import { ButtonSize, ButtonTheme } from './button';
export let text: string = 'Button';
export let icon: string = null;
export let selectedIcon: string = null;
export let selected: boolean = false;
export let theme: ButtonTheme = ButtonTheme.default;
export let size: ButtonSize = ButtonSize.normal;
export let flat: boolean = false;
const padding = size === ButtonSize.normal ? 'px-3 py-1' : 'px-2';
const isToggled = (providedTheme: ButtonTheme) => theme === providedTheme && selected;
Expand All @@ -21,16 +25,16 @@
on:click={onClick}
class:default={theme === ButtonTheme.default}
class:defaultToggled={isToggled(ButtonTheme.default)}
class:alert={theme === ButtonTheme.alert}
class:alertToggled={isToggled(ButtonTheme.alert)}
class="px-3 py-1 rounded brutal hovers font-bold font-display outline-none">
class:primary={theme === ButtonTheme.primary}
class:primaryToggled={isToggled(ButtonTheme.primary)}
class="{padding} rounded brutal {!flat && 'hovers'} font-bold font-display outline-none">
{#if icon && !selected}
<img class="icon" src={icon} alt={text} />
{/if}
{#if selectedIcon && selected}
<img class="icon" src={selectedIcon} alt={text} />
{/if}
{text}
<slot />
</button>

<style lang="postcss">
Expand All @@ -42,12 +46,12 @@
@apply bg-primary !important;
}
button.alert {
@apply bg-red-100;
button.primary {
@apply bg-primary;
}
button.alertToggled {
@apply bg-red-300 !important;
button.primaryToggled {
@apply bg-primary;
}
img.icon {
Expand Down
9 changes: 9 additions & 0 deletions src/lib/foundation/button.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export enum ButtonTheme {
default,
primary
}

export enum ButtonSize {
normal,
small
}
6 changes: 0 additions & 6 deletions src/lib/foundation/buttonTheme.ts

This file was deleted.

4 changes: 3 additions & 1 deletion src/lib/things/Thing.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
let className = "";
export { className as class };
const donateURL = `https://airtable.com/shrwMSrzvSLpQgQWC?prefill_Description=${encodeURIComponent(thing.name)}`;
</script>

<div class="flex flex-col {className}">
Expand All @@ -17,7 +19,7 @@
{#if thing.stock > 0}
<div class="px-2 py-1 rounded bg-green-300 w-max font-medium text-sm">Available</div>
{:else}
<div class="px-2 py-1 rounded bg-yellow-300 w-max font-medium text-sm">Wish List</div>
<a class="px-2 py-1 rounded brutal hover:hovers-static bg-primary w-max font-bold font-display text-sm" href={donateURL} target="_blank" rel="noreferrer">Donate</a>
{/if}
</div>
</div>
Expand Down
13 changes: 11 additions & 2 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import { onMount } from "svelte";
import { filter } from "$lib/filters";
import Things from "$lib/things/Things.svelte";
import { Button, ButtonTheme, TextInput } from "$lib/Foundation.svelte";
import { Button, TextInput } from "$lib/Foundation.svelte";
import { ButtonTheme } from "$lib/foundation/button";
import LoadingIndicator from "$lib/LoadingIndicator.svelte";
import Chooser from "$lib/foundation/Chooser.svelte";
import EyeOffIcon from "$lib/icons/eye-off.svg";
Expand Down Expand Up @@ -44,7 +45,15 @@
<div class="flex flex-row gap-4 justify-between md:justify-start">
<Chooser on:chosen={filterThingsByCategory} options={data.categories} />
{#key showingOnlyWishList}
<Button icon={EyeOffIcon} selectedIcon={EyeIcon} on:click={toggleWishList} theme={ButtonTheme.default} text="Wish List" selected={showingOnlyWishList} />
<Button
icon={EyeOffIcon}
selectedIcon={EyeIcon}
on:click={toggleWishList}
theme={ButtonTheme.default}
text="Wish List"
selected={showingOnlyWishList}>
Wish List
</Button>
{/key}
</div>
<TextInput
Expand Down

0 comments on commit b372f05

Please sign in to comment.