Skip to content

Instantly share code, notes, and snippets.

@pekkis
Last active March 7, 2025 09:38
Show Gist options
  • Select an option

  • Save pekkis/df29d940946ed1c05d9e4036b7409511 to your computer and use it in GitHub Desktop.

Select an option

Save pekkis/df29d940946ed1c05d9e4036b7409511 to your computer and use it in GitHub Desktop.
// suomioy/resources/css/app.css
@import 'tailwindcss';
@plugin 'tailwindcss-animate';
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
@custom-variant dark (&:is(.dark *));
@theme {
--font-sans:
'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
}
/*
The default border color has changed to `currentColor` in Tailwind CSS v4,
so we've added these compatibility styles to make sure everything still
looks the same as it did with Tailwind CSS v3.
If we ever want to remove these styles, we need to add an explicit border
color utility to any element that depends on these defaults.
*/
@layer base {
*,
::after,
::before,
::backdrop,
::file-selector-button {
border-color: var(--color-gray-200, currentColor);
}
}
:root {
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--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);
--destructive-foreground: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.87 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);
--radius: 0.625rem;
--sidebar: oklch(0.985 0 0);
--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.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.87 0 0);
}
.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.145 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.145 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.985 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.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.396 0.141 25.723);
--destructive-foreground: oklch(0.637 0.237 25.331);
--border: oklch(0.269 0 0);
--input: oklch(0.269 0 0);
--ring: oklch(0.439 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.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.985 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(0.269 0 0);
--sidebar-ring: oklch(0.439 0 0);
}
@layer base {
* {
@apply border-border;
}
body {
@apply text-foreground bg-gray-200;
}
}
// resources/js/layouts/basic-layout.tsx
import { FC, ReactNode } from 'react';
type Props = {
children: ReactNode;
aside?: ReactNode;
};
const BasicLayout: FC<Props> = ({ aside, children }) => {
return (
<div className="bg-background container mx-auto my-4 grid grid-cols-1 gap-4 rounded-2xl p-4 md:grid-cols-3">
<header className="col-span-1 bg-amber-300 md:col-span-3">Suomen nimet 2025 PRO</header>
<main className="col-span-1 bg-amber-500 md:col-span-2">{children}</main>
<aside className="col-span-1 bg-blue-300 md:col-span-1">{aside}</aside>
<footer className="col-span-1 bg-green-300 md:col-span-3">Footer</footer>
</div>
);
};
export default BasicLayout;
// resources/js/pages/surname.tsx
import BasicLayout from '@/layouts/basic-layout';
import { FC } from 'react';
// TODO! We will have props soon.
type Props = {
name: {
name: string;
amount: number;
};
};
const Surname: FC<Props> = ({ name }) => {
return (
<BasicLayout aside={<div>Mahtisivupalkki</div>}>
<div>
<h1>
{name.name} ({name.amount} kpl)
</h1>
</div>
</BasicLayout>
);
};
export default Surname;
// resources/js/pages/surnames.tsx
import BasicLayout from '@/layouts/basic-layout';
import { Link } from '@inertiajs/react';
import { FC } from 'react';
// TODO! We will have props soon.
type Props = {
names: {
name: string;
amount: number;
}[];
};
// array / lista
/*
const arrayLiteral = ['foo', 'bar'];
// objekti (hashmap)
const objectLiteral = {
foo: 'bar',
babel: 'webpack',
};
*/
// a header
// footer
// main area
// sidebar
const Surnames: FC<Props> = ({ names }) => {
return (
<BasicLayout>
<h1>Suosituimmat sukunimet!</h1>
<table>
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
{names.map((name, i) => (
<tr key={name.name}>
<td>{i + 1}</td>
<td>
<Link className="text-blue-700 underline" href={route('surname', { name: name.name })}>
{name.name}
</Link>
</td>
<td>{name.amount}</td>
</tr>
))}
</tbody>
</table>
</BasicLayout>
);
};
export default Surnames;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment