added event helpers to ui libary, added Badge component, reordered Dashboard Components, splitted Event Admin page
@@ -3,9 +3,7 @@
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"exports": {
|
||||
"./button": "./src/button.tsx",
|
||||
"./card": "./src/card.tsx",
|
||||
"./code": "./src/code.tsx"
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint . --max-warnings 0",
|
||||
@@ -14,6 +12,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@repo/eslint-config": "*",
|
||||
"@repo/db": "*",
|
||||
"@repo/typescript-config": "*",
|
||||
"@turbo/gen": "^1.12.4",
|
||||
"@types/node": "^20.11.24",
|
||||
|
||||
4
packages/ui/src/.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare module "*.png" {
|
||||
const value: string;
|
||||
export = value;
|
||||
}
|
||||
28
packages/ui/src/Badge/Badge.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
import { BADGES } from "@repo/db";
|
||||
import P1 from "./p-1.png";
|
||||
import P2 from "./p-2.png";
|
||||
import P3 from "./p-3.png";
|
||||
import D1 from "./d-1.png";
|
||||
import D2 from "./d-2.png";
|
||||
import D3 from "./d-3.png";
|
||||
import DAY1 from "./day-1-member.png";
|
||||
|
||||
const BadgeImage = {
|
||||
[BADGES.P1]: P1,
|
||||
[BADGES.P2]: P2,
|
||||
[BADGES.P3]: P3,
|
||||
[BADGES.D1]: D1,
|
||||
[BADGES.D2]: D2,
|
||||
[BADGES.D3]: D3,
|
||||
[BADGES.DAY1]: DAY1,
|
||||
};
|
||||
|
||||
export const Badge = ({ name }: { name: BADGES }) => {
|
||||
const image = BadgeImage[name];
|
||||
|
||||
return (
|
||||
<span className="badge">
|
||||
<img src={image} />
|
||||
</span>
|
||||
);
|
||||
};
|
||||
BIN
packages/ui/src/Badge/d-1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
packages/ui/src/Badge/d-2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
packages/ui/src/Badge/d-3.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
packages/ui/src/Badge/day-1-member.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
packages/ui/src/Badge/p-1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
packages/ui/src/Badge/p-2.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
packages/ui/src/Badge/p-3.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
@@ -1,20 +0,0 @@
|
||||
"use client";
|
||||
|
||||
import { ReactNode } from "react";
|
||||
|
||||
interface ButtonProps {
|
||||
children: ReactNode;
|
||||
className?: string;
|
||||
appName: string;
|
||||
}
|
||||
|
||||
export const Button = ({ children, className, appName }: ButtonProps) => {
|
||||
return (
|
||||
<button
|
||||
className={className}
|
||||
onClick={() => alert(`Hello from your ${appName} app!`)}
|
||||
>
|
||||
{children}
|
||||
</button>
|
||||
);
|
||||
};
|
||||
@@ -1,27 +0,0 @@
|
||||
import { type JSX } from "react";
|
||||
|
||||
export function Card({
|
||||
className,
|
||||
title,
|
||||
children,
|
||||
href,
|
||||
}: {
|
||||
className?: string;
|
||||
title: string;
|
||||
children: React.ReactNode;
|
||||
href: string;
|
||||
}): JSX.Element {
|
||||
return (
|
||||
<a
|
||||
className={className}
|
||||
href={`${href}?utm_source=create-turbo&utm_medium=basic&utm_campaign=create-turbo"`}
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<h2>
|
||||
{title} <span>-></span>
|
||||
</h2>
|
||||
<p>{children}</p>
|
||||
</a>
|
||||
);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
import { type JSX } from "react";
|
||||
|
||||
export function Code({
|
||||
children,
|
||||
className,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
className?: string;
|
||||
}): JSX.Element {
|
||||
return <code className={className}>{children}</code>;
|
||||
}
|
||||
9
packages/ui/src/helper/event.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Event, Participant } from "@repo/db";
|
||||
|
||||
export const eventCompleted = (event: Event, participant?: Participant) => {
|
||||
if (!participant) return false;
|
||||
if (event.finisherMoodleCourseId && !participant.finisherMoodleCurseCompleted)
|
||||
return false;
|
||||
if (event.hasPresenceEvents && !participant.attended) return false;
|
||||
return true;
|
||||
};
|
||||
2
packages/ui/src/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from "./Badge/Badge";
|
||||
export * from "./helper/event";
|
||||
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"extends": "@repo/typescript-config/react-library.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
"outDir": "dist",
|
||||
"allowImportingTsExtensions": false
|
||||
},
|
||||
"include": ["src"],
|
||||
"include": ["src", "src/.d.ts"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
||||
|
||||