feat: wire ANSI NFO easter egg into about page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import { createFileRoute } from '@tanstack/react-router'
|
|||||||
import { useEffect, useRef, useState } from 'react'
|
import { useEffect, useRef, useState } from 'react'
|
||||||
import { RugLogo } from '@/components/brand/RugLogo'
|
import { RugLogo } from '@/components/brand/RugLogo'
|
||||||
import { APP_VERSION } from '@/lib/version'
|
import { APP_VERSION } from '@/lib/version'
|
||||||
|
import { AnsiNfoModal } from '@/components/about/AnsiNfoModal'
|
||||||
|
|
||||||
export const Route = createFileRoute('/_authenticated/about')({
|
export const Route = createFileRoute('/_authenticated/about')({
|
||||||
component: AboutPage,
|
component: AboutPage,
|
||||||
@@ -11,7 +12,7 @@ export const Route = createFileRoute('/_authenticated/about')({
|
|||||||
// Implements a basic QR encoder for alphanumeric/byte mode, version 1-4
|
// Implements a basic QR encoder for alphanumeric/byte mode, version 1-4
|
||||||
// Sufficient for encoding a Bitcoin address (~62 chars)
|
// Sufficient for encoding a Bitcoin address (~62 chars)
|
||||||
|
|
||||||
const BTC_ADDRESS = 'bc1qfw6pmyc96vrlkpc0rgun0s7xy4sqhx7a2xurkf'
|
export const BTC_ADDRESS = 'bc1qfw6pmyc96vrlkpc0rgun0s7xy4sqhx7a2xurkf'
|
||||||
|
|
||||||
// Generate QR matrix for a given string using a minimal implementation
|
// Generate QR matrix for a given string using a minimal implementation
|
||||||
function generateQRMatrix(data: string): boolean[][] {
|
function generateQRMatrix(data: string): boolean[][] {
|
||||||
@@ -481,6 +482,7 @@ function QRCode({
|
|||||||
function AboutPage() {
|
function AboutPage() {
|
||||||
const [copied, setCopied] = useState(false)
|
const [copied, setCopied] = useState(false)
|
||||||
const [showQR, setShowQR] = useState(false)
|
const [showQR, setShowQR] = useState(false)
|
||||||
|
const [showNfo, setShowNfo] = useState(false)
|
||||||
|
|
||||||
const copyAddress = async () => {
|
const copyAddress = async () => {
|
||||||
try {
|
try {
|
||||||
@@ -618,9 +620,19 @@ function AboutPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Footer */}
|
{/* Footer */}
|
||||||
<p className="text-center text-xs text-text-muted">
|
<div className="text-center space-y-2">
|
||||||
Not affiliated with or endorsed by MikroTik (SIA Mikrotikls)
|
<p className="text-xs text-text-muted">
|
||||||
</p>
|
Not affiliated with or endorsed by MikroTik (SIA Mikrotikls)
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
onClick={() => setShowNfo(true)}
|
||||||
|
className="text-[10px] font-mono text-text-muted/40 hover:text-accent transition-colors cursor-pointer"
|
||||||
|
>
|
||||||
|
ANSI
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<AnsiNfoModal open={showNfo} onOpenChange={setShowNfo} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user