* feat: Start work on package api * feat: Browser Context Controller * feat: Add packages to cluster metadata feat: Change structure of Package * 🐛 fix: format * 🔨 feat: Add more functions wrapping around Modrinth * 🔨 feat: Start working on browser frontend * feat: BrowserPackage work + markdown support * 🐛 fix: fmt Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: h Signed-off-by: Pauline <git@ethanlibs.co> * feat: Download button for packages for suitable clusters + tweaks * 🚧 wip: markdown and stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: some patches Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: remove react bloat Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore(pkg/infer): try to reduce reused code Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: markdown innerhtml Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: tweak Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: idk Signed-off-by: Pauline <git@ethanlibs.co> * fix: Gamemode compile error chore: Add missing and remove unused libraries feat: usePreventLeave hook feat: ClusterOverview edit mode continues with navigation (assuming there was a navigation attempt) after pressing Yes or No for save * feat: Add reload clusters button on home page * feat: More information provided to BrowserPackage * fix: Minor fixes (Navbar isActive, Markdown click prevention, Markdown list styling) * 🐛 fix: h Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: highlighting Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: forge modern Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: Markdown-it issue + Added promptOpener hook for Markdown links * feat: Made BrowserPackage sidebar sticky * refactor: Package system (not yet in a working state) * 🚧 wip: bump deps temp Signed-off-by: Pauline <git@ethanlibs.co> * feat: Added a package manager * ✨ feature: start prisma work, but it doesnt break anything so we can keep it until its done. also fix some stuff Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: pushing Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: linting Signed-off-by: Pauline <git@ethanlibs.co> * ✨ feature: start ingress integration Signed-off-by: Pauline <git@ethanlibs.co> * feat: Package Manager should work now 👍 * fix: Package manager tracing spam * feat: Added tauri commands for cluster packages format: Auto formatted frontend + backend * 🐛 fix: tmp Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: specta extension Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: github actions Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: alias Signed-off-by: Pauline <git@ethanlibs.co> * chore: Some tweaks and fixes * chore: Rebase + gitignore bindings.ts * chore: Remove bindings.ts * 🐛 fix: migrate Signed-off-by: Pauline <git@ethanlibs.co> * 🚧 wip: not sure Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: finalize prisma init schema Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: format Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: bump deps Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: system deps Signed-off-by: Pauline <git@ethanlibs.co> * fix: solid-router navigation issue * feat: Added new BrowserMain page * feat: Tweaks + new package list view * 🐛 fix: bump + format (todo: tauri2, etc) Signed-off-by: Pauline <git@ethanlibs.co> * 🐛 fix: devx (fixes #126) Signed-off-by: Pauline <git@ethanlibs.co> * 🔨 chore: migrate to consola Signed-off-by: Pauline <git@ethanlibs.co> --------- Signed-off-by: Pauline <git@ethanlibs.co> Co-authored-by: LynithDev <61880709+LynithDev@users.noreply.github.com>
82 lines
2 KiB
TypeScript
82 lines
2 KiB
TypeScript
import { Upload01Icon, User03Icon } from '@untitled-theme/icons-solid';
|
|
import { Index, type JSX, createEffect, createSignal } from 'solid-js';
|
|
import { type ClusterStepProps, CreationStage, createClusterStep } from './ClusterCreationModal';
|
|
import ModrinthIcon from '~assets/logos/modrinth.svg?component-solid';
|
|
import CurseforgeIcon from '~assets/logos/curseforge.svg?component-solid';
|
|
|
|
const providers: Omit<ProviderCardProps, 'selected' | 'setSelected'>[] = [
|
|
{
|
|
name: 'New',
|
|
icon: <User03Icon />,
|
|
},
|
|
{
|
|
name: 'Modrinth',
|
|
icon: <ModrinthIcon color="#1bd96a" />,
|
|
},
|
|
{
|
|
name: 'Curseforge',
|
|
icon: <CurseforgeIcon color="#F16436" />,
|
|
},
|
|
{
|
|
name: 'Import',
|
|
icon: <Upload01Icon />,
|
|
},
|
|
];
|
|
|
|
export default createClusterStep({
|
|
message: 'Select Provider',
|
|
buttonType: 'next',
|
|
Component: ClusterProviderSelection,
|
|
});
|
|
|
|
function ClusterProviderSelection(props: ClusterStepProps) {
|
|
const [selected, setSelected] = createSignal<number>();
|
|
|
|
createEffect(() => {
|
|
// TODO: Add more stages
|
|
// eslint-disable-next-line solid/reactivity -- It's fine
|
|
props.setCanGoForward(() => {
|
|
const isTrue = selected() !== undefined;
|
|
|
|
if (isTrue)
|
|
props.setNextStage(CreationStage.GAME_SETUP);
|
|
|
|
return isTrue;
|
|
});
|
|
});
|
|
|
|
return (
|
|
<div class="grid grid-cols-3 gap-2">
|
|
<Index each={providers}>
|
|
{(provider, index) => (
|
|
<ProviderCard
|
|
{...provider()}
|
|
selected={index === selected()}
|
|
setSelected={() => setSelected(index)}
|
|
/>
|
|
)}
|
|
</Index>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
interface ProviderCardProps {
|
|
icon: JSX.Element;
|
|
name: string;
|
|
setSelected: () => any;
|
|
selected: boolean;
|
|
};
|
|
|
|
function ProviderCard(props: ProviderCardProps) {
|
|
return (
|
|
<div
|
|
onClick={() => props.setSelected()}
|
|
class={`flex flex-col justify-center items-center gap-y-2 py-2 px-4 hover:bg-component-bg-hover active:bg-component-bg-pressed rounded-lg ${props.selected ? 'bg-component-bg' : ''}`}
|
|
>
|
|
<div class="[&>svg]:(h-8 w-8)">
|
|
{props.icon}
|
|
</div>
|
|
<span>{props.name}</span>
|
|
</div>
|
|
);
|
|
}
|