Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions components.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,18 @@
"tailwind": {
"config": "tailwind.config.ts",
"css": "src/app/globals.css",
"baseColor": "zinc",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"rtl": false,
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
}
"registries": {}
}
73 changes: 40 additions & 33 deletions src/app/globals.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
@import "tailwindcss";
/*
---break---
*/
@plugin "tailwindcss-animate";
@import "tw-animate-css";
@import "fumadocs-ui/css/neutral.css";
@import "fumadocs-ui/css/preset.css";
Expand Down Expand Up @@ -91,6 +95,9 @@
}

}
--radius-2xl: calc(var(--radius) + 8px);
--radius-3xl: calc(var(--radius) + 12px);
--radius-4xl: calc(var(--radius) + 16px)

}
/*
Expand All @@ -101,37 +108,35 @@
--theme-toggle-sun-icon-display: block;
--theme-toggle-moon-icon-display: none;
--radius: 0.625rem;
--background: oklch(1 0 0);
--foreground: oklch(0.141 0.005 285.823);
--card: oklch(1 0 0);
--card-foreground: oklch(0.141 0.005 285.823);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.141 0.005 285.823);
--primary: oklch(0.21 0.006 285.885);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.967 0.001 286.375);
--secondary-foreground: oklch(0.21 0.006 285.885);
--muted: oklch(0.967 0.001 286.375);
--muted-foreground: oklch(0.552 0.016 285.938);
--accent: oklch(0.967 0.001 286.375);
--accent-foreground: oklch(0.21 0.006 285.885);
--secondary: oklch(0.97 0 0);
--secondary-foreground: oklch(0.205 0 0);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
--accent: oklch(0.97 0 0);
--accent-foreground: oklch(0.205 0 0);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.92 0.004 286.32);
--input: oklch(0.92 0.004 286.32);
--ring: oklch(0.705 0.015 286.067);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.141 0.005 285.823);
--sidebar-primary: oklch(0.21 0.006 285.885);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.967 0.001 286.375);
--sidebar-accent-foreground: oklch(0.21 0.006 285.885);
--sidebar-border: oklch(0.92 0.004 286.32);
--sidebar-ring: oklch(0.705 0.015 286.067);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
--lp-primary: oklch(0.205 0 0);
--lp-primary-foreground: oklch(0.985 0 0);
--lp-accent: oklch(0.269 0 0);
Expand All @@ -155,6 +160,8 @@
hsla(0, 0%, 91%, 0.74) 100%
);
--lp-timeline-buffered-color: oklch(0.985 0 0 / 0.4);
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);

}
/*
Expand All @@ -165,37 +172,37 @@
--sidebar-docs: #000000;
--theme-toggle-sun-icon-display: none;
--theme-toggle-moon-icon-display: block;
--background: oklch(0% 0 0);
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.21 0.006 285.885);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0% 0 0);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.92 0.004 286.32);
--primary-foreground: oklch(0.21 0.006 285.885);
--secondary: oklch(0.274 0.006 286.033);
--primary: oklch(0.922 0 0);
--primary-foreground: oklch(0.205 0 0);
--secondary: oklch(0.269 0 0);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.274 0.006 286.033);
--muted-foreground: oklch(0.705 0.015 286.067);
--accent: oklch(0.274 0.006 286.033);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: oklch(0.269 0 0);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(55.6% 0 0);
--ring: oklch(0.556 0 0);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.21 0.006 285.885);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.274 0.006 286.033);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.552 0.016 285.938);
--sidebar-ring: oklch(0.556 0 0);
--lp-primary: oklch(0.205 0 0);
--lp-primary-foreground: oklch(0.985 0 0);
--lp-accent: oklch(0.97 0 0);
Expand Down
98 changes: 3 additions & 95 deletions src/lib/utils.ts
Original file line number Diff line number Diff line change
@@ -1,98 +1,6 @@
import type React from "react";
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"

export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
return twMerge(clsx(inputs))
}

/**
* Type-safe event handler utility function
* Provides autocomplete for available events based on element type
*/

// // Helper type to extract valid event names from an element type
// type EventNames<T> = {
// [K in keyof T]: K extends `on${infer E}` ? Lowercase<E> : never
// }[keyof T]

// // Helper type to get the event type for a given event name and element
// type EventType<T, E> = T extends {
// addEventListener: (event: any, handler: infer H) => any
// }
// ? H extends (event: infer Event) => any
// ? Event
// : never
// : never

/**
* Overloaded function for React synthetic events
*/
export function on<R extends HTMLElement>(
element: EventTarget,
events: string | string[],
callback: (event: React.SyntheticEvent<R>) => void,
): EventTarget;

/**
* Implementation
*/
export function on(
element: EventTarget,
events: string | string[],
callback: (event: any) => void,
): EventTarget {
if (Array.isArray(events)) {
events.forEach((event) => {
element.addEventListener(event, callback as EventListener);
});
} else {
element.addEventListener(events, callback as EventListener);
}

return element;
}

/**
* Overloaded function for React synthetic events
*/
export function off<R extends HTMLElement>(
element: EventTarget,
events: string | string[],
callback: (event: React.SyntheticEvent<R>) => void,
): EventTarget;

/**
* Implementation
*/
export function off(
element: EventTarget,
events: string | string[],
callback: (event: any) => void,
): EventTarget {
if (Array.isArray(events)) {
events.forEach((event) => {
element.removeEventListener(event, callback as EventListener);
});
} else {
element.removeEventListener(events, callback as EventListener);
}

return element;
}

/**
* No-op function
* @returns undefined
*/
export function noop() {
// noop
}

export function toFixedNumber(num: number, digits: number, base = 10) {
const pow = Math.pow(base, digits);
return Math.round(num * pow) / pow;
}
export function absoluteUrl(path: string) {
return `${process.env.NEXT_PUBLIC_APP_URL}${path}`;
}