feat: turbostarter boilerplate
Production-ready Next.js boilerplate with: - Runtime env validation (fail-fast on missing vars) - Feature-gated config (S3, Stripe, email, OAuth) - Docker + Coolify deployment pipeline - PostgreSQL + pgvector, MinIO S3, Better Auth - TypeScript strict mode (no ignoreBuildErrors) - i18n (en/es), AI modules, billing, monitoring Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
392
packages/ui/web/src/components/icons.tsx
Normal file
392
packages/ui/web/src/components/icons.tsx
Normal file
@@ -0,0 +1,392 @@
|
||||
import {
|
||||
Activity,
|
||||
AlertCircle,
|
||||
AlertTriangle,
|
||||
ArrowRight,
|
||||
AtSign,
|
||||
LogIn,
|
||||
UserRound,
|
||||
SunMoon,
|
||||
Moon,
|
||||
Sun,
|
||||
Undo2,
|
||||
Check,
|
||||
Loader,
|
||||
Loader2,
|
||||
CircleX,
|
||||
CheckCircle2,
|
||||
Gift,
|
||||
X,
|
||||
CheckIcon,
|
||||
ArrowUp,
|
||||
Globe2,
|
||||
GraduationCap,
|
||||
Atom,
|
||||
Brain,
|
||||
LogOut,
|
||||
Settings,
|
||||
Home,
|
||||
Star,
|
||||
CreditCard,
|
||||
EllipsisVertical,
|
||||
User2,
|
||||
LifeBuoy,
|
||||
MessageCircle,
|
||||
MessageSquare,
|
||||
MessageSquarePlus,
|
||||
Plus,
|
||||
Trash,
|
||||
Ellipsis,
|
||||
ClockFading,
|
||||
BadgeCheck,
|
||||
BadgeX,
|
||||
ArrowUpRight,
|
||||
Menu,
|
||||
MonitorSmartphone,
|
||||
Key,
|
||||
TrendingUp,
|
||||
TrendingDown,
|
||||
PaintBucket,
|
||||
ChartNoAxesGantt,
|
||||
BookOpen,
|
||||
Webhook,
|
||||
Download,
|
||||
ChevronRight,
|
||||
SendHorizontal,
|
||||
Copy,
|
||||
ChevronsUpDown,
|
||||
ArrowDown,
|
||||
ArrowLeft,
|
||||
UserRoundPlus,
|
||||
UsersRound,
|
||||
Search,
|
||||
Filter,
|
||||
ChevronsLeft,
|
||||
ChevronLeft,
|
||||
ChevronsRight,
|
||||
Settings2,
|
||||
ChevronDown,
|
||||
EyeOff,
|
||||
ChevronUp,
|
||||
XCircle,
|
||||
MailPlus,
|
||||
PlusCircle,
|
||||
Calendar,
|
||||
ShieldUser,
|
||||
Building,
|
||||
HandCoins,
|
||||
Code,
|
||||
VenetianMask,
|
||||
Ban,
|
||||
Eye,
|
||||
Lock,
|
||||
Slash,
|
||||
MoreHorizontal,
|
||||
MoreVertical,
|
||||
Circle,
|
||||
Minus,
|
||||
PanelLeft,
|
||||
Database,
|
||||
Snowflake,
|
||||
Cloud,
|
||||
Crown,
|
||||
Target,
|
||||
Megaphone,
|
||||
Package,
|
||||
Headphones,
|
||||
Info,
|
||||
Bell,
|
||||
Share2,
|
||||
LayoutDashboard,
|
||||
Pencil,
|
||||
BarChart3,
|
||||
// AI module icons
|
||||
ImagePlus,
|
||||
Image,
|
||||
Globe,
|
||||
Sparkle,
|
||||
Sparkles,
|
||||
Square,
|
||||
SquarePen,
|
||||
TextSearch,
|
||||
MessagesSquare,
|
||||
ExternalLink,
|
||||
FileText,
|
||||
ChartNoAxesColumn,
|
||||
Zap,
|
||||
PackageOpen,
|
||||
Paperclip,
|
||||
AudioLines,
|
||||
AudioWaveform,
|
||||
Undo,
|
||||
Pause,
|
||||
Play,
|
||||
Redo,
|
||||
BanknoteX,
|
||||
ClockAlert,
|
||||
RotateCcw,
|
||||
RotateCw,
|
||||
ThumbsUp,
|
||||
ThumbsDown,
|
||||
// Additional AI module icons
|
||||
Shrub,
|
||||
Lightbulb,
|
||||
Puzzle,
|
||||
Smile,
|
||||
RefreshCcw,
|
||||
LibraryBig,
|
||||
BadgeDollarSign,
|
||||
Newspaper,
|
||||
RectangleHorizontal,
|
||||
RectangleVertical,
|
||||
ImagePlay,
|
||||
ImageOff,
|
||||
Send,
|
||||
FileUp,
|
||||
FileX,
|
||||
DownloadCloud,
|
||||
Link,
|
||||
ScrollText,
|
||||
Mic,
|
||||
MicOff,
|
||||
} from "lucide-react";
|
||||
|
||||
import { Icons as GlobalIcons } from "@turbostarter/ui/assets";
|
||||
|
||||
import type { FC, SVGProps } from "react";
|
||||
|
||||
|
||||
// AI Provider Icons
|
||||
const createProviderIcon = (paths: string[], viewBox = "0 0 24 24"): FC<SVGProps<SVGSVGElement>> => {
|
||||
const Component: FC<SVGProps<SVGSVGElement>> = (props) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox={viewBox}
|
||||
fill="currentColor"
|
||||
{...props}
|
||||
>
|
||||
{paths.map((d, i) => (
|
||||
<path key={i} d={d} />
|
||||
))}
|
||||
</svg>
|
||||
);
|
||||
return Component;
|
||||
};
|
||||
|
||||
const OpenAI = createProviderIcon([
|
||||
"M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .51 4.911 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.99 5.99 0 0 0 3.997-2.9 6.056 6.056 0 0 0-.747-7.073zM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.141-.081 4.779-2.758a.795.795 0 0 0 .392-.681v-6.737l2.02 1.168a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494zM3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085 4.783 2.759a.771.771 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646zM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.677l5.815 3.355-2.02 1.168a.076.076 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.896zm16.597 3.855l-5.833-3.387L15.119 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667zm2.01-3.023l-.141-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135l-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.795.795 0 0 0-.393.681zm1.097-2.365l2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5z",
|
||||
]);
|
||||
|
||||
const Gemini = createProviderIcon([
|
||||
"M12 0C5.372 0 0 5.373 0 12s5.372 12 12 12 12-5.373 12-12S18.628 0 12 0zm5.568 14.163c-.169.288-.456.457-.781.457H7.213c-.325 0-.612-.169-.781-.457L4.194 12l2.238-2.163c.169-.288.456-.456.781-.456h9.574c.325 0 .612.168.781.456L19.806 12l-2.238 2.163z",
|
||||
]);
|
||||
|
||||
const Claude = createProviderIcon([
|
||||
"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15.5v-4.38l-3.5 2.19-.75-1.23L10.5 12l-3.75-2.08.75-1.23L11 10.88V6.5h1.5v4.38l3.5-2.19.75 1.23L13 12l3.75 2.08-.75 1.23-3.5-2.19V17.5H11z",
|
||||
]);
|
||||
|
||||
const Grok = createProviderIcon([
|
||||
"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z",
|
||||
]);
|
||||
|
||||
const DeepSeek = createProviderIcon([
|
||||
"M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8zm4-9h-3V8a1 1 0 0 0-2 0v3H8a1 1 0 0 0 0 2h3v3a1 1 0 0 0 2 0v-3h3a1 1 0 0 0 0-2z",
|
||||
]);
|
||||
|
||||
const Replicate = createProviderIcon([
|
||||
"M4.5 2.5a2 2 0 0 0-2 2v15a2 2 0 0 0 2 2h15a2 2 0 0 0 2-2v-15a2 2 0 0 0-2-2h-15zm2 5h11v2h-11v-2zm0 4h11v2h-11v-2zm0 4h7v2h-7v-2z",
|
||||
]);
|
||||
|
||||
const Luma = createProviderIcon([
|
||||
"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",
|
||||
]);
|
||||
|
||||
const StabilityAI = createProviderIcon([
|
||||
"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5-9h10v2H7z",
|
||||
]);
|
||||
|
||||
const Recraft = createProviderIcon([
|
||||
"M20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83zM3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM5.92 19H5v-.92l9.06-9.06.92.92L5.92 19z",
|
||||
]);
|
||||
|
||||
const ElevenLabs = createProviderIcon([
|
||||
"M9 2v20M15 2v20",
|
||||
]);
|
||||
|
||||
const Nvidia = createProviderIcon([
|
||||
"M11.06 8.84c-.6-.3-1.33-.4-2.06-.4-1.91 0-3.47.8-4.3 2.23l-.72-.42c.95-1.66 2.83-2.64 5.02-2.64.87 0 1.72.13 2.46.5l-.4.73zm7.56-3.12c-1.5-1.17-3.57-1.72-5.76-1.72-2.95 0-5.5 1.01-7.05 2.72-.98 1.08-1.59 2.4-1.81 3.87l.82.15c.2-1.32.73-2.5 1.59-3.45 1.4-1.55 3.7-2.45 6.45-2.45 2.02 0 3.9.51 5.24 1.54l.52-.66zM12 22c5.52 0 10-4.48 10-10S17.52 2 12 2 2 6.48 2 12s4.48 10 10 10z",
|
||||
]);
|
||||
|
||||
export const Icons = {
|
||||
...GlobalIcons,
|
||||
Minus,
|
||||
PanelLeft,
|
||||
Eye,
|
||||
Slash,
|
||||
Code,
|
||||
VenetianMask,
|
||||
Lock,
|
||||
MailPlus,
|
||||
ClockFading,
|
||||
Calendar,
|
||||
ArrowRight,
|
||||
LogIn,
|
||||
UserRound,
|
||||
Key,
|
||||
SunMoon,
|
||||
ChevronRight,
|
||||
Moon,
|
||||
Sun,
|
||||
Undo2,
|
||||
Check,
|
||||
Loader2,
|
||||
CircleX,
|
||||
Ban,
|
||||
CheckCircle2,
|
||||
CheckIcon,
|
||||
Gift,
|
||||
X,
|
||||
ArrowUp,
|
||||
Globe2,
|
||||
GraduationCap,
|
||||
ChartNoAxesGantt,
|
||||
BookOpen,
|
||||
Webhook,
|
||||
Star,
|
||||
Atom,
|
||||
Brain,
|
||||
LogOut,
|
||||
Settings,
|
||||
Home,
|
||||
CreditCard,
|
||||
User2,
|
||||
EllipsisVertical,
|
||||
LifeBuoy,
|
||||
MessageCircle,
|
||||
Plus,
|
||||
Loader,
|
||||
Ellipsis,
|
||||
Trash,
|
||||
BadgeCheck,
|
||||
BadgeX,
|
||||
ArrowUpRight,
|
||||
Menu,
|
||||
MonitorSmartphone,
|
||||
Download,
|
||||
Copy,
|
||||
PaintBucket,
|
||||
SendHorizontal,
|
||||
ChevronsUpDown,
|
||||
ArrowDown,
|
||||
ArrowLeft,
|
||||
UsersRound,
|
||||
UserRoundPlus,
|
||||
Search,
|
||||
Filter,
|
||||
ChevronsLeft,
|
||||
ChevronLeft,
|
||||
ChevronsRight,
|
||||
Settings2,
|
||||
ChevronDown,
|
||||
EyeOff,
|
||||
ChevronUp,
|
||||
XCircle,
|
||||
PlusCircle,
|
||||
ShieldUser,
|
||||
Building,
|
||||
HandCoins,
|
||||
TrendingUp,
|
||||
MoreHorizontal,
|
||||
MoreVertical,
|
||||
Circle,
|
||||
BarChart3,
|
||||
BarChart: BarChart3,
|
||||
Pencil,
|
||||
Clock: ClockFading,
|
||||
Database,
|
||||
Snowflake,
|
||||
Cloud,
|
||||
Crown,
|
||||
Target,
|
||||
Megaphone,
|
||||
Package,
|
||||
Headphones,
|
||||
TrendingDown,
|
||||
AlertTriangle,
|
||||
AlertCircle,
|
||||
Info,
|
||||
Bell,
|
||||
Share: Share2,
|
||||
Activity,
|
||||
AtSign,
|
||||
MessageSquare,
|
||||
MessageSquarePlus,
|
||||
LayoutDashboard,
|
||||
Edit: Pencil,
|
||||
// AI module icons
|
||||
ImagePlus,
|
||||
Globe,
|
||||
Sparkle,
|
||||
Sparkles,
|
||||
Square,
|
||||
SquarePen,
|
||||
TextSearch,
|
||||
MessagesSquare,
|
||||
ExternalLink,
|
||||
FileText,
|
||||
ChartNoAxesColumn,
|
||||
Zap,
|
||||
PackageOpen,
|
||||
Paperclip,
|
||||
AudioLines,
|
||||
AudioWaveform,
|
||||
Undo,
|
||||
Pause,
|
||||
Play,
|
||||
Redo,
|
||||
BanknoteX,
|
||||
ClockAlert,
|
||||
RotateCcw,
|
||||
RotateCw,
|
||||
Image,
|
||||
ThumbsUp,
|
||||
ThumbsDown,
|
||||
// Additional AI module icons
|
||||
Shrub,
|
||||
Lightbulb,
|
||||
Puzzle,
|
||||
Smile,
|
||||
RefreshCcw,
|
||||
LibraryBig,
|
||||
BadgeDollarSign,
|
||||
Newspaper,
|
||||
RectangleHorizontal,
|
||||
RectangleVertical,
|
||||
ImagePlay,
|
||||
ImageOff,
|
||||
Send,
|
||||
FileUp,
|
||||
FileUpIcon: FileUp,
|
||||
FileX,
|
||||
DownloadCloud,
|
||||
Link,
|
||||
ScrollText,
|
||||
Mic,
|
||||
MicOff,
|
||||
MinusIcon: Minus,
|
||||
PlusIcon: Plus,
|
||||
// AI provider icons
|
||||
OpenAI,
|
||||
Gemini,
|
||||
Claude,
|
||||
Grok,
|
||||
DeepSeek,
|
||||
Replicate,
|
||||
Luma,
|
||||
StabilityAI,
|
||||
Recraft,
|
||||
ElevenLabs,
|
||||
Nvidia,
|
||||
};
|
||||
|
||||
export type Icon = (typeof Icons)[keyof typeof Icons];
|
||||
Reference in New Issue
Block a user