This commit is contained in:
2026-02-17 01:19:29 +00:00
parent 61fc1e9dbe
commit a1e416e894
12 changed files with 438 additions and 490 deletions
+6
View File
@@ -99,6 +99,7 @@
"sounds": "workspace:*", "sounds": "workspace:*",
"tailwind-merge": "^3.3.1", "tailwind-merge": "^3.3.1",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"themes": "workspace:*",
"three": "^0.182.0", "three": "^0.182.0",
"types": "workspace:*", "types": "workspace:*",
"vaul": "^1.1.2", "vaul": "^1.1.2",
@@ -239,6 +240,9 @@
"name": "sounds", "name": "sounds",
"version": "1.0.0", "version": "1.0.0",
}, },
"src/workspaces/themes": {
"name": "themes",
},
"src/workspaces/types": { "src/workspaces/types": {
"name": "types", "name": "types",
"version": "0.0.1", "version": "0.0.1",
@@ -1999,6 +2003,8 @@
"text-segmentation": ["text-segmentation@1.0.3", "", { "dependencies": { "utrie": "^1.0.2" } }, "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw=="], "text-segmentation": ["text-segmentation@1.0.3", "", { "dependencies": { "utrie": "^1.0.2" } }, "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw=="],
"themes": ["themes@workspace:src/workspaces/themes"],
"thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
"thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
+1
View File
@@ -117,6 +117,7 @@
"sonner": "^2.0.7", "sonner": "^2.0.7",
"sounds": "workspace:*", "sounds": "workspace:*",
"tailwind-merge": "^3.3.1", "tailwind-merge": "^3.3.1",
"themes": "workspace:*",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"three": "^0.182.0", "three": "^0.182.0",
"types": "workspace:*", "types": "workspace:*",
+1
View File
@@ -6,6 +6,7 @@ import { ThemeProvider } from '@/components/ui/ThemeProvider';
import { Toaster } from '@/components/ui/toaster'; import { Toaster } from '@/components/ui/toaster';
import { Toaster as Sonner } from 'sonner'; import { Toaster as Sonner } from 'sonner';
import { TooltipProvider } from '@/components/ui/tooltip'; import { TooltipProvider } from '@/components/ui/tooltip';
import 'themes/DuckPond/client';
import './styles/index.css'; import './styles/index.css';
const headLinks = [ const headLinks = [
+6 -384
View File
@@ -16,12 +16,12 @@
@theme { @theme {
/* Duck Landing Page Colors */ /* Duck Landing Page Colors */
--color-duck-yellow: #F4C430; --color-duck-yellow: var(--duck-yellow);
--color-duck-orange: #EA580C; --color-duck-orange: var(--duck-orange);
--color-duck-teal: #0891B2; --color-duck-teal: var(--duck-teal);
--color-duck-forest: #166534; --color-duck-forest: var(--duck-forest);
--color-duck-dark: #14532D; --color-duck-dark: var(--duck-dark);
--color-duck-beige: #E7D4B5; --color-duck-beige: var(--duck-beige);
--color-border: hsl(var(--border)); --color-border: hsl(var(--border));
--color-input: hsl(var(--input)); --color-input: hsl(var(--input));
@@ -120,119 +120,6 @@
} }
} }
/* Definition of the design system. All colors, gradients, fonts, etc should be defined here.
All colors MUST be HSL.
*/
@layer base {
:root {
--cta: 211 74.77% 45.58%;
--cta-foreground: 0 0% 100%;
--naturegreen: 145 79% 38%;
--naturegreen-foreground: 0 0% 100%;
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 211 74.77% 45.58%;
--accent-foreground: 0 0% 0%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
--sidebar-primary-foreground: 0 0% 98%;
--sidebar-accent: 240 4.8% 95.9%;
--sidebar-accent-foreground: 240 5.9% 10%;
--sidebar-border: 220 13% 91%;
--sidebar-ring: 217.2 91.2% 59.8%;
/* Hover Effect */
--ctahover: 211 91.53% 34.82%;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 211 82% 64%;
--accent-foreground: 0 0% 0%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 240 3.7% 15.9%;
--sidebar-accent-foreground: 240 4.8% 95.9%;
--sidebar-border: 240 3.7% 15.9%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
}
@layer base { @layer base {
* { * {
@apply border-border; @apply border-border;
@@ -259,268 +146,3 @@ All colors MUST be HSL.
.file-grid [data-file-item][data-state="open"] .file-item-ellipsis { .file-grid [data-file-item][data-state="open"] .file-item-ellipsis {
opacity: 1 !important; opacity: 1 !important;
} }
/* File Viewer — Markdown Prose */
.file-viewer-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.file-viewer-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.file-viewer-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.file-viewer-md h4, .file-viewer-md h5, .file-viewer-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.file-viewer-md p {
margin: 0.75em 0;
}
.file-viewer-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.file-viewer-md a:hover {
color: #0e7490;
}
.file-viewer-md strong {
font-weight: 600;
color: #14532d;
}
.file-viewer-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.file-viewer-md ul, .file-viewer-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.file-viewer-md li {
margin: 0.25em 0;
}
.file-viewer-md li::marker {
color: #0891b2;
}
.file-viewer-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.file-viewer-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.file-viewer-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.file-viewer-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.file-viewer-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.file-viewer-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
/* Skills — Markdown Prose */
.skill-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.skill-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.skill-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.skill-md h4, .skill-md h5, .skill-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.skill-md p {
margin: 0.75em 0;
}
.skill-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.skill-md a:hover {
color: #0e7490;
}
.skill-md strong {
font-weight: 600;
color: #14532d;
}
.skill-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.skill-md ul, .skill-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.skill-md li {
margin: 0.25em 0;
}
.skill-md li::marker {
color: #0891b2;
}
.skill-md code {
padding: 0.15em 0.4em;
border-radius: 0.25rem;
background: rgba(8, 145, 178, 0.1);
color: #0891b2;
font-size: 0.85em;
font-family: ui-monospace, monospace;
}
.skill-md pre {
margin: 1em 0;
padding: 1em;
border-radius: 0.5rem;
background: #0d1117;
overflow-x: auto;
font-size: 0.875rem;
line-height: 1.6;
}
.skill-md pre code {
padding: 0;
border-radius: 0;
background: none;
color: #e6edf3;
font-size: inherit;
}
.skill-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.skill-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.skill-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.skill-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.skill-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.skill-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
+3 -3
View File
@@ -2,10 +2,10 @@ import type { CSSProperties, ComponentPropsWithoutRef } from 'react';
import { cn } from 'helpers/cn'; import { cn } from 'helpers/cn';
export const cardStyle = (overrides?: CSSProperties): CSSProperties => ({ export const cardStyle = (overrides?: CSSProperties): CSSProperties => ({
backgroundColor: 'rgba(255, 255, 255, 0.9)', backgroundColor: 'var(--card-bg)',
backgroundImage: ` backgroundImage: `
linear-gradient(to right, rgba(20, 83, 45, 0.08) 1px, transparent 1px), linear-gradient(to right, var(--card-grid-color) 1px, transparent 1px),
linear-gradient(to bottom, rgba(20, 83, 45, 0.08) 1px, transparent 1px) linear-gradient(to bottom, var(--card-grid-color) 1px, transparent 1px)
`, `,
backgroundSize: '20px 20px', backgroundSize: '20px 20px',
...overrides, ...overrides,
-103
View File
@@ -2,109 +2,6 @@
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
/* BLUE */
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 221.2 83.2% 53.3%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--success: 142.1 76.2% 36.3%;
--success-foreground: 355.7 100% 97.3%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 221.2 83.2% 53.3%;
--radius: 0.5rem;
--sidebar-border: none;
--sidebar-shadow: none;
--sidebar-width-icon: 10rem;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 217.2 91.2% 59.8%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--success: 142.1 76.2% 36.3%;
--success-foreground: 355.7 100% 97.3%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 224.3 76.3% 48%;
}
}
/* GREEN */
/* @layer base {
:root {
--background: 0 0% 100%;
--foreground: 240 10% 3.9%;
--card: 0 0% 100%;
--card-foreground: 240 10% 3.9%;
--popover: 0 0% 100%;
--popover-foreground: 240 10% 3.9%;
--primary: 142.1 76.2% 36.3%;
--primary-foreground: 355.7 100% 97.3%;
--secondary: 240 4.8% 95.9%;
--secondary-foreground: 240 5.9% 10%;
--muted: 240 4.8% 95.9%;
--muted-foreground: 240 3.8% 46.1%;
--accent: 240 4.8% 95.9%;
--accent-foreground: 240 5.9% 10%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 0 0% 98%;
--border: 240 5.9% 90%;
--input: 240 5.9% 90%;
--ring: 142.1 76.2% 36.3%;
--radius: 0.5rem;
}
.dark {
--background: 20 14.3% 4.1%;
--foreground: 0 0% 95%;
--card: 24 9.8% 10%;
--card-foreground: 0 0% 95%;
--popover: 0 0% 9%;
--popover-foreground: 0 0% 95%;
--primary: 142.1 70.6% 45.3%;
--primary-foreground: 144.9 80.4% 10%;
--secondary: 240 3.7% 15.9%;
--secondary-foreground: 0 0% 98%;
--muted: 0 0% 15%;
--muted-foreground: 240 5% 64.9%;
--accent: 12 6.5% 15.1%;
--accent-foreground: 0 0% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 85.7% 97.3%;
--border: 240 3.7% 15.9%;
--input: 240 3.7% 15.9%;
--ring: 142.4 71.8% 29.2%;
}
} */
@layer base { @layer base {
* { * {
@apply border-border; @apply border-border;
+2
View File
@@ -0,0 +1,2 @@
import './variables.css';
import './prose.css';
+1
View File
@@ -0,0 +1 @@
export const meta = { id: 'DuckPond', name: 'Duck Pond', description: 'Warm greens and teals inspired by a forest pond.' };
+264
View File
@@ -0,0 +1,264 @@
/* File Viewer — Markdown Prose */
.file-viewer-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.file-viewer-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.file-viewer-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.file-viewer-md h4, .file-viewer-md h5, .file-viewer-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.file-viewer-md p {
margin: 0.75em 0;
}
.file-viewer-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.file-viewer-md a:hover {
color: #0e7490;
}
.file-viewer-md strong {
font-weight: 600;
color: #14532d;
}
.file-viewer-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.file-viewer-md ul, .file-viewer-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.file-viewer-md li {
margin: 0.25em 0;
}
.file-viewer-md li::marker {
color: #0891b2;
}
.file-viewer-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.file-viewer-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.file-viewer-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.file-viewer-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.file-viewer-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.file-viewer-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
/* Skills — Markdown Prose */
.skill-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.skill-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.skill-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.skill-md h4, .skill-md h5, .skill-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.skill-md p {
margin: 0.75em 0;
}
.skill-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.skill-md a:hover {
color: #0e7490;
}
.skill-md strong {
font-weight: 600;
color: #14532d;
}
.skill-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.skill-md ul, .skill-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.skill-md li {
margin: 0.25em 0;
}
.skill-md li::marker {
color: #0891b2;
}
.skill-md code {
padding: 0.15em 0.4em;
border-radius: 0.25rem;
background: rgba(8, 145, 178, 0.1);
color: #0891b2;
font-size: 0.85em;
font-family: ui-monospace, monospace;
}
.skill-md pre {
margin: 1em 0;
padding: 1em;
border-radius: 0.5rem;
background: #0d1117;
overflow-x: auto;
font-size: 0.875rem;
line-height: 1.6;
}
.skill-md pre code {
padding: 0;
border-radius: 0;
background: none;
color: #e6edf3;
font-size: inherit;
}
.skill-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.skill-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.skill-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.skill-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.skill-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.skill-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
@@ -0,0 +1,144 @@
@layer base {
:root {
/* Duck brand hex colors */
--duck-yellow: #F4C430;
--duck-orange: #EA580C;
--duck-teal: #0891B2;
--duck-forest: #166534;
--duck-dark: #14532D;
--duck-beige: #E7D4B5;
/* Card component */
--card-bg: rgba(255, 255, 255, 0.9);
--card-grid-color: rgba(20, 83, 45, 0.08);
--cta: 211 74.77% 45.58%;
--cta-foreground: 0 0% 100%;
--naturegreen: 145 79% 38%;
--naturegreen-foreground: 0 0% 100%;
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 211 74.77% 45.58%;
--accent-foreground: 0 0% 0%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--success: 142.1 76.2% 36.3%;
--success-foreground: 355.7 100% 97.3%;
--brand: 145 79% 38%;
--brand-foreground: 0 0% 100%;
--brand-muted: 145 40% 90%;
--warning: 43 96% 56%;
--warning-foreground: 0 0% 0%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
--sidebar-primary-foreground: 0 0% 98%;
--sidebar-accent: 240 4.8% 95.9%;
--sidebar-accent-foreground: 240 5.9% 10%;
--sidebar-border: 220 13% 91%;
--sidebar-ring: 217.2 91.2% 59.8%;
/* Hover Effect */
--ctahover: 211 91.53% 34.82%;
}
.dark {
/* Card component */
--card-bg: rgba(10, 20, 15, 0.9);
--card-grid-color: rgba(200, 230, 210, 0.06);
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 211 82% 64%;
--accent-foreground: 0 0% 0%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--success: 142.1 76.2% 36.3%;
--success-foreground: 355.7 100% 97.3%;
--brand: 145 60% 45%;
--brand-foreground: 0 0% 100%;
--brand-muted: 145 30% 25%;
--warning: 43 96% 56%;
--warning-foreground: 0 0% 0%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 240 3.7% 15.9%;
--sidebar-accent-foreground: 240 4.8% 95.9%;
--sidebar-border: 240 3.7% 15.9%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
}
+1
View File
@@ -0,0 +1 @@
export const themes = [{ id: 'DuckPond', name: 'Duck Pond' }] as const;
+9
View File
@@ -0,0 +1,9 @@
{
"name": "themes",
"private": true,
"exports": {
".": "./index.ts",
"./DuckPond": "./DuckPond/index.ts",
"./DuckPond/client": "./DuckPond/client.ts"
}
}