this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: recheck the full code nor calculator

+76 -94
+1 -1
.tangled/workflows/default.yml
··· 5 5 engine: "nixery" 6 6 7 7 dependencies: 8 - github:nixos/nixpkgs/b538aa0098dd632291cef20c1a451b889acb90e9: 8 + github:nixos/nixpkgs/4c1018dae018162ec878d42fec712642d214fdfa: 9 9 - biome 10 10 - nodejs 11 11
+1 -1
README.md
··· 1 1 # Very Good Tools 2 2 3 - It's juste my tools, nobody use it. 3 + A collection of simple, yet powerful tools built with Next.js and shadcn/ui.
+10 -2
biome.json
··· 1 1 { 2 - "$schema": "https://biomejs.dev/schemas/2.4.9/schema.json", 2 + "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", 3 3 "vcs": { 4 4 "enabled": true, 5 5 "clientKind": "git", ··· 38 38 "parser": { 39 39 "tailwindDirectives": true 40 40 } 41 - } 41 + }, 42 + "overrides": [ 43 + { 44 + "includes": ["src/components/ui/*"], 45 + "linter": { 46 + "enabled": false 47 + } 48 + } 49 + ] 42 50 }
+3 -3
flake.lock
··· 2 2 "nodes": { 3 3 "nixpkgs": { 4 4 "locked": { 5 - "lastModified": 1774709303, 6 - "narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=", 5 + "lastModified": 1775710090, 6 + "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=", 7 7 "owner": "nixos", 8 8 "repo": "nixpkgs", 9 - "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", 9 + "rev": "4c1018dae018162ec878d42fec712642d214fdfa", 10 10 "type": "github" 11 11 }, 12 12 "original": {
-1
next.config.ts
··· 1 1 import type { NextConfig } from "next"; 2 2 3 3 const nextConfig: NextConfig = { 4 - /* config options here */ 5 4 reactCompiler: true, 6 5 }; 7 6
+1 -1
package.json
··· 24 24 "tw-animate-css": "^1.4.0" 25 25 }, 26 26 "devDependencies": { 27 - "@biomejs/biome": "2.4.12", 27 + "@biomejs/biome": "2.4.10", 28 28 "@tailwindcss/postcss": "^4", 29 29 "@types/node": "^25", 30 30 "@types/react": "^19",
+44 -44
pnpm-lock.yaml
··· 46 46 version: 1.4.0 47 47 devDependencies: 48 48 '@biomejs/biome': 49 - specifier: 2.4.12 50 - version: 2.4.12 49 + specifier: 2.4.10 50 + version: 2.4.10 51 51 '@tailwindcss/postcss': 52 52 specifier: ^4 53 53 version: 4.2.2 ··· 232 232 '@types/react': 233 233 optional: true 234 234 235 - '@biomejs/biome@2.4.12': 236 - resolution: {integrity: sha512-Rro7adQl3NLq/zJCIL98eElXKI8eEiBtoeu5TbXF/U3qbjuSc7Jb5rjUbeHHcquDWeSf3HnGP7XI5qGrlRk/pA==} 235 + '@biomejs/biome@2.4.10': 236 + resolution: {integrity: sha512-xxA3AphFQ1geij4JTHXv4EeSTda1IFn22ye9LdyVPoJU19fNVl0uzfEuhsfQ4Yue/0FaLs2/ccVi4UDiE7R30w==} 237 237 engines: {node: '>=14.21.3'} 238 238 hasBin: true 239 239 240 - '@biomejs/cli-darwin-arm64@2.4.12': 241 - resolution: {integrity: sha512-BnMU4Pc3ciEVteVpZ0BK33MLr7X57F5w1dwDLDn+/iy/yTrA4Q/N2yftidFtsA4vrDh0FMXDpacNV/Tl3fbmng==} 240 + '@biomejs/cli-darwin-arm64@2.4.10': 241 + resolution: {integrity: sha512-vuzzI1cWqDVzOMIkYyHbKqp+AkQq4K7k+UCXWpkYcY/HDn1UxdsbsfgtVpa40shem8Kax4TLDLlx8kMAecgqiw==} 242 242 engines: {node: '>=14.21.3'} 243 243 cpu: [arm64] 244 244 os: [darwin] 245 245 246 - '@biomejs/cli-darwin-x64@2.4.12': 247 - resolution: {integrity: sha512-x9uJ0bI1rJsWICp3VH8w/5PnAVD3A7SqzDpbrfoUQX1QyWrK5jSU4fRLo/wSgGeplCivbxBRKmt5Xq4/nWvq8A==} 246 + '@biomejs/cli-darwin-x64@2.4.10': 247 + resolution: {integrity: sha512-14fzASRo+BPotwp7nWULy2W5xeUyFnTaq1V13Etrrxkrih+ez/2QfgFm5Ehtf5vSjtgx/IJycMMpn5kPd5ZNaA==} 248 248 engines: {node: '>=14.21.3'} 249 249 cpu: [x64] 250 250 os: [darwin] 251 251 252 - '@biomejs/cli-linux-arm64-musl@2.4.12': 253 - resolution: {integrity: sha512-FhfpkAAlKL6kwvcVap0Hgp4AhZmtd3YImg0kK1jd7C/aSoh4SfsB2f++yG1rU0lr8Y5MCFJrcSkmssiL9Xnnig==} 252 + '@biomejs/cli-linux-arm64-musl@2.4.10': 253 + resolution: {integrity: sha512-WrJY6UuiSD/Dh+nwK2qOTu8kdMDlLV3dLMmychIghHPAysWFq1/DGC1pVZx8POE3ZkzKR3PUUnVrtZfMfaJjyQ==} 254 254 engines: {node: '>=14.21.3'} 255 255 cpu: [arm64] 256 256 os: [linux] 257 257 libc: [musl] 258 258 259 - '@biomejs/cli-linux-arm64@2.4.12': 260 - resolution: {integrity: sha512-tOwuCuZZtKi1jVzbk/5nXmIsziOB6yqN8c9r9QM0EJYPU6DpQWf11uBOSCfFKKM4H3d9ZoarvlgMfbcuD051Pw==} 259 + '@biomejs/cli-linux-arm64@2.4.10': 260 + resolution: {integrity: sha512-7MH1CMW5uuxQ/s7FLST63qF8B3Hgu2HRdZ7tA1X1+mk+St4JOuIrqdhIBnnyqeyWJNI+Bww7Es5QZ0wIc1Cmkw==} 261 261 engines: {node: '>=14.21.3'} 262 262 cpu: [arm64] 263 263 os: [linux] 264 264 libc: [glibc] 265 265 266 - '@biomejs/cli-linux-x64-musl@2.4.12': 267 - resolution: {integrity: sha512-dwTIgZrGutzhkQCuvHynCkyW6hJxUuyZqKKO0YNfaS2GUoRO+tOvxXZqZB6SkWAOdfZTzwaw8IEdUnIkHKHoew==} 266 + '@biomejs/cli-linux-x64-musl@2.4.10': 267 + resolution: {integrity: sha512-kDTi3pI6PBN6CiczsWYOyP2zk0IJI08EWEQyDMQWW221rPaaEz6FvjLhnU07KMzLv8q3qSuoB93ua6inSQ55Tw==} 268 268 engines: {node: '>=14.21.3'} 269 269 cpu: [x64] 270 270 os: [linux] 271 271 libc: [musl] 272 272 273 - '@biomejs/cli-linux-x64@2.4.12': 274 - resolution: {integrity: sha512-8pFeAnLU9QdW9jCIslB/v82bI0lhBmz2ZAKc8pVMFPO0t0wAHsoEkrUQUbMkIorTRIjbqyNZHA3lEXavsPWYSw==} 273 + '@biomejs/cli-linux-x64@2.4.10': 274 + resolution: {integrity: sha512-tZLvEEi2u9Xu1zAqRjTcpIDGVtldigVvzug2fTuPG0ME/g8/mXpRPcNgLB22bGn6FvLJpHHnqLnwliOu8xjYrg==} 275 275 engines: {node: '>=14.21.3'} 276 276 cpu: [x64] 277 277 os: [linux] 278 278 libc: [glibc] 279 279 280 - '@biomejs/cli-win32-arm64@2.4.12': 281 - resolution: {integrity: sha512-B0DLnx0vA9ya/3v7XyCaP+/lCpnbWbMOfUFFve+xb5OxyYvdHaS55YsSddr228Y+JAFk58agCuZTsqNiw2a6ig==} 280 + '@biomejs/cli-win32-arm64@2.4.10': 281 + resolution: {integrity: sha512-umwQU6qPzH+ISTf/eHyJ/QoQnJs3V9Vpjz2OjZXe9MVBZ7prgGafMy7yYeRGnlmDAn87AKTF3Q6weLoMGpeqdQ==} 282 282 engines: {node: '>=14.21.3'} 283 283 cpu: [arm64] 284 284 os: [win32] 285 285 286 - '@biomejs/cli-win32-x64@2.4.12': 287 - resolution: {integrity: sha512-yMckRzTyZ83hkk8iDFWswqSdU8tvZxspJKnYNh7JZr/zhZNOlzH13k4ecboU6MurKExCe2HUkH75pGI/O2JwGA==} 286 + '@biomejs/cli-win32-x64@2.4.10': 287 + resolution: {integrity: sha512-aW/JU5GuyH4uxMrNYpoC2kjaHlyJGLgIa3XkhPEZI0uKhZhJZU8BuEyJmvgzSPQNGozBwWjC972RaNdcJ9KyJg==} 288 288 engines: {node: '>=14.21.3'} 289 289 cpu: [x64] 290 290 os: [win32] ··· 1303 1303 headers-polyfill@4.0.3: 1304 1304 resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} 1305 1305 1306 - hono@4.12.12: 1307 - resolution: {integrity: sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q==} 1306 + hono@4.12.14: 1307 + resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==} 1308 1308 engines: {node: '>=16.9.0'} 1309 1309 1310 1310 http-errors@2.0.1: ··· 2421 2421 optionalDependencies: 2422 2422 '@types/react': 19.2.14 2423 2423 2424 - '@biomejs/biome@2.4.12': 2424 + '@biomejs/biome@2.4.10': 2425 2425 optionalDependencies: 2426 - '@biomejs/cli-darwin-arm64': 2.4.12 2427 - '@biomejs/cli-darwin-x64': 2.4.12 2428 - '@biomejs/cli-linux-arm64': 2.4.12 2429 - '@biomejs/cli-linux-arm64-musl': 2.4.12 2430 - '@biomejs/cli-linux-x64': 2.4.12 2431 - '@biomejs/cli-linux-x64-musl': 2.4.12 2432 - '@biomejs/cli-win32-arm64': 2.4.12 2433 - '@biomejs/cli-win32-x64': 2.4.12 2426 + '@biomejs/cli-darwin-arm64': 2.4.10 2427 + '@biomejs/cli-darwin-x64': 2.4.10 2428 + '@biomejs/cli-linux-arm64': 2.4.10 2429 + '@biomejs/cli-linux-arm64-musl': 2.4.10 2430 + '@biomejs/cli-linux-x64': 2.4.10 2431 + '@biomejs/cli-linux-x64-musl': 2.4.10 2432 + '@biomejs/cli-win32-arm64': 2.4.10 2433 + '@biomejs/cli-win32-x64': 2.4.10 2434 2434 2435 - '@biomejs/cli-darwin-arm64@2.4.12': 2435 + '@biomejs/cli-darwin-arm64@2.4.10': 2436 2436 optional: true 2437 2437 2438 - '@biomejs/cli-darwin-x64@2.4.12': 2438 + '@biomejs/cli-darwin-x64@2.4.10': 2439 2439 optional: true 2440 2440 2441 - '@biomejs/cli-linux-arm64-musl@2.4.12': 2441 + '@biomejs/cli-linux-arm64-musl@2.4.10': 2442 2442 optional: true 2443 2443 2444 - '@biomejs/cli-linux-arm64@2.4.12': 2444 + '@biomejs/cli-linux-arm64@2.4.10': 2445 2445 optional: true 2446 2446 2447 - '@biomejs/cli-linux-x64-musl@2.4.12': 2447 + '@biomejs/cli-linux-x64-musl@2.4.10': 2448 2448 optional: true 2449 2449 2450 - '@biomejs/cli-linux-x64@2.4.12': 2450 + '@biomejs/cli-linux-x64@2.4.10': 2451 2451 optional: true 2452 2452 2453 - '@biomejs/cli-win32-arm64@2.4.12': 2453 + '@biomejs/cli-win32-arm64@2.4.10': 2454 2454 optional: true 2455 2455 2456 - '@biomejs/cli-win32-x64@2.4.12': 2456 + '@biomejs/cli-win32-x64@2.4.10': 2457 2457 optional: true 2458 2458 2459 2459 '@date-fns/tz@1.4.1': {} ··· 2497 2497 2498 2498 '@floating-ui/utils@0.2.11': {} 2499 2499 2500 - '@hono/node-server@1.19.14(hono@4.12.12)': 2500 + '@hono/node-server@1.19.14(hono@4.12.14)': 2501 2501 dependencies: 2502 - hono: 4.12.12 2502 + hono: 4.12.14 2503 2503 2504 2504 '@img/colour@1.1.0': 2505 2505 optional: true ··· 2647 2647 2648 2648 '@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)': 2649 2649 dependencies: 2650 - '@hono/node-server': 1.19.14(hono@4.12.12) 2650 + '@hono/node-server': 1.19.14(hono@4.12.14) 2651 2651 ajv: 8.18.0 2652 2652 ajv-formats: 3.0.1(ajv@8.18.0) 2653 2653 content-type: 1.0.5 ··· 2657 2657 eventsource-parser: 3.0.6 2658 2658 express: 5.2.1 2659 2659 express-rate-limit: 8.3.2(express@5.2.1) 2660 - hono: 4.12.12 2660 + hono: 4.12.14 2661 2661 jose: 6.2.2 2662 2662 json-schema-typed: 8.0.2 2663 2663 pkce-challenge: 5.0.1 ··· 3341 3341 3342 3342 headers-polyfill@4.0.3: {} 3343 3343 3344 - hono@4.12.12: {} 3344 + hono@4.12.14: {} 3345 3345 3346 3346 http-errors@2.0.1: 3347 3347 dependencies:
-24
src/app/clock/page.tsx
··· 1 - "use client"; 2 - 3 - import { useEffect, useState } from "react"; 4 - 5 - export default function ClockPage() { 6 - const [time, setTime] = useState(""); 7 - 8 - useEffect(() => { 9 - const timerId = setInterval(() => { 10 - setTime(new Date().toLocaleTimeString("en-US")); 11 - }, 1000); 12 - return () => clearInterval(timerId); 13 - }, []); 14 - 15 - return ( 16 - <main className="flex flex-1 items-center justify-center"> 17 - {time && ( 18 - <h1 className="text-7xl font-black tracking-tighter text-primary"> 19 - {time} 20 - </h1> 21 - )} 22 - </main> 23 - ); 24 - }
src/app/favicon.ico

This is a binary file and will not be displayed.

+8 -9
src/app/layout.tsx
··· 8 8 NavigationMenuItem, 9 9 NavigationMenuLink, 10 10 NavigationMenuList, 11 + navigationMenuTriggerStyle, 11 12 } from "@/components/ui/navigation-menu"; 12 13 import { cn } from "@/lib/utils"; 13 14 ··· 20 21 21 22 const navItems = [ 22 23 { href: "/", label: "Home" }, 23 - { href: "/clock", label: "Clock" }, 24 24 { href: "/calculator", label: "Calculator" }, 25 25 ]; 26 26 27 27 export default function RootLayout({ 28 28 children, 29 - }: Readonly<{ 30 - children: React.ReactNode; 31 - }>) { 29 + }: Readonly<{ children: React.ReactNode }>) { 32 30 return ( 33 31 <html 34 32 lang="en" ··· 42 40 enableSystem 43 41 disableTransitionOnChange 44 42 > 45 - <header className="p-4 flex justify-center"> 46 - <NavigationMenu> 43 + <header> 44 + <NavigationMenu className="mx-auto p-4"> 47 45 <NavigationMenuList> 48 46 {navItems.map((item) => ( 49 47 <NavigationMenuItem key={item.href}> 50 - <Link href={item.href} legacyBehavior passHref> 51 - <NavigationMenuLink>{item.label}</NavigationMenuLink> 52 - </Link> 48 + <NavigationMenuLink 49 + className={navigationMenuTriggerStyle()} 50 + render={<Link href={item.href}>{item.label}</Link>} 51 + /> 53 52 </NavigationMenuItem> 54 53 ))} 55 54 </NavigationMenuList>
+1 -1
src/app/page.tsx
··· 1 1 const HomePage = () => ( 2 - <main className="flex flex-1 flex-col items-center justify-center p-24 text-center"> 2 + <main className="flex-1 flex flex-col items-center justify-center"> 3 3 <h1 className="text-6xl font-extrabold tracking-tighter"> 4 4 <span className="bg-gradient-to-r from-blue-500 to-teal-400 bg-clip-text text-transparent"> 5 5 Very Good Tools
+1 -1
src/components/ui/card.tsx
··· 1 - import type * as React from "react"; 1 + import * as React from "react"; 2 2 3 3 import { cn } from "@/lib/utils"; 4 4
+1 -1
src/components/ui/field.tsx
··· 193 193 ...new Map(errors.map((error) => [error?.message, error])).values(), 194 194 ]; 195 195 196 - if (uniqueErrors?.length === 1) { 196 + if (uniqueErrors?.length == 1) { 197 197 return uniqueErrors[0]?.message; 198 198 } 199 199
+1 -1
src/components/ui/input-group.tsx
··· 1 1 "use client"; 2 2 3 3 import { cva, type VariantProps } from "class-variance-authority"; 4 - import type * as React from "react"; 4 + import * as React from "react"; 5 5 import { Button } from "@/components/ui/button"; 6 6 import { Input } from "@/components/ui/input"; 7 7 import { Textarea } from "@/components/ui/textarea";
+1 -1
src/components/ui/input.tsx
··· 1 1 import { Input as InputPrimitive } from "@base-ui/react/input"; 2 - import type * as React from "react"; 2 + import * as React from "react"; 3 3 4 4 import { cn } from "@/lib/utils"; 5 5
+1 -1
src/components/ui/label.tsx
··· 1 1 "use client"; 2 2 3 - import type * as React from "react"; 3 + import * as React from "react"; 4 4 5 5 import { cn } from "@/lib/utils"; 6 6
+1 -1
src/components/ui/select.tsx
··· 2 2 3 3 import { Select as SelectPrimitive } from "@base-ui/react/select"; 4 4 import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"; 5 - import type * as React from "react"; 5 + import * as React from "react"; 6 6 import { cn } from "@/lib/utils"; 7 7 8 8 const Select = SelectPrimitive.Root;
+1 -1
src/components/ui/textarea.tsx
··· 1 - import type * as React from "react"; 1 + import * as React from "react"; 2 2 3 3 import { cn } from "@/lib/utils"; 4 4