mirror of
https://github.com/storytold/artcraft.git
synced 2026-10-20 17:02:53 -04:00
temporarily hide downloads (#1830)
This commit is contained in:
@@ -5,7 +5,10 @@ import {
|
||||
faLinux,
|
||||
} from "@fortawesome/free-brands-svg-icons";
|
||||
import { isMobile, isWindows, isMacOs } from "react-device-detect";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
|
||||
interface DownloadButtonProps {
|
||||
className?: string;
|
||||
@@ -21,10 +24,12 @@ export const DownloadButton = ({ className = "" }: DownloadButtonProps) => {
|
||||
const getDownloadLink = () => {
|
||||
if (isWindows) return DOWNLOAD_LINKS.WINDOWS;
|
||||
if (isMacOs) return DOWNLOAD_LINKS.MACOS;
|
||||
if (isLinux) return DOWNLOAD_LINKS.LINUX;
|
||||
// No Linux build is published yet.
|
||||
return null;
|
||||
};
|
||||
|
||||
if (!DOWNLOADS_ENABLED) return null;
|
||||
|
||||
const getIcon = () => {
|
||||
if (isMobile) return undefined;
|
||||
if (isWindows) return faWindows;
|
||||
|
||||
@@ -3,7 +3,10 @@ import { isMobile, isMacOs } from "react-device-detect";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { faWindows, faApple } from "@fortawesome/free-brands-svg-icons";
|
||||
import { faRocket } from "@fortawesome/pro-solid-svg-icons";
|
||||
import { DOWNLOAD_LINKS } from "../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../config/github_download_links";
|
||||
|
||||
interface LandingActionButtonsProps {
|
||||
onDownloadClick?: (e: React.MouseEvent) => void;
|
||||
@@ -40,23 +43,25 @@ export const LandingActionButtons = ({
|
||||
<FontAwesomeIcon icon={faRocket} />
|
||||
{creditsButtonText}
|
||||
</Button>
|
||||
<div className="relative">
|
||||
<Button
|
||||
className="text-md px-8 py-4 text-lg font-semibold rounded-xl shadow-lg gap-3 transition-all duration-300 bg-white hover:bg-white/80 text-black"
|
||||
as="link"
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
>
|
||||
<FontAwesomeIcon icon={isMacOs ? faApple : faWindows} />
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</Button>
|
||||
<a
|
||||
href="/download"
|
||||
className="absolute left-1/2 -translate-x-1/2 top-full mt-2 text-xs text-white/40 hover:text-white/70 transition-colors duration-200 whitespace-nowrap"
|
||||
>
|
||||
More download options
|
||||
</a>
|
||||
</div>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<div className="relative">
|
||||
<Button
|
||||
className="text-md px-8 py-4 text-lg font-semibold rounded-xl shadow-lg gap-3 transition-all duration-300 bg-white hover:bg-white/80 text-black"
|
||||
as="link"
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
>
|
||||
<FontAwesomeIcon icon={isMacOs ? faApple : faWindows} />
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</Button>
|
||||
<a
|
||||
href="/download"
|
||||
className="absolute left-1/2 -translate-x-1/2 top-full mt-2 text-xs text-white/40 hover:text-white/70 transition-colors duration-200 whitespace-nowrap"
|
||||
>
|
||||
More download options
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -10,6 +10,11 @@ const WINDOWS_VERSION = "0.32.0"; // 2026-04-03 characters + prompt box
|
||||
//const MAC_VERSION = "0.20.0"; // 2026-03-24 Reprompt, performance
|
||||
const MAC_VERSION = "0.32.0"; // 2026-04-03 characters + prompt box
|
||||
|
||||
// The published desktop builds are out of date — every download button and
|
||||
// link on the site is hidden while this is false. Flip back on when a current
|
||||
// release ships.
|
||||
export const DOWNLOADS_ENABLED = false;
|
||||
|
||||
export const DOWNLOAD_LINKS = {
|
||||
WINDOWS: `https://github.com/storytold/artcraft/releases/download/artcraft-v${WINDOWS_VERSION}/ArtCraft_${WINDOWS_VERSION}_x64-setup.exe`,
|
||||
MACOS: `https://github.com/storytold/artcraft/releases/download/artcraft-v${MAC_VERSION}/ArtCraft_${MAC_VERSION}_universal.dmg`,
|
||||
|
||||
@@ -9,7 +9,10 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { Button } from "@storyteller/ui-button";
|
||||
import { Link, useSearchParams } from "react-router-dom";
|
||||
import { isMobile, isMacOs } from "react-device-detect";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
import { SOCIAL_LINKS } from "../../config/links";
|
||||
import Seo from "../../components/seo";
|
||||
import { PagePatternBackdrop } from "../../components/truchet-pattern";
|
||||
@@ -142,14 +145,16 @@ const CheckoutSuccess = () => {
|
||||
{/* CTA Buttons */}
|
||||
{!isMobile ? (
|
||||
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
||||
<Button
|
||||
as="link"
|
||||
href={downloadUrl}
|
||||
className="rounded-full bg-primary hover:bg-primary-600 px-8 py-3 text-sm font-bold rounded-xl justify-center"
|
||||
>
|
||||
<FontAwesomeIcon icon={faDownload} className="mr-2" />
|
||||
Download ArtCraft
|
||||
</Button>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<Button
|
||||
as="link"
|
||||
href={downloadUrl}
|
||||
className="rounded-full bg-primary hover:bg-primary-600 px-8 py-3 text-sm font-bold rounded-xl justify-center"
|
||||
>
|
||||
<FontAwesomeIcon icon={faDownload} className="mr-2" />
|
||||
Download ArtCraft
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
) : (
|
||||
<div className="bg-[#431407] border border-orange-900/50 rounded-2xl p-6 text-orange-200 text-sm leading-relaxed">
|
||||
@@ -162,7 +167,7 @@ const CheckoutSuccess = () => {
|
||||
)}
|
||||
|
||||
{/* Download Links */}
|
||||
{!isMobile && (
|
||||
{!isMobile && DOWNLOADS_ENABLED && (
|
||||
<div className="mt-6 flex justify-center gap-6 text-sm font-medium text-white/40">
|
||||
<a
|
||||
href={DOWNLOAD_LINKS.WINDOWS}
|
||||
|
||||
@@ -7,7 +7,10 @@ import {
|
||||
} from "@fortawesome/pro-solid-svg-icons";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { Button } from "@storyteller/ui-button";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
import { isMobile, isMacOs } from "react-device-detect";
|
||||
import { useState, useEffect } from "react";
|
||||
import Lenis from "lenis";
|
||||
@@ -120,7 +123,7 @@ const Download = () => {
|
||||
>
|
||||
Download on a desktop
|
||||
</Button>
|
||||
) : (
|
||||
) : DOWNLOADS_ENABLED ? (
|
||||
<Button
|
||||
className="rounded-full glow-border-animated text-md px-8 py-4 text-lg font-semibold rounded-xl shadow-lg gap-3 transition-all duration-300 hover:scale-105 hover:shadow-primary/25 bg-white text-black hover:bg-white/90"
|
||||
as="link"
|
||||
@@ -130,6 +133,13 @@ const Download = () => {
|
||||
<FontAwesomeIcon icon={isMacOs ? faApple : faWindows} />
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
className="rounded-full text-lg font-semibold rounded-xl shadow-lg"
|
||||
disabled
|
||||
>
|
||||
Downloads temporarily unavailable — check back soon
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
@@ -203,7 +213,7 @@ const Download = () => {
|
||||
>
|
||||
Desktop only
|
||||
</Button>
|
||||
) : (
|
||||
) : DOWNLOADS_ENABLED ? (
|
||||
<Button
|
||||
className="rounded-full w-full justify-center font-semibold gap-2"
|
||||
as="link"
|
||||
@@ -213,6 +223,13 @@ const Download = () => {
|
||||
>
|
||||
Download
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
className="rounded-full w-full justify-center font-semibold"
|
||||
disabled
|
||||
>
|
||||
Temporarily unavailable
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -35,7 +35,10 @@ import { DownloadModal } from "../../components/download-modal";
|
||||
import ModelBadgeGrid from "../../components/model-badge-grid";
|
||||
import { getSession } from "../../lib/session";
|
||||
import { BillingApi } from "@storyteller/api";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
import { webappUrl, SOCIAL_LINKS } from "../../config/links";
|
||||
import { Button } from "@storyteller/ui-button";
|
||||
import { Tooltip } from "@storyteller/ui-tooltip";
|
||||
@@ -770,17 +773,19 @@ const LandingSD25 = () => {
|
||||
isLoggedIn={isLoggedIn}
|
||||
hasSubscription={hasSubscription}
|
||||
/>
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
@@ -1547,17 +1552,19 @@ const LandingSD25 = () => {
|
||||
isLoggedIn={isLoggedIn}
|
||||
hasSubscription={hasSubscription}
|
||||
/>
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -36,7 +36,10 @@ import { DownloadModal } from "../../components/download-modal";
|
||||
import ModelBadgeGrid from "../../components/model-badge-grid";
|
||||
import { getSession } from "../../lib/session";
|
||||
import { BillingApi } from "@storyteller/api";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
import { webappUrl, SOCIAL_LINKS } from "../../config/links";
|
||||
import { Button } from "@storyteller/ui-button";
|
||||
import { Tooltip } from "@storyteller/ui-tooltip";
|
||||
@@ -704,17 +707,19 @@ const Landing3 = () => {
|
||||
isLoggedIn={isLoggedIn}
|
||||
hasSubscription={hasSubscription}
|
||||
/>
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
@@ -1399,17 +1404,19 @@ const Landing3 = () => {
|
||||
isLoggedIn={isLoggedIn}
|
||||
hasSubscription={hasSubscription}
|
||||
/>
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
{DOWNLOADS_ENABLED && (
|
||||
<a
|
||||
href={downloadUrl}
|
||||
onClick={onDownloadClick}
|
||||
className="inline-flex items-center gap-2 h-11 px-5 rounded-full bg-white hover:bg-white/90 text-black text-[14px] font-semibold transition-all hover:-translate-y-px shadow-[0_4px_24px_-4px_rgba(255,255,255,0.2)]"
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
icon={isMacOs ? faApple : faWindows}
|
||||
className="text-[13px]"
|
||||
/>
|
||||
Download for {isMacOs ? "Mac" : "Windows"}
|
||||
</a>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,10 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { Button } from "@storyteller/ui-button";
|
||||
import { Link } from "react-router-dom";
|
||||
import { isMobile, isMacOs } from "react-device-detect";
|
||||
import { DOWNLOAD_LINKS } from "../../config/github_download_links";
|
||||
import {
|
||||
DOWNLOAD_LINKS,
|
||||
DOWNLOADS_ENABLED,
|
||||
} from "../../config/github_download_links";
|
||||
import Seo from "../../components/seo";
|
||||
import { PricingTable } from "@storyteller/ui-pricing-table";
|
||||
import { PagePatternBackdrop } from "../../components/truchet-pattern";
|
||||
@@ -75,8 +78,9 @@ const Welcome = () => {
|
||||
</div>
|
||||
|
||||
<p className="text-white/60 mb-6">
|
||||
Your download should have started automatically. Follow these
|
||||
steps to begin creating:
|
||||
{DOWNLOADS_ENABLED
|
||||
? "Your download should have started automatically. Follow these steps to begin creating:"
|
||||
: "Follow these steps to begin creating:"}
|
||||
</p>
|
||||
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-8">
|
||||
@@ -99,7 +103,7 @@ const Welcome = () => {
|
||||
</div>
|
||||
|
||||
{/* Download Contingency */}
|
||||
{!isMobile && (
|
||||
{!isMobile && DOWNLOADS_ENABLED && (
|
||||
<div className="pt-6 border-t border-white/10">
|
||||
<div className="flex flex-col sm:flex-row items-center justify-between gap-4">
|
||||
<span className="text-white/50 text-sm">
|
||||
|
||||
Reference in New Issue
Block a user