Files
classroomio/apps/dashboard/src/lib/components/OrgSelector/OrgSelectorItem.svelte
T
Rotimi Bestandemmanuel fcd0bcc656 feat: dashboard billing (#193)
* feat: move plans into sharable json

* remove unused code

* update pnpm lock

* update plans.json

* implement early adopter pricing

* docs: update meta title and description

* Finished the UI for upgrading plans

* Updated the pricing plans

* Updated the cards ui

* use relative import

* improve styling of upgrade plan card

* styling improvements, lemonsqueezy setup

* trigger lemonsqueezy payment and add webhook

* update pnpm lock

* add logout route

* feat: complete billing functionality

* generate lock file

* make crypto false on browser

* feat: adding upgrade prompts to org

* chore: add upgrade icon to upload video

* feat: add upgrade prompt to certificate and settings

* feat: implement onboarding setup page (#229)

* working on the onboarding setup

* working on the onboarding page

* Almost done with the onboarding UI

* finished the UI of the onBoarding setup

* finished the UI of the onBoarding setup

* Implementing the functions to carryout the logic of updating the UI onmount if a user has carried out a certain step or not

* Implementing the functions to carryout the logic of updating the UI onmount if a user has carried out a certain step or not

* making some chnages

* finished the onBoarding task

* updated some logic

* Removed the uneeded svg from the static folder

* fixed isCoursePublished not returning a boolean

* improved the setup link protection

* chore: make menuItems reactive

* improve formatting

* format supabase queries

---------

Co-authored-by: Rotimi Best <best@classroomio.com>

* revamp setup

* improve the upgrade experience

* migration

* feat: add lemonsqueezy customer portal

---------

Co-authored-by: emmanuel <chifez1@gmail.com>
2024-04-07 06:08:34 +01:00

60 lines
1.3 KiB
Svelte

<script>
import Avatar from '$lib/components/Avatar/index.svelte';
import TextChip from '../Chip/Text.svelte';
import ComingSoon from '../ComingSoon/index.svelte';
export let size = '';
export let hasDivider = false;
export let active = false;
export let avatar = '';
export let avatarText = '';
export let text = '';
export let onClick = () => {};
export let disabled = false;
</script>
<div class="relative">
<button
class="w-full {disabled &&
'opacity-25'} flex items-center text-start w-[14rem] py-1.5 px-2.5 {hasDivider &&
'border-b border-gray-100 dark:border-neutral-600'} {active &&
'bg-gray-200 dark:bg-neutral-700 dark:text-white'}"
on:click={disabled ? undefined : onClick}
>
{#if avatar}
<Avatar
src={avatar}
name={text}
shape="rounded-md"
width="w-[1.2rem]"
height="h-[1.2rem]"
className="mr-2"
/>
{:else if avatarText}
<TextChip
value={avatarText}
className="mr-2 bg-primary-200 font-medium text-xs dark:text-black"
{size}
/>
{/if}
{text}
</button>
{#if disabled}
<div class="coming-soon">
<ComingSoon />
</div>
{/if}
</div>
<style>
button {
min-height: 56px;
}
.coming-soon {
position: absolute;
top: 5px;
right: 5px;
}
</style>