nexoreui-cli 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/index.js +1728 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -2713,6 +2713,1651 @@ export default function DocsPlatformTemplate() {
|
|
|
2713
2713
|
`
|
|
2714
2714
|
};
|
|
2715
2715
|
|
|
2716
|
+
// src/registry/template-healthcare-portal.ts
|
|
2717
|
+
var templateHealthcarePortal = {
|
|
2718
|
+
name: "template-healthcare-portal",
|
|
2719
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
2720
|
+
fileName: "template-healthcare-portal.tsx",
|
|
2721
|
+
content: `"use client";
|
|
2722
|
+
|
|
2723
|
+
import React, { useState } from "react";
|
|
2724
|
+
import { motion } from "framer-motion";
|
|
2725
|
+
import { Activity, Heart, Calendar, Pill, CheckCircle2, Video, TrendingUp } from "lucide-react";
|
|
2726
|
+
|
|
2727
|
+
export default function HealthcarePortalTemplate() {
|
|
2728
|
+
const [checkedMeds, setCheckedMeds] = useState<string[]>(["med-1"]);
|
|
2729
|
+
|
|
2730
|
+
const vitals = [
|
|
2731
|
+
{ label: "Resting Heart Rate", value: "64", unit: "BPM", delta: "-3 bpm vs avg", status: "Optimal" },
|
|
2732
|
+
{ label: "Blood Oxygen (SpO2)", value: "98.8", unit: "%", delta: "+0.4% healthy", status: "Optimal" },
|
|
2733
|
+
{ label: "Sleep Recovery", value: "88", unit: "/100", delta: "7h 42m deep sleep", status: "High" },
|
|
2734
|
+
{ label: "Heart Rate Var.", value: "58", unit: "ms", delta: "+7ms resilience", status: "Normal" },
|
|
2735
|
+
];
|
|
2736
|
+
|
|
2737
|
+
const medications = [
|
|
2738
|
+
{ id: "med-1", name: "Atorvastatin Calcium", dose: "20mg \u2022 Morning with meal", days: "24 days left" },
|
|
2739
|
+
{ id: "med-2", name: "Omega-3 Pure EPA/DHA", dose: "1000mg \u2022 Midday with water", days: "18 days left" },
|
|
2740
|
+
{ id: "med-3", name: "Magnesium Glycinate", dose: "400mg \u2022 Evening before sleep", days: "6 days left" },
|
|
2741
|
+
];
|
|
2742
|
+
|
|
2743
|
+
return (
|
|
2744
|
+
<div className="min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8">
|
|
2745
|
+
<header className="max-w-6xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
2746
|
+
<div>
|
|
2747
|
+
<span className="text-xs uppercase font-mono tracking-widest text-teal-400">PulseCare Telehealth</span>
|
|
2748
|
+
<h1 className="text-2xl font-bold">Patient Health Telemetry</h1>
|
|
2749
|
+
</div>
|
|
2750
|
+
<button className="px-4 py-2 rounded-xl text-xs font-semibold bg-teal-600 hover:bg-teal-500 text-white flex items-center gap-2">
|
|
2751
|
+
<Video className="h-3.5 w-3.5" />
|
|
2752
|
+
<span>Book Specialist</span>
|
|
2753
|
+
</button>
|
|
2754
|
+
</header>
|
|
2755
|
+
|
|
2756
|
+
<main className="max-w-6xl mx-auto py-8 space-y-6">
|
|
2757
|
+
<div className="grid grid-cols-2 sm:grid-cols-4 gap-4">
|
|
2758
|
+
{vitals.map((v) => (
|
|
2759
|
+
<div key={v.label} className="p-4 rounded-2xl border border-white/10 bg-[#12141c]">
|
|
2760
|
+
<span className="text-xs text-zinc-400">{v.label}</span>
|
|
2761
|
+
<div className="text-2xl sm:text-3xl font-bold font-mono my-1">
|
|
2762
|
+
{v.value} <span className="text-xs font-normal opacity-60">{v.unit}</span>
|
|
2763
|
+
</div>
|
|
2764
|
+
<span className="text-xs text-teal-400 font-semibold flex items-center gap-1">
|
|
2765
|
+
<TrendingUp className="h-3 w-3" />
|
|
2766
|
+
{v.delta}
|
|
2767
|
+
</span>
|
|
2768
|
+
</div>
|
|
2769
|
+
))}
|
|
2770
|
+
</div>
|
|
2771
|
+
|
|
2772
|
+
<div className="p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4">
|
|
2773
|
+
<h2 className="font-bold text-base flex items-center gap-2">
|
|
2774
|
+
<Pill className="h-4 w-4 text-teal-400" />
|
|
2775
|
+
<span>Daily Prescriptions</span>
|
|
2776
|
+
</h2>
|
|
2777
|
+
<div className="space-y-2">
|
|
2778
|
+
{medications.map((m) => {
|
|
2779
|
+
const isDone = checkedMeds.includes(m.id);
|
|
2780
|
+
return (
|
|
2781
|
+
<div
|
|
2782
|
+
key={m.id}
|
|
2783
|
+
onClick={() =>
|
|
2784
|
+
setCheckedMeds((prev) =>
|
|
2785
|
+
prev.includes(m.id) ? prev.filter((i) => i !== m.id) : [...prev, m.id]
|
|
2786
|
+
)
|
|
2787
|
+
}
|
|
2788
|
+
className="p-3.5 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between cursor-pointer hover:border-white/20"
|
|
2789
|
+
>
|
|
2790
|
+
<div className="flex items-center gap-3">
|
|
2791
|
+
<div
|
|
2792
|
+
className={\`w-5 h-5 rounded-lg border flex items-center justify-center \${
|
|
2793
|
+
isDone ? "bg-teal-600 border-teal-600 text-white" : "border-zinc-500"
|
|
2794
|
+
}\`}
|
|
2795
|
+
>
|
|
2796
|
+
{isDone && <CheckCircle2 className="h-3.5 w-3.5" />}
|
|
2797
|
+
</div>
|
|
2798
|
+
<div>
|
|
2799
|
+
<div className={\`text-xs font-semibold \${isDone ? "line-through opacity-50" : ""}\`}>
|
|
2800
|
+
{m.name}
|
|
2801
|
+
</div>
|
|
2802
|
+
<div className="text-[10px] text-zinc-400">{m.dose}</div>
|
|
2803
|
+
</div>
|
|
2804
|
+
</div>
|
|
2805
|
+
<span className="text-xs font-mono text-zinc-400">{m.days}</span>
|
|
2806
|
+
</div>
|
|
2807
|
+
);
|
|
2808
|
+
})}
|
|
2809
|
+
</div>
|
|
2810
|
+
</div>
|
|
2811
|
+
</main>
|
|
2812
|
+
</div>
|
|
2813
|
+
);
|
|
2814
|
+
}
|
|
2815
|
+
`
|
|
2816
|
+
};
|
|
2817
|
+
|
|
2818
|
+
// src/registry/template-web3-dex.ts
|
|
2819
|
+
var templateWeb3Dex = {
|
|
2820
|
+
name: "template-web3-dex",
|
|
2821
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
2822
|
+
fileName: "template-web3-dex.tsx",
|
|
2823
|
+
content: `"use client";
|
|
2824
|
+
|
|
2825
|
+
import React, { useState } from "react";
|
|
2826
|
+
import { ArrowDownUp, Zap, Wallet, TrendingUp } from "lucide-react";
|
|
2827
|
+
|
|
2828
|
+
export default function Web3DexTemplate() {
|
|
2829
|
+
const [fromAmount, setFromAmount] = useState("1.5");
|
|
2830
|
+
const [isSwapping, setIsSwapping] = useState(false);
|
|
2831
|
+
|
|
2832
|
+
return (
|
|
2833
|
+
<div className="min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 flex flex-col items-center justify-center">
|
|
2834
|
+
<div className="w-full max-w-md p-6 rounded-3xl border border-white/10 bg-[#12141c] space-y-4 shadow-2xl">
|
|
2835
|
+
<div className="flex justify-between items-center">
|
|
2836
|
+
<span className="font-bold text-base">NovaSwap DEX</span>
|
|
2837
|
+
<span className="text-xs px-2.5 py-1 rounded-full bg-cyan-500/10 text-cyan-400 font-mono">12 Gwei</span>
|
|
2838
|
+
</div>
|
|
2839
|
+
|
|
2840
|
+
<div className="p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1">
|
|
2841
|
+
<div className="flex justify-between text-xs text-zinc-400">
|
|
2842
|
+
<span>You Pay</span>
|
|
2843
|
+
<span>Balance: 4.82 ETH</span>
|
|
2844
|
+
</div>
|
|
2845
|
+
<div className="flex justify-between items-center">
|
|
2846
|
+
<input
|
|
2847
|
+
type="text"
|
|
2848
|
+
value={fromAmount}
|
|
2849
|
+
onChange={(e) => setFromAmount(e.target.value)}
|
|
2850
|
+
className="text-2xl font-mono font-bold bg-transparent outline-none w-1/2"
|
|
2851
|
+
/>
|
|
2852
|
+
<span className="px-3 py-1 rounded-xl bg-white/10 font-bold text-xs">ETH</span>
|
|
2853
|
+
</div>
|
|
2854
|
+
</div>
|
|
2855
|
+
|
|
2856
|
+
<div className="flex justify-center -my-2">
|
|
2857
|
+
<div className="p-2 rounded-xl bg-[#12141c] border border-white/10">
|
|
2858
|
+
<ArrowDownUp className="h-4 w-4 text-cyan-400" />
|
|
2859
|
+
</div>
|
|
2860
|
+
</div>
|
|
2861
|
+
|
|
2862
|
+
<div className="p-4 rounded-2xl border border-white/5 bg-[#181a24] space-y-1">
|
|
2863
|
+
<div className="flex justify-between text-xs text-zinc-400">
|
|
2864
|
+
<span>You Receive (Est.)</span>
|
|
2865
|
+
<span>Balance: 14,850 USDC</span>
|
|
2866
|
+
</div>
|
|
2867
|
+
<div className="flex justify-between items-center">
|
|
2868
|
+
<div className="text-2xl font-mono font-bold">
|
|
2869
|
+
{(parseFloat(fromAmount || "0") * 2640.5).toFixed(2)}
|
|
2870
|
+
</div>
|
|
2871
|
+
<span className="px-3 py-1 rounded-xl bg-white/10 font-bold text-xs">USDC</span>
|
|
2872
|
+
</div>
|
|
2873
|
+
</div>
|
|
2874
|
+
|
|
2875
|
+
<button
|
|
2876
|
+
onClick={() => {
|
|
2877
|
+
setIsSwapping(true);
|
|
2878
|
+
setTimeout(() => setIsSwapping(false), 1200);
|
|
2879
|
+
}}
|
|
2880
|
+
className="w-full py-3.5 rounded-xl font-bold text-xs text-white bg-cyan-600 hover:bg-cyan-500 shadow-lg flex items-center justify-center gap-2 transition-transform active:scale-95"
|
|
2881
|
+
>
|
|
2882
|
+
<Zap className="h-4 w-4" />
|
|
2883
|
+
<span>{isSwapping ? "Routing via Smart Contract..." : "Swap Tokens"}</span>
|
|
2884
|
+
</button>
|
|
2885
|
+
</div>
|
|
2886
|
+
</div>
|
|
2887
|
+
);
|
|
2888
|
+
}
|
|
2889
|
+
`
|
|
2890
|
+
};
|
|
2891
|
+
|
|
2892
|
+
// src/registry/template-edtech-learning.ts
|
|
2893
|
+
var templateEdtechLearning = {
|
|
2894
|
+
name: "template-edtech-learning",
|
|
2895
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
2896
|
+
fileName: "template-edtech-learning.tsx",
|
|
2897
|
+
content: `"use client";
|
|
2898
|
+
|
|
2899
|
+
import React, { useState } from "react";
|
|
2900
|
+
import { BookOpen, CheckCircle2, Code2, Award, Flame, Play } from "lucide-react";
|
|
2901
|
+
|
|
2902
|
+
export default function EdtechLearningTemplate() {
|
|
2903
|
+
const [selectedIdx, setSelectedIdx] = useState<number | null>(1);
|
|
2904
|
+
const [isDone, setIsDone] = useState(false);
|
|
2905
|
+
|
|
2906
|
+
return (
|
|
2907
|
+
<div className="min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-8">
|
|
2908
|
+
<header className="max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
2909
|
+
<div className="flex items-center gap-2">
|
|
2910
|
+
<BookOpen className="h-5 w-5 text-emerald-400" />
|
|
2911
|
+
<span className="font-bold text-base">Polymath Academy</span>
|
|
2912
|
+
</div>
|
|
2913
|
+
<div className="flex items-center gap-1.5 px-3 py-1 rounded-full bg-amber-500/10 text-amber-400 text-xs font-semibold">
|
|
2914
|
+
<Flame className="h-3.5 w-3.5 fill-current" />
|
|
2915
|
+
<span>14 Day Streak</span>
|
|
2916
|
+
</div>
|
|
2917
|
+
</header>
|
|
2918
|
+
|
|
2919
|
+
<main className="max-w-5xl mx-auto py-8 grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
2920
|
+
<div className="lg:col-span-2 p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-4">
|
|
2921
|
+
<div className="text-xs font-mono text-zinc-400">Module 2 \u2022 Lesson 2.2</div>
|
|
2922
|
+
<h1 className="text-2xl font-bold">Raft Consensus & Majority Quorums</h1>
|
|
2923
|
+
<p className="text-xs text-zinc-300 leading-relaxed">
|
|
2924
|
+
In Raft, a cluster of 5 nodes requires an affirmative vote from at least 3 nodes before committing any state machine transition.
|
|
2925
|
+
</p>
|
|
2926
|
+
|
|
2927
|
+
<div className="space-y-2 pt-2">
|
|
2928
|
+
{[
|
|
2929
|
+
"Any follower can commit independently without Leader confirmation.",
|
|
2930
|
+
"A quorum majority (3 of 5 nodes) ensures overlapping sets and prevents split-brain.",
|
|
2931
|
+
"Logs are replicated only during leader step-down events.",
|
|
2932
|
+
].map((ans, i) => (
|
|
2933
|
+
<button
|
|
2934
|
+
key={i}
|
|
2935
|
+
onClick={() => setSelectedIdx(i)}
|
|
2936
|
+
className={\`w-full p-3.5 rounded-xl border text-left text-xs transition-colors \${
|
|
2937
|
+
selectedIdx === i
|
|
2938
|
+
? "border-emerald-500 bg-emerald-500/10 text-white font-semibold"
|
|
2939
|
+
: "border-white/10 bg-[#181a24] text-zinc-300"
|
|
2940
|
+
}\`}
|
|
2941
|
+
>
|
|
2942
|
+
{ans}
|
|
2943
|
+
</button>
|
|
2944
|
+
))}
|
|
2945
|
+
</div>
|
|
2946
|
+
|
|
2947
|
+
<button
|
|
2948
|
+
onClick={() => setIsDone(true)}
|
|
2949
|
+
className="px-5 py-2.5 rounded-xl text-xs font-bold text-white bg-emerald-600 hover:bg-emerald-500 shadow-md flex items-center gap-2 mt-4"
|
|
2950
|
+
>
|
|
2951
|
+
<Play className="h-3.5 w-3.5 fill-current" />
|
|
2952
|
+
<span>{isDone ? "Solution Verified \u2713 (+150 XP)" : "Verify Solution"}</span>
|
|
2953
|
+
</button>
|
|
2954
|
+
</div>
|
|
2955
|
+
</main>
|
|
2956
|
+
</div>
|
|
2957
|
+
);
|
|
2958
|
+
}
|
|
2959
|
+
`
|
|
2960
|
+
};
|
|
2961
|
+
|
|
2962
|
+
// src/registry/template-conference-event.ts
|
|
2963
|
+
var templateConferenceEvent = {
|
|
2964
|
+
name: "template-conference-event",
|
|
2965
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
2966
|
+
fileName: "template-conference-event.tsx",
|
|
2967
|
+
content: `"use client";
|
|
2968
|
+
|
|
2969
|
+
import React, { useState } from "react";
|
|
2970
|
+
import { Calendar, MapPin, Ticket, Sparkles, Check } from "lucide-react";
|
|
2971
|
+
|
|
2972
|
+
export default function ConferenceEventTemplate() {
|
|
2973
|
+
const [selectedDay, setSelectedDay] = useState("day-1");
|
|
2974
|
+
|
|
2975
|
+
const schedule = [
|
|
2976
|
+
{ time: "09:00 AM", title: "Opening Keynote: Autonomous Inference at Edge", speaker: "Dr. Elena Vance" },
|
|
2977
|
+
{ time: "11:00 AM", title: "Deterministic Design Systems for 100M+ Users", speaker: "Marcus Sterling" },
|
|
2978
|
+
{ time: "02:00 PM", title: "Zero-Downtime eBPF State Replication", speaker: "Hiroshi Tanaka" },
|
|
2979
|
+
];
|
|
2980
|
+
|
|
2981
|
+
return (
|
|
2982
|
+
<div className="min-h-screen bg-[#08090e] text-zinc-100 font-sans p-6 sm:p-12">
|
|
2983
|
+
<header className="max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
2984
|
+
<span className="font-extrabold text-base tracking-tight">Vertex Summit 2027</span>
|
|
2985
|
+
<button className="px-4 py-2 rounded-xl text-xs font-bold text-white bg-purple-600 hover:bg-purple-500 shadow-md">
|
|
2986
|
+
Claim Pass
|
|
2987
|
+
</button>
|
|
2988
|
+
</header>
|
|
2989
|
+
|
|
2990
|
+
<main className="max-w-4xl mx-auto py-16 text-center space-y-6">
|
|
2991
|
+
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-purple-500/10 border border-purple-500/20 text-purple-400 text-xs font-mono">
|
|
2992
|
+
<Calendar className="h-3.5 w-3.5" />
|
|
2993
|
+
<span>October 14\u201316, 2027 \u2022 San Francisco, CA & Virtual</span>
|
|
2994
|
+
</div>
|
|
2995
|
+
|
|
2996
|
+
<h1 className="text-4xl sm:text-6xl font-black tracking-tight leading-tight">
|
|
2997
|
+
The Convergence of Autonomous Systems
|
|
2998
|
+
</h1>
|
|
2999
|
+
|
|
3000
|
+
<p className="text-sm text-zinc-400 max-w-xl mx-auto">
|
|
3001
|
+
Gathering 4,500+ systems engineers and AI leaders to build the future of software infrastructure.
|
|
3002
|
+
</p>
|
|
3003
|
+
|
|
3004
|
+
<div className="p-6 rounded-2xl border border-white/10 bg-[#12141c] text-left space-y-3 mt-8">
|
|
3005
|
+
<h2 className="font-bold text-sm">Day 1 Schedule (Oct 14)</h2>
|
|
3006
|
+
<div className="space-y-2">
|
|
3007
|
+
{schedule.map((item) => (
|
|
3008
|
+
<div key={item.time} className="p-3 rounded-xl border border-white/5 bg-[#181a24] flex items-center justify-between text-xs">
|
|
3009
|
+
<div>
|
|
3010
|
+
<div className="font-bold">{item.title}</div>
|
|
3011
|
+
<div className="text-[10px] text-zinc-400">{item.speaker}</div>
|
|
3012
|
+
</div>
|
|
3013
|
+
<span className="font-mono text-purple-400 font-bold">{item.time}</span>
|
|
3014
|
+
</div>
|
|
3015
|
+
))}
|
|
3016
|
+
</div>
|
|
3017
|
+
</div>
|
|
3018
|
+
</main>
|
|
3019
|
+
</div>
|
|
3020
|
+
);
|
|
3021
|
+
}
|
|
3022
|
+
`
|
|
3023
|
+
};
|
|
3024
|
+
|
|
3025
|
+
// src/registry/template-audio-podcast.ts
|
|
3026
|
+
var templateAudioPodcast = {
|
|
3027
|
+
name: "template-audio-podcast",
|
|
3028
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3029
|
+
fileName: "template-audio-podcast.tsx",
|
|
3030
|
+
content: `"use client";
|
|
3031
|
+
|
|
3032
|
+
import React, { useState } from "react";
|
|
3033
|
+
import { Headphones, Play, Pause, RotateCcw, RotateCw, Download } from "lucide-react";
|
|
3034
|
+
|
|
3035
|
+
export default function AudioPodcastTemplate() {
|
|
3036
|
+
const [isPlaying, setIsPlaying] = useState(false);
|
|
3037
|
+
const [currentSec, setCurrentSec] = useState(255); // 04:15
|
|
3038
|
+
|
|
3039
|
+
const chapters = [
|
|
3040
|
+
{ time: "00:00", title: "Cold Open & Benchmarks" },
|
|
3041
|
+
{ time: "04:15", title: "Lockless Ring Buffers vs Channels" },
|
|
3042
|
+
{ time: "18:40", title: "Kernel-Bypass Networking with io_uring" },
|
|
3043
|
+
];
|
|
3044
|
+
|
|
3045
|
+
return (
|
|
3046
|
+
<div className="min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 pb-24">
|
|
3047
|
+
<header className="max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
3048
|
+
<div className="flex items-center gap-2">
|
|
3049
|
+
<Headphones className="h-5 w-5 text-indigo-400" />
|
|
3050
|
+
<span className="font-bold text-base">EchoWave Studio</span>
|
|
3051
|
+
</div>
|
|
3052
|
+
<button className="px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10">
|
|
3053
|
+
Subscribe RSS
|
|
3054
|
+
</button>
|
|
3055
|
+
</header>
|
|
3056
|
+
|
|
3057
|
+
<main className="max-w-4xl mx-auto py-10 space-y-6">
|
|
3058
|
+
<div className="p-6 rounded-2xl border border-white/10 bg-[#12141c] space-y-3">
|
|
3059
|
+
<span className="text-xs font-mono text-indigo-400">Episode 148 \u2022 54m 20s</span>
|
|
3060
|
+
<h1 className="text-2xl sm:text-3xl font-bold">Zero-Cost Abstractions & High-Throughput I/O</h1>
|
|
3061
|
+
<p className="text-xs text-zinc-400">Featuring Linus M. Discussing memory barriers and lock-free concurrency queues.</p>
|
|
3062
|
+
</div>
|
|
3063
|
+
|
|
3064
|
+
<div className="space-y-2">
|
|
3065
|
+
<h2 className="font-bold text-xs uppercase tracking-wider text-zinc-400">Chapters</h2>
|
|
3066
|
+
{chapters.map((ch) => (
|
|
3067
|
+
<div key={ch.time} className="p-3.5 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs">
|
|
3068
|
+
<span>{ch.title}</span>
|
|
3069
|
+
<span className="font-mono text-indigo-400">{ch.time}</span>
|
|
3070
|
+
</div>
|
|
3071
|
+
))}
|
|
3072
|
+
</div>
|
|
3073
|
+
</main>
|
|
3074
|
+
|
|
3075
|
+
<footer className="fixed bottom-0 inset-x-0 p-4 border-t border-white/10 bg-[#08090d]/95 backdrop-blur-xl">
|
|
3076
|
+
<div className="max-w-4xl mx-auto flex items-center justify-between gap-4">
|
|
3077
|
+
<button
|
|
3078
|
+
onClick={() => setIsPlaying(!isPlaying)}
|
|
3079
|
+
className="p-3 rounded-full bg-indigo-600 hover:bg-indigo-500 text-white shadow-md"
|
|
3080
|
+
>
|
|
3081
|
+
{isPlaying ? <Pause className="h-5 w-5" /> : <Play className="h-5 w-5 fill-current ml-0.5" />}
|
|
3082
|
+
</button>
|
|
3083
|
+
<span className="text-xs font-mono text-zinc-400">04:15 / 54:20</span>
|
|
3084
|
+
</div>
|
|
3085
|
+
</footer>
|
|
3086
|
+
</div>
|
|
3087
|
+
);
|
|
3088
|
+
}
|
|
3089
|
+
`
|
|
3090
|
+
};
|
|
3091
|
+
|
|
3092
|
+
// src/registry/template-real-estate.ts
|
|
3093
|
+
var templateRealEstate = {
|
|
3094
|
+
name: "template-real-estate",
|
|
3095
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3096
|
+
fileName: "template-real-estate.tsx",
|
|
3097
|
+
content: `"use client";
|
|
3098
|
+
|
|
3099
|
+
import React, { useState } from "react";
|
|
3100
|
+
import { Building2, MapPin, Calendar, Users, Check } from "lucide-react";
|
|
3101
|
+
|
|
3102
|
+
export default function RealEstateTemplate() {
|
|
3103
|
+
const [nights, setNights] = useState(4);
|
|
3104
|
+
const baseRate = 2450;
|
|
3105
|
+
|
|
3106
|
+
return (
|
|
3107
|
+
<div className="min-h-screen bg-[#0c0d12] text-zinc-100 font-sans p-6 sm:p-12">
|
|
3108
|
+
<header className="max-w-5xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
3109
|
+
<span className="font-serif text-base uppercase tracking-widest font-light">Haven Luxury Estates</span>
|
|
3110
|
+
<span className="text-xs uppercase tracking-widest font-mono text-zinc-400">Aspen \u2022 Kyoto \u2022 Zurich</span>
|
|
3111
|
+
</header>
|
|
3112
|
+
|
|
3113
|
+
<main className="max-w-5xl mx-auto py-12 space-y-8">
|
|
3114
|
+
<div className="space-y-3">
|
|
3115
|
+
<div className="text-xs font-mono text-zinc-400">Aspen Valley, Colorado \u2022 Residence #04</div>
|
|
3116
|
+
<h1 className="text-3xl sm:text-5xl font-serif font-light">The Obsidian Pavilion</h1>
|
|
3117
|
+
<p className="text-xs sm:text-sm text-zinc-400 max-w-2xl leading-relaxed">
|
|
3118
|
+
A 9,400 sq.ft cantilevered cedar and blackened steel retreat with panoramic mountain views and private helipad.
|
|
3119
|
+
</p>
|
|
3120
|
+
</div>
|
|
3121
|
+
|
|
3122
|
+
<div className="p-6 rounded-2xl border border-white/10 bg-[#14161f] flex flex-col sm:flex-row justify-between items-center gap-4">
|
|
3123
|
+
<div>
|
|
3124
|
+
<div className="text-xs text-zinc-400">Nightly Rate: $2,450 USD</div>
|
|
3125
|
+
<div className="text-2xl font-serif font-bold mt-0.5">
|
|
3126
|
+
\${(baseRate * nights).toLocaleString()} USD <span className="text-xs font-sans font-normal text-zinc-400">({nights} nights)</span>
|
|
3127
|
+
</div>
|
|
3128
|
+
</div>
|
|
3129
|
+
<button className="px-6 py-3 rounded-xl text-xs font-serif uppercase tracking-wider font-bold bg-white text-black hover:bg-zinc-200 shadow-md">
|
|
3130
|
+
Reserve Residence
|
|
3131
|
+
</button>
|
|
3132
|
+
</div>
|
|
3133
|
+
</main>
|
|
3134
|
+
</div>
|
|
3135
|
+
);
|
|
3136
|
+
}
|
|
3137
|
+
`
|
|
3138
|
+
};
|
|
3139
|
+
|
|
3140
|
+
// src/registry/template-uptime-status.ts
|
|
3141
|
+
var templateUptimeStatus = {
|
|
3142
|
+
name: "template-uptime-status",
|
|
3143
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3144
|
+
fileName: "template-uptime-status.tsx",
|
|
3145
|
+
content: `"use client";
|
|
3146
|
+
|
|
3147
|
+
import React, { useState } from "react";
|
|
3148
|
+
import { CheckCircle2, ShieldCheck, Server, Bell, Globe } from "lucide-react";
|
|
3149
|
+
|
|
3150
|
+
export default function UptimeStatusTemplate() {
|
|
3151
|
+
const services = [
|
|
3152
|
+
{ name: "Global Anycast Edge CDN", uptime: "100.0%", ping: "11ms" },
|
|
3153
|
+
{ name: "Authentication Engine & SSO", uptime: "99.99%", ping: "24ms" },
|
|
3154
|
+
{ name: "Distributed Vector Indexing", uptime: "99.97%", ping: "38ms" },
|
|
3155
|
+
{ name: "PostgreSQL Database Clusters", uptime: "99.95%", ping: "14ms" },
|
|
3156
|
+
];
|
|
3157
|
+
|
|
3158
|
+
return (
|
|
3159
|
+
<div className="min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12">
|
|
3160
|
+
<header className="max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
3161
|
+
<div className="flex items-center gap-2 font-bold text-base">
|
|
3162
|
+
<ShieldCheck className="h-5 w-5 text-emerald-500" />
|
|
3163
|
+
<span>Beacon Status</span>
|
|
3164
|
+
</div>
|
|
3165
|
+
<button className="px-3.5 py-1.5 rounded-xl border border-white/10 text-xs hover:bg-white/10 flex items-center gap-1.5">
|
|
3166
|
+
<Bell className="h-3.5 w-3.5" />
|
|
3167
|
+
<span>Subscribe</span>
|
|
3168
|
+
</button>
|
|
3169
|
+
</header>
|
|
3170
|
+
|
|
3171
|
+
<main className="max-w-4xl mx-auto py-10 space-y-6">
|
|
3172
|
+
<div className="p-5 rounded-2xl border border-emerald-500/30 bg-emerald-500/10 flex items-center justify-between text-xs text-emerald-400 font-semibold">
|
|
3173
|
+
<div className="flex items-center gap-2">
|
|
3174
|
+
<CheckCircle2 className="h-5 w-5" />
|
|
3175
|
+
<span>All Core Services Operational \u2014 99.994% Availability</span>
|
|
3176
|
+
</div>
|
|
3177
|
+
<span className="font-mono">Past 90 Days</span>
|
|
3178
|
+
</div>
|
|
3179
|
+
|
|
3180
|
+
<div className="space-y-3">
|
|
3181
|
+
{services.map((s) => (
|
|
3182
|
+
<div key={s.name} className="p-4 rounded-xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs">
|
|
3183
|
+
<div>
|
|
3184
|
+
<div className="font-bold">{s.name}</div>
|
|
3185
|
+
<div className="text-[10px] text-zinc-400 font-mono">Latency: {s.ping}</div>
|
|
3186
|
+
</div>
|
|
3187
|
+
<span className="text-xs font-mono font-bold text-emerald-400">{s.uptime}</span>
|
|
3188
|
+
</div>
|
|
3189
|
+
))}
|
|
3190
|
+
</div>
|
|
3191
|
+
</main>
|
|
3192
|
+
</div>
|
|
3193
|
+
);
|
|
3194
|
+
}
|
|
3195
|
+
`
|
|
3196
|
+
};
|
|
3197
|
+
|
|
3198
|
+
// src/registry/template-agent-workflow.ts
|
|
3199
|
+
var templateAgentWorkflow = {
|
|
3200
|
+
name: "template-agent-workflow",
|
|
3201
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3202
|
+
fileName: "template-agent-workflow.tsx",
|
|
3203
|
+
content: `"use client";
|
|
3204
|
+
|
|
3205
|
+
import React, { useState } from "react";
|
|
3206
|
+
import { Play, Zap, Database, Cpu, Send, CheckCircle2 } from "lucide-react";
|
|
3207
|
+
|
|
3208
|
+
export default function AgentWorkflowTemplate() {
|
|
3209
|
+
const [isRunning, setIsRunning] = useState(false);
|
|
3210
|
+
const [log, setLog] = useState<string | null>(null);
|
|
3211
|
+
|
|
3212
|
+
const handleRun = () => {
|
|
3213
|
+
setIsRunning(true);
|
|
3214
|
+
setLog("Trigger received. Querying vector database...");
|
|
3215
|
+
setTimeout(() => {
|
|
3216
|
+
setLog("Claude 3.5 Sonnet generated solution. Dispatching webhook...");
|
|
3217
|
+
setTimeout(() => {
|
|
3218
|
+
setIsRunning(false);
|
|
3219
|
+
setLog("\u2713 Execution completed in 680ms. Payload delivered.");
|
|
3220
|
+
}, 700);
|
|
3221
|
+
}, 800);
|
|
3222
|
+
};
|
|
3223
|
+
|
|
3224
|
+
return (
|
|
3225
|
+
<div className="min-h-screen bg-[#08090d] text-zinc-100 font-sans p-6 sm:p-12">
|
|
3226
|
+
<header className="max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
3227
|
+
<span className="font-bold text-base">Nexus Nodes Canvas</span>
|
|
3228
|
+
<button
|
|
3229
|
+
onClick={handleRun}
|
|
3230
|
+
disabled={isRunning}
|
|
3231
|
+
className="px-4 py-2 rounded-xl text-xs font-bold text-white bg-blue-600 hover:bg-blue-500 flex items-center gap-2 shadow-md"
|
|
3232
|
+
>
|
|
3233
|
+
<Play className="h-3.5 w-3.5 fill-current" />
|
|
3234
|
+
<span>{isRunning ? "Running..." : "Test Workflow"}</span>
|
|
3235
|
+
</button>
|
|
3236
|
+
</header>
|
|
3237
|
+
|
|
3238
|
+
<main className="max-w-4xl mx-auto py-12 space-y-6">
|
|
3239
|
+
<div className="grid grid-cols-1 sm:grid-cols-4 gap-3">
|
|
3240
|
+
{[
|
|
3241
|
+
{ name: "Webhook Ingress", icon: Zap, color: "text-amber-400" },
|
|
3242
|
+
{ name: "Pinecone Retrieval", icon: Database, color: "text-cyan-400" },
|
|
3243
|
+
{ name: "Claude 3.5 Reasoning", icon: Cpu, color: "text-blue-400" },
|
|
3244
|
+
{ name: "Slack Dispatcher", icon: Send, color: "text-emerald-400" },
|
|
3245
|
+
].map((n) => {
|
|
3246
|
+
const Icon = n.icon;
|
|
3247
|
+
return (
|
|
3248
|
+
<div key={n.name} className="p-4 rounded-2xl border border-white/10 bg-[#12141c] space-y-2 text-xs">
|
|
3249
|
+
<Icon className={\`h-4 w-4 \${n.color}\`} />
|
|
3250
|
+
<div className="font-bold">{n.name}</div>
|
|
3251
|
+
</div>
|
|
3252
|
+
);
|
|
3253
|
+
})}
|
|
3254
|
+
</div>
|
|
3255
|
+
|
|
3256
|
+
{log && (
|
|
3257
|
+
<div className="p-4 rounded-xl border border-white/10 bg-[#06070a] font-mono text-xs text-blue-400">
|
|
3258
|
+
{log}
|
|
3259
|
+
</div>
|
|
3260
|
+
)}
|
|
3261
|
+
</main>
|
|
3262
|
+
</div>
|
|
3263
|
+
);
|
|
3264
|
+
}
|
|
3265
|
+
`
|
|
3266
|
+
};
|
|
3267
|
+
|
|
3268
|
+
// src/registry/template-restaurant-culinary.ts
|
|
3269
|
+
var templateRestaurantCulinary = {
|
|
3270
|
+
name: "template-restaurant-culinary",
|
|
3271
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3272
|
+
fileName: "template-restaurant-culinary.tsx",
|
|
3273
|
+
content: `"use client";
|
|
3274
|
+
|
|
3275
|
+
import React, { useState } from "react";
|
|
3276
|
+
import { Utensils, Calendar, Users, Award, Wine } from "lucide-react";
|
|
3277
|
+
|
|
3278
|
+
export default function RestaurantCulinaryTemplate() {
|
|
3279
|
+
const [guests, setGuests] = useState(2);
|
|
3280
|
+
const [confirmed, setConfirmed] = useState(false);
|
|
3281
|
+
|
|
3282
|
+
return (
|
|
3283
|
+
<div className="min-h-screen bg-[#0e0d0b] text-[#f5f2eb] font-sans p-6 sm:p-12">
|
|
3284
|
+
<header className="max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-[#2e2b24]">
|
|
3285
|
+
<div>
|
|
3286
|
+
<span className="text-[10px] uppercase font-mono tracking-widest text-amber-500">Komorebi Gastronomy</span>
|
|
3287
|
+
<h1 className="text-xl font-serif">Contemporary Seasonal Dining</h1>
|
|
3288
|
+
</div>
|
|
3289
|
+
<div className="flex items-center gap-1.5 text-xs text-amber-500 font-serif">
|
|
3290
|
+
<Award className="h-4 w-4" />
|
|
3291
|
+
<span>Two Michelin Stars</span>
|
|
3292
|
+
</div>
|
|
3293
|
+
</header>
|
|
3294
|
+
|
|
3295
|
+
<main className="max-w-4xl mx-auto py-12 space-y-8">
|
|
3296
|
+
<div className="space-y-2 text-center">
|
|
3297
|
+
<h2 className="text-3xl sm:text-4xl font-serif font-light">Autumn Tasting Menu (8 Courses)</h2>
|
|
3298
|
+
<p className="text-xs text-[#b8b3a5] max-w-xl mx-auto">
|
|
3299
|
+
Hokkaido sea urchin, wild matsutake, and binchotan-charred Miyazaki A5 wagyu tenderloin.
|
|
3300
|
+
</p>
|
|
3301
|
+
</div>
|
|
3302
|
+
|
|
3303
|
+
<div className="p-6 rounded-3xl border border-[#2e2b24] bg-[#171512] max-w-md mx-auto space-y-4">
|
|
3304
|
+
<div className="font-serif font-bold text-sm">Table Reservation</div>
|
|
3305
|
+
<div className="flex gap-2">
|
|
3306
|
+
{[2, 4, 6].map((g) => (
|
|
3307
|
+
<button
|
|
3308
|
+
key={g}
|
|
3309
|
+
onClick={() => setGuests(g)}
|
|
3310
|
+
className={\`flex-1 py-2 rounded-xl border text-xs font-serif \${
|
|
3311
|
+
guests === g ? "bg-amber-700 text-white border-amber-700" : "border-[#2e2b24] text-[#b8b3a5]"
|
|
3312
|
+
}\`}
|
|
3313
|
+
>
|
|
3314
|
+
{g} Guests
|
|
3315
|
+
</button>
|
|
3316
|
+
))}
|
|
3317
|
+
</div>
|
|
3318
|
+
|
|
3319
|
+
<button
|
|
3320
|
+
onClick={() => setConfirmed(true)}
|
|
3321
|
+
className="w-full py-3 rounded-xl font-serif uppercase tracking-widest text-xs font-bold text-white bg-amber-700 hover:bg-amber-600 shadow-lg"
|
|
3322
|
+
>
|
|
3323
|
+
{confirmed ? "Table Reserved \u2713" : "Reserve Table for " + guests}
|
|
3324
|
+
</button>
|
|
3325
|
+
</div>
|
|
3326
|
+
</main>
|
|
3327
|
+
</div>
|
|
3328
|
+
);
|
|
3329
|
+
}
|
|
3330
|
+
`
|
|
3331
|
+
};
|
|
3332
|
+
|
|
3333
|
+
// src/registry/template-help-center.ts
|
|
3334
|
+
var templateHelpCenter = {
|
|
3335
|
+
name: "template-help-center",
|
|
3336
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3337
|
+
fileName: "template-help-center.tsx",
|
|
3338
|
+
content: `"use client";
|
|
3339
|
+
|
|
3340
|
+
import React, { useState } from "react";
|
|
3341
|
+
import { Search, LifeBuoy, CreditCard, ShieldCheck, Code2, ChevronDown } from "lucide-react";
|
|
3342
|
+
|
|
3343
|
+
export default function HelpCenterTemplate() {
|
|
3344
|
+
const [query, setQuery] = useState("");
|
|
3345
|
+
|
|
3346
|
+
const categories = [
|
|
3347
|
+
{ title: "Getting Started", icon: LifeBuoy, count: "14 articles" },
|
|
3348
|
+
{ title: "Billing & Invoicing", icon: CreditCard, count: "9 articles" },
|
|
3349
|
+
{ title: "Security & 2FA", icon: ShieldCheck, count: "18 articles" },
|
|
3350
|
+
{ title: "Developer API", icon: Code2, count: "22 articles" },
|
|
3351
|
+
];
|
|
3352
|
+
|
|
3353
|
+
return (
|
|
3354
|
+
<div className="min-h-screen bg-[#090b10] text-zinc-100 font-sans p-6 sm:p-12">
|
|
3355
|
+
<header className="max-w-4xl mx-auto flex justify-between items-center pb-6 border-b border-white/10">
|
|
3356
|
+
<span className="font-bold text-base">Resolv Support Desk</span>
|
|
3357
|
+
<button className="px-3.5 py-1.5 rounded-xl text-xs font-semibold bg-indigo-600 hover:bg-indigo-500 text-white shadow-md">
|
|
3358
|
+
Submit Ticket
|
|
3359
|
+
</button>
|
|
3360
|
+
</header>
|
|
3361
|
+
|
|
3362
|
+
<main className="max-w-4xl mx-auto py-12 space-y-8 text-center">
|
|
3363
|
+
<h1 className="text-3xl sm:text-4xl font-extrabold">How can our support team help you?</h1>
|
|
3364
|
+
|
|
3365
|
+
<div className="max-w-md mx-auto relative">
|
|
3366
|
+
<Search className="absolute left-3.5 top-3 h-4 w-4 opacity-50" />
|
|
3367
|
+
<input
|
|
3368
|
+
type="text"
|
|
3369
|
+
value={query}
|
|
3370
|
+
onChange={(e) => setQuery(e.target.value)}
|
|
3371
|
+
placeholder="Search guides, 2FA, billing..."
|
|
3372
|
+
className="w-full pl-10 pr-4 py-2.5 rounded-xl border border-white/10 bg-[#12141c] text-xs outline-none"
|
|
3373
|
+
/>
|
|
3374
|
+
</div>
|
|
3375
|
+
|
|
3376
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 text-left">
|
|
3377
|
+
{categories.map((c) => {
|
|
3378
|
+
const Icon = c.icon;
|
|
3379
|
+
return (
|
|
3380
|
+
<div key={c.title} className="p-4 rounded-2xl border border-white/10 bg-[#12141c] flex items-center justify-between text-xs">
|
|
3381
|
+
<div className="flex items-center gap-3">
|
|
3382
|
+
<div className="p-2 rounded-xl bg-indigo-500/10 text-indigo-400">
|
|
3383
|
+
<Icon className="h-4 w-4" />
|
|
3384
|
+
</div>
|
|
3385
|
+
<div>
|
|
3386
|
+
<div className="font-bold">{c.title}</div>
|
|
3387
|
+
<div className="text-[10px] text-zinc-400">{c.count}</div>
|
|
3388
|
+
</div>
|
|
3389
|
+
</div>
|
|
3390
|
+
</div>
|
|
3391
|
+
);
|
|
3392
|
+
})}
|
|
3393
|
+
</div>
|
|
3394
|
+
</main>
|
|
3395
|
+
</div>
|
|
3396
|
+
);
|
|
3397
|
+
}
|
|
3398
|
+
`
|
|
3399
|
+
};
|
|
3400
|
+
|
|
3401
|
+
// src/registry/template-fitness-athletics.ts
|
|
3402
|
+
var templateFitnessAthletics = {
|
|
3403
|
+
name: "template-fitness-athletics",
|
|
3404
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3405
|
+
fileName: "template-fitness-athletics.tsx",
|
|
3406
|
+
content: `"use client";
|
|
3407
|
+
|
|
3408
|
+
import React, { useState } from "react";
|
|
3409
|
+
import { Activity, Heart, Flame, Trophy, Timer, Plus, CheckCircle2 } from "lucide-react";
|
|
3410
|
+
|
|
3411
|
+
export default function FitnessAthleticsTemplate() {
|
|
3412
|
+
const [bpm, setBpm] = useState(158);
|
|
3413
|
+
const [intervals, setIntervals] = useState([
|
|
3414
|
+
{ title: "Dynamic Hip Mobility", target: "10 min \u2022 Zone 1", done: true },
|
|
3415
|
+
{ title: "Progressive Aerobic Build", target: "15 min @ 140 BPM", done: true },
|
|
3416
|
+
{ title: "4 x 1,000m Lactate Repeats", target: "4 reps @ 3:42/km", done: false },
|
|
3417
|
+
]);
|
|
3418
|
+
|
|
3419
|
+
return (
|
|
3420
|
+
<div
|
|
3421
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3422
|
+
style={{
|
|
3423
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3424
|
+
color: "var(--template-fg, #0f172a)",
|
|
3425
|
+
}}
|
|
3426
|
+
>
|
|
3427
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3428
|
+
<div className="flex items-center gap-2">
|
|
3429
|
+
<Activity className="w-5 h-5 text-rose-500" />
|
|
3430
|
+
<span className="font-bold text-base">AeroPulse Athletics</span>
|
|
3431
|
+
</div>
|
|
3432
|
+
<div className="text-xs font-mono px-3 py-1.5 rounded-full border" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3433
|
+
Recovery: 88% Ready
|
|
3434
|
+
</div>
|
|
3435
|
+
</header>
|
|
3436
|
+
|
|
3437
|
+
<main className="py-8 space-y-6">
|
|
3438
|
+
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
|
3439
|
+
<div className="p-4 rounded-xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3440
|
+
<span className="text-xs opacity-70">Daily Strain</span>
|
|
3441
|
+
<div className="text-2xl font-extrabold mt-1">14.8 / 21.0</div>
|
|
3442
|
+
</div>
|
|
3443
|
+
<div className="p-4 rounded-xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3444
|
+
<span className="text-xs opacity-70">Current Target BPM</span>
|
|
3445
|
+
<div className="text-2xl font-extrabold text-indigo-600 mt-1">{bpm} BPM</div>
|
|
3446
|
+
</div>
|
|
3447
|
+
<div className="p-4 rounded-xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3448
|
+
<span className="text-xs opacity-70">Resting Heart Rate</span>
|
|
3449
|
+
<div className="text-2xl font-extrabold text-emerald-600 mt-1">48 bpm</div>
|
|
3450
|
+
</div>
|
|
3451
|
+
</div>
|
|
3452
|
+
|
|
3453
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3454
|
+
<h3 className="font-bold text-sm mb-2">Cardio Zone Spectrum</h3>
|
|
3455
|
+
<input
|
|
3456
|
+
type="range"
|
|
3457
|
+
min="100"
|
|
3458
|
+
max="195"
|
|
3459
|
+
value={bpm}
|
|
3460
|
+
onChange={(e) => setBpm(Number(e.target.value))}
|
|
3461
|
+
className="w-full accent-indigo-600"
|
|
3462
|
+
/>
|
|
3463
|
+
</div>
|
|
3464
|
+
</main>
|
|
3465
|
+
</div>
|
|
3466
|
+
);
|
|
3467
|
+
}`
|
|
3468
|
+
};
|
|
3469
|
+
|
|
3470
|
+
// src/registry/template-wilderness-travel.ts
|
|
3471
|
+
var templateWildernessTravel = {
|
|
3472
|
+
name: "template-wilderness-travel",
|
|
3473
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3474
|
+
fileName: "template-wilderness-travel.tsx",
|
|
3475
|
+
content: `"use client";
|
|
3476
|
+
|
|
3477
|
+
import React, { useState } from "react";
|
|
3478
|
+
import { Compass, Mountain, Scale, Radio, Tent } from "lucide-react";
|
|
3479
|
+
|
|
3480
|
+
export default function WildernessTravelTemplate() {
|
|
3481
|
+
const [baseWeight, setBaseWeight] = useState(6.4);
|
|
3482
|
+
const [foodDays, setFoodDays] = useState(6);
|
|
3483
|
+
const totalWeight = (baseWeight + foodDays * 0.75 + 2.0).toFixed(1);
|
|
3484
|
+
|
|
3485
|
+
return (
|
|
3486
|
+
<div
|
|
3487
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3488
|
+
style={{
|
|
3489
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3490
|
+
color: "var(--template-fg, #0f172a)",
|
|
3491
|
+
}}
|
|
3492
|
+
>
|
|
3493
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3494
|
+
<div className="flex items-center gap-2">
|
|
3495
|
+
<Compass className="w-5 h-5 text-emerald-600" />
|
|
3496
|
+
<span className="font-bold text-base">NomadRoute Expeditions</span>
|
|
3497
|
+
</div>
|
|
3498
|
+
<button className="px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-emerald-600">
|
|
3499
|
+
Reserve Permits
|
|
3500
|
+
</button>
|
|
3501
|
+
</header>
|
|
3502
|
+
|
|
3503
|
+
<main className="py-8 space-y-6">
|
|
3504
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3505
|
+
<h2 className="text-xl font-extrabold mb-1">Patagonia High Icefield Crossing</h2>
|
|
3506
|
+
<p className="text-xs opacity-70">148 km \u2022 +6,850m Cumulative Gain \u2022 8 Days</p>
|
|
3507
|
+
</div>
|
|
3508
|
+
|
|
3509
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3510
|
+
<div className="flex items-center justify-between mb-4">
|
|
3511
|
+
<h3 className="font-bold text-sm">Skin-Out Pack Weight: {totalWeight} kg</h3>
|
|
3512
|
+
<span className="text-xs px-2 py-0.5 rounded bg-emerald-500/10 text-emerald-600 font-bold">Ultralight Load</span>
|
|
3513
|
+
</div>
|
|
3514
|
+
<input
|
|
3515
|
+
type="range"
|
|
3516
|
+
min="4.0"
|
|
3517
|
+
max="12.0"
|
|
3518
|
+
step="0.2"
|
|
3519
|
+
value={baseWeight}
|
|
3520
|
+
onChange={(e) => setBaseWeight(parseFloat(e.target.value))}
|
|
3521
|
+
className="w-full accent-emerald-600"
|
|
3522
|
+
/>
|
|
3523
|
+
</div>
|
|
3524
|
+
</main>
|
|
3525
|
+
</div>
|
|
3526
|
+
);
|
|
3527
|
+
}`
|
|
3528
|
+
};
|
|
3529
|
+
|
|
3530
|
+
// src/registry/template-devops-kubernetes.ts
|
|
3531
|
+
var templateDevopsKubernetes = {
|
|
3532
|
+
name: "template-devops-kubernetes",
|
|
3533
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3534
|
+
fileName: "template-devops-kubernetes.tsx",
|
|
3535
|
+
content: `"use client";
|
|
3536
|
+
|
|
3537
|
+
import React, { useState } from "react";
|
|
3538
|
+
import { Server, Cpu, Database, Terminal, Search, SlidersHorizontal } from "lucide-react";
|
|
3539
|
+
|
|
3540
|
+
export default function DevopsKubernetesTemplate() {
|
|
3541
|
+
const [canary, setCanary] = useState(15);
|
|
3542
|
+
|
|
3543
|
+
return (
|
|
3544
|
+
<div
|
|
3545
|
+
className="min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto"
|
|
3546
|
+
style={{
|
|
3547
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3548
|
+
color: "var(--template-fg, #0f172a)",
|
|
3549
|
+
}}
|
|
3550
|
+
>
|
|
3551
|
+
<header className="flex justify-between items-center pb-6 border-b font-sans" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3552
|
+
<div className="flex items-center gap-2">
|
|
3553
|
+
<Server className="w-5 h-5 text-indigo-600" />
|
|
3554
|
+
<span className="font-bold text-base">KubeOrbit Cloud</span>
|
|
3555
|
+
</div>
|
|
3556
|
+
<span className="text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 border border-emerald-500/20 font-mono">
|
|
3557
|
+
242/248 Pods Healthy
|
|
3558
|
+
</span>
|
|
3559
|
+
</header>
|
|
3560
|
+
|
|
3561
|
+
<main className="py-8 space-y-6">
|
|
3562
|
+
<div className="p-6 rounded-2xl border font-sans" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3563
|
+
<h3 className="font-bold text-sm mb-2">Canary Ingress Weight: {canary}%</h3>
|
|
3564
|
+
<input
|
|
3565
|
+
type="range"
|
|
3566
|
+
min="0"
|
|
3567
|
+
max="100"
|
|
3568
|
+
value={canary}
|
|
3569
|
+
onChange={(e) => setCanary(Number(e.target.value))}
|
|
3570
|
+
className="w-full accent-indigo-600"
|
|
3571
|
+
/>
|
|
3572
|
+
</div>
|
|
3573
|
+
</main>
|
|
3574
|
+
</div>
|
|
3575
|
+
);
|
|
3576
|
+
}`
|
|
3577
|
+
};
|
|
3578
|
+
|
|
3579
|
+
// src/registry/template-audio-daw.ts
|
|
3580
|
+
var templateAudioDaw = {
|
|
3581
|
+
name: "template-audio-daw",
|
|
3582
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3583
|
+
fileName: "template-audio-daw.tsx",
|
|
3584
|
+
content: `"use client";
|
|
3585
|
+
|
|
3586
|
+
import React, { useState, useEffect } from "react";
|
|
3587
|
+
import { Play, Pause, Disc, Sliders, Volume2, ShoppingBag } from "lucide-react";
|
|
3588
|
+
|
|
3589
|
+
export default function AudioDawTemplate() {
|
|
3590
|
+
const [isPlaying, setIsPlaying] = useState(false);
|
|
3591
|
+
const [bpm, setBpm] = useState(140);
|
|
3592
|
+
const [step, setStep] = useState(0);
|
|
3593
|
+
|
|
3594
|
+
useEffect(() => {
|
|
3595
|
+
let interval: NodeJS.Timeout;
|
|
3596
|
+
if (isPlaying) {
|
|
3597
|
+
interval = setInterval(() => setStep((s) => (s + 1) % 16), (60 / bpm / 4) * 1000);
|
|
3598
|
+
}
|
|
3599
|
+
return () => clearInterval(interval);
|
|
3600
|
+
}, [isPlaying, bpm]);
|
|
3601
|
+
|
|
3602
|
+
return (
|
|
3603
|
+
<div
|
|
3604
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3605
|
+
style={{
|
|
3606
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3607
|
+
color: "var(--template-fg, #0f172a)",
|
|
3608
|
+
}}
|
|
3609
|
+
>
|
|
3610
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3611
|
+
<div className="flex items-center gap-2">
|
|
3612
|
+
<Disc className="w-5 h-5 text-purple-600" />
|
|
3613
|
+
<span className="font-bold text-base">SoundForge Studio</span>
|
|
3614
|
+
</div>
|
|
3615
|
+
<button onClick={() => setIsPlaying(!isPlaying)} className="px-4 py-2 rounded-xl text-xs font-semibold text-white bg-purple-600 flex items-center gap-1.5">
|
|
3616
|
+
{isPlaying ? <Pause className="w-3.5 h-3.5" /> : <Play className="w-3.5 h-3.5" />}
|
|
3617
|
+
<span>{isPlaying ? "Pause" : "Play Groove"}</span>
|
|
3618
|
+
</button>
|
|
3619
|
+
</header>
|
|
3620
|
+
|
|
3621
|
+
<main className="py-8 space-y-6">
|
|
3622
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3623
|
+
<div className="flex justify-between items-center mb-4">
|
|
3624
|
+
<h3 className="font-bold text-sm">16-Step Beat Grid ({bpm} BPM)</h3>
|
|
3625
|
+
<span className="font-mono text-xs opacity-60">Step {step + 1} / 16</span>
|
|
3626
|
+
</div>
|
|
3627
|
+
<div className="grid grid-cols-16 gap-1">
|
|
3628
|
+
{Array.from({ length: 16 }).map((_, i) => (
|
|
3629
|
+
<div key={i} className={\`h-10 rounded border \${step === i && isPlaying ? "bg-purple-600 text-white" : "bg-zinc-100 dark:bg-zinc-800"}\`} />
|
|
3630
|
+
))}
|
|
3631
|
+
</div>
|
|
3632
|
+
</div>
|
|
3633
|
+
</main>
|
|
3634
|
+
</div>
|
|
3635
|
+
);
|
|
3636
|
+
}`
|
|
3637
|
+
};
|
|
3638
|
+
|
|
3639
|
+
// src/registry/template-gamified-habits.ts
|
|
3640
|
+
var templateGamifiedHabits = {
|
|
3641
|
+
name: "template-gamified-habits",
|
|
3642
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3643
|
+
fileName: "template-gamified-habits.tsx",
|
|
3644
|
+
content: `"use client";
|
|
3645
|
+
|
|
3646
|
+
import React, { useState } from "react";
|
|
3647
|
+
import { Shield, Sword, Sparkles, Coins, Flame, CheckCircle2 } from "lucide-react";
|
|
3648
|
+
|
|
3649
|
+
export default function GamifiedHabitsTemplate() {
|
|
3650
|
+
const [xp, setXp] = useState(2450);
|
|
3651
|
+
const [gold, setGold] = useState(1420);
|
|
3652
|
+
const [quests, setQuests] = useState([
|
|
3653
|
+
{ id: 1, title: "Slay 90m Deep Focus Work Block", xp: 180, done: false },
|
|
3654
|
+
{ id: 2, title: "Drink 2.5L Water Elixir", xp: 60, done: true },
|
|
3655
|
+
]);
|
|
3656
|
+
|
|
3657
|
+
const toggle = (id: number, questXp: number) => {
|
|
3658
|
+
setQuests((prev) =>
|
|
3659
|
+
prev.map((q) => {
|
|
3660
|
+
if (q.id === id && !q.done) {
|
|
3661
|
+
setXp((x) => x + questXp);
|
|
3662
|
+
setGold((g) => g + 40);
|
|
3663
|
+
return { ...q, done: true };
|
|
3664
|
+
}
|
|
3665
|
+
return q;
|
|
3666
|
+
})
|
|
3667
|
+
);
|
|
3668
|
+
};
|
|
3669
|
+
|
|
3670
|
+
return (
|
|
3671
|
+
<div
|
|
3672
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3673
|
+
style={{
|
|
3674
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3675
|
+
color: "var(--template-fg, #0f172a)",
|
|
3676
|
+
}}
|
|
3677
|
+
>
|
|
3678
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3679
|
+
<div className="flex items-center gap-2">
|
|
3680
|
+
<Shield className="w-5 h-5 text-amber-500" />
|
|
3681
|
+
<span className="font-bold text-base">QuestCraft RPG</span>
|
|
3682
|
+
</div>
|
|
3683
|
+
<div className="text-xs font-mono font-bold text-amber-500 flex items-center gap-1">
|
|
3684
|
+
<Coins className="w-3.5 h-3.5" />
|
|
3685
|
+
<span>{gold} Gold</span>
|
|
3686
|
+
</div>
|
|
3687
|
+
</header>
|
|
3688
|
+
|
|
3689
|
+
<main className="py-8 space-y-6">
|
|
3690
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3691
|
+
<h2 className="font-extrabold text-base mb-1">Level 14 Paladin \u2022 {xp} / 3,000 XP</h2>
|
|
3692
|
+
<div className="w-full h-2 bg-zinc-200 dark:bg-zinc-800 rounded-full overflow-hidden">
|
|
3693
|
+
<div className="h-full bg-amber-500" style={{ width: \`\${(xp / 3000) * 100}%\` }} />
|
|
3694
|
+
</div>
|
|
3695
|
+
</div>
|
|
3696
|
+
</main>
|
|
3697
|
+
</div>
|
|
3698
|
+
);
|
|
3699
|
+
}`
|
|
3700
|
+
};
|
|
3701
|
+
|
|
3702
|
+
// src/registry/template-global-logistics.ts
|
|
3703
|
+
var templateGlobalLogistics = {
|
|
3704
|
+
name: "template-global-logistics",
|
|
3705
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3706
|
+
fileName: "template-global-logistics.tsx",
|
|
3707
|
+
content: `"use client";
|
|
3708
|
+
|
|
3709
|
+
import React, { useState } from "react";
|
|
3710
|
+
import { Ship, Truck, Thermometer, Anchor, Navigation } from "lucide-react";
|
|
3711
|
+
|
|
3712
|
+
export default function GlobalLogisticsTemplate() {
|
|
3713
|
+
const [activeStage, setActiveStage] = useState(2);
|
|
3714
|
+
|
|
3715
|
+
return (
|
|
3716
|
+
<div
|
|
3717
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3718
|
+
style={{
|
|
3719
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3720
|
+
color: "var(--template-fg, #0f172a)",
|
|
3721
|
+
}}
|
|
3722
|
+
>
|
|
3723
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3724
|
+
<div className="flex items-center gap-2">
|
|
3725
|
+
<Anchor className="w-5 h-5 text-cyan-600" />
|
|
3726
|
+
<span className="font-bold text-base">Vanguard Logistics</span>
|
|
3727
|
+
</div>
|
|
3728
|
+
<span className="text-xs font-mono text-emerald-600 font-bold">14 Vessels Active</span>
|
|
3729
|
+
</header>
|
|
3730
|
+
|
|
3731
|
+
<main className="py-8 space-y-6">
|
|
3732
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3733
|
+
<span className="text-xs font-mono opacity-60">MASTER BILL OF LADING</span>
|
|
3734
|
+
<h2 className="text-xl font-extrabold font-mono mt-1">BOL-849204-HKG</h2>
|
|
3735
|
+
<p className="text-xs opacity-70 mt-1">Shenzhen (YTN) → Rotterdam Gateway (RTM)</p>
|
|
3736
|
+
</div>
|
|
3737
|
+
</main>
|
|
3738
|
+
</div>
|
|
3739
|
+
);
|
|
3740
|
+
}`
|
|
3741
|
+
};
|
|
3742
|
+
|
|
3743
|
+
// src/registry/template-gaming-esports.ts
|
|
3744
|
+
var templateGamingEsports = {
|
|
3745
|
+
name: "template-gaming-esports",
|
|
3746
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3747
|
+
fileName: "template-gaming-esports.tsx",
|
|
3748
|
+
content: `"use client";
|
|
3749
|
+
|
|
3750
|
+
import React, { useState } from "react";
|
|
3751
|
+
import { Trophy, Tv, Users, Target, Crown } from "lucide-react";
|
|
3752
|
+
|
|
3753
|
+
export default function GamingEsportsTemplate() {
|
|
3754
|
+
const [votes, setVotes] = useState(64);
|
|
3755
|
+
|
|
3756
|
+
return (
|
|
3757
|
+
<div
|
|
3758
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3759
|
+
style={{
|
|
3760
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3761
|
+
color: "var(--template-fg, #0f172a)",
|
|
3762
|
+
}}
|
|
3763
|
+
>
|
|
3764
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3765
|
+
<div className="flex items-center gap-2">
|
|
3766
|
+
<Trophy className="w-5 h-5 text-rose-500" />
|
|
3767
|
+
<span className="font-bold text-base">Valkyrie Esports</span>
|
|
3768
|
+
</div>
|
|
3769
|
+
<span className="text-xs font-bold text-rose-500 font-mono">LIVE \u2022 284k Viewers</span>
|
|
3770
|
+
</header>
|
|
3771
|
+
|
|
3772
|
+
<main className="py-8 space-y-6">
|
|
3773
|
+
<div className="p-6 rounded-2xl border flex items-center justify-between" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3774
|
+
<div className="font-extrabold text-lg">Sentinels (11)</div>
|
|
3775
|
+
<div className="font-mono text-xs opacity-60">Map 5 Inferno</div>
|
|
3776
|
+
<div className="font-extrabold text-lg">Cloud9 (9)</div>
|
|
3777
|
+
</div>
|
|
3778
|
+
</main>
|
|
3779
|
+
</div>
|
|
3780
|
+
);
|
|
3781
|
+
}`
|
|
3782
|
+
};
|
|
3783
|
+
|
|
3784
|
+
// src/registry/template-architecture-spatial.ts
|
|
3785
|
+
var templateArchitectureSpatial = {
|
|
3786
|
+
name: "template-architecture-spatial",
|
|
3787
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3788
|
+
fileName: "template-architecture-spatial.tsx",
|
|
3789
|
+
content: `"use client";
|
|
3790
|
+
|
|
3791
|
+
import React, { useState } from "react";
|
|
3792
|
+
import { Layers, Sun, Building, FileText } from "lucide-react";
|
|
3793
|
+
|
|
3794
|
+
export default function ArchitectureSpatialTemplate() {
|
|
3795
|
+
const [hour, setHour] = useState(13);
|
|
3796
|
+
|
|
3797
|
+
return (
|
|
3798
|
+
<div
|
|
3799
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3800
|
+
style={{
|
|
3801
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3802
|
+
color: "var(--template-fg, #0f172a)",
|
|
3803
|
+
}}
|
|
3804
|
+
>
|
|
3805
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3806
|
+
<div className="flex items-center gap-2">
|
|
3807
|
+
<Building className="w-5 h-5 text-amber-600" />
|
|
3808
|
+
<span className="font-bold text-base">Arcform Spatial</span>
|
|
3809
|
+
</div>
|
|
3810
|
+
<span className="text-xs px-2.5 py-1 rounded-full bg-emerald-500/10 text-emerald-600 font-mono">
|
|
3811
|
+
LEED Platinum \u2022 620 m\xB2
|
|
3812
|
+
</span>
|
|
3813
|
+
</header>
|
|
3814
|
+
|
|
3815
|
+
<main className="py-8 space-y-6">
|
|
3816
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3817
|
+
<h3 className="font-bold text-sm mb-2">Solar Daylight Azimuth ({hour}:00 JST)</h3>
|
|
3818
|
+
<input
|
|
3819
|
+
type="range"
|
|
3820
|
+
min="8"
|
|
3821
|
+
max="18"
|
|
3822
|
+
value={hour}
|
|
3823
|
+
onChange={(e) => setHour(Number(e.target.value))}
|
|
3824
|
+
className="w-full accent-amber-600"
|
|
3825
|
+
/>
|
|
3826
|
+
</div>
|
|
3827
|
+
</main>
|
|
3828
|
+
</div>
|
|
3829
|
+
);
|
|
3830
|
+
}`
|
|
3831
|
+
};
|
|
3832
|
+
|
|
3833
|
+
// src/registry/template-cybersecurity-soc.ts
|
|
3834
|
+
var templateCybersecuritySoc = {
|
|
3835
|
+
name: "template-cybersecurity-soc",
|
|
3836
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3837
|
+
fileName: "template-cybersecurity-soc.tsx",
|
|
3838
|
+
content: `"use client";
|
|
3839
|
+
|
|
3840
|
+
import React, { useState } from "react";
|
|
3841
|
+
import { ShieldAlert, Terminal, Lock, CheckCircle2 } from "lucide-react";
|
|
3842
|
+
|
|
3843
|
+
export default function CybersecuritySocTemplate() {
|
|
3844
|
+
const [quarantined, setQuarantined] = useState(false);
|
|
3845
|
+
|
|
3846
|
+
return (
|
|
3847
|
+
<div
|
|
3848
|
+
className="min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto"
|
|
3849
|
+
style={{
|
|
3850
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3851
|
+
color: "var(--template-fg, #0f172a)",
|
|
3852
|
+
}}
|
|
3853
|
+
>
|
|
3854
|
+
<header className="flex justify-between items-center pb-6 border-b font-sans" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3855
|
+
<div className="flex items-center gap-2">
|
|
3856
|
+
<ShieldAlert className="w-5 h-5 text-rose-600" />
|
|
3857
|
+
<span className="font-bold text-base">Aegis SOC</span>
|
|
3858
|
+
</div>
|
|
3859
|
+
<button
|
|
3860
|
+
onClick={() => setQuarantined(!quarantined)}
|
|
3861
|
+
className={\`px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white \${quarantined ? "bg-gray-600" : "bg-rose-600"}\`}
|
|
3862
|
+
>
|
|
3863
|
+
{quarantined ? "Host Air-Gapped" : "Isolate Host"}
|
|
3864
|
+
</button>
|
|
3865
|
+
</header>
|
|
3866
|
+
|
|
3867
|
+
<main className="py-8 space-y-6">
|
|
3868
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3869
|
+
<div className="text-xs text-rose-600 font-bold mb-1">CRITICAL \u2022 MITRE T1021.002</div>
|
|
3870
|
+
<h2 className="text-base font-extrabold font-sans">Pass-the-Hash Lateral Movement via SMB</h2>
|
|
3871
|
+
<p className="text-xs opacity-70 mt-1">Target Host: srv-dc-primary-01.internal (10.240.12.8)</p>
|
|
3872
|
+
</div>
|
|
3873
|
+
</main>
|
|
3874
|
+
</div>
|
|
3875
|
+
);
|
|
3876
|
+
}`
|
|
3877
|
+
};
|
|
3878
|
+
|
|
3879
|
+
// src/registry/template-cleantech-agriculture.ts
|
|
3880
|
+
var templateCleantechAgriculture = {
|
|
3881
|
+
name: "template-cleantech-agriculture",
|
|
3882
|
+
dependencies: ["framer-motion", "lucide-react"],
|
|
3883
|
+
fileName: "template-cleantech-agriculture.tsx",
|
|
3884
|
+
content: `"use client";
|
|
3885
|
+
|
|
3886
|
+
import React, { useState } from "react";
|
|
3887
|
+
import { Sprout, Droplets, Sun, Wind, Leaf } from "lucide-react";
|
|
3888
|
+
|
|
3889
|
+
export default function CleantechAgricultureTemplate() {
|
|
3890
|
+
const [ph, setPh] = useState(6.2);
|
|
3891
|
+
const [red, setRed] = useState(65);
|
|
3892
|
+
|
|
3893
|
+
return (
|
|
3894
|
+
<div
|
|
3895
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3896
|
+
style={{
|
|
3897
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3898
|
+
color: "var(--template-fg, #0f172a)",
|
|
3899
|
+
}}
|
|
3900
|
+
>
|
|
3901
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3902
|
+
<div className="flex items-center gap-2">
|
|
3903
|
+
<Sprout className="w-5 h-5 text-emerald-600" />
|
|
3904
|
+
<span className="font-bold text-base">Verdant IoT</span>
|
|
3905
|
+
</div>
|
|
3906
|
+
<span className="text-xs font-mono text-emerald-600 font-bold">98.4% Water Recycled</span>
|
|
3907
|
+
</header>
|
|
3908
|
+
|
|
3909
|
+
<main className="py-8 space-y-6">
|
|
3910
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3911
|
+
<h3 className="font-bold text-sm mb-2">Hydroponic pH Level: {ph}</h3>
|
|
3912
|
+
<input
|
|
3913
|
+
type="range"
|
|
3914
|
+
min="5.5"
|
|
3915
|
+
max="7.0"
|
|
3916
|
+
step="0.1"
|
|
3917
|
+
value={ph}
|
|
3918
|
+
onChange={(e) => setPh(parseFloat(e.target.value))}
|
|
3919
|
+
className="w-full accent-emerald-600"
|
|
3920
|
+
/>
|
|
3921
|
+
</div>
|
|
3922
|
+
</main>
|
|
3923
|
+
</div>
|
|
3924
|
+
);
|
|
3925
|
+
}`
|
|
3926
|
+
};
|
|
3927
|
+
|
|
3928
|
+
// src/registry/template-juris-vault.ts
|
|
3929
|
+
var templateJurisVault = {
|
|
3930
|
+
name: "template-juris-vault",
|
|
3931
|
+
dependencies: ["lucide-react"],
|
|
3932
|
+
fileName: "template-juris-vault.tsx",
|
|
3933
|
+
content: `"use client";
|
|
3934
|
+
|
|
3935
|
+
import React, { useState } from "react";
|
|
3936
|
+
import { Scale, FileText, CheckCircle2, AlertTriangle, PenTool } from "lucide-react";
|
|
3937
|
+
|
|
3938
|
+
export default function JurisVaultTemplate() {
|
|
3939
|
+
const [signed, setSigned] = useState(false);
|
|
3940
|
+
|
|
3941
|
+
return (
|
|
3942
|
+
<div
|
|
3943
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
3944
|
+
style={{
|
|
3945
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3946
|
+
color: "var(--template-fg, #0f172a)",
|
|
3947
|
+
}}
|
|
3948
|
+
>
|
|
3949
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3950
|
+
<div className="flex items-center gap-2">
|
|
3951
|
+
<Scale className="w-5 h-5 text-indigo-600" />
|
|
3952
|
+
<span className="font-bold text-base">JurisVault AI</span>
|
|
3953
|
+
</div>
|
|
3954
|
+
<button
|
|
3955
|
+
onClick={() => setSigned(true)}
|
|
3956
|
+
className="px-3.5 py-1.5 rounded-xl text-xs font-semibold text-white bg-indigo-600 transition-opacity hover:opacity-90"
|
|
3957
|
+
>
|
|
3958
|
+
{signed ? "Executed & Signed" : "Approve & E-Sign"}
|
|
3959
|
+
</button>
|
|
3960
|
+
</header>
|
|
3961
|
+
|
|
3962
|
+
<main className="py-8 space-y-6">
|
|
3963
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3964
|
+
<div className="text-xs text-rose-600 font-bold mb-1">CRITICAL RISK \u2022 SEC-8.2</div>
|
|
3965
|
+
<h2 className="text-base font-bold">Limitation of Liability & Consequential Damages</h2>
|
|
3966
|
+
<p className="text-xs opacity-70 mt-2">Counterparty proposes uncapped liability. Recommended: Insert 2x ACV fallback clause.</p>
|
|
3967
|
+
</div>
|
|
3968
|
+
</main>
|
|
3969
|
+
</div>
|
|
3970
|
+
);
|
|
3971
|
+
}`
|
|
3972
|
+
};
|
|
3973
|
+
|
|
3974
|
+
// src/registry/template-orbitalx-mission.ts
|
|
3975
|
+
var templateOrbitalxMission = {
|
|
3976
|
+
name: "template-orbitalx-mission",
|
|
3977
|
+
dependencies: ["lucide-react"],
|
|
3978
|
+
fileName: "template-orbitalx-mission.tsx",
|
|
3979
|
+
content: `"use client";
|
|
3980
|
+
|
|
3981
|
+
import React, { useState } from "react";
|
|
3982
|
+
import { Satellite, Radio, Compass, Zap, Terminal } from "lucide-react";
|
|
3983
|
+
|
|
3984
|
+
export default function OrbitalXTemplate() {
|
|
3985
|
+
const [armed, setArmed] = useState(false);
|
|
3986
|
+
|
|
3987
|
+
return (
|
|
3988
|
+
<div
|
|
3989
|
+
className="min-h-screen transition-colors text-left p-6 font-mono max-w-5xl mx-auto"
|
|
3990
|
+
style={{
|
|
3991
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
3992
|
+
color: "var(--template-fg, #0f172a)",
|
|
3993
|
+
}}
|
|
3994
|
+
>
|
|
3995
|
+
<header className="flex justify-between items-center pb-6 border-b font-sans" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
3996
|
+
<div className="flex items-center gap-2">
|
|
3997
|
+
<Satellite className="w-5 h-5 text-blue-600" />
|
|
3998
|
+
<span className="font-bold text-base">OrbitalX Operations</span>
|
|
3999
|
+
</div>
|
|
4000
|
+
<span className="text-xs font-mono text-emerald-500 font-bold">AOS in 04m 12s</span>
|
|
4001
|
+
</header>
|
|
4002
|
+
|
|
4003
|
+
<main className="py-8 space-y-6">
|
|
4004
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4005
|
+
<div className="text-xs opacity-60">ORBITAL VELOCITY: 7.58 km/s \u2022 LEO 545 km</div>
|
|
4006
|
+
<h2 className="text-base font-bold font-sans mt-1">AstraConstellation-07 (NORAD 58210)</h2>
|
|
4007
|
+
<p className="text-xs opacity-75 mt-2">Propellant: 78.4% Hydrazine \u2022 Solar: 1,420 W Nominal</p>
|
|
4008
|
+
</div>
|
|
4009
|
+
</main>
|
|
4010
|
+
</div>
|
|
4011
|
+
);
|
|
4012
|
+
}`
|
|
4013
|
+
};
|
|
4014
|
+
|
|
4015
|
+
// src/registry/template-cineboard-studio.ts
|
|
4016
|
+
var templateCineboardStudio = {
|
|
4017
|
+
name: "template-cineboard-studio",
|
|
4018
|
+
dependencies: ["lucide-react"],
|
|
4019
|
+
fileName: "template-cineboard-studio.tsx",
|
|
4020
|
+
content: `"use client";
|
|
4021
|
+
|
|
4022
|
+
import React, { useState } from "react";
|
|
4023
|
+
import { Clapperboard, Film, Camera, Video } from "lucide-react";
|
|
4024
|
+
|
|
4025
|
+
export default function CineBoardTemplate() {
|
|
4026
|
+
const [ratio, setRatio] = useState("2.39:1");
|
|
4027
|
+
|
|
4028
|
+
return (
|
|
4029
|
+
<div
|
|
4030
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4031
|
+
style={{
|
|
4032
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4033
|
+
color: "var(--template-fg, #0f172a)",
|
|
4034
|
+
}}
|
|
4035
|
+
>
|
|
4036
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4037
|
+
<div className="flex items-center gap-2">
|
|
4038
|
+
<Clapperboard className="w-5 h-5 text-rose-600" />
|
|
4039
|
+
<span className="font-bold text-base">CineBoard Studio</span>
|
|
4040
|
+
</div>
|
|
4041
|
+
<div className="text-xs font-mono font-bold bg-rose-600/10 text-rose-600 px-2 py-1 rounded">
|
|
4042
|
+
Framing: {ratio}
|
|
4043
|
+
</div>
|
|
4044
|
+
</header>
|
|
4045
|
+
|
|
4046
|
+
<main className="py-8 space-y-6">
|
|
4047
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4048
|
+
<h2 className="text-base font-bold">SCENE 14A \u2022 SHOT 01 (EXT. HIGHWAY DUSK)</h2>
|
|
4049
|
+
<p className="text-xs opacity-75 mt-1">Cooke Anamorphic 40mm T2.3 \u2022 Drone Push-In (3.2m/s)</p>
|
|
4050
|
+
</div>
|
|
4051
|
+
</main>
|
|
4052
|
+
</div>
|
|
4053
|
+
);
|
|
4054
|
+
}`
|
|
4055
|
+
};
|
|
4056
|
+
|
|
4057
|
+
// src/registry/template-domus-living.ts
|
|
4058
|
+
var templateDomusLiving = {
|
|
4059
|
+
name: "template-domus-living",
|
|
4060
|
+
dependencies: ["lucide-react"],
|
|
4061
|
+
fileName: "template-domus-living.tsx",
|
|
4062
|
+
content: `"use client";
|
|
4063
|
+
|
|
4064
|
+
import React, { useState } from "react";
|
|
4065
|
+
import { Home, Thermometer, Sun, Zap, ShieldCheck } from "lucide-react";
|
|
4066
|
+
|
|
4067
|
+
export default function DomusLivingTemplate() {
|
|
4068
|
+
const [temp, setTemp] = useState(21.5);
|
|
4069
|
+
|
|
4070
|
+
return (
|
|
4071
|
+
<div
|
|
4072
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4073
|
+
style={{
|
|
4074
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4075
|
+
color: "var(--template-fg, #0f172a)",
|
|
4076
|
+
}}
|
|
4077
|
+
>
|
|
4078
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4079
|
+
<div className="flex items-center gap-2">
|
|
4080
|
+
<Home className="w-5 h-5 text-emerald-600" />
|
|
4081
|
+
<span className="font-bold text-base">Domus Living</span>
|
|
4082
|
+
</div>
|
|
4083
|
+
<span className="text-xs font-semibold text-emerald-600">Perimeter Armed</span>
|
|
4084
|
+
</header>
|
|
4085
|
+
|
|
4086
|
+
<main className="py-8 space-y-6">
|
|
4087
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4088
|
+
<h3 className="font-bold text-sm mb-2">Living Pavilion Climate: {temp}\xB0C</h3>
|
|
4089
|
+
<input
|
|
4090
|
+
type="range"
|
|
4091
|
+
min="18.0"
|
|
4092
|
+
max="26.0"
|
|
4093
|
+
step="0.5"
|
|
4094
|
+
value={temp}
|
|
4095
|
+
onChange={(e) => setTemp(parseFloat(e.target.value))}
|
|
4096
|
+
className="w-full accent-emerald-600"
|
|
4097
|
+
/>
|
|
4098
|
+
</div>
|
|
4099
|
+
</main>
|
|
4100
|
+
</div>
|
|
4101
|
+
);
|
|
4102
|
+
}`
|
|
4103
|
+
};
|
|
4104
|
+
|
|
4105
|
+
// src/registry/template-hyperion-ev.ts
|
|
4106
|
+
var templateHyperionEv = {
|
|
4107
|
+
name: "template-hyperion-ev",
|
|
4108
|
+
dependencies: ["lucide-react"],
|
|
4109
|
+
fileName: "template-hyperion-ev.tsx",
|
|
4110
|
+
content: `"use client";
|
|
4111
|
+
|
|
4112
|
+
import React, { useState } from "react";
|
|
4113
|
+
import { Car, BatteryCharging, Zap, Gauge } from "lucide-react";
|
|
4114
|
+
|
|
4115
|
+
export default function HyperionEvTemplate() {
|
|
4116
|
+
const [soc, setSoc] = useState(74);
|
|
4117
|
+
|
|
4118
|
+
return (
|
|
4119
|
+
<div
|
|
4120
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4121
|
+
style={{
|
|
4122
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4123
|
+
color: "var(--template-fg, #0f172a)",
|
|
4124
|
+
}}
|
|
4125
|
+
>
|
|
4126
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4127
|
+
<div className="flex items-center gap-2">
|
|
4128
|
+
<Car className="w-5 h-5 text-cyan-600" />
|
|
4129
|
+
<span className="font-bold text-base">Hyperion Fleet EV</span>
|
|
4130
|
+
</div>
|
|
4131
|
+
<span className="text-xs font-mono font-bold text-cyan-600">{soc}% SoC</span>
|
|
4132
|
+
</header>
|
|
4133
|
+
|
|
4134
|
+
<main className="py-8 space-y-6">
|
|
4135
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4136
|
+
<h2 className="text-base font-bold">Hyperion Freight Hauler Max (CA-941-EV)</h2>
|
|
4137
|
+
<p className="text-xs opacity-75 mt-1">Usable Capacity: 210 kWh / 280 kWh \u2022 780V Architecture</p>
|
|
4138
|
+
</div>
|
|
4139
|
+
</main>
|
|
4140
|
+
</div>
|
|
4141
|
+
);
|
|
4142
|
+
}`
|
|
4143
|
+
};
|
|
4144
|
+
|
|
4145
|
+
// src/registry/template-sovereign-auctions.ts
|
|
4146
|
+
var templateSovereignAuctions = {
|
|
4147
|
+
name: "template-sovereign-auctions",
|
|
4148
|
+
dependencies: ["lucide-react"],
|
|
4149
|
+
fileName: "template-sovereign-auctions.tsx",
|
|
4150
|
+
content: `"use client";
|
|
4151
|
+
|
|
4152
|
+
import React, { useState } from "react";
|
|
4153
|
+
import { Gavel, ShieldCheck, DollarSign, Award } from "lucide-react";
|
|
4154
|
+
|
|
4155
|
+
export default function SovereignAuctionsTemplate() {
|
|
4156
|
+
const [bid, setBid] = useState(2450000);
|
|
4157
|
+
|
|
4158
|
+
return (
|
|
4159
|
+
<div
|
|
4160
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4161
|
+
style={{
|
|
4162
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4163
|
+
color: "var(--template-fg, #0f172a)",
|
|
4164
|
+
}}
|
|
4165
|
+
>
|
|
4166
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4167
|
+
<div className="flex items-center gap-2">
|
|
4168
|
+
<Gavel className="w-5 h-5 text-amber-600" />
|
|
4169
|
+
<span className="font-bold text-base">Sovereign Auctions</span>
|
|
4170
|
+
</div>
|
|
4171
|
+
<span className="text-xs font-mono font-bold text-amber-600">\${bid.toLocaleString()}</span>
|
|
4172
|
+
</header>
|
|
4173
|
+
|
|
4174
|
+
<main className="py-8 space-y-6">
|
|
4175
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4176
|
+
<div className="text-xs opacity-60">LOT 24 \u2022 EVENING SALE LONDON</div>
|
|
4177
|
+
<h2 className="text-base font-bold mt-1">Composition in Cadmium & Cobalt Resonance, 1988</h2>
|
|
4178
|
+
<button
|
|
4179
|
+
onClick={() => setBid(bid + 50000)}
|
|
4180
|
+
className="mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-amber-600 transition-opacity hover:opacity-90"
|
|
4181
|
+
>
|
|
4182
|
+
Raise Bid +$50,000
|
|
4183
|
+
</button>
|
|
4184
|
+
</div>
|
|
4185
|
+
</main>
|
|
4186
|
+
</div>
|
|
4187
|
+
);
|
|
4188
|
+
}`
|
|
4189
|
+
};
|
|
4190
|
+
|
|
4191
|
+
// src/registry/template-scholaris-archive.ts
|
|
4192
|
+
var templateScholarisArchive = {
|
|
4193
|
+
name: "template-scholaris-archive",
|
|
4194
|
+
dependencies: ["lucide-react"],
|
|
4195
|
+
fileName: "template-scholaris-archive.tsx",
|
|
4196
|
+
content: `"use client";
|
|
4197
|
+
|
|
4198
|
+
import React, { useState } from "react";
|
|
4199
|
+
import { BookOpen, FileText, Download, Award } from "lucide-react";
|
|
4200
|
+
|
|
4201
|
+
export default function ScholarisArchiveTemplate() {
|
|
4202
|
+
const [copied, setCopied] = useState(false);
|
|
4203
|
+
|
|
4204
|
+
return (
|
|
4205
|
+
<div
|
|
4206
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4207
|
+
style={{
|
|
4208
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4209
|
+
color: "var(--template-fg, #0f172a)",
|
|
4210
|
+
}}
|
|
4211
|
+
>
|
|
4212
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4213
|
+
<div className="flex items-center gap-2">
|
|
4214
|
+
<BookOpen className="w-5 h-5 text-sky-600" />
|
|
4215
|
+
<span className="font-bold text-base">Scholaris Archive</span>
|
|
4216
|
+
</div>
|
|
4217
|
+
<span className="text-xs font-mono text-emerald-600 font-bold">Reproducibility: 9.8/10</span>
|
|
4218
|
+
</header>
|
|
4219
|
+
|
|
4220
|
+
<main className="py-8 space-y-6">
|
|
4221
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4222
|
+
<div className="text-xs text-sky-600 font-mono font-bold mb-1">DOI: 10.1038/s41586-026-09214-x</div>
|
|
4223
|
+
<h2 className="text-base font-bold">Sub-Quadratic Attention via Orthogonal State Space Projections</h2>
|
|
4224
|
+
<p className="text-xs opacity-75 mt-2">Dr. Evelyn Zhao (Stanford) \u2022 Prof. Kenneth Sterling (MIT)</p>
|
|
4225
|
+
</div>
|
|
4226
|
+
</main>
|
|
4227
|
+
</div>
|
|
4228
|
+
);
|
|
4229
|
+
}`
|
|
4230
|
+
};
|
|
4231
|
+
|
|
4232
|
+
// src/registry/template-talentorbit-hr.ts
|
|
4233
|
+
var templateTalentorbitHr = {
|
|
4234
|
+
name: "template-talentorbit-hr",
|
|
4235
|
+
dependencies: ["lucide-react"],
|
|
4236
|
+
fileName: "template-talentorbit-hr.tsx",
|
|
4237
|
+
content: `"use client";
|
|
4238
|
+
|
|
4239
|
+
import React, { useState } from "react";
|
|
4240
|
+
import { Users, Calendar, Award, MapPin } from "lucide-react";
|
|
4241
|
+
|
|
4242
|
+
export default function TalentOrbitTemplate() {
|
|
4243
|
+
const [ptoDays, setPtoDays] = useState(18);
|
|
4244
|
+
|
|
4245
|
+
return (
|
|
4246
|
+
<div
|
|
4247
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4248
|
+
style={{
|
|
4249
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4250
|
+
color: "var(--template-fg, #0f172a)",
|
|
4251
|
+
}}
|
|
4252
|
+
>
|
|
4253
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4254
|
+
<div className="flex items-center gap-2">
|
|
4255
|
+
<Users className="w-5 h-5 text-violet-600" />
|
|
4256
|
+
<span className="font-bold text-base">TalentOrbit HR</span>
|
|
4257
|
+
</div>
|
|
4258
|
+
<span className="text-xs font-semibold text-violet-600">{ptoDays} Days PTO Left</span>
|
|
4259
|
+
</header>
|
|
4260
|
+
|
|
4261
|
+
<main className="py-8 space-y-6">
|
|
4262
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4263
|
+
<h2 className="text-base font-bold">Sophia Lindqvist \u2022 VP of Engineering</h2>
|
|
4264
|
+
<p className="text-xs opacity-70 mt-1">Stockholm (UTC+1) \u2022 24 Direct Reports \u2022 Top Performer (9-Box 1A)</p>
|
|
4265
|
+
</div>
|
|
4266
|
+
</main>
|
|
4267
|
+
</div>
|
|
4268
|
+
);
|
|
4269
|
+
}`
|
|
4270
|
+
};
|
|
4271
|
+
|
|
4272
|
+
// src/registry/template-miseenplace-kds.ts
|
|
4273
|
+
var templateMiseenplaceKds = {
|
|
4274
|
+
name: "template-miseenplace-kds",
|
|
4275
|
+
dependencies: ["lucide-react"],
|
|
4276
|
+
fileName: "template-miseenplace-kds.tsx",
|
|
4277
|
+
content: `"use client";
|
|
4278
|
+
|
|
4279
|
+
import React, { useState } from "react";
|
|
4280
|
+
import { UtensilsCrossed, Flame, Clock, Check } from "lucide-react";
|
|
4281
|
+
|
|
4282
|
+
export default function MiseEnPlaceTemplate() {
|
|
4283
|
+
const [bumped, setBumped] = useState(false);
|
|
4284
|
+
|
|
4285
|
+
return (
|
|
4286
|
+
<div
|
|
4287
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4288
|
+
style={{
|
|
4289
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4290
|
+
color: "var(--template-fg, #0f172a)",
|
|
4291
|
+
}}
|
|
4292
|
+
>
|
|
4293
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4294
|
+
<div className="flex items-center gap-2">
|
|
4295
|
+
<UtensilsCrossed className="w-5 h-5 text-orange-600" />
|
|
4296
|
+
<span className="font-bold text-base">MiseEnPlace KDS</span>
|
|
4297
|
+
</div>
|
|
4298
|
+
<span className="text-xs font-mono font-bold text-orange-600">3 ACTIVE ORDERS</span>
|
|
4299
|
+
</header>
|
|
4300
|
+
|
|
4301
|
+
<main className="py-8 space-y-6">
|
|
4302
|
+
<div className="p-6 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4303
|
+
<div className="text-xs font-mono font-bold text-rose-600 mb-1">TABLE 12 \u2022 04:15 ELAPSED</div>
|
|
4304
|
+
<h2 className="text-base font-bold">2x 45-Day Dry Aged Ribeye (Med-Rare)</h2>
|
|
4305
|
+
<p className="text-xs opacity-75 mt-1">Station: GRILL \u2022 Extra flaky Maldon salt</p>
|
|
4306
|
+
<button
|
|
4307
|
+
onClick={() => setBumped(true)}
|
|
4308
|
+
className="mt-4 px-4 py-2 rounded-xl text-xs font-bold text-white bg-orange-600 transition-opacity hover:opacity-90"
|
|
4309
|
+
>
|
|
4310
|
+
{bumped ? "Order Bumped" : "Bump Order"}
|
|
4311
|
+
</button>
|
|
4312
|
+
</div>
|
|
4313
|
+
</main>
|
|
4314
|
+
</div>
|
|
4315
|
+
);
|
|
4316
|
+
}`
|
|
4317
|
+
};
|
|
4318
|
+
|
|
4319
|
+
// src/registry/template-aurasolace-sanctuary.ts
|
|
4320
|
+
var templateAurasolaceSanctuary = {
|
|
4321
|
+
name: "template-aurasolace-sanctuary",
|
|
4322
|
+
dependencies: ["lucide-react"],
|
|
4323
|
+
fileName: "template-aurasolace-sanctuary.tsx",
|
|
4324
|
+
content: `"use client";
|
|
4325
|
+
|
|
4326
|
+
import React, { useState } from "react";
|
|
4327
|
+
import { Heart, Wind, Volume2, Sparkles } from "lucide-react";
|
|
4328
|
+
|
|
4329
|
+
export default function AuraSolaceTemplate() {
|
|
4330
|
+
const [phase, setPhase] = useState("Inhale (4s)");
|
|
4331
|
+
|
|
4332
|
+
return (
|
|
4333
|
+
<div
|
|
4334
|
+
className="min-h-screen transition-colors text-left p-6 font-sans max-w-5xl mx-auto"
|
|
4335
|
+
style={{
|
|
4336
|
+
backgroundColor: "var(--template-bg, #ffffff)",
|
|
4337
|
+
color: "var(--template-fg, #0f172a)",
|
|
4338
|
+
}}
|
|
4339
|
+
>
|
|
4340
|
+
<header className="flex justify-between items-center pb-6 border-b" style={{ borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4341
|
+
<div className="flex items-center gap-2">
|
|
4342
|
+
<Heart className="w-5 h-5 text-teal-600" />
|
|
4343
|
+
<span className="font-bold text-base">AuraSolace Sanctuary</span>
|
|
4344
|
+
</div>
|
|
4345
|
+
<span className="text-xs font-semibold text-teal-600">Peaceful Grounded</span>
|
|
4346
|
+
</header>
|
|
4347
|
+
|
|
4348
|
+
<main className="py-8 space-y-6 text-center">
|
|
4349
|
+
<div className="p-8 rounded-2xl border" style={{ backgroundColor: "var(--template-surface, #f8f9fa)", borderColor: "var(--template-border, #e2e8f0)" }}>
|
|
4350
|
+
<div className="w-32 h-32 rounded-full border-2 border-teal-500 mx-auto flex items-center justify-center font-bold text-xs text-teal-600">
|
|
4351
|
+
{phase}
|
|
4352
|
+
</div>
|
|
4353
|
+
<h2 className="text-base font-bold mt-4">Parasympathetic Nervous System Regulation</h2>
|
|
4354
|
+
</div>
|
|
4355
|
+
</main>
|
|
4356
|
+
</div>
|
|
4357
|
+
);
|
|
4358
|
+
}`
|
|
4359
|
+
};
|
|
4360
|
+
|
|
2716
4361
|
// src/registry/index.ts
|
|
2717
4362
|
var registry = {
|
|
2718
4363
|
button,
|
|
@@ -2734,7 +4379,37 @@ var registry = {
|
|
|
2734
4379
|
"template-ai-chat": templateAiChat,
|
|
2735
4380
|
"template-project-management": templateProjectManagement,
|
|
2736
4381
|
"template-startup-waitlist": templateStartupWaitlist,
|
|
2737
|
-
"template-docs-platform": templateDocsPlatform
|
|
4382
|
+
"template-docs-platform": templateDocsPlatform,
|
|
4383
|
+
"template-healthcare-portal": templateHealthcarePortal,
|
|
4384
|
+
"template-web3-dex": templateWeb3Dex,
|
|
4385
|
+
"template-edtech-learning": templateEdtechLearning,
|
|
4386
|
+
"template-conference-event": templateConferenceEvent,
|
|
4387
|
+
"template-audio-podcast": templateAudioPodcast,
|
|
4388
|
+
"template-real-estate": templateRealEstate,
|
|
4389
|
+
"template-uptime-status": templateUptimeStatus,
|
|
4390
|
+
"template-agent-workflow": templateAgentWorkflow,
|
|
4391
|
+
"template-restaurant-culinary": templateRestaurantCulinary,
|
|
4392
|
+
"template-help-center": templateHelpCenter,
|
|
4393
|
+
"template-fitness-athletics": templateFitnessAthletics,
|
|
4394
|
+
"template-wilderness-travel": templateWildernessTravel,
|
|
4395
|
+
"template-devops-kubernetes": templateDevopsKubernetes,
|
|
4396
|
+
"template-audio-daw": templateAudioDaw,
|
|
4397
|
+
"template-gamified-habits": templateGamifiedHabits,
|
|
4398
|
+
"template-global-logistics": templateGlobalLogistics,
|
|
4399
|
+
"template-gaming-esports": templateGamingEsports,
|
|
4400
|
+
"template-architecture-spatial": templateArchitectureSpatial,
|
|
4401
|
+
"template-cybersecurity-soc": templateCybersecuritySoc,
|
|
4402
|
+
"template-cleantech-agriculture": templateCleantechAgriculture,
|
|
4403
|
+
"template-juris-vault": templateJurisVault,
|
|
4404
|
+
"template-orbitalx-mission": templateOrbitalxMission,
|
|
4405
|
+
"template-cineboard-studio": templateCineboardStudio,
|
|
4406
|
+
"template-domus-living": templateDomusLiving,
|
|
4407
|
+
"template-hyperion-ev": templateHyperionEv,
|
|
4408
|
+
"template-sovereign-auctions": templateSovereignAuctions,
|
|
4409
|
+
"template-scholaris-archive": templateScholarisArchive,
|
|
4410
|
+
"template-talentorbit-hr": templateTalentorbitHr,
|
|
4411
|
+
"template-miseenplace-kds": templateMiseenplaceKds,
|
|
4412
|
+
"template-aurasolace-sanctuary": templateAurasolaceSanctuary
|
|
2738
4413
|
};
|
|
2739
4414
|
|
|
2740
4415
|
// src/commands/add.ts
|
|
@@ -2959,6 +4634,15 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
|
2959
4634
|
updated = true;
|
|
2960
4635
|
}
|
|
2961
4636
|
}
|
|
4637
|
+
if (!viteContent.includes("@tailwindcss/vite")) {
|
|
4638
|
+
let updatedVite = `import tailwindcss from '@tailwindcss/vite'
|
|
4639
|
+
` + viteContent;
|
|
4640
|
+
if (updatedVite.includes("plugins: [")) {
|
|
4641
|
+
updatedVite = updatedVite.replace(/plugins:\s*\[/, "plugins: [tailwindcss(), ");
|
|
4642
|
+
fs4.writeFileSync(vitePath, updatedVite, "utf8");
|
|
4643
|
+
updated = true;
|
|
4644
|
+
}
|
|
4645
|
+
}
|
|
2962
4646
|
break;
|
|
2963
4647
|
}
|
|
2964
4648
|
}
|
|
@@ -2977,13 +4661,25 @@ function injectThemeCss(baseDir, cssRelativePath, themeName, radiusValue) {
|
|
|
2977
4661
|
--color-foreground: var(--foreground);
|
|
2978
4662
|
--color-card: var(--card);
|
|
2979
4663
|
--color-card-foreground: var(--card-foreground);
|
|
4664
|
+
--color-popover: var(--popover);
|
|
4665
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
2980
4666
|
--color-primary: var(--primary);
|
|
2981
4667
|
--color-primary-foreground: var(--primary-foreground);
|
|
4668
|
+
--color-secondary: var(--secondary);
|
|
4669
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
4670
|
+
--color-muted: var(--muted);
|
|
4671
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
4672
|
+
--color-accent: var(--accent);
|
|
4673
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
4674
|
+
--color-destructive: var(--destructive);
|
|
4675
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
2982
4676
|
--color-border: var(--border);
|
|
4677
|
+
--color-input: var(--input);
|
|
4678
|
+
--color-ring: var(--ring);
|
|
2983
4679
|
--radius-lg: var(--radius);
|
|
2984
4680
|
--radius-md: calc(var(--radius) - 2px);
|
|
2985
4681
|
--radius-sm: calc(var(--radius) - 4px);
|
|
2986
|
-
--font-sans: system-ui, -apple-system, sans-serif;
|
|
4682
|
+
--font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
2987
4683
|
}
|
|
2988
4684
|
|
|
2989
4685
|
:root {
|
|
@@ -2991,10 +4687,25 @@ function injectThemeCss(baseDir, cssRelativePath, themeName, radiusValue) {
|
|
|
2991
4687
|
--foreground: hsl(240 10% 3.9%);
|
|
2992
4688
|
--card: hsl(0 0% 100%);
|
|
2993
4689
|
--card-foreground: hsl(240 10% 3.9%);
|
|
4690
|
+
--popover: hsl(0 0% 100%);
|
|
4691
|
+
--popover-foreground: hsl(240 10% 3.9%);
|
|
2994
4692
|
--primary: ${palette.light};
|
|
2995
4693
|
--primary-foreground: hsl(0 0% 100%);
|
|
4694
|
+
--secondary: hsl(240 4.8% 95.9%);
|
|
4695
|
+
--secondary-foreground: hsl(240 5.9% 10%);
|
|
4696
|
+
--muted: hsl(240 4.8% 95.9%);
|
|
4697
|
+
--muted-foreground: hsl(240 3.8% 46.1%);
|
|
4698
|
+
--accent: hsl(240 4.8% 95.9%);
|
|
4699
|
+
--accent-foreground: hsl(240 5.9% 10%);
|
|
4700
|
+
--destructive: hsl(0 84.2% 60.2%);
|
|
4701
|
+
--destructive-foreground: hsl(0 0% 98%);
|
|
2996
4702
|
--border: hsl(240 5.9% 90%);
|
|
4703
|
+
--input: hsl(240 5.9% 90%);
|
|
4704
|
+
--ring: ${palette.light};
|
|
2997
4705
|
--radius: ${radius}rem;
|
|
4706
|
+
--glow-radius: 12px;
|
|
4707
|
+
--glow-strength: 0.15;
|
|
4708
|
+
--glow-color: ${palette.rgb};
|
|
2998
4709
|
}
|
|
2999
4710
|
|
|
3000
4711
|
.dark {
|
|
@@ -3002,10 +4713,25 @@ function injectThemeCss(baseDir, cssRelativePath, themeName, radiusValue) {
|
|
|
3002
4713
|
--foreground: hsl(0 0% 98%);
|
|
3003
4714
|
--card: hsl(240 10% 3.9%);
|
|
3004
4715
|
--card-foreground: hsl(0 0% 98%);
|
|
4716
|
+
--popover: hsl(240 10% 3.9%);
|
|
4717
|
+
--popover-foreground: hsl(0 0% 98%);
|
|
3005
4718
|
--primary: ${palette.dark};
|
|
3006
4719
|
--primary-foreground: hsl(0 0% 100%);
|
|
4720
|
+
--secondary: hsl(240 3.7% 15.9%);
|
|
4721
|
+
--secondary-foreground: hsl(0 0% 98%);
|
|
4722
|
+
--muted: hsl(240 3.7% 15.9%);
|
|
4723
|
+
--muted-foreground: hsl(240 5% 64.9%);
|
|
4724
|
+
--accent: hsl(240 3.7% 15.9%);
|
|
4725
|
+
--accent-foreground: hsl(0 0% 98%);
|
|
4726
|
+
--destructive: hsl(0 62.8% 30.6%);
|
|
4727
|
+
--destructive-foreground: hsl(0 0% 98%);
|
|
3007
4728
|
--border: hsl(240 3.7% 15.9%);
|
|
4729
|
+
--input: hsl(240 3.7% 15.9%);
|
|
4730
|
+
--ring: ${palette.dark};
|
|
3008
4731
|
--radius: ${radius}rem;
|
|
4732
|
+
--glow-radius: 20px;
|
|
4733
|
+
--glow-strength: 0.35;
|
|
4734
|
+
--glow-color: ${palette.rgb};
|
|
3009
4735
|
}
|
|
3010
4736
|
`;
|
|
3011
4737
|
if (fs4.existsSync(cssAbsolutePath)) {
|