mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 15:15:24 +00:00
feat: convert ssh tunnels into a plugin
This commit is contained in:
1 parent
c85c1fdb86
commit
1682861853
220 files changed
+36928
-11374
No files matched your search
@@ -1,34 +1,23 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Plug, type LucideIcon } from "lucide-react";
|
||||
import type { LucideIcon } from "lucide-react";
|
||||
import { useActionSlot } from "@/hooks/use-action-slot";
|
||||
|
||||
/**
|
||||
* A tour of the things people miss because they live behind a rail icon.
|
||||
* Terminal and hosts are covered by the welcome step, so this is deliberately
|
||||
* the "there is more than SSH here" list. Plugins add their own entries
|
||||
* the "there is more than SSH here" list. Every entry comes from a plugin,
|
||||
* through the "onboarding.features" slot.
|
||||
*/
|
||||
const FEATURES: { icon: LucideIcon; key: string }[] = [
|
||||
{ icon: Plug, key: "tunnels" },
|
||||
];
|
||||
|
||||
export function FeaturesStep() {
|
||||
const { t } = useTranslation();
|
||||
const pluginFeatures = useActionSlot("onboarding.features");
|
||||
const features = [
|
||||
...FEATURES.map(({ icon, key }) => ({
|
||||
id: key,
|
||||
icon,
|
||||
title: t(`onboarding.feature_${key}`),
|
||||
description: t(`onboarding.feature_${key}_desc`),
|
||||
})),
|
||||
...pluginFeatures.map((feature) => ({
|
||||
id: feature.actionId,
|
||||
icon: feature.icon as LucideIcon | undefined,
|
||||
title: t(feature.titleKey),
|
||||
description: feature.descriptionKey ? t(feature.descriptionKey) : "",
|
||||
})),
|
||||
];
|
||||
const features = pluginFeatures.map((feature) => ({
|
||||
id: feature.actionId,
|
||||
icon: feature.icon as LucideIcon | undefined,
|
||||
title: t(feature.titleKey),
|
||||
description: feature.descriptionKey ? t(feature.descriptionKey) : "",
|
||||
}));
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-3">
|
||||
|
||||
Reference in new issue
Block a user