@tangle-network/sandbox-ui 0.21.0 → 0.21.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/dist/chat.d.ts +61 -1
- package/dist/chat.js +13 -3
- package/dist/{chunk-FLWMBK77.js → chunk-LA5GHELP.js} +399 -263
- package/dist/{chunk-76IQLPW2.js → chunk-SOKKTB7W.js} +29 -5
- package/dist/{chunk-666PYT5K.js → chunk-TAAYDQGM.js} +101 -11
- package/dist/dashboard.d.ts +34 -1
- package/dist/dashboard.js +3 -1
- package/dist/globals.css +33 -198
- package/dist/hooks.d.ts +63 -2
- package/dist/hooks.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +16 -4
- package/dist/pages.js +132 -120
- package/dist/styles.css +33 -198
- package/package.json +1 -1
package/dist/pages.js
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
Badge,
|
|
10
10
|
Button,
|
|
11
|
+
Input,
|
|
12
|
+
Switch,
|
|
11
13
|
Textarea
|
|
12
14
|
} from "./chunk-7ZA5SEK3.js";
|
|
13
15
|
import "./chunk-4KAPMTPU.js";
|
|
@@ -292,6 +294,8 @@ var VALID_DRIVERS = /* @__PURE__ */ new Set([
|
|
|
292
294
|
"firecracker",
|
|
293
295
|
"tangle"
|
|
294
296
|
]);
|
|
297
|
+
var SECTION_CARD_CLASS = "rounded-lg border border-border bg-card p-5 shadow-sm";
|
|
298
|
+
var FIELD_LABEL_CLASS = "block text-xs font-medium text-muted-foreground uppercase tracking-[0.06em]";
|
|
295
299
|
var STACK_DISPLAY = {
|
|
296
300
|
universal: {
|
|
297
301
|
name: "Default",
|
|
@@ -723,41 +727,43 @@ function ProvisioningWizard({
|
|
|
723
727
|
const rateSuffix = pricingView === "hourly" ? "/h" : "/s";
|
|
724
728
|
const fmtRate = (v) => pricingView === "hourly" ? v.toFixed(2) : formatPerSecondValue(v);
|
|
725
729
|
return /* @__PURE__ */ jsxs2("div", { className: cn("max-w-6xl mx-auto flex flex-col", className), children: [
|
|
726
|
-
/* @__PURE__ */ jsxs2("div", { className: "mb-
|
|
730
|
+
/* @__PURE__ */ jsxs2("div", { className: "mb-4 flex items-center gap-3 shrink-0", children: [
|
|
727
731
|
onBack && /* @__PURE__ */ jsx2(
|
|
728
|
-
|
|
732
|
+
Button,
|
|
729
733
|
{
|
|
730
734
|
type: "button",
|
|
735
|
+
variant: "outline",
|
|
736
|
+
size: "icon",
|
|
731
737
|
onClick: onBack,
|
|
732
|
-
className: "
|
|
733
|
-
children: /* @__PURE__ */ jsx2(ArrowLeft, { className: "h-
|
|
738
|
+
className: "h-9 w-9 shrink-0",
|
|
739
|
+
children: /* @__PURE__ */ jsx2(ArrowLeft, { className: "h-4 w-4" })
|
|
734
740
|
}
|
|
735
741
|
),
|
|
736
742
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
737
|
-
/* @__PURE__ */ jsx2("h1", { className: "text-
|
|
743
|
+
/* @__PURE__ */ jsx2("h1", { className: "text-2xl font-semibold tracking-tight text-foreground", children: "Sandbox Provisioning" }),
|
|
738
744
|
/* @__PURE__ */ jsx2("p", { className: "text-muted-foreground text-sm", children: "Select your stack, allocate resources, and deploy." })
|
|
739
745
|
] })
|
|
740
746
|
] }),
|
|
741
|
-
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-12 gap-
|
|
747
|
+
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-12 gap-5 flex-1 min-h-0", children: [
|
|
742
748
|
/* @__PURE__ */ jsxs2("div", { className: "col-span-12 xl:col-span-8 flex flex-col min-h-0", children: [
|
|
743
|
-
isMultistep && /* @__PURE__ */ jsx2("div", { className: "flex items-center gap-2 mb-4
|
|
749
|
+
isMultistep && /* @__PURE__ */ jsx2("div", { className: "flex items-center gap-2 mb-4 rounded-lg border border-border bg-card px-4 py-2 shadow-sm mx-auto max-w-2xl justify-between shrink-0", children: stepLabels.map((label, index) => {
|
|
744
750
|
const s = index + 1;
|
|
745
751
|
return /* @__PURE__ */ jsxs2("div", { className: "flex items-center", children: [
|
|
746
752
|
/* @__PURE__ */ jsx2(
|
|
747
753
|
"div",
|
|
748
754
|
{
|
|
749
755
|
className: cn(
|
|
750
|
-
"
|
|
751
|
-
currentStep
|
|
756
|
+
"h-6 w-6 rounded-full flex items-center justify-center font-semibold text-xs shrink-0 transition-colors duration-200",
|
|
757
|
+
currentStep >= s ? "bg-primary text-primary-foreground" : "bg-muted border border-border text-muted-foreground"
|
|
752
758
|
),
|
|
753
|
-
children: currentStep > s ? /* @__PURE__ */ jsx2(Check, { className: "h-3
|
|
759
|
+
children: currentStep > s ? /* @__PURE__ */ jsx2(Check, { className: "h-3 w-3" }) : s
|
|
754
760
|
}
|
|
755
761
|
),
|
|
756
762
|
/* @__PURE__ */ jsx2(
|
|
757
763
|
"span",
|
|
758
764
|
{
|
|
759
765
|
className: cn(
|
|
760
|
-
"ml-2
|
|
766
|
+
"ml-2 font-medium text-sm hidden sm:inline transition-colors duration-200",
|
|
761
767
|
currentStep === s ? "text-foreground" : currentStep > s ? "text-primary" : "text-muted-foreground"
|
|
762
768
|
),
|
|
763
769
|
children: label
|
|
@@ -767,22 +773,23 @@ function ProvisioningWizard({
|
|
|
767
773
|
"div",
|
|
768
774
|
{
|
|
769
775
|
className: cn(
|
|
770
|
-
"w-4 sm:w-8 h-
|
|
776
|
+
"w-4 sm:w-8 h-px mx-2 sm:mx-3 transition-colors duration-300",
|
|
771
777
|
currentStep > s ? "bg-primary" : "bg-border"
|
|
772
778
|
)
|
|
773
779
|
}
|
|
774
780
|
)
|
|
775
781
|
] }, s);
|
|
776
782
|
}) }),
|
|
777
|
-
dc && isMultistep && /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-between
|
|
783
|
+
dc && isMultistep && /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-between rounded-lg border border-border bg-card px-4 py-2.5 shadow-sm shrink-0 mb-4", children: [
|
|
778
784
|
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
779
785
|
/* @__PURE__ */ jsx2(Info, { className: "h-4 w-4 text-primary shrink-0" }),
|
|
780
786
|
/* @__PURE__ */ jsx2("span", { className: "text-muted-foreground", children: "Pre-configured from template." })
|
|
781
787
|
] }),
|
|
782
788
|
/* @__PURE__ */ jsx2(
|
|
783
|
-
|
|
789
|
+
Button,
|
|
784
790
|
{
|
|
785
791
|
type: "button",
|
|
792
|
+
variant: "link",
|
|
786
793
|
onClick: () => {
|
|
787
794
|
setCurrentStep(1);
|
|
788
795
|
setSelectedEnv(environments[0]?.id ?? "");
|
|
@@ -800,30 +807,30 @@ function ProvisioningWizard({
|
|
|
800
807
|
setActivePreset(null);
|
|
801
808
|
setPricingView("hourly");
|
|
802
809
|
},
|
|
803
|
-
className: "
|
|
810
|
+
className: "h-auto p-0 text-xs",
|
|
804
811
|
children: "Start from scratch"
|
|
805
812
|
}
|
|
806
813
|
)
|
|
807
814
|
] }),
|
|
808
|
-
loadError && /* @__PURE__ */ jsxs2("div", { className: "rounded-
|
|
815
|
+
loadError && /* @__PURE__ */ jsxs2("div", { className: "rounded-lg border border-destructive/30 bg-destructive/10 p-3 flex items-center gap-2 shrink-0 mb-4", children: [
|
|
809
816
|
/* @__PURE__ */ jsx2(Info, { className: "h-4 w-4 text-destructive shrink-0" }),
|
|
810
817
|
/* @__PURE__ */ jsx2("p", { className: "text-sm font-medium text-destructive", children: loadError })
|
|
811
818
|
] }),
|
|
812
819
|
/* @__PURE__ */ jsxs2("div", { className: "flex-1 overflow-y-auto min-h-0 space-y-4", children: [
|
|
813
|
-
(!isMultistep || currentStep === 1) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className:
|
|
814
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-
|
|
815
|
-
/* @__PURE__ */ jsx2(
|
|
816
|
-
/* @__PURE__ */ jsx2("h2", { className: "text-
|
|
820
|
+
(!isMultistep || currentStep === 1) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className: SECTION_CARD_CLASS, children: [
|
|
821
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 mb-4", children: [
|
|
822
|
+
/* @__PURE__ */ jsx2(Layers, { className: "h-4 w-4 text-primary shrink-0" }),
|
|
823
|
+
/* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold uppercase tracking-[0.06em] text-muted-foreground", children: "Environment Selection" })
|
|
817
824
|
] }),
|
|
818
825
|
/* @__PURE__ */ jsx2("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-3", children: isLoadingEnvironments && environments.length === 0 ? Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxs2(
|
|
819
826
|
"div",
|
|
820
827
|
{
|
|
821
|
-
className: "p-
|
|
828
|
+
className: "p-3.5 rounded-lg border border-border bg-card/50 animate-pulse",
|
|
822
829
|
"aria-hidden": "true",
|
|
823
830
|
children: [
|
|
824
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-start mb-
|
|
831
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-start mb-2.5", children: [
|
|
825
832
|
/* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-full bg-muted/60 border border-border" }),
|
|
826
|
-
/* @__PURE__ */ jsx2("div", { className: "w-
|
|
833
|
+
/* @__PURE__ */ jsx2("div", { className: "w-4 h-4 rounded-full border-2 border-border" })
|
|
827
834
|
] }),
|
|
828
835
|
/* @__PURE__ */ jsx2("div", { className: "h-3 w-1/3 rounded bg-muted/60 mb-2" }),
|
|
829
836
|
/* @__PURE__ */ jsx2("div", { className: "h-2.5 w-5/6 rounded bg-muted/50 mb-1.5" }),
|
|
@@ -837,39 +844,38 @@ function ProvisioningWizard({
|
|
|
837
844
|
type: "button",
|
|
838
845
|
onClick: () => setSelectedEnv(env.id),
|
|
839
846
|
className: cn(
|
|
840
|
-
"group
|
|
841
|
-
selectedEnv === env.id ? "bg-primary/5 border-primary ring-
|
|
847
|
+
"group p-3.5 rounded-lg text-left border transition-colors duration-200",
|
|
848
|
+
selectedEnv === env.id ? "bg-primary/5 border-primary ring-1 ring-primary/20" : "bg-card border-border hover:border-primary/30 active:scale-[0.99]"
|
|
842
849
|
),
|
|
843
850
|
children: [
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
/* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-full flex items-center justify-center bg-muted/50 border border-border shadow-inner", children: env.icon }),
|
|
851
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-start mb-2.5", children: [
|
|
852
|
+
/* @__PURE__ */ jsx2("div", { className: "w-10 h-10 rounded-full flex items-center justify-center bg-muted/50 border border-border", children: env.icon }),
|
|
847
853
|
/* @__PURE__ */ jsx2(
|
|
848
854
|
"div",
|
|
849
855
|
{
|
|
850
856
|
className: cn(
|
|
851
|
-
"w-
|
|
857
|
+
"w-4 h-4 rounded-full border-2 flex items-center justify-center transition-colors duration-200",
|
|
852
858
|
selectedEnv === env.id ? "border-primary bg-primary" : "border-border group-hover:border-primary/40"
|
|
853
859
|
),
|
|
854
|
-
children: selectedEnv === env.id && /* @__PURE__ */ jsx2(Check, { className: "h-
|
|
860
|
+
children: selectedEnv === env.id && /* @__PURE__ */ jsx2(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
|
|
855
861
|
}
|
|
856
862
|
)
|
|
857
863
|
] }),
|
|
858
|
-
/* @__PURE__ */ jsx2("h3", { className: "font-
|
|
859
|
-
/* @__PURE__ */ jsx2("p", { className: "text-xs text-muted-foreground leading-relaxed
|
|
864
|
+
/* @__PURE__ */ jsx2("h3", { className: "font-semibold text-sm mb-0.5 text-foreground", children: env.name }),
|
|
865
|
+
/* @__PURE__ */ jsx2("p", { className: "text-xs text-muted-foreground leading-relaxed", children: env.description })
|
|
860
866
|
]
|
|
861
867
|
},
|
|
862
868
|
env.id
|
|
863
869
|
)) })
|
|
864
870
|
] }) }),
|
|
865
|
-
(!isMultistep || currentStep === 2) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className:
|
|
866
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-
|
|
867
|
-
/* @__PURE__ */ jsx2(
|
|
868
|
-
/* @__PURE__ */ jsx2("h2", { className: "text-
|
|
871
|
+
(!isMultistep || currentStep === 2) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className: SECTION_CARD_CLASS, children: [
|
|
872
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 mb-4", children: [
|
|
873
|
+
/* @__PURE__ */ jsx2(Cpu, { className: "h-4 w-4 text-primary shrink-0" }),
|
|
874
|
+
/* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold uppercase tracking-[0.06em] text-muted-foreground", children: "Resource Allocation" })
|
|
869
875
|
] }),
|
|
870
|
-
/* @__PURE__ */ jsxs2("div", { className: "mb-
|
|
871
|
-
/* @__PURE__ */ jsx2("label", { className: "
|
|
872
|
-
/* @__PURE__ */ jsx2("div", { className: "grid grid-cols-3 gap-
|
|
876
|
+
/* @__PURE__ */ jsxs2("div", { className: "mb-4", children: [
|
|
877
|
+
/* @__PURE__ */ jsx2("label", { className: cn(FIELD_LABEL_CLASS, "mb-2"), children: "Compute Presets" }),
|
|
878
|
+
/* @__PURE__ */ jsx2("div", { className: "grid grid-cols-3 gap-2", children: presets.map((p) => {
|
|
873
879
|
const active = activePreset === p.name && !p.locked;
|
|
874
880
|
return /* @__PURE__ */ jsxs2(
|
|
875
881
|
"button",
|
|
@@ -878,16 +884,16 @@ function ProvisioningWizard({
|
|
|
878
884
|
onClick: () => !p.locked && applyPreset(p.name, p.cpu, p.ram, p.storage),
|
|
879
885
|
disabled: p.locked,
|
|
880
886
|
className: cn(
|
|
881
|
-
"p-
|
|
882
|
-
active ? "bg-primary/5 border-primary ring-1 ring-primary/20
|
|
887
|
+
"p-2.5 rounded-lg transition-colors duration-200 text-center group border relative",
|
|
888
|
+
active ? "bg-primary/5 border-primary ring-1 ring-primary/20" : p.locked ? "bg-muted/30 border-border opacity-60 cursor-not-allowed" : "bg-card border-border hover:border-primary/30 active:scale-[0.99]"
|
|
883
889
|
),
|
|
884
890
|
children: [
|
|
885
|
-
p.locked && /* @__PURE__ */ jsx2("div", { className: "absolute -top-1.5 -right-1.5 bg-primary text-primary-foreground text-[9px] font-
|
|
891
|
+
p.locked && /* @__PURE__ */ jsx2("div", { className: "absolute -top-1.5 -right-1.5 bg-primary text-primary-foreground text-[9px] font-semibold px-1.5 py-0.5 rounded-full uppercase tracking-wider", children: p.unlockLabel }),
|
|
886
892
|
/* @__PURE__ */ jsx2(
|
|
887
893
|
"div",
|
|
888
894
|
{
|
|
889
895
|
className: cn(
|
|
890
|
-
"font-
|
|
896
|
+
"font-semibold text-sm transition-colors duration-200",
|
|
891
897
|
active ? "text-primary" : p.locked ? "text-muted-foreground" : "text-foreground"
|
|
892
898
|
),
|
|
893
899
|
children: p.name
|
|
@@ -910,7 +916,7 @@ function ProvisioningWizard({
|
|
|
910
916
|
);
|
|
911
917
|
}) })
|
|
912
918
|
] }),
|
|
913
|
-
/* @__PURE__ */ jsx2("div", { className: "space-y-
|
|
919
|
+
/* @__PURE__ */ jsx2("div", { className: "space-y-4", children: [
|
|
914
920
|
{
|
|
915
921
|
label: "Compute Cores (CPU)",
|
|
916
922
|
value: cpuCores,
|
|
@@ -942,9 +948,9 @@ function ProvisioningWizard({
|
|
|
942
948
|
({ label, value, setter, min, max, step: s, unit }) => {
|
|
943
949
|
const displayUnit = unit === "vCPU" ? `${value} vCPU${value === 1 ? "" : "s"}` : `${value}${unit}`;
|
|
944
950
|
return /* @__PURE__ */ jsxs2("div", { children: [
|
|
945
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-end
|
|
946
|
-
/* @__PURE__ */ jsx2("label", { className:
|
|
947
|
-
/* @__PURE__ */ jsx2("span", { className: "text-
|
|
951
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-end pb-1 mb-1.5", children: [
|
|
952
|
+
/* @__PURE__ */ jsx2("label", { className: FIELD_LABEL_CLASS, children: label }),
|
|
953
|
+
/* @__PURE__ */ jsx2("span", { className: "text-sm font-semibold text-foreground tabular-nums", children: displayUnit })
|
|
948
954
|
] }),
|
|
949
955
|
/* @__PURE__ */ jsx2(
|
|
950
956
|
"input",
|
|
@@ -958,7 +964,7 @@ function ProvisioningWizard({
|
|
|
958
964
|
setter(+e.target.value);
|
|
959
965
|
setActivePreset(null);
|
|
960
966
|
},
|
|
961
|
-
className: "w-full h-
|
|
967
|
+
className: "w-full h-1.5 rounded-full appearance-none cursor-pointer accent-primary [&::-webkit-slider-runnable-track]:bg-border [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:h-1.5 [&::-moz-range-track]:bg-border [&::-moz-range-track]:rounded-full [&::-moz-range-track]:h-1.5 [&::-webkit-slider-thumb]:bg-primary [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:-mt-[5px] [&::-webkit-slider-thumb]:shadow-sm [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary-foreground"
|
|
962
968
|
}
|
|
963
969
|
),
|
|
964
970
|
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-[10px] font-mono text-muted-foreground/60 mt-1", children: [
|
|
@@ -975,37 +981,37 @@ function ProvisioningWizard({
|
|
|
975
981
|
}
|
|
976
982
|
) })
|
|
977
983
|
] }) }),
|
|
978
|
-
(!isMultistep || currentStep === 2) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsx2("section", { className:
|
|
984
|
+
(!isMultistep || currentStep === 2) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsx2("section", { className: SECTION_CARD_CLASS, children: /* @__PURE__ */ jsxs2("div", { children: [
|
|
979
985
|
/* @__PURE__ */ jsxs2(
|
|
980
986
|
"button",
|
|
981
987
|
{
|
|
982
988
|
type: "button",
|
|
983
989
|
onClick: () => setShowAdvanced(!showAdvanced),
|
|
984
|
-
className: "flex items-center gap-2 text-foreground
|
|
990
|
+
className: "flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors text-sm font-medium focus:outline-none",
|
|
985
991
|
children: [
|
|
986
992
|
/* @__PURE__ */ jsx2(Settings, { className: "w-4 h-4" }),
|
|
987
993
|
showAdvanced ? "Hide Advanced Options" : "Show Advanced Options"
|
|
988
994
|
]
|
|
989
995
|
}
|
|
990
996
|
),
|
|
991
|
-
showAdvanced && /* @__PURE__ */ jsxs2("div", { className: "mt-
|
|
997
|
+
showAdvanced && /* @__PURE__ */ jsxs2("div", { className: "mt-4 space-y-4", children: [
|
|
992
998
|
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
993
999
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
994
|
-
/* @__PURE__ */ jsx2("label", { className: "
|
|
1000
|
+
/* @__PURE__ */ jsx2("label", { className: cn(FIELD_LABEL_CLASS, "mb-1.5"), children: "Workspace Name" }),
|
|
995
1001
|
/* @__PURE__ */ jsx2(
|
|
996
|
-
|
|
1002
|
+
Input,
|
|
997
1003
|
{
|
|
998
1004
|
type: "text",
|
|
999
1005
|
value: name,
|
|
1000
1006
|
onChange: (e) => setName(e.target.value),
|
|
1001
1007
|
maxLength: 128,
|
|
1002
|
-
className: "
|
|
1008
|
+
className: "h-9 px-3 text-sm",
|
|
1003
1009
|
placeholder: "my-cool-sandbox"
|
|
1004
1010
|
}
|
|
1005
1011
|
)
|
|
1006
1012
|
] }),
|
|
1007
1013
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1008
|
-
/* @__PURE__ */ jsx2("label", { className: "
|
|
1014
|
+
/* @__PURE__ */ jsx2("label", { className: cn(FIELD_LABEL_CLASS, "mb-1.5"), children: "Virtualization Driver" }),
|
|
1009
1015
|
/* @__PURE__ */ jsxs2(
|
|
1010
1016
|
"select",
|
|
1011
1017
|
{
|
|
@@ -1016,7 +1022,7 @@ function ProvisioningWizard({
|
|
|
1016
1022
|
e.target.value
|
|
1017
1023
|
);
|
|
1018
1024
|
},
|
|
1019
|
-
className: "w-full bg-card border border-border rounded-
|
|
1025
|
+
className: "w-full bg-card border border-border rounded-lg h-9 px-3 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent appearance-none",
|
|
1020
1026
|
children: [
|
|
1021
1027
|
/* @__PURE__ */ jsx2("option", { value: "docker", className: "bg-gray-900", children: "Docker container (Default)" }),
|
|
1022
1028
|
/* @__PURE__ */ jsx2(
|
|
@@ -1034,21 +1040,21 @@ function ProvisioningWizard({
|
|
|
1034
1040
|
] })
|
|
1035
1041
|
] }),
|
|
1036
1042
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1037
|
-
/* @__PURE__ */ jsx2("label", { className: "
|
|
1043
|
+
/* @__PURE__ */ jsx2("label", { className: cn(FIELD_LABEL_CLASS, "mb-1.5"), children: "Git Repository URL" }),
|
|
1038
1044
|
/* @__PURE__ */ jsx2(
|
|
1039
|
-
|
|
1045
|
+
Input,
|
|
1040
1046
|
{
|
|
1041
1047
|
type: "text",
|
|
1042
1048
|
value: gitUrl,
|
|
1043
1049
|
onChange: (e) => setGitUrl(e.target.value),
|
|
1044
|
-
className: "
|
|
1050
|
+
className: "h-9 px-3 text-sm",
|
|
1045
1051
|
placeholder: "https://github.com/my-org/my-repo.git"
|
|
1046
1052
|
}
|
|
1047
1053
|
)
|
|
1048
1054
|
] }),
|
|
1049
1055
|
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1050
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-
|
|
1051
|
-
/* @__PURE__ */ jsx2("label", { className:
|
|
1056
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-1.5", children: [
|
|
1057
|
+
/* @__PURE__ */ jsx2("label", { className: FIELD_LABEL_CLASS, children: "Environment Variables" }),
|
|
1052
1058
|
/* @__PURE__ */ jsxs2(
|
|
1053
1059
|
"button",
|
|
1054
1060
|
{
|
|
@@ -1057,7 +1063,7 @@ function ProvisioningWizard({
|
|
|
1057
1063
|
...envVars,
|
|
1058
1064
|
{ key: "", value: "" }
|
|
1059
1065
|
]),
|
|
1060
|
-
className: "flex items-center gap-1 text-xs text-primary hover:text-primary/70 transition-colors font-
|
|
1066
|
+
className: "flex items-center gap-1 text-xs text-primary hover:text-primary/70 transition-colors font-medium",
|
|
1061
1067
|
children: [
|
|
1062
1068
|
/* @__PURE__ */ jsx2(Plus, { className: "h-3 w-3" }),
|
|
1063
1069
|
" Add Var"
|
|
@@ -1068,7 +1074,7 @@ function ProvisioningWizard({
|
|
|
1068
1074
|
/* @__PURE__ */ jsxs2("div", { className: "space-y-2", children: [
|
|
1069
1075
|
envVars.map((env, i) => /* @__PURE__ */ jsxs2("div", { className: "flex gap-2", children: [
|
|
1070
1076
|
/* @__PURE__ */ jsx2(
|
|
1071
|
-
|
|
1077
|
+
Input,
|
|
1072
1078
|
{
|
|
1073
1079
|
type: "text",
|
|
1074
1080
|
value: env.key,
|
|
@@ -1077,12 +1083,12 @@ function ProvisioningWizard({
|
|
|
1077
1083
|
(v, idx) => idx === i ? { ...v, key: e.target.value } : v
|
|
1078
1084
|
)
|
|
1079
1085
|
),
|
|
1080
|
-
className: "flex-1
|
|
1086
|
+
className: "flex-1 h-9 px-3 font-mono text-sm",
|
|
1081
1087
|
placeholder: "API_KEY"
|
|
1082
1088
|
}
|
|
1083
1089
|
),
|
|
1084
1090
|
/* @__PURE__ */ jsx2(
|
|
1085
|
-
|
|
1091
|
+
Input,
|
|
1086
1092
|
{
|
|
1087
1093
|
type: "password",
|
|
1088
1094
|
value: env.value,
|
|
@@ -1091,27 +1097,29 @@ function ProvisioningWizard({
|
|
|
1091
1097
|
(v, idx) => idx === i ? { ...v, value: e.target.value } : v
|
|
1092
1098
|
)
|
|
1093
1099
|
),
|
|
1094
|
-
className: "flex-[2]
|
|
1100
|
+
className: "flex-[2] h-9 px-3 font-mono text-sm",
|
|
1095
1101
|
placeholder: "sk-xxxxxxxxxxx"
|
|
1096
1102
|
}
|
|
1097
1103
|
),
|
|
1098
1104
|
/* @__PURE__ */ jsx2(
|
|
1099
|
-
|
|
1105
|
+
Button,
|
|
1100
1106
|
{
|
|
1101
1107
|
type: "button",
|
|
1108
|
+
variant: "outline",
|
|
1109
|
+
size: "icon",
|
|
1102
1110
|
onClick: () => setEnvVars(
|
|
1103
1111
|
envVars.filter((_, idx) => idx !== i)
|
|
1104
1112
|
),
|
|
1105
|
-
className: "h-
|
|
1113
|
+
className: "h-9 w-9 shrink-0 text-destructive hover:bg-destructive/10 hover:border-destructive/30",
|
|
1106
1114
|
children: /* @__PURE__ */ jsx2(Trash2, { className: "h-4 w-4" })
|
|
1107
1115
|
}
|
|
1108
1116
|
)
|
|
1109
1117
|
] }, i)),
|
|
1110
|
-
envVars.length === 0 && /* @__PURE__ */ jsx2("div", { className: "text-center p-3
|
|
1118
|
+
envVars.length === 0 && /* @__PURE__ */ jsx2("div", { className: "text-center p-3 border border-dashed border-border rounded-lg text-muted-foreground/60 text-xs italic", children: "No environment variables set" })
|
|
1111
1119
|
] })
|
|
1112
1120
|
] }),
|
|
1113
1121
|
availableScripts.length > 0 && /* @__PURE__ */ jsxs2("div", { children: [
|
|
1114
|
-
/* @__PURE__ */ jsx2("div", { className: "
|
|
1122
|
+
/* @__PURE__ */ jsx2("div", { className: cn(FIELD_LABEL_CLASS, "mb-1.5"), children: "Startup Scripts" }),
|
|
1115
1123
|
/* @__PURE__ */ jsx2("div", { className: "space-y-2", children: availableScripts.filter((s) => s.enabled).map((script) => {
|
|
1116
1124
|
const selected = startupScriptIds.includes(
|
|
1117
1125
|
script.id
|
|
@@ -1178,46 +1186,49 @@ function ProvisioningWizard({
|
|
|
1178
1186
|
);
|
|
1179
1187
|
}) })
|
|
1180
1188
|
] }),
|
|
1181
|
-
/* @__PURE__ */
|
|
1182
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
1189
|
+
/* @__PURE__ */ jsxs2("div", { className: "pt-3 border-t border-border flex items-start justify-between gap-3", children: [
|
|
1190
|
+
/* @__PURE__ */ jsxs2("div", { children: [
|
|
1183
1191
|
/* @__PURE__ */ jsx2(
|
|
1184
|
-
"
|
|
1192
|
+
"label",
|
|
1185
1193
|
{
|
|
1186
|
-
|
|
1187
|
-
className: "
|
|
1188
|
-
|
|
1189
|
-
onChange: (e) => setBare(e.target.checked)
|
|
1194
|
+
htmlFor: "wizard-bare-mode",
|
|
1195
|
+
className: "block text-sm font-medium text-foreground cursor-pointer",
|
|
1196
|
+
children: "Bare Mode"
|
|
1190
1197
|
}
|
|
1191
1198
|
),
|
|
1192
|
-
/* @__PURE__ */ jsx2("
|
|
1199
|
+
/* @__PURE__ */ jsx2("p", { className: "text-xs text-muted-foreground mt-0.5", children: "Start as a raw container without an embedded AI Agent backend." })
|
|
1193
1200
|
] }),
|
|
1194
|
-
/* @__PURE__ */
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1201
|
+
/* @__PURE__ */ jsx2(
|
|
1202
|
+
Switch,
|
|
1203
|
+
{
|
|
1204
|
+
id: "wizard-bare-mode",
|
|
1205
|
+
checked: bare,
|
|
1206
|
+
onCheckedChange: setBare,
|
|
1207
|
+
className: "mt-0.5"
|
|
1208
|
+
}
|
|
1209
|
+
)
|
|
1210
|
+
] })
|
|
1199
1211
|
] })
|
|
1200
|
-
] }) }) })
|
|
1201
|
-
sshAccess && (!isMultistep || currentStep === 3) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className:
|
|
1202
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-
|
|
1203
|
-
/* @__PURE__ */ jsx2(
|
|
1204
|
-
/* @__PURE__ */ jsx2("h2", { className: "text-
|
|
1212
|
+
] }) }) }),
|
|
1213
|
+
sshAccess && (!isMultistep || currentStep === 3) && /* @__PURE__ */ jsx2(React2.Fragment, { children: /* @__PURE__ */ jsxs2("section", { className: SECTION_CARD_CLASS, children: [
|
|
1214
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 mb-4", children: [
|
|
1215
|
+
/* @__PURE__ */ jsx2(Settings, { className: "h-4 w-4 text-primary shrink-0" }),
|
|
1216
|
+
/* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold uppercase tracking-[0.06em] text-muted-foreground", children: "Access Configuration" })
|
|
1205
1217
|
] }),
|
|
1206
1218
|
/* @__PURE__ */ jsx2(SshAccessStep, { config: sshAccess })
|
|
1207
1219
|
] }) })
|
|
1208
1220
|
] })
|
|
1209
1221
|
] }),
|
|
1210
1222
|
/* @__PURE__ */ jsxs2("div", { className: "col-span-12 xl:col-span-4 sticky top-4 space-y-4", children: [
|
|
1211
|
-
/* @__PURE__ */ jsxs2("div", { className: "
|
|
1212
|
-
/* @__PURE__ */
|
|
1213
|
-
|
|
1214
|
-
/* @__PURE__ */ jsx2("span", { className: "font-label text-xs font-bold uppercase tracking-widest text-muted-foreground", children: "Run Cost" }),
|
|
1223
|
+
/* @__PURE__ */ jsxs2("div", { className: "rounded-lg border border-border bg-card p-5 shadow-sm", children: [
|
|
1224
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between items-center mb-3", children: [
|
|
1225
|
+
/* @__PURE__ */ jsx2("span", { className: FIELD_LABEL_CLASS, children: "Run Cost" }),
|
|
1215
1226
|
/* @__PURE__ */ jsxs2(
|
|
1216
1227
|
"div",
|
|
1217
1228
|
{
|
|
1218
1229
|
role: "group",
|
|
1219
1230
|
"aria-label": "Pricing view",
|
|
1220
|
-
className: "inline-flex items-center rounded-
|
|
1231
|
+
className: "inline-flex items-center rounded-md border border-border bg-muted/50 p-0.5",
|
|
1221
1232
|
children: [
|
|
1222
1233
|
/* @__PURE__ */ jsx2(
|
|
1223
1234
|
"button",
|
|
@@ -1226,7 +1237,7 @@ function ProvisioningWizard({
|
|
|
1226
1237
|
"aria-pressed": pricingView === "hourly",
|
|
1227
1238
|
onClick: () => setPricingView("hourly"),
|
|
1228
1239
|
className: cn(
|
|
1229
|
-
"rounded
|
|
1240
|
+
"rounded px-2.5 py-0.5 text-[10px] font-medium transition-all",
|
|
1230
1241
|
pricingView === "hourly" ? "bg-card text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
|
|
1231
1242
|
),
|
|
1232
1243
|
children: "Per Hour"
|
|
@@ -1239,7 +1250,7 @@ function ProvisioningWizard({
|
|
|
1239
1250
|
"aria-pressed": pricingView === "perSecond",
|
|
1240
1251
|
onClick: () => setPricingView("perSecond"),
|
|
1241
1252
|
className: cn(
|
|
1242
|
-
"rounded
|
|
1253
|
+
"rounded px-2.5 py-0.5 text-[10px] font-medium transition-all",
|
|
1243
1254
|
pricingView === "perSecond" ? "bg-card text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
|
|
1244
1255
|
),
|
|
1245
1256
|
children: "Per Second"
|
|
@@ -1249,13 +1260,13 @@ function ProvisioningWizard({
|
|
|
1249
1260
|
}
|
|
1250
1261
|
)
|
|
1251
1262
|
] }),
|
|
1252
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex items-baseline gap-2 mb-
|
|
1263
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-baseline gap-2 mb-4", children: [
|
|
1253
1264
|
/* @__PURE__ */ jsxs2(
|
|
1254
1265
|
"span",
|
|
1255
1266
|
{
|
|
1256
1267
|
className: cn(
|
|
1257
|
-
"font-
|
|
1258
|
-
pricingView === "hourly" ? "text-
|
|
1268
|
+
"font-semibold text-foreground tracking-tight tabular-nums animate-in fade-in duration-200",
|
|
1269
|
+
pricingView === "hourly" ? "text-3xl" : "text-xl"
|
|
1259
1270
|
),
|
|
1260
1271
|
children: [
|
|
1261
1272
|
"$",
|
|
@@ -1264,10 +1275,10 @@ function ProvisioningWizard({
|
|
|
1264
1275
|
},
|
|
1265
1276
|
pricingView
|
|
1266
1277
|
),
|
|
1267
|
-
/* @__PURE__ */ jsx2("span", { className: "text-muted-foreground text-sm
|
|
1278
|
+
/* @__PURE__ */ jsx2("span", { className: "text-muted-foreground text-sm", children: pricingSuffix })
|
|
1268
1279
|
] }),
|
|
1269
|
-
/* @__PURE__ */ jsxs2("div", { className: "space-y-2
|
|
1270
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-
|
|
1280
|
+
/* @__PURE__ */ jsxs2("div", { className: "space-y-2 rounded-md border border-border bg-muted/30 p-3", children: [
|
|
1281
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-wide text-muted-foreground", children: [
|
|
1271
1282
|
/* @__PURE__ */ jsx2("span", { children: "COMPUTE" }),
|
|
1272
1283
|
/* @__PURE__ */ jsxs2("span", { className: "text-foreground", children: [
|
|
1273
1284
|
"$",
|
|
@@ -1275,7 +1286,7 @@ function ProvisioningWizard({
|
|
|
1275
1286
|
rateSuffix
|
|
1276
1287
|
] })
|
|
1277
1288
|
] }),
|
|
1278
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-
|
|
1289
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-wide text-muted-foreground", children: [
|
|
1279
1290
|
/* @__PURE__ */ jsx2("span", { children: "MEMORY" }),
|
|
1280
1291
|
/* @__PURE__ */ jsxs2("span", { className: "text-foreground/80", children: [
|
|
1281
1292
|
"$",
|
|
@@ -1283,7 +1294,7 @@ function ProvisioningWizard({
|
|
|
1283
1294
|
rateSuffix
|
|
1284
1295
|
] })
|
|
1285
1296
|
] }),
|
|
1286
|
-
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-
|
|
1297
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-wide text-muted-foreground", children: [
|
|
1287
1298
|
/* @__PURE__ */ jsx2("span", { children: "STORAGE" }),
|
|
1288
1299
|
/* @__PURE__ */ jsxs2("span", { className: "text-foreground/80", children: [
|
|
1289
1300
|
"$",
|
|
@@ -1291,7 +1302,7 @@ function ProvisioningWizard({
|
|
|
1291
1302
|
rateSuffix
|
|
1292
1303
|
] })
|
|
1293
1304
|
] }),
|
|
1294
|
-
hourlyCostBreakdown.floorApplies && /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-
|
|
1305
|
+
hourlyCostBreakdown.floorApplies && /* @__PURE__ */ jsxs2("div", { className: "flex justify-between text-xs font-mono tracking-wide text-primary border-t border-border pt-2", children: [
|
|
1295
1306
|
/* @__PURE__ */ jsx2("span", { children: "MIN CHARGE" }),
|
|
1296
1307
|
/* @__PURE__ */ jsxs2("span", { children: [
|
|
1297
1308
|
"$",
|
|
@@ -1303,29 +1314,29 @@ function ProvisioningWizard({
|
|
|
1303
1314
|
] })
|
|
1304
1315
|
] })
|
|
1305
1316
|
] }),
|
|
1306
|
-
deployError && /* @__PURE__ */ jsxs2("div", { className: "rounded-
|
|
1317
|
+
deployError && /* @__PURE__ */ jsxs2("div", { className: "rounded-lg border border-destructive/30 bg-destructive/10 p-3 flex items-center gap-2", children: [
|
|
1307
1318
|
/* @__PURE__ */ jsx2(Info, { className: "h-4 w-4 text-destructive shrink-0" }),
|
|
1308
1319
|
/* @__PURE__ */ jsx2("p", { className: "text-sm font-medium text-destructive", children: deployError })
|
|
1309
1320
|
] }),
|
|
1310
|
-
/* @__PURE__ */ jsx2("div", { className: "space-y-
|
|
1321
|
+
/* @__PURE__ */ jsx2("div", { className: "space-y-2", children: isMultistep ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
1311
1322
|
currentStep < finalStep ? /* @__PURE__ */ jsxs2(
|
|
1312
|
-
|
|
1323
|
+
Button,
|
|
1313
1324
|
{
|
|
1314
1325
|
type: "button",
|
|
1315
1326
|
onClick: () => setCurrentStep((s) => s + 1),
|
|
1316
|
-
className: "w-full
|
|
1327
|
+
className: "w-full",
|
|
1317
1328
|
children: [
|
|
1318
1329
|
"Continue to ",
|
|
1319
1330
|
stepLabels[currentStep]
|
|
1320
1331
|
]
|
|
1321
1332
|
}
|
|
1322
1333
|
) : /* @__PURE__ */ jsx2(
|
|
1323
|
-
|
|
1334
|
+
Button,
|
|
1324
1335
|
{
|
|
1325
1336
|
type: "button",
|
|
1326
1337
|
onClick: handleDeploy,
|
|
1327
1338
|
disabled: isDeploying || !selectedEnv,
|
|
1328
|
-
className: "w-full
|
|
1339
|
+
className: "w-full",
|
|
1329
1340
|
children: isDeploying ? /* @__PURE__ */ jsxs2("span", { className: "flex items-center justify-center gap-2", children: [
|
|
1330
1341
|
/* @__PURE__ */ jsx2(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
1331
1342
|
"Deploying..."
|
|
@@ -1333,21 +1344,22 @@ function ProvisioningWizard({
|
|
|
1333
1344
|
}
|
|
1334
1345
|
),
|
|
1335
1346
|
currentStep > 1 && /* @__PURE__ */ jsx2(
|
|
1336
|
-
|
|
1347
|
+
Button,
|
|
1337
1348
|
{
|
|
1338
1349
|
type: "button",
|
|
1350
|
+
variant: "secondary",
|
|
1339
1351
|
onClick: () => setCurrentStep((s) => s - 1),
|
|
1340
|
-
className: "w-full
|
|
1352
|
+
className: "w-full",
|
|
1341
1353
|
children: "Back"
|
|
1342
1354
|
}
|
|
1343
1355
|
)
|
|
1344
1356
|
] }) : /* @__PURE__ */ jsx2(
|
|
1345
|
-
|
|
1357
|
+
Button,
|
|
1346
1358
|
{
|
|
1347
1359
|
type: "button",
|
|
1348
1360
|
onClick: handleDeploy,
|
|
1349
1361
|
disabled: isDeploying || !selectedEnv,
|
|
1350
|
-
className: "w-full
|
|
1362
|
+
className: "w-full",
|
|
1351
1363
|
children: isDeploying ? /* @__PURE__ */ jsxs2("span", { className: "flex items-center justify-center gap-2", children: [
|
|
1352
1364
|
/* @__PURE__ */ jsx2(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
1353
1365
|
"Spinning up environment..."
|
|
@@ -1523,7 +1535,7 @@ import {
|
|
|
1523
1535
|
DialogTitle
|
|
1524
1536
|
} from "@tangle-network/ui/primitives";
|
|
1525
1537
|
import { EmptyState } from "@tangle-network/ui/primitives";
|
|
1526
|
-
import { Input } from "@tangle-network/ui/primitives";
|
|
1538
|
+
import { Input as Input2 } from "@tangle-network/ui/primitives";
|
|
1527
1539
|
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1528
1540
|
var TIER_LIMITS = {
|
|
1529
1541
|
free: 3,
|
|
@@ -1616,7 +1628,7 @@ function ProfilesPage({
|
|
|
1616
1628
|
/* @__PURE__ */ jsxs4("div", { className: "relative max-w-md", children: [
|
|
1617
1629
|
/* @__PURE__ */ jsx4(Search, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
|
|
1618
1630
|
/* @__PURE__ */ jsx4(
|
|
1619
|
-
|
|
1631
|
+
Input2,
|
|
1620
1632
|
{
|
|
1621
1633
|
placeholder: "Search profiles...",
|
|
1622
1634
|
value: searchQuery,
|
|
@@ -1892,7 +1904,7 @@ function ProfileFormDialog({
|
|
|
1892
1904
|
/* @__PURE__ */ jsxs4("div", { children: [
|
|
1893
1905
|
/* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Name *" }),
|
|
1894
1906
|
/* @__PURE__ */ jsx4(
|
|
1895
|
-
|
|
1907
|
+
Input2,
|
|
1896
1908
|
{
|
|
1897
1909
|
value: formData.name,
|
|
1898
1910
|
onChange: (e) => setFormData((d) => ({ ...d, name: e.target.value })),
|
|
@@ -1906,7 +1918,7 @@ function ProfileFormDialog({
|
|
|
1906
1918
|
/* @__PURE__ */ jsxs4("div", { children: [
|
|
1907
1919
|
/* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Description" }),
|
|
1908
1920
|
/* @__PURE__ */ jsx4(
|
|
1909
|
-
|
|
1921
|
+
Input2,
|
|
1910
1922
|
{
|
|
1911
1923
|
value: formData.description,
|
|
1912
1924
|
onChange: (e) => setFormData((d) => ({ ...d, description: e.target.value })),
|
|
@@ -1936,7 +1948,7 @@ function ProfileFormDialog({
|
|
|
1936
1948
|
/* @__PURE__ */ jsxs4("div", { children: [
|
|
1937
1949
|
/* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Model" }),
|
|
1938
1950
|
/* @__PURE__ */ jsx4(
|
|
1939
|
-
|
|
1951
|
+
Input2,
|
|
1940
1952
|
{
|
|
1941
1953
|
value: formData.model,
|
|
1942
1954
|
onChange: (e) => setFormData((d) => ({ ...d, model: e.target.value })),
|
|
@@ -1961,7 +1973,7 @@ function ProfileFormDialog({
|
|
|
1961
1973
|
/* @__PURE__ */ jsxs4("div", { children: [
|
|
1962
1974
|
/* @__PURE__ */ jsx4("label", { className: "mb-1 block font-medium text-sm", children: "Tags" }),
|
|
1963
1975
|
/* @__PURE__ */ jsx4(
|
|
1964
|
-
|
|
1976
|
+
Input2,
|
|
1965
1977
|
{
|
|
1966
1978
|
value: formData.tags?.join(", "),
|
|
1967
1979
|
onChange: (e) => setFormData((d) => ({
|