lighthouse

This commit is contained in:
Timo Knuth 2026-01-11 17:11:28 +01:00
parent d64459b200
commit 1f067e81f3
33 changed files with 1229 additions and 1229 deletions

View File

@ -209,7 +209,7 @@ export default function CryptoGenerator() {
Wallet Direct Wallet Direct
</button> </button>
</div> </div>
<p className="text-xs text-slate-500 mt-2"> <p className="text-xs text-slate-600 mt-2">
{qrMode === 'universal' {qrMode === 'universal'
? "Works with any phone camera. Opens blockchain explorer." ? "Works with any phone camera. Opens blockchain explorer."
: "Requires scanning from a wallet app. Enables direct payment."} : "Requires scanning from a wallet app. Enables direct payment."}
@ -319,7 +319,7 @@ export default function CryptoGenerator() {
<Bitcoin className="w-4 h-4 text-slate-400 shrink-0" /> <Bitcoin className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate capitalize">{currency}</span> <span className="truncate capitalize">{currency}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1 truncate px-2"> <div className="text-xs text-slate-600 mt-1 truncate px-2">
{address || 'Wallet Address'} {address || 'Wallet Address'}
</div> </div>
</div> </div>
@ -344,7 +344,7 @@ export default function CryptoGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning copies the wallet address or opens a crypto app. Scanning copies the wallet address or opens a crypto app.
</p> </p>
</div> </div>

View File

@ -272,7 +272,7 @@ export default function EmailGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
100% free. No signup required. 100% free. No signup required.
</p> </p>
</div> </div>

View File

@ -277,7 +277,7 @@ export default function EventGenerator() {
<span className="truncate">{title || 'Event Title'}</span> <span className="truncate">{title || 'Event Title'}</span>
</h3> </h3>
{(startDate) && ( {(startDate) && (
<div className="text-xs text-slate-500 mt-1 flex items-center justify-center gap-1"> <div className="text-xs text-slate-600 mt-1 flex items-center justify-center gap-1">
<Clock className="w-3 h-3" /> <Clock className="w-3 h-3" />
{new Date(startDate).toLocaleDateString()} {new Date(startDate).toLocaleDateString()}
</div> </div>
@ -304,7 +304,7 @@ export default function EventGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning adds the event to the user's calendar. Scanning adds the event to the user's calendar.
</p> </p>
</div> </div>

View File

@ -105,7 +105,7 @@ export default function FacebookGenerator() {
onChange={(e) => setUrl(e.target.value)} onChange={(e) => setUrl(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#1877F2] focus:ring-[#1877F2]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#1877F2] focus:ring-[#1877F2]"
/> />
<p className="text-xs text-slate-500 mt-2">Paste the full link to your profile, page, group, or post.</p> <p className="text-xs text-slate-600 mt-2">Paste the full link to your profile, page, group, or post.</p>
</div> </div>
</div> </div>
@ -198,7 +198,7 @@ export default function FacebookGenerator() {
<Facebook className="w-4 h-4 text-slate-400 shrink-0" /> <Facebook className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{url ? url.replace('https://', '') : 'facebook.com/...'}</span> <span className="truncate">{url ? url.replace('https://', '') : 'facebook.com/...'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Opens in Facebook App</div> <div className="text-xs text-slate-600 mt-1">Opens in Facebook App</div>
</div> </div>
</div> </div>
@ -221,7 +221,7 @@ export default function FacebookGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning redirects directly to the Facebook profile or page. Scanning redirects directly to the Facebook profile or page.
</p> </p>
</div> </div>

View File

@ -148,7 +148,7 @@ export default function GeolocationGenerator() {
/> />
</div> </div>
</div> </div>
<p className="text-xs text-slate-500"> <p className="text-xs text-slate-600">
Tip: You can copy-paste coordinates directly from Google Maps. Tip: You can copy-paste coordinates directly from Google Maps.
(Right-click a location on standard Maps, then click the coordinates to copy). (Right-click a location on standard Maps, then click the coordinates to copy).
</p> </p>
@ -243,7 +243,7 @@ export default function GeolocationGenerator() {
<MapPin className="w-4 h-4 text-[#10B981] shrink-0" /> <MapPin className="w-4 h-4 text-[#10B981] shrink-0" />
<span className="truncate">{latitude || 'Lat'}, {longitude || 'Long'}</span> <span className="truncate">{latitude || 'Lat'}, {longitude || 'Long'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Google Maps Location</div> <div className="text-xs text-slate-600 mt-1">Google Maps Location</div>
</div> </div>
</div> </div>
@ -266,7 +266,7 @@ export default function GeolocationGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning opens the location directly in Google Maps. Scanning opens the location directly in Google Maps.
</p> </p>
</div> </div>

View File

@ -211,7 +211,7 @@ export default function GeolocationQRCodePage() {
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"> <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
<MapPin className="w-8 h-8 text-red-500 drop-shadow-lg animate-bounce" /> <MapPin className="w-8 h-8 text-red-500 drop-shadow-lg animate-bounce" />
</div> </div>
<div className="absolute bottom-2 left-2 right-2 bg-white/90 p-2 rounded text-[10px] text-slate-500 font-mono text-center"> <div className="absolute bottom-2 left-2 right-2 bg-white/90 p-2 rounded text-[10px] text-slate-600 font-mono text-center">
40.7128° N, 74.0060° W 40.7128° N, 74.0060° W
</div> </div>
</div> </div>

View File

@ -110,7 +110,7 @@ export default function InstagramGenerator() {
onChange={(e) => setUsername(e.target.value)} onChange={(e) => setUsername(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#E1306C] focus:ring-[#E1306C]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#E1306C] focus:ring-[#E1306C]"
/> />
<p className="text-xs text-slate-500 mt-2">Enter your username (without @) or paste full profile link.</p> <p className="text-xs text-slate-600 mt-2">Enter your username (without @) or paste full profile link.</p>
</div> </div>
</div> </div>
@ -203,7 +203,7 @@ export default function InstagramGenerator() {
<Instagram className="w-4 h-4 text-slate-400 shrink-0" /> <Instagram className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{username || '@username'}</span> <span className="truncate">{username || '@username'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Opens in Instagram</div> <div className="text-xs text-slate-600 mt-1">Opens in Instagram</div>
</div> </div>
</div> </div>
@ -226,7 +226,7 @@ export default function InstagramGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning redirects directly to your Instagram profile. Scanning redirects directly to your Instagram profile.
</p> </p>
</div> </div>

View File

@ -171,7 +171,7 @@ export default function PayPalGenerator() {
onChange={(e) => setPaypalId(e.target.value)} onChange={(e) => setPaypalId(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#003087] focus:ring-[#003087]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#003087] focus:ring-[#003087]"
/> />
<p className="text-xs text-slate-500 mt-2"> <p className="text-xs text-slate-600 mt-2">
{inputType === 'username' {inputType === 'username'
? <>Find yours at <a href="https://paypal.me" target="_blank" rel="noopener noreferrer" className="text-[#003087] underline">paypal.me</a></> ? <>Find yours at <a href="https://paypal.me" target="_blank" rel="noopener noreferrer" className="text-[#003087] underline">paypal.me</a></>
: 'The email address linked to your PayPal account' : 'The email address linked to your PayPal account'
@ -293,7 +293,7 @@ export default function PayPalGenerator() {
<span className="truncate">{paypalId || 'Your PayPal'}</span> <span className="truncate">{paypalId || 'Your PayPal'}</span>
</h3> </h3>
{amount && ( {amount && (
<p className="text-sm text-slate-500 mt-1">{amount} {currency}</p> <p className="text-sm text-slate-600 mt-1">{amount} {currency}</p>
)} )}
</div> </div>
</div> </div>
@ -317,7 +317,7 @@ export default function PayPalGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Your PayPal link is encoded directly. Static and forever free. Your PayPal link is encoded directly. Static and forever free.
</p> </p>
</div> </div>

View File

@ -106,7 +106,7 @@ export default function PhoneGenerator() {
onChange={(e) => setPhone(e.target.value)} onChange={(e) => setPhone(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#1A1265] focus:ring-[#1A1265]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#1A1265] focus:ring-[#1A1265]"
/> />
<p className="text-xs text-slate-500 mt-2">Enter with country code for best results (e.g. +1).</p> <p className="text-xs text-slate-600 mt-2">Enter with country code for best results (e.g. +1).</p>
</div> </div>
</div> </div>
@ -221,7 +221,7 @@ export default function PhoneGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning initiates a call on any mobile phone. Scanning initiates a call on any mobile phone.
</p> </p>
</div> </div>

View File

@ -120,7 +120,7 @@ export default function SMSGenerator() {
onChange={(e) => setMessage(e.target.value)} onChange={(e) => setMessage(e.target.value)}
maxLength={160} maxLength={160}
/> />
<p className="text-xs text-slate-500 mt-2 text-right">{message.length}/160</p> <p className="text-xs text-slate-600 mt-2 text-right">{message.length}/160</p>
</div> </div>
</div> </div>
</div> </div>
@ -214,7 +214,7 @@ export default function SMSGenerator() {
<Phone className="w-4 h-4 text-slate-400 shrink-0" /> <Phone className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{phone || 'Number'}</span> <span className="truncate">{phone || 'Number'}</span>
</h3> </h3>
<div className="flex items-center justify-center gap-2 mt-2 text-slate-500 text-xs"> <div className="flex items-center justify-center gap-2 mt-2 text-slate-600 text-xs">
<MessageSquare className="w-3 h-3" /> <MessageSquare className="w-3 h-3" />
<span className="italic truncate">{message || 'Your message...'}</span> <span className="italic truncate">{message || 'Your message...'}</span>
</div> </div>
@ -240,7 +240,7 @@ export default function SMSGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Opens the messaging app with text pre-filled. Opens the messaging app with text pre-filled.
</p> </p>
</div> </div>

View File

@ -152,7 +152,7 @@ export default function TeamsGenerator() {
onChange={(e) => setMeetingUrl(e.target.value)} onChange={(e) => setMeetingUrl(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#6264A7] focus:ring-[#6264A7]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#6264A7] focus:ring-[#6264A7]"
/> />
<p className="text-xs text-slate-500 mt-2"> <p className="text-xs text-slate-600 mt-2">
Copy the meeting link from your Teams calendar invite. Copy the meeting link from your Teams calendar invite.
</p> </p>
</div> </div>
@ -166,7 +166,7 @@ export default function TeamsGenerator() {
onChange={(e) => setUserEmail(e.target.value)} onChange={(e) => setUserEmail(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#6264A7] focus:ring-[#6264A7]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#6264A7] focus:ring-[#6264A7]"
/> />
<p className="text-xs text-slate-500 mt-2"> <p className="text-xs text-slate-600 mt-2">
The person's work email to start a Teams chat. The person's work email to start a Teams chat.
</p> </p>
</div> </div>
@ -269,7 +269,7 @@ export default function TeamsGenerator() {
{linkType === 'meeting' ? 'Teams Meeting' : (userEmail || 'Teams Chat')} {linkType === 'meeting' ? 'Teams Meeting' : (userEmail || 'Teams Chat')}
</span> </span>
</h3> </h3>
<p className="text-sm text-slate-500 mt-1"> <p className="text-sm text-slate-600 mt-1">
{linkType === 'meeting' ? 'Join Meeting' : 'Start Chat'} {linkType === 'meeting' ? 'Join Meeting' : 'Start Chat'}
</p> </p>
</div> </div>
@ -294,7 +294,7 @@ export default function TeamsGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Works with Microsoft Teams desktop and mobile apps. Works with Microsoft Teams desktop and mobile apps.
</p> </p>
</div> </div>

View File

@ -200,7 +200,7 @@ export default function TeamsQRCodePage() {
</div> </div>
<div> <div>
<div className="font-bold text-slate-900 text-sm">Team Standup</div> <div className="font-bold text-slate-900 text-sm">Team Standup</div>
<div className="text-xs text-slate-500">Daily at 9:00 AM</div> <div className="text-xs text-slate-600">Daily at 9:00 AM</div>
</div> </div>
</div> </div>
<div className="flex gap-2"> <div className="flex gap-2">

View File

@ -221,7 +221,7 @@ export default function TextGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Your text stays on your device. Nothing is sent to servers. Your text stays on your device. Nothing is sent to servers.
</p> </p>
</div> </div>

View File

@ -110,7 +110,7 @@ export default function TiktokGenerator() {
onChange={(e) => setUsername(e.target.value)} onChange={(e) => setUsername(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-black focus:ring-black" className="h-12 text-base rounded-xl border-slate-200 focus:border-black focus:ring-black"
/> />
<p className="text-xs text-slate-500 mt-2">Enter your TikTok handle (e.g. @charlidamelio).</p> <p className="text-xs text-slate-600 mt-2">Enter your TikTok handle (e.g. @charlidamelio).</p>
</div> </div>
</div> </div>
@ -203,7 +203,7 @@ export default function TiktokGenerator() {
<Music className="w-4 h-4 text-slate-400 shrink-0" /> <Music className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{username || '@username'}</span> <span className="truncate">{username || '@username'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Opens in TikTok</div> <div className="text-xs text-slate-600 mt-1">Opens in TikTok</div>
</div> </div>
</div> </div>
@ -226,7 +226,7 @@ export default function TiktokGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning redirects directly to your TikTok profile. Scanning redirects directly to your TikTok profile.
</p> </p>
</div> </div>

View File

@ -110,7 +110,7 @@ export default function TwitterGenerator() {
onChange={(e) => setUsername(e.target.value)} onChange={(e) => setUsername(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-black focus:ring-black" className="h-12 text-base rounded-xl border-slate-200 focus:border-black focus:ring-black"
/> />
<p className="text-xs text-slate-500 mt-2">Enter your X (Twitter) handle to create a profile link.</p> <p className="text-xs text-slate-600 mt-2">Enter your X (Twitter) handle to create a profile link.</p>
</div> </div>
</div> </div>
@ -203,7 +203,7 @@ export default function TwitterGenerator() {
<Twitter className="w-4 h-4 text-slate-400 shrink-0" /> <Twitter className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{username || '@username'}</span> <span className="truncate">{username || '@username'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Opens in X (Twitter)</div> <div className="text-xs text-slate-600 mt-1">Opens in X (Twitter)</div>
</div> </div>
</div> </div>
@ -226,7 +226,7 @@ export default function TwitterGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning redirects directly to the X profile. Scanning redirects directly to the X profile.
</p> </p>
</div> </div>

View File

@ -104,7 +104,7 @@ export default function URLGenerator() {
onChange={(e) => setUrl(e.target.value)} onChange={(e) => setUrl(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#4F46E5] focus:ring-[#4F46E5]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#4F46E5] focus:ring-[#4F46E5]"
/> />
<p className="text-xs text-slate-500 mt-2">Include https:// for best results.</p> <p className="text-xs text-slate-600 mt-2">Include https:// for best results.</p>
</div> </div>
</div> </div>
@ -219,7 +219,7 @@ export default function URLGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Your link is encoded directly. Static and forever free. Your link is encoded directly. Static and forever free.
</p> </p>
</div> </div>

View File

@ -299,7 +299,7 @@ export default function VCardGenerator() {
<Contact className="w-4 h-4 text-slate-400 shrink-0" /> <Contact className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{firstName || 'First'} {lastName || 'Last'}</span> <span className="truncate">{firstName || 'First'} {lastName || 'Last'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1 truncate">{company || 'Company Name'}</div> <div className="text-xs text-slate-600 mt-1 truncate">{company || 'Company Name'}</div>
</div> </div>
</div> </div>
@ -322,7 +322,7 @@ export default function VCardGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning adds this contact to the address book instantly. Scanning adds this contact to the address book instantly.
</p> </p>
</div> </div>

View File

@ -115,7 +115,7 @@ export default function WhatsappGenerator() {
onChange={(e) => setPhone(e.target.value)} onChange={(e) => setPhone(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#25D366] focus:ring-[#25D366]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#25D366] focus:ring-[#25D366]"
/> />
<p className="text-xs text-slate-500 mt-2">Include country code (e.g. 1 for US, 44 for UK). No '+' symbol.</p> <p className="text-xs text-slate-600 mt-2">Include country code (e.g. 1 for US, 44 for UK). No '+' symbol.</p>
</div> </div>
<div> <div>
@ -218,7 +218,7 @@ export default function WhatsappGenerator() {
<Phone className="w-4 h-4 text-slate-400 shrink-0" /> <Phone className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{phone ? `+${phone}` : 'Number'}</span> <span className="truncate">{phone ? `+${phone}` : 'Number'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Starts WhatsApp Chat</div> <div className="text-xs text-slate-600 mt-1">Starts WhatsApp Chat</div>
</div> </div>
</div> </div>
@ -241,7 +241,7 @@ export default function WhatsappGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning starts a chat with this number instantly. Scanning starts a chat with this number instantly.
</p> </p>
</div> </div>

View File

@ -210,12 +210,12 @@ export default function WhatsappQRCodePage() {
{/* Chat Bubble Right */} {/* Chat Bubble Right */}
<div className="bg-[#DCF8C6] p-2 rounded-lg self-end mb-2 max-w-[80%] text-[10px] text-slate-800 shadow-sm"> <div className="bg-[#DCF8C6] p-2 rounded-lg self-end mb-2 max-w-[80%] text-[10px] text-slate-800 shadow-sm">
Hi! I'd like to book an appointment. Hi! I'd like to book an appointment.
<div className="text-[8px] text-slate-500 text-right mt-0.5">10:42 AM <span className="text-blue-500"></span></div> <div className="text-[8px] text-slate-600 text-right mt-0.5">10:42 AM <span className="text-blue-500"></span></div>
</div> </div>
{/* Chat Bubble Left */} {/* Chat Bubble Left */}
<div className="bg-white p-2 rounded-lg self-start max-w-[80%] text-[10px] text-slate-800 shadow-sm"> <div className="bg-white p-2 rounded-lg self-start max-w-[80%] text-[10px] text-slate-800 shadow-sm">
Sure! What time works for you? Sure! What time works for you?
<div className="text-[8px] text-slate-500 text-right mt-0.5">10:43 AM</div> <div className="text-[8px] text-slate-600 text-right mt-0.5">10:43 AM</div>
</div> </div>
</div> </div>

View File

@ -282,7 +282,7 @@ export default function WiFiGenerator() {
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Your credentials stay on your device. Nothing is sent to servers. Your credentials stay on your device. Nothing is sent to servers.
</p> </p>
</div> </div>

View File

@ -103,7 +103,7 @@ export default function YoutubeGenerator() {
onChange={(e) => setUrl(e.target.value)} onChange={(e) => setUrl(e.target.value)}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#FF0000] focus:ring-[#FF0000]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#FF0000] focus:ring-[#FF0000]"
/> />
<p className="text-xs text-slate-500 mt-2">Paste a link to any video, channel, or playlist.</p> <p className="text-xs text-slate-600 mt-2">Paste a link to any video, channel, or playlist.</p>
</div> </div>
</div> </div>
@ -196,7 +196,7 @@ export default function YoutubeGenerator() {
<Youtube className="w-4 h-4 text-slate-400 shrink-0" /> <Youtube className="w-4 h-4 text-slate-400 shrink-0" />
<span className="truncate">{url ? 'YouTube Content' : 'youtube.com'}</span> <span className="truncate">{url ? 'YouTube Content' : 'youtube.com'}</span>
</h3> </h3>
<div className="text-xs text-slate-500 mt-1">Opens in YouTube App</div> <div className="text-xs text-slate-600 mt-1">Opens in YouTube App</div>
</div> </div>
</div> </div>
@ -219,7 +219,7 @@ export default function YoutubeGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Scanning redirects directly to the video or channel. Scanning redirects directly to the video or channel.
</p> </p>
</div> </div>

View File

@ -136,7 +136,7 @@ export default function ZoomGenerator() {
onChange={(e) => setMeetingId(e.target.value.replace(/\D/g, ''))} onChange={(e) => setMeetingId(e.target.value.replace(/\D/g, ''))}
className="h-12 text-base rounded-xl border-slate-200 focus:border-[#2D8CFF] focus:ring-[#2D8CFF]" className="h-12 text-base rounded-xl border-slate-200 focus:border-[#2D8CFF] focus:ring-[#2D8CFF]"
/> />
<p className="text-xs text-slate-500 mt-2">The 10-11 digit meeting ID from your Zoom invite.</p> <p className="text-xs text-slate-600 mt-2">The 10-11 digit meeting ID from your Zoom invite.</p>
</div> </div>
<div> <div>
@ -254,7 +254,7 @@ export default function ZoomGenerator() {
<span className="truncate">{formatMeetingId(meetingId) || 'Meeting ID'}</span> <span className="truncate">{formatMeetingId(meetingId) || 'Meeting ID'}</span>
</h3> </h3>
{passcode && ( {passcode && (
<p className="text-sm text-slate-500 mt-1">Passcode: {passcode}</p> <p className="text-sm text-slate-600 mt-1">Passcode: {passcode}</p>
)} )}
</div> </div>
</div> </div>
@ -278,7 +278,7 @@ export default function ZoomGenerator() {
</Button> </Button>
</div> </div>
<p className="text-xs text-slate-500 mt-4 text-center"> <p className="text-xs text-slate-600 mt-4 text-center">
Your meeting ID is encoded directly. Static and forever free. Your meeting ID is encoded directly. Static and forever free.
</p> </p>
</div> </div>

View File

@ -200,7 +200,7 @@ export default function ZoomQRCodePage() {
</div> </div>
<div> <div>
<div className="font-bold text-slate-900 text-sm">Team Standup</div> <div className="font-bold text-slate-900 text-sm">Team Standup</div>
<div className="text-xs text-slate-500">ID: 123 456 7890</div> <div className="text-xs text-slate-600">ID: 123 456 7890</div>
</div> </div>
</div> </div>
<div className="flex gap-2"> <div className="flex gap-2">

View File

@ -47,7 +47,7 @@ const TOOLS = [
name: 'Text', name: 'Text',
description: 'Display plain text', description: 'Display plain text',
href: '/tools/text-qr-code', href: '/tools/text-qr-code',
color: 'text-slate-500', color: 'text-slate-600',
bg: 'bg-slate-50' bg: 'bg-slate-50'
}, },
{ {
@ -240,7 +240,7 @@ export function FreeToolsGrid() {
<h3 className="text-base md:text-lg font-semibold text-slate-900 mb-0.5"> <h3 className="text-base md:text-lg font-semibold text-slate-900 mb-0.5">
{tool.name} {tool.name}
</h3> </h3>
<p className="text-xs md:text-sm text-slate-500 text-center"> <p className="text-xs md:text-sm text-slate-600 text-center">
{tool.description} {tool.description}
</p> </p>
</Link> </Link>