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