@nice2dev/ui-api 1.0.25 → 1.0.26

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/index.cjs CHANGED
@@ -24,7 +24,7 @@
24
24
  }
25
25
  .nice-tutorial-button--sm { width: 16px; height: 16px; font-size: 11px; }
26
26
  .nice-tutorial-button--md { width: 20px; height: 20px; font-size: 12px; }
27
- `,document.head.appendChild(r)}c.createContext(null);c.createContext(null);c.createContext(null);const fe={space1:"4px",space2:"8px",space3:"12px",space4:"16px",space5:"20px",space6:"24px",space8:"32px"},pe={fontFamily:"'Inter', system-ui, -apple-system, sans-serif",fontSizeXs:"0.75rem",fontSizeSm:"0.8125rem",fontSizeMd:"0.875rem",fontSizeLg:"1rem",fontSizeXl:"1.125rem",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeight:1.5},me={fast:"120ms ease",normal:"200ms ease",slow:"300ms ease"},ye=r=>({color:r,radiusSm:"4px",radiusMd:"6px",radiusLg:"8px",radiusXl:"12px",radiusFull:"9999px"}),Ae={sm:"0 1px 2px rgba(0,0,0,0.05)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",lg:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",xl:"0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)"},Pe={sm:"0 1px 2px rgba(0,0,0,0.3)",md:"0 4px 6px -1px rgba(0,0,0,0.4)",lg:"0 10px 15px -3px rgba(0,0,0,0.4)",xl:"0 20px 25px -5px rgba(0,0,0,0.4)"};function l(r,a,s,i,t){return{name:r,darkMode:"light",colors:{...a,surface:a.surface??s.primary,surfaceHover:a.surfaceHover??s.secondary},backgrounds:{...s,elevated:s.elevated??s.primary,inset:s.inset??s.tertiary,canvas:s.canvas??s.primary},text:{...i,inverse:i.inverse??"#ffffff"},borders:ye(t),shadows:Ae,spacing:fe,typography:pe,transitions:me}}function E(r,a,s,i,t){return{name:r,darkMode:"dark",colors:{...a,surface:a.surface??s.secondary,surfaceHover:a.surfaceHover??s.tertiary},backgrounds:{...s,elevated:s.elevated??s.secondary,inset:s.inset??s.primary,canvas:s.canvas??s.primary},text:{...i,inverse:i.inverse??"#0f172a"},borders:ye(t),shadows:Pe,spacing:fe,typography:pe,transitions:me}}l("Slate",{primary:"#64748b",primaryHover:"#475569",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#1e293b",secondary:"#475569",muted:"#94a3b8"},"#cbd5e1");l("Zinc",{primary:"#71717a",primaryHover:"#52525b",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fafafa",secondary:"#f4f4f5",tertiary:"#e4e4e7",hover:"#e4e4e7"},{primary:"#18181b",secondary:"#3f3f46",muted:"#a1a1aa"},"#d4d4d8");l("Stone",{primary:"#78716c",primaryHover:"#57534e",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#fafaf9",secondary:"#f5f5f4",tertiary:"#e7e5e4",hover:"#e7e5e4"},{primary:"#1c1917",secondary:"#44403c",muted:"#a8a29e"},"#d6d3d1");l("Cool Gray",{primary:"#6b7280",primaryHover:"#4b5563",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#3b82f6"},{primary:"#f9fafb",secondary:"#f3f4f6",tertiary:"#e5e7eb",hover:"#e5e7eb"},{primary:"#111827",secondary:"#374151",muted:"#9ca3af"},"#d1d5db");l("Warm Gray",{primary:"#7c7568",primaryHover:"#5c564c",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf9f7",secondary:"#f5f4f0",tertiary:"#e8e6e1",hover:"#e8e6e1"},{primary:"#1f1d19",secondary:"#4a463d",muted:"#a09888"},"#d4d0c8");l("Silver",{primary:"#94a3b8",primaryHover:"#64748b",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#38bdf8"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#334155",secondary:"#64748b",muted:"#94a3b8"},"#cbd5e1");l("Charcoal",{primary:"#374151",primaryHover:"#1f2937",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f9fafb",secondary:"#f3f4f6",tertiary:"#e5e7eb",hover:"#e5e7eb"},{primary:"#111827",secondary:"#374151",muted:"#6b7280"},"#d1d5db");l("Ivory",{primary:"#92876d",primaryHover:"#7a6f55",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fffef7",secondary:"#faf6eb",tertiary:"#f0ead6",hover:"#f0ead6"},{primary:"#2b2517",secondary:"#5c5340",muted:"#9c9280"},"#ddd8c4");l("Rose",{primary:"#e11d48",primaryHover:"#be123c",success:"#16a34a",warning:"#ea580c",error:"#dc2626",info:"#0891b2"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#f43f5e"},"#fda4af");l("Emerald",{primary:"#059669",primaryHover:"#047857",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#34d399"},"#6ee7b7");l("Amber",{primary:"#d97706",primaryHover:"#b45309",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0284c7"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#78350f",muted:"#f59e0b"},"#fcd34d");l("Violet",{primary:"#7c3aed",primaryHover:"#6d28d9",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f5f3ff",secondary:"#ede9fe",tertiary:"#ddd6fe",hover:"#ede9fe"},{primary:"#2e1065",secondary:"#4c1d95",muted:"#a78bfa"},"#c4b5fd");l("Teal",{primary:"#0d9488",primaryHover:"#0f766e",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0fdfa",secondary:"#ccfbf1",tertiary:"#99f6e4",hover:"#ccfbf1"},{primary:"#134e4a",secondary:"#115e59",muted:"#2dd4bf"},"#5eead4");l("Indigo",{primary:"#4f46e5",primaryHover:"#4338ca",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#eef2ff",secondary:"#e0e7ff",tertiary:"#c7d2fe",hover:"#e0e7ff"},{primary:"#1e1b4b",secondary:"#312e81",muted:"#818cf8"},"#a5b4fc");l("Cyan",{primary:"#0891b2",primaryHover:"#0e7490",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#0284c7"},{primary:"#ecfeff",secondary:"#cffafe",tertiary:"#a5f3fc",hover:"#cffafe"},{primary:"#164e63",secondary:"#155e75",muted:"#22d3ee"},"#67e8f9");l("Lime",{primary:"#65a30d",primaryHover:"#4d7c0f",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#f7fee7",secondary:"#ecfccb",tertiary:"#d9f99d",hover:"#ecfccb"},{primary:"#1a2e05",secondary:"#365314",muted:"#84cc16"},"#bef264");l("Pink",{primary:"#db2777",primaryHover:"#be185d",success:"#10b981",warning:"#f59e0b",error:"#dc2626",info:"#06b6d4"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#500724",secondary:"#831843",muted:"#f472b6"},"#f9a8d4");l("Orange",{primary:"#ea580c",primaryHover:"#c2410c",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#7c2d12",muted:"#fb923c"},"#fdba74");l("Fuchsia",{primary:"#c026d3",primaryHover:"#a21caf",success:"#10b981",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fdf4ff",secondary:"#fae8ff",tertiary:"#f5d0fe",hover:"#fae8ff"},{primary:"#4a044e",secondary:"#701a75",muted:"#d946ef"},"#e879f9");l("Sky",{primary:"#0284c7",primaryHover:"#0369a1",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#075985",muted:"#38bdf8"},"#7dd3fc");l("Ruby",{primary:"#be123c",primaryHover:"#9f1239",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#fb7185"},"#fda4af");l("Coral",{primary:"#f97316",primaryHover:"#ea580c",success:"#10b981",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#9a3412",muted:"#fb923c"},"#fdba74");E("Midnight",{primary:"#818cf8",primaryHover:"#6366f1",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#020617",secondary:"#0f172a",tertiary:"#1e293b",hover:"#1e293b"},{primary:"#f1f5f9",secondary:"#94a3b8",muted:"#475569"},"#1e293b");E("Obsidian",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#facc15",error:"#fb7185",info:"#38bdf8"},{primary:"#09090b",secondary:"#18181b",tertiary:"#27272a",hover:"#27272a"},{primary:"#fafafa",secondary:"#a1a1aa",muted:"#52525b"},"#3f3f46");E("Eclipse",{primary:"#c084fc",primaryHover:"#a855f7",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#67e8f9"},{primary:"#0c0a1d",secondary:"#1a1533",tertiary:"#2a2248",hover:"#2a2248"},{primary:"#f5f3ff",secondary:"#a78bfa",muted:"#6d5eac"},"#3b3266");E("Onyx",{primary:"#60a5fa",primaryHover:"#3b82f6",success:"#4ade80",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#000000",secondary:"#0a0a0a",tertiary:"#171717",hover:"#171717"},{primary:"#ffffff",secondary:"#a3a3a3",muted:"#525252"},"#262626");E("Carbon",{primary:"#38bdf8",primaryHover:"#0ea5e9",success:"#4ade80",warning:"#facc15",error:"#f87171",info:"#67e8f9"},{primary:"#161616",secondary:"#262626",tertiary:"#393939",hover:"#393939"},{primary:"#f4f4f4",secondary:"#c6c6c6",muted:"#6f6f6f"},"#525252");E("Cosmos",{primary:"#6366f1",primaryHover:"#4f46e5",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#030712",secondary:"#111827",tertiary:"#1f2937",hover:"#1f2937"},{primary:"#e5e7eb",secondary:"#9ca3af",muted:"#4b5563"},"#374151");E("Nebula",{primary:"#e879f9",primaryHover:"#d946ef",success:"#4ade80",warning:"#fbbf24",error:"#fb7185",info:"#67e8f9"},{primary:"#0d0117",secondary:"#1a0533",tertiary:"#2d0a52",hover:"#2d0a52"},{primary:"#fae8ff",secondary:"#d8b4fe",muted:"#7c3aed"},"#581c87");E("Abyss",{primary:"#22d3ee",primaryHover:"#06b6d4",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#38bdf8"},{primary:"#001219",secondary:"#002a3a",tertiary:"#003e54",hover:"#003e54"},{primary:"#e0f2fe",secondary:"#7dd3fc",muted:"#0369a1"},"#075985");E("Shadow",{primary:"#a3a3a3",primaryHover:"#737373",success:"#4ade80",warning:"#facc15",error:"#f87171",info:"#38bdf8"},{primary:"#171717",secondary:"#1f1f1f",tertiary:"#2a2a2a",hover:"#2a2a2a"},{primary:"#e5e5e5",secondary:"#a3a3a3",muted:"#525252"},"#404040");E("Emerald Dark",{primary:"#34d399",primaryHover:"#10b981",success:"#4ade80",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#022c22",secondary:"#064e3b",tertiary:"#065f46",hover:"#065f46"},{primary:"#ecfdf5",secondary:"#6ee7b7",muted:"#047857"},"#047857");l("Forest",{primary:"#166534",primaryHover:"#14532d",success:"#22c55e",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#052e16",secondary:"#166534",muted:"#4ade80"},"#86efac");l("Ocean",{primary:"#0369a1",primaryHover:"#075985",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#38bdf8"},"#7dd3fc");l("Desert",{primary:"#b45309",primaryHover:"#92400e",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fefce8",secondary:"#fef9c3",tertiary:"#fef08a",hover:"#fef9c3"},{primary:"#422006",secondary:"#713f12",muted:"#ca8a04"},"#fde047");l("Sunset",{primary:"#ea580c",primaryHover:"#c2410c",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#9a3412",muted:"#f97316"},"#fdba74");l("Aurora",{primary:"#0d9488",primaryHover:"#0f766e",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#f0fdfa",secondary:"#ccfbf1",tertiary:"#99f6e4",hover:"#ccfbf1"},{primary:"#134e4a",secondary:"#115e59",muted:"#2dd4bf"},"#5eead4");l("Lavender",{primary:"#7e22ce",primaryHover:"#6b21a8",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#faf5ff",secondary:"#f3e8ff",tertiary:"#e9d5ff",hover:"#f3e8ff"},{primary:"#3b0764",secondary:"#581c87",muted:"#a855f7"},"#d8b4fe");l("Autumn",{primary:"#c2410c",primaryHover:"#9a3412",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fef2f2",secondary:"#fee2e2",tertiary:"#fecaca",hover:"#fee2e2"},{primary:"#450a0a",secondary:"#7f1d1d",muted:"#f87171"},"#fca5a5");l("Spring",{primary:"#16a34a",primaryHover:"#15803d",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#14532d",secondary:"#166534",muted:"#4ade80"},"#86efac");l("Arctic",{primary:"#0ea5e9",primaryHover:"#0284c7",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#7dd3fc"},"#bae6fd");l("Tropical",{primary:"#0d9488",primaryHover:"#0f766e",success:"#16a34a",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#6ee7b7"},"#a7f3d0");l("Pastel Rose",{primary:"#f472b6",primaryHover:"#ec4899",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#831843",secondary:"#9d174d",muted:"#f9a8d4"},"#f9a8d4");l("Pastel Sky",{primary:"#38bdf8",primaryHover:"#0ea5e9",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#075985",secondary:"#0369a1",muted:"#7dd3fc"},"#bae6fd");l("Pastel Mint",{primary:"#34d399",primaryHover:"#10b981",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#065f46",secondary:"#047857",muted:"#6ee7b7"},"#a7f3d0");l("Pastel Peach",{primary:"#fb923c",primaryHover:"#f97316",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#7c2d12",secondary:"#9a3412",muted:"#fdba74"},"#fed7aa");l("Pastel Lavender",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f5f3ff",secondary:"#ede9fe",tertiary:"#ddd6fe",hover:"#ede9fe"},{primary:"#4c1d95",secondary:"#5b21b6",muted:"#c4b5fd"},"#ddd6fe");l("Pastel Lemon",{primary:"#facc15",primaryHover:"#eab308",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fefce8",secondary:"#fef9c3",tertiary:"#fef08a",hover:"#fef9c3"},{primary:"#713f12",secondary:"#854d0e",muted:"#fde047"},"#fef08a");l("Pastel Sage",{primary:"#86efac",primaryHover:"#4ade80",success:"#22c55e",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#166534",secondary:"#15803d",muted:"#86efac"},"#bbf7d0");l("Pastel Coral",{primary:"#fb7185",primaryHover:"#f43f5e",success:"#4ade80",warning:"#fcd34d",error:"#ef4444",info:"#67e8f9"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#881337",secondary:"#9f1239",muted:"#fda4af"},"#fecdd3");l("Banking",{primary:"#1e3a5f",primaryHover:"#152c4a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#0f172a",secondary:"#334155",muted:"#94a3b8"},"#cbd5e1");l("Healthcare",{primary:"#0891b2",primaryHover:"#0e7490",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0fdfa",secondary:"#e0f7fa",tertiary:"#b2ebf2",hover:"#e0f7fa"},{primary:"#134e4a",secondary:"#1a6b6a",muted:"#80cbc4"},"#b2dfdb");l("Legal",{primary:"#1e293b",primaryHover:"#0f172a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#fafaf9",secondary:"#f5f5f4",tertiary:"#e7e5e4",hover:"#e7e5e4"},{primary:"#0f172a",secondary:"#44403c",muted:"#a8a29e"},"#d6d3d1");l("Tech Startup",{primary:"#7c3aed",primaryHover:"#6d28d9",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#faf5ff",secondary:"#f3e8ff",tertiary:"#e9d5ff",hover:"#f3e8ff"},{primary:"#1e1b4b",secondary:"#4c1d95",muted:"#a78bfa"},"#c4b5fd");l("Enterprise",{primary:"#1e40af",primaryHover:"#1e3a8a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#eff6ff",secondary:"#dbeafe",tertiary:"#bfdbfe",hover:"#dbeafe"},{primary:"#1e3a5f",secondary:"#1e40af",muted:"#60a5fa"},"#93c5fd");l("Government",{primary:"#1d4ed8",primaryHover:"#1e40af",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#0f172a",secondary:"#1e293b",muted:"#64748b"},"#cbd5e1");l("Education",{primary:"#059669",primaryHover:"#047857",success:"#16a34a",warning:"#f59e0b",error:"#ef4444",info:"#0891b2"},{primary:"#f0fdf9",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#6ee7b7"},"#a7f3d0");l("Real Estate",{primary:"#92400e",primaryHover:"#78350f",success:"#059669",warning:"#b45309",error:"#dc2626",info:"#0891b2"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#422006",secondary:"#713f12",muted:"#d97706"},"#fcd34d");l("Nord",{primary:"#5e81ac",primaryHover:"#4c6b90",success:"#a3be8c",warning:"#ebcb8b",error:"#bf616a",info:"#88c0d0"},{primary:"#eceff4",secondary:"#e5e9f0",tertiary:"#d8dee9",hover:"#d8dee9"},{primary:"#2e3440",secondary:"#3b4252",muted:"#4c566a"},"#d8dee9");E("Dracula",{primary:"#bd93f9",primaryHover:"#9d79d9",success:"#50fa7b",warning:"#f1fa8c",error:"#ff5555",info:"#8be9fd"},{primary:"#282a36",secondary:"#343746",tertiary:"#44475a",hover:"#44475a"},{primary:"#f8f8f2",secondary:"#c0c0c0",muted:"#6272a4"},"#44475a");l("Solarized Light",{primary:"#268bd2",primaryHover:"#1a6da0",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198"},{primary:"#fdf6e3",secondary:"#eee8d5",tertiary:"#e0dbc7",hover:"#eee8d5"},{primary:"#073642",secondary:"#586e75",muted:"#93a1a1"},"#eee8d5");E("Solarized Dark",{primary:"#268bd2",primaryHover:"#3d98db",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198"},{primary:"#002b36",secondary:"#073642",tertiary:"#0a4858",hover:"#073642"},{primary:"#eee8d5",secondary:"#93a1a1",muted:"#586e75"},"#073642");E("Monokai",{primary:"#66d9ef",primaryHover:"#45c0d6",success:"#a6e22e",warning:"#e6db74",error:"#f92672",info:"#66d9ef"},{primary:"#272822",secondary:"#34352e",tertiary:"#3e3d32",hover:"#3e3d32"},{primary:"#f8f8f2",secondary:"#cfcfc2",muted:"#75715e"},"#3e3d32");E("One Dark",{primary:"#61afef",primaryHover:"#4b9ee0",success:"#98c379",warning:"#e5c07b",error:"#e06c75",info:"#56b6c2"},{primary:"#282c34",secondary:"#2c313a",tertiary:"#353b45",hover:"#353b45"},{primary:"#abb2bf",secondary:"#828997",muted:"#545862"},"#3e4452");E("Synthwave",{primary:"#ff7edb",primaryHover:"#e660c2",success:"#72f1b8",warning:"#fede5d",error:"#fe4450",info:"#36f9f6"},{primary:"#241b2f",secondary:"#2d2140",tertiary:"#362a50",hover:"#362a50"},{primary:"#f0e4fc",secondary:"#b4a0cc",muted:"#6c5c84"},"#4a3866");l("Vaporwave",{primary:"#ff71ce",primaryHover:"#e655b5",success:"#78dcca",warning:"#ffb86c",error:"#ff5555",info:"#76e8fc"},{primary:"#fce4f7",secondary:"#e8d0f4",tertiary:"#d4bcf0",hover:"#e8d0f4"},{primary:"#4a1a4e",secondary:"#7b3f7d",muted:"#c080c0"},"#d8a8e8");E("Terminal Green",{primary:"#00ff41",primaryHover:"#00cc34",success:"#00ff41",warning:"#ffff00",error:"#ff0000",info:"#00ffff"},{primary:"#0a0a0a",secondary:"#0d1a0d",tertiary:"#1a2e1a",hover:"#1a2e1a"},{primary:"#00ff41",secondary:"#00cc33",muted:"#008822"},"#003300");l("Sepia",{primary:"#8b6914",primaryHover:"#704f10",success:"#6b8e23",warning:"#cd853f",error:"#b22222",info:"#5f9ea0"},{primary:"#faf0e6",secondary:"#f5e6d3",tertiary:"#eddcc7",hover:"#f5e6d3"},{primary:"#3e2723",secondary:"#5d4037",muted:"#a1887f"},"#d7ccc8");l("Vintage",{primary:"#8d6e63",primaryHover:"#6d4c41",success:"#66bb6a",warning:"#ffb300",error:"#e53935",info:"#29b6f6"},{primary:"#efebe9",secondary:"#d7ccc8",tertiary:"#bcaaa4",hover:"#d7ccc8"},{primary:"#3e2723",secondary:"#5d4037",muted:"#a1887f"},"#bcaaa4");E("Cyberpunk",{primary:"#00f0ff",primaryHover:"#00c8d4",success:"#39ff14",warning:"#ffff00",error:"#ff003c",info:"#bf00ff"},{primary:"#0a0e17",secondary:"#131824",tertiary:"#1c2333",hover:"#1c2333"},{primary:"#e0fbfc",secondary:"#80d4dd",muted:"#3a6b72"},"#1c3a44");E("Neon",{primary:"#ff00ff",primaryHover:"#cc00cc",success:"#00ff00",warning:"#ffff00",error:"#ff0000",info:"#00ffff"},{primary:"#0d0d0d",secondary:"#1a1a1a",tertiary:"#262626",hover:"#262626"},{primary:"#ffffff",secondary:"#cccccc",muted:"#666666"},"#333333");E("Retrowave",{primary:"#f77fbe",primaryHover:"#e462a3",success:"#72f1b8",warning:"#ffe261",error:"#ff4444",info:"#79e8fb"},{primary:"#1b0a2e",secondary:"#261440",tertiary:"#321e52",hover:"#321e52"},{primary:"#ffe6f7",secondary:"#c9a0c9",muted:"#6b4c7a"},"#4a2d66");l("Christmas",{primary:"#c41e3a",primaryHover:"#a01830",success:"#228b22",warning:"#ffd700",error:"#dc2626",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fde8e8",tertiary:"#f8d0d0",hover:"#fde8e8"},{primary:"#3b0a0a",secondary:"#7f1d1d",muted:"#dc6868"},"#e8a0a0");E("Halloween",{primary:"#ff6600",primaryHover:"#e05500",success:"#4ade80",warning:"#fbbf24",error:"#ff0000",info:"#9333ea"},{primary:"#1a0a00",secondary:"#2d1500",tertiary:"#402000",hover:"#402000"},{primary:"#ffedd5",secondary:"#fdba74",muted:"#9a5c28"},"#5c3400");l("Valentine",{primary:"#e11d48",primaryHover:"#be123c",success:"#10b981",warning:"#f59e0b",error:"#dc2626",info:"#ec4899"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#f9a8d4"},"#fda4af");l("Easter",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fef9ff",secondary:"#f3e8ff",tertiary:"#e8d5ff",hover:"#f3e8ff"},{primary:"#581c87",secondary:"#6d28d9",muted:"#c4b5fd"},"#ddd6fe");l("Summer Beach",{primary:"#0ea5e9",primaryHover:"#0284c7",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#7dd3fc"},"#fcd34d");l("Winter Frost",{primary:"#3b82f6",primaryHover:"#2563eb",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#1e3a5f",secondary:"#1e40af",muted:"#93c5fd"},"#bfdbfe");l("Cherry Blossom",{primary:"#ec4899",primaryHover:"#db2777",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#831843",secondary:"#9d174d",muted:"#f9a8d4"},"#fbcfe8");l("Harvest",{primary:"#b45309",primaryHover:"#92400e",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#78350f",muted:"#d97706"},"#fcd34d");l("Japanese Zen",{primary:"#6b7280",primaryHover:"#4b5563",success:"#6b8e23",warning:"#d4a017",error:"#c0392b",info:"#5f9ea0"},{primary:"#faf9f6",secondary:"#f0ece3",tertiary:"#e6e0d4",hover:"#f0ece3"},{primary:"#2c2c2c",secondary:"#5c5c5c",muted:"#a0998a"},"#d5cec0");l("Moroccan",{primary:"#c2410c",primaryHover:"#9a3412",success:"#15803d",warning:"#ca8a04",error:"#b91c1c",info:"#0e7490"},{primary:"#fffbf0",secondary:"#fef3e0",tertiary:"#fde6c4",hover:"#fef3e0"},{primary:"#3a1a00",secondary:"#7c2d12",muted:"#d97706"},"#f5d0a0");l("Scandinavian",{primary:"#4b5563",primaryHover:"#374151",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#ffffff",secondary:"#f9fafb",tertiary:"#f3f4f6",hover:"#f3f4f6"},{primary:"#111827",secondary:"#374151",muted:"#9ca3af"},"#e5e7eb");l("Mediterranean",{primary:"#1e40af",primaryHover:"#1e3a8a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#eff6ff",secondary:"#dbeafe",tertiary:"#bfdbfe",hover:"#dbeafe"},{primary:"#1e3a5f",secondary:"#2563eb",muted:"#93c5fd"},"#bfdbfe");l("Chinese New Year",{primary:"#dc2626",primaryHover:"#b91c1c",success:"#16a34a",warning:"#d4a017",error:"#ef4444",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fee2e2",tertiary:"#fecaca",hover:"#fee2e2"},{primary:"#450a0a",secondary:"#991b1b",muted:"#f87171"},"#fca5a5");l("Indian Festive",{primary:"#d97706",primaryHover:"#b45309",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#7c3aed"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#92400e",muted:"#f59e0b"},"#fcd34d");l("Brazilian Carnival",{primary:"#16a34a",primaryHover:"#15803d",success:"#22c55e",warning:"#facc15",error:"#ef4444",info:"#0ea5e9"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#052e16",secondary:"#166534",muted:"#4ade80"},"#86efac");l("African Earth",{primary:"#92400e",primaryHover:"#78350f",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf5f0",secondary:"#f0e6d6",tertiary:"#e6d5bb",hover:"#f0e6d6"},{primary:"#2b1a0e",secondary:"#5c3d1e",muted:"#a08060"},"#d4b896");E("High Contrast Dark",{primary:"#ffff00",primaryHover:"#cccc00",success:"#00ff00",warning:"#ff8c00",error:"#ff0000",info:"#00ffff"},{primary:"#000000",secondary:"#1a1a1a",tertiary:"#333333",hover:"#333333"},{primary:"#ffffff",secondary:"#ffffff",muted:"#cccccc"},"#ffffff");l("Monochrome",{primary:"#404040",primaryHover:"#262626",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fafafa",secondary:"#f0f0f0",tertiary:"#e0e0e0",hover:"#e0e0e0"},{primary:"#1a1a1a",secondary:"#404040",muted:"#808080"},"#c0c0c0");l("Enhanced Contrast",{primary:"#0050b3",primaryHover:"#003d8c",success:"#006400",warning:"#cc7000",error:"#cc0000",info:"#006680"},{primary:"#ffffff",secondary:"#f5f5f5",tertiary:"#ebebeb",hover:"#ebebeb"},{primary:"#000000",secondary:"#1a1a1a",muted:"#595959"},"#8c8c8c");l("Minimalist",{primary:"#18181b",primaryHover:"#27272a",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#3b82f6"},{primary:"#ffffff",secondary:"#fafafa",tertiary:"#f5f5f5",hover:"#f5f5f5"},{primary:"#0a0a0a",secondary:"#404040",muted:"#a3a3a3"},"#e5e5e5");E("Warm Dark",{primary:"#f59e0b",primaryHover:"#d97706",success:"#10b981",warning:"#fbbf24",error:"#f87171",info:"#38bdf8"},{primary:"#1c1917",secondary:"#292524",tertiary:"#44403c",hover:"#44403c"},{primary:"#fafaf9",secondary:"#d6d3d1",muted:"#78716c"},"#57534e");E("Soft Dark",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#34d399",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#1e1e2e",secondary:"#262637",tertiary:"#313147",hover:"#313147"},{primary:"#e8e8f0",secondary:"#a0a0b8",muted:"#5c5c74"},"#3e3e58");l("Coffee",{primary:"#6f4e37",primaryHover:"#5c3d28",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf6f1",secondary:"#f0e8dc",tertiary:"#e6d8c6",hover:"#f0e8dc"},{primary:"#2c1a0e",secondary:"#5c3d28",muted:"#a08868"},"#d4c4a8");l("Wine",{primary:"#7f1d1d",primaryHover:"#641717",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fde8e8",tertiary:"#f8d0d0",hover:"#fde8e8"},{primary:"#3b0a0a",secondary:"#7f1d1d",muted:"#dc6868"},"#e8a0a0");c.createContext(null);const De=[{target:".nice-api-designer",titleKey:"tutorial.apiDesigner.intro.title",title:"API designer",contentKey:"tutorial.apiDesigner.intro.content",content:"Define endpoints, parameters, request/response schemas and security for your OpenAPI document.",placement:"auto"}],Ie={openapi:"3.0.3",info:{title:"New API",version:"1.0.0",description:"API description"},paths:{},components:{schemas:{},securitySchemes:{}},tags:[]},ue=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"];function te(r){var s,i;const a=[];return r.openapi||a.push({path:"openapi",message:"OpenAPI version is required",severity:"error"}),(s=r.info)!=null&&s.title||a.push({path:"info.title",message:"API title is required",severity:"error"}),(i=r.info)!=null&&i.version||a.push({path:"info.version",message:"API version is required",severity:"error"}),Object.entries(r.paths||{}).forEach(([t,u])=>{t.startsWith("/")||a.push({path:`paths.${t}`,message:"Path must start with /",severity:"error"}),ue.forEach(f=>{const y=u[f.toLowerCase()];y&&!y.responses&&a.push({path:`paths.${t}.${f.toLowerCase()}.responses`,message:"Responses are required",severity:"error"})})}),a}function $e({schema:r,onChange:a,onSave:s,readOnly:i=!1,className:t="",tutorial:u}){var D,L;const[f,y]=c.useState(r||Ie),[b,d]=c.useState(null),[g,C]=c.useState(null),[m,k]=c.useState("info"),[v,A]=c.useState([]),S=c.useCallback(x=>{y(j=>{const w=x(j);return a==null||a(w),A(te(w)),w})},[a]),O=c.useCallback(()=>{const x="/new-endpoint";S(j=>({...j,paths:{...j.paths,[x]:{get:{summary:"New endpoint",responses:{200:{description:"Success"}}}}}})),d(x),C("get")},[S]),M=c.useCallback(x=>{S(j=>{const{[x]:w,...U}=j.paths;return{...j,paths:U}}),d(null),C(null)},[S]),V=c.useCallback(()=>{const x="NewSchema";S(j=>{var w;return{...j,components:{...j.components,schemas:{...(w=j.components)==null?void 0:w.schemas,[x]:{type:"object",properties:{}}}}}})},[S]),P=c.useCallback(()=>{const x=te(f);A(x),x.filter(j=>j.severity==="error").length===0&&(s==null||s(f))},[f,s]),$=Object.entries(f.paths).flatMap(([x,j])=>ue.filter(w=>j[w.toLowerCase()]).map(w=>({path:x,method:w,operation:j[w.toLowerCase()]})));return e.jsxs("div",{className:`nice-api-designer ${t}`,style:{position:"relative"},children:[u&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(u,De)})}),e.jsxs("div",{className:"nice-api-designer__toolbar",children:[e.jsx("div",{className:"nice-api-designer__tabs",children:["info","paths","schemas","security","preview"].map(x=>e.jsx("button",{className:`nice-api-designer__tab ${m===x?"nice-api-designer__tab--active":""}`,onClick:()=>k(x),children:x.charAt(0).toUpperCase()+x.slice(1)},x))}),!i&&e.jsx("button",{className:"nice-api-designer__save-btn",onClick:P,children:"Save"})]}),v.length>0&&e.jsx("div",{className:"nice-api-designer__errors",children:v.map((x,j)=>e.jsxs("div",{className:`nice-api-designer__error nice-api-designer__error--${x.severity}`,children:[e.jsxs("strong",{children:[x.path,":"]})," ",x.message]},j))}),e.jsxs("div",{className:"nice-api-designer__content",children:[m==="info"&&e.jsx(Oe,{schema:f,onChange:S,readOnly:i}),m==="paths"&&e.jsx(Me,{endpoints:$,schema:f,selectedPath:b,selectedMethod:g,onSelectEndpoint:(x,j)=>{d(x),C(j)},onAdd:O,onDelete:M,onChange:S,readOnly:i}),m==="schemas"&&e.jsx(Le,{schemas:((D=f.components)==null?void 0:D.schemas)||{},onAdd:V,onChange:x=>S(j=>({...j,components:{...j.components,schemas:x}})),readOnly:i}),m==="security"&&e.jsx(Ue,{schemes:((L=f.components)==null?void 0:L.securitySchemes)||{},onChange:x=>S(j=>({...j,components:{...j.components,securitySchemes:x}})),readOnly:i}),m==="preview"&&e.jsx(qe,{schema:f})]})]})}function Oe({schema:r,onChange:a,readOnly:s}){return e.jsxs("div",{className:"nice-api-designer__info-editor",children:[e.jsx("h3",{children:"API Information"}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Title"}),e.jsx("input",{type:"text",value:r.info.title,onChange:i=>a(t=>({...t,info:{...t.info,title:i.target.value}})),disabled:s})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Version"}),e.jsx("input",{type:"text",value:r.info.version,onChange:i=>a(t=>({...t,info:{...t.info,version:i.target.value}})),disabled:s})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:r.info.description||"",onChange:i=>a(t=>({...t,info:{...t.info,description:i.target.value}})),disabled:s,rows:5})]}),e.jsx("h4",{children:"Servers"}),(r.servers||[]).map((i,t)=>e.jsxs("div",{className:"nice-api-designer__server",children:[e.jsx("input",{type:"text",value:i.url,placeholder:"Server URL",onChange:u=>a(f=>{var y;return{...f,servers:(y=f.servers)==null?void 0:y.map((b,d)=>d===t?{...b,url:u.target.value}:b)}}),disabled:s}),e.jsx("input",{type:"text",value:i.description||"",placeholder:"Description",onChange:u=>a(f=>{var y;return{...f,servers:(y=f.servers)==null?void 0:y.map((b,d)=>d===t?{...b,description:u.target.value}:b)}}),disabled:s})]},t)),!s&&e.jsx("button",{onClick:()=>a(i=>({...i,servers:[...i.servers||[],{url:"https://api.example.com"}]})),children:"Add Server"})]})}function Me({endpoints:r,schema:a,selectedPath:s,selectedMethod:i,onSelectEndpoint:t,onAdd:u,onDelete:f,onChange:y,readOnly:b}){var g;const d=s&&i?(g=a.paths[s])==null?void 0:g[i]:null;return e.jsxs("div",{className:"nice-api-designer__paths-editor",children:[e.jsxs("div",{className:"nice-api-designer__endpoints-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Endpoints"}),!b&&e.jsx("button",{onClick:u,children:"+ Add"})]}),r.map(({path:C,method:m})=>e.jsxs("div",{className:`nice-api-designer__endpoint ${s===C&&i===m.toLowerCase()?"nice-api-designer__endpoint--selected":""}`,onClick:()=>t(C,m.toLowerCase()),children:[e.jsx("span",{className:`nice-api-designer__method nice-api-designer__method--${m.toLowerCase()}`,children:m}),e.jsx("span",{className:"nice-api-designer__path",children:C})]},`${m}-${C}`))]}),d&&s&&i&&e.jsxs("div",{className:"nice-api-designer__operation-editor",children:[e.jsxs("h3",{children:[i.toUpperCase()," ",s]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Summary"}),e.jsx("input",{type:"text",value:d.summary||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,summary:C.target.value}}}})),disabled:b})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:d.description||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,description:C.target.value}}}})),disabled:b,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Operation ID"}),e.jsx("input",{type:"text",value:d.operationId||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,operationId:C.target.value}}}})),disabled:b})]}),!b&&e.jsx("button",{className:"nice-api-designer__delete-btn",onClick:()=>f(s),children:"Delete Endpoint"})]})]})}function Le({schemas:r,onAdd:a,onChange:s,readOnly:i}){const[t,u]=c.useState(null);return e.jsxs("div",{className:"nice-api-designer__schemas-editor",children:[e.jsxs("div",{className:"nice-api-designer__schemas-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Schemas"}),!i&&e.jsx("button",{onClick:a,children:"+ Add"})]}),Object.keys(r).map(f=>e.jsx("div",{className:`nice-api-designer__schema-item ${t===f?"nice-api-designer__schema-item--selected":""}`,onClick:()=>u(f),children:f},f))]}),t&&r[t]&&e.jsxs("div",{className:"nice-api-designer__schema-editor",children:[e.jsx("h3",{children:t}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:r[t].type||"object",onChange:f=>s({...r,[t]:{...r[t],type:f.target.value}}),disabled:i,children:[e.jsx("option",{value:"object",children:"object"}),e.jsx("option",{value:"array",children:"array"}),e.jsx("option",{value:"string",children:"string"}),e.jsx("option",{value:"number",children:"number"}),e.jsx("option",{value:"integer",children:"integer"}),e.jsx("option",{value:"boolean",children:"boolean"})]})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:r[t].description||"",onChange:f=>s({...r,[t]:{...r[t],description:f.target.value}}),disabled:i,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"JSON Schema"}),e.jsx("textarea",{value:JSON.stringify(r[t],null,2),onChange:f=>{try{const y=JSON.parse(f.target.value);s({...r,[t]:y})}catch{}},disabled:i,rows:10,className:"nice-api-designer__code"})]})]})]})}function Ue({schemes:r,onChange:a,readOnly:s}){const i=()=>{a({...r,newScheme:{type:"apiKey",name:"X-API-Key",in:"header"}})};return e.jsxs("div",{className:"nice-api-designer__security-editor",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Security Schemes"}),!s&&e.jsx("button",{onClick:i,children:"+ Add"})]}),Object.entries(r).map(([t,u])=>e.jsxs("div",{className:"nice-api-designer__security-item",children:[e.jsx("h4",{children:t}),e.jsx("pre",{children:JSON.stringify(u,null,2)})]},t))]})}function qe({schema:r}){return e.jsxs("div",{className:"nice-api-designer__json-preview",children:[e.jsx("h3",{children:"OpenAPI Specification"}),e.jsx("pre",{className:"nice-api-designer__code",children:JSON.stringify(r,null,2)})]})}const Ke=[{target:".nice-api-tester",titleKey:"tutorial.apiTester.intro.title",title:"API tester",contentKey:"tutorial.apiTester.intro.content",content:"Build requests with collections and environment variables, send them and assert on the responses.",placement:"auto"}],Be=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"],Fe={id:"",name:"New Request",method:"GET",url:"",headers:{},queryParams:{}};function ee(r,a){return r.replace(/\{\{(\w+)\}\}/g,(s,i)=>a[i]||`{{${i}}}`)}function Ve(r,a){const s=Object.entries(a).filter(([,i])=>i).map(([i,t])=>`${encodeURIComponent(i)}=${encodeURIComponent(t)}`).join("&");return s?`${r}?${s}`:r}function ze({collections:r=[],environments:a=[],onRequest:s,onSaveCollection:i,className:t="",tutorial:u}){const[f,y]=c.useState(r),[b,d]=c.useState(a),[g,C]=c.useState(a.find(n=>n.isActive)||null),[m,k]=c.useState({...Fe,id:crypto.randomUUID()}),[v,A]=c.useState(null),[S,O]=c.useState(!1),[M,V]=c.useState("none"),[P,$]=c.useState("params"),[D,L]=c.useState("body"),[x,j]=c.useState(""),[w,U]=c.useState(""),[q,K]=c.useState([]),[I,z]=c.useState([]),B=c.useRef(null),J=c.useCallback(async()=>{var R;if(!m.url)return;O(!0),A(null),K([]);const n=Object.fromEntries(Object.entries((g==null?void 0:g.variables)||{}).map(([H,T])=>[H,T.value])),o={...m,url:ee(m.url,n),headers:Object.fromEntries(Object.entries(m.headers).map(([H,T])=>[H,ee(T,n)])),queryParams:Object.fromEntries(Object.entries(m.queryParams).map(([H,T])=>[H,ee(T,n)]))},_=performance.now();try{let H;if(s)H=await s(o);else{B.current=new AbortController;const T={...o.headers};m.auth&&We(T,m.auth);const he=Ve(o.url,o.queryParams),se={method:o.method,headers:T,signal:B.current.signal};["POST","PUT","PATCH"].includes(o.method)&&((R=m.body)!=null&&R.content)&&(se.body=typeof m.body.content=="string"?m.body.content:JSON.stringify(m.body.content),m.body.type==="json"&&(T["Content-Type"]="application/json"));const G=await fetch(he,se),Z=await G.text();let Q;try{Q=JSON.parse(Z)}catch{Q=Z}const ge=performance.now();H={status:G.status,statusText:G.statusText,headers:Object.fromEntries(G.headers.entries()),body:Q,time:Math.round(ge-_),size:new Blob([Z]).size,timestamp:new Date}}if(A(H),z(T=>[...T,{request:m,response:H}].slice(-50)),w){const T=Ge(w,H);K(T)}}catch(H){H.name!=="AbortError"&&A({status:0,statusText:"Error",headers:{},body:{error:H.message},time:Math.round(performance.now()-_),size:0,timestamp:new Date})}finally{O(!1),B.current=null}},[m,g,s,w]),W=c.useCallback(()=>{var n;(n=B.current)==null||n.abort(),O(!1)},[]),p=c.useCallback(()=>{k(n=>({...n,headers:{...n.headers,"":""}}))},[]),h=c.useCallback(()=>{k(n=>({...n,queryParams:{...n.queryParams,"":""}}))},[]),N=c.useCallback(()=>{if(f.length===0){const n={id:crypto.randomUUID(),name:"My Collection",requests:[m]};y([n]),i==null||i(n)}else{const n={...f[0],requests:[...f[0].requests,m]};y(o=>[n,...o.slice(1)]),i==null||i(n)}},[f,m,i]);return e.jsxs("div",{className:`nice-api-tester ${t}`,style:{position:"relative"},children:[u&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(u,Ke)})}),e.jsx("div",{className:"nice-api-tester__toolbar",children:e.jsx("div",{className:"nice-api-tester__env-selector",children:e.jsxs("select",{value:(g==null?void 0:g.id)||"",onChange:n=>C(b.find(o=>o.id===n.target.value)||null),children:[e.jsx("option",{value:"",children:"No Environment"}),b.map(n=>e.jsx("option",{value:n.id,children:n.name},n.id))]})})}),e.jsxs("div",{className:"nice-api-tester__request-bar",children:[e.jsx("select",{value:m.method,onChange:n=>k(o=>({...o,method:n.target.value})),className:`nice-api-tester__method nice-api-tester__method--${m.method.toLowerCase()}`,children:Be.map(n=>e.jsx("option",{value:n,children:n},n))}),e.jsx("input",{type:"text",value:m.url,onChange:n=>k(o=>({...o,url:n.target.value})),placeholder:"Enter request URL",className:"nice-api-tester__url-input"}),e.jsx("button",{onClick:S?W:J,className:`nice-api-tester__send-btn ${S?"nice-api-tester__send-btn--loading":""}`,children:S?"Cancel":"Send"}),e.jsx("button",{onClick:N,className:"nice-api-tester__save-btn",children:"Save"})]}),e.jsxs("div",{className:"nice-api-tester__main",children:[e.jsxs("div",{className:"nice-api-tester__request-panel",children:[e.jsx("div",{className:"nice-api-tester__tabs",children:["params","headers","body","auth","tests"].map(n=>e.jsx("button",{className:`nice-api-tester__tab ${P===n?"nice-api-tester__tab--active":""}`,onClick:()=>$(n),children:n.charAt(0).toUpperCase()+n.slice(1)},n))}),e.jsxs("div",{className:"nice-api-tester__tab-content",children:[P==="params"&&e.jsx(Xe,{params:m.queryParams,onChange:n=>k(o=>({...o,queryParams:n})),onAdd:h}),P==="headers"&&e.jsx(Ye,{headers:m.headers,onChange:n=>k(o=>({...o,headers:n})),onAdd:p}),P==="body"&&e.jsx(Ze,{body:m.body,bodyTab:M,onBodyTabChange:V,onChange:n=>k(o=>({...o,body:n}))}),P==="auth"&&e.jsx(Qe,{auth:m.auth,onChange:n=>k(o=>({...o,auth:n}))}),P==="tests"&&e.jsx(er,{preRequestScript:x,testScript:w,onPreRequestChange:j,onTestChange:U})]})]}),e.jsx("div",{className:"nice-api-tester__response-panel",children:v?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__response-meta",children:[e.jsxs("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(v.status/100)}`,children:[v.status," ",v.statusText]}),e.jsxs("span",{className:"nice-api-tester__time",children:[v.time,"ms"]}),e.jsx("span",{className:"nice-api-tester__size",children:Je(v.size)})]}),e.jsx("div",{className:"nice-api-tester__tabs",children:["body","headers","tests"].map(n=>e.jsxs("button",{className:`nice-api-tester__tab ${D===n?"nice-api-tester__tab--active":""}`,onClick:()=>L(n),children:[n.charAt(0).toUpperCase()+n.slice(1),n==="tests"&&q.length>0&&e.jsxs("span",{className:"nice-api-tester__test-badge",children:[q.filter(o=>o.passed).length,"/",q.length]})]},n))}),e.jsxs("div",{className:"nice-api-tester__response-content",children:[D==="body"&&e.jsx("pre",{className:"nice-api-tester__response-body",children:typeof v.body=="string"?v.body:JSON.stringify(v.body,null,2)}),D==="headers"&&e.jsx("div",{className:"nice-api-tester__response-headers",children:Object.entries(v.headers).map(([n,o])=>e.jsxs("div",{className:"nice-api-tester__header-row",children:[e.jsx("span",{className:"nice-api-tester__header-key",children:n}),e.jsx("span",{className:"nice-api-tester__header-value",children:o})]},n))}),D==="tests"&&e.jsx("div",{className:"nice-api-tester__test-results",children:q.map((n,o)=>e.jsxs("div",{className:`nice-api-tester__test-result nice-api-tester__test-result--${n.passed?"pass":"fail"}`,children:[e.jsx("span",{className:"nice-api-tester__test-icon",children:n.passed?"✓":"✗"}),e.jsx("span",{className:"nice-api-tester__test-name",children:n.name}),n.message&&e.jsx("span",{className:"nice-api-tester__test-message",children:n.message})]},o))})]})]}):e.jsx("div",{className:"nice-api-tester__empty-response",children:S?"Loading...":"Send a request to see the response"})})]}),I.length>0&&e.jsxs("div",{className:"nice-api-tester__history",children:[e.jsx("h4",{children:"History"}),e.jsx("div",{className:"nice-api-tester__history-list",children:I.slice().reverse().map(({request:n,response:o},_)=>e.jsxs("div",{className:"nice-api-tester__history-item",onClick:()=>k(n),children:[e.jsx("span",{className:`nice-api-tester__method nice-api-tester__method--${n.method.toLowerCase()}`,children:n.method}),e.jsx("span",{className:"nice-api-tester__history-url",children:n.url}),e.jsx("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(o.status/100)}`,children:o.status})]},_))})]})]})}function We(r,a){var s,i,t,u,f;switch(a.type){case"bearer":r.Authorization=`${((s=a.bearer)==null?void 0:s.prefix)||"Bearer"} ${(i=a.bearer)==null?void 0:i.token}`;break;case"basic":r.Authorization=`Basic ${btoa(`${(t=a.basic)==null?void 0:t.username}:${(u=a.basic)==null?void 0:u.password}`)}`;break;case"api-key":((f=a.apiKey)==null?void 0:f.in)==="header"&&(r[a.apiKey.key]=a.apiKey.value);break}}function Je(r){return r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/(1024*1024)).toFixed(1)} MB`}function Ge(r,a){const s=[],i={response:{code:a.status,status:a.statusText,headers:a.headers,json:()=>a.body,text:()=>typeof a.body=="string"?a.body:JSON.stringify(a.body),responseTime:a.time},test:(t,u)=>{const f=performance.now();try{u(),s.push({name:t,passed:!0,duration:performance.now()-f})}catch(y){s.push({name:t,passed:!1,message:y.message,duration:performance.now()-f})}},expect:t=>({to:{equal:u=>{if(t!==u)throw new Error(`Expected ${u} but got ${t}`)},be:{oneOf:u=>{if(!u.includes(t))throw new Error(`Expected ${t} to be one of ${u}`)}},have:{property:u=>{if(typeof t!="object"||t===null||!(u in t))throw new Error(`Expected object to have property ${u}`)}}}})};try{new Function("pm",r)(i)}catch(t){s.push({name:"Script Error",passed:!1,message:t.message,duration:0})}return s}function be({items:r,onChange:a,onAdd:s,keyPlaceholder:i="Key",valuePlaceholder:t="Value"}){return e.jsxs("div",{className:"nice-api-tester__kv-editor",children:[Object.entries(r).map(([u,f],y)=>e.jsxs("div",{className:"nice-api-tester__kv-row",children:[e.jsx("input",{type:"text",value:u,placeholder:i,onChange:b=>{const d=Object.entries(r);d[y]=[b.target.value,f],a(Object.fromEntries(d))}}),e.jsx("input",{type:"text",value:f,placeholder:t,onChange:b=>a({...r,[u]:b.target.value})}),e.jsx("button",{onClick:()=>{const{[u]:b,...d}=r;a(d)},children:"×"})]},y)),e.jsx("button",{onClick:s,className:"nice-api-tester__add-btn",children:"+ Add"})]})}function Xe({params:r,onChange:a,onAdd:s}){return e.jsx(be,{items:r,onChange:a,onAdd:s,keyPlaceholder:"Parameter",valuePlaceholder:"Value"})}function Ye({headers:r,onChange:a,onAdd:s}){return e.jsx(be,{items:r,onChange:a,onAdd:s,keyPlaceholder:"Header",valuePlaceholder:"Value"})}function Ze({body:r,bodyTab:a,onBodyTabChange:s,onChange:i}){return e.jsxs("div",{className:"nice-api-tester__body-editor",children:[e.jsx("div",{className:"nice-api-tester__body-tabs",children:["none","json","form-data","raw"].map(t=>e.jsxs("label",{children:[e.jsx("input",{type:"radio",checked:a===t,onChange:()=>{s(t),i({type:t,content:""})}}),t]},t))}),a!=="none"&&e.jsx("textarea",{value:typeof(r==null?void 0:r.content)=="string"?r.content:JSON.stringify(r==null?void 0:r.content,null,2),onChange:t=>i({type:a,content:t.target.value}),placeholder:a==="json"?'{ "key": "value" }':"Enter body content",rows:10,className:"nice-api-tester__body-textarea"})]})}function Qe({auth:r,onChange:a}){var s,i,t,u,f,y;return e.jsxs("div",{className:"nice-api-tester__auth-editor",children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:(r==null?void 0:r.type)||"none",onChange:b=>a({type:b.target.value}),children:[e.jsx("option",{value:"none",children:"No Auth"}),e.jsx("option",{value:"api-key",children:"API Key"}),e.jsx("option",{value:"bearer",children:"Bearer Token"}),e.jsx("option",{value:"basic",children:"Basic Auth"}),e.jsx("option",{value:"oauth2",children:"OAuth 2.0"})]})]}),(r==null?void 0:r.type)==="api-key"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Key"}),e.jsx("input",{type:"text",value:((s=r.apiKey)==null?void 0:s.key)||"",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,key:b.target.value,value:((d=r.apiKey)==null?void 0:d.value)||"",in:((g=r.apiKey)==null?void 0:g.in)||"header"}})},placeholder:"X-API-Key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:((i=r.apiKey)==null?void 0:i.value)||"",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,value:b.target.value,key:((d=r.apiKey)==null?void 0:d.key)||"",in:((g=r.apiKey)==null?void 0:g.in)||"header"}})},placeholder:"your-api-key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Add to"}),e.jsxs("select",{value:((t=r.apiKey)==null?void 0:t.in)||"header",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,in:b.target.value,key:((d=r.apiKey)==null?void 0:d.key)||"",value:((g=r.apiKey)==null?void 0:g.value)||""}})},children:[e.jsx("option",{value:"header",children:"Header"}),e.jsx("option",{value:"query",children:"Query Params"})]})]})]}),(r==null?void 0:r.type)==="bearer"&&e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Token"}),e.jsx("input",{type:"text",value:((u=r.bearer)==null?void 0:u.token)||"",onChange:b=>a({...r,bearer:{token:b.target.value}}),placeholder:"your-bearer-token"})]}),(r==null?void 0:r.type)==="basic"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Username"}),e.jsx("input",{type:"text",value:((f=r.basic)==null?void 0:f.username)||"",onChange:b=>{var d;return a({...r,basic:{...r.basic,username:b.target.value,password:((d=r.basic)==null?void 0:d.password)||""}})}})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Password"}),e.jsx("input",{type:"password",value:((y=r.basic)==null?void 0:y.password)||"",onChange:b=>{var d;return a({...r,basic:{...r.basic,password:b.target.value,username:((d=r.basic)==null?void 0:d.username)||""}})}})]})]})]})}function er({preRequestScript:r,testScript:a,onPreRequestChange:s,onTestChange:i}){return e.jsxs("div",{className:"nice-api-tester__tests-editor",children:[e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Pre-request Script"}),e.jsx("textarea",{value:r,onChange:t=>s(t.target.value),placeholder:"// Code to run before the request",rows:5})]}),e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Tests"}),e.jsx("textarea",{value:a,onChange:t=>i(t.target.value),placeholder:`pm.test("Status code is 200", function () {
27
+ `,document.head.appendChild(r)}c.createContext(null);c.createContext(null);c.createContext(null);const fe={space1:"4px",space2:"8px",space3:"12px",space4:"16px",space5:"20px",space6:"24px",space8:"32px"},pe={fontFamily:"'Inter', system-ui, -apple-system, sans-serif",fontSizeXs:"0.75rem",fontSizeSm:"0.8125rem",fontSizeMd:"0.875rem",fontSizeLg:"1rem",fontSizeXl:"1.125rem",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeight:1.5},me={fast:"120ms ease",normal:"200ms ease",slow:"300ms ease"},ye=r=>({color:r,radiusSm:"4px",radiusMd:"6px",radiusLg:"8px",radiusXl:"12px",radiusFull:"9999px"}),Pe={sm:"0 1px 2px rgba(0,0,0,0.05)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",lg:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",xl:"0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)"},Ae={sm:"0 1px 2px rgba(0,0,0,0.3)",md:"0 4px 6px -1px rgba(0,0,0,0.4)",lg:"0 10px 15px -3px rgba(0,0,0,0.4)",xl:"0 20px 25px -5px rgba(0,0,0,0.4)"};function l(r,a,s,i,t){return{name:r,darkMode:"light",colors:{...a,surface:a.surface??s.primary,surfaceHover:a.surfaceHover??s.secondary},backgrounds:{...s,elevated:s.elevated??s.primary,inset:s.inset??s.tertiary,canvas:s.canvas??s.primary},text:{...i,inverse:i.inverse??"#ffffff"},borders:ye(t),shadows:Pe,spacing:fe,typography:pe,transitions:me}}function E(r,a,s,i,t){return{name:r,darkMode:"dark",colors:{...a,surface:a.surface??s.secondary,surfaceHover:a.surfaceHover??s.tertiary},backgrounds:{...s,elevated:s.elevated??s.secondary,inset:s.inset??s.primary,canvas:s.canvas??s.primary},text:{...i,inverse:i.inverse??"#0f172a"},borders:ye(t),shadows:Ae,spacing:fe,typography:pe,transitions:me}}l("Slate",{primary:"#64748b",primaryHover:"#475569",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#1e293b",secondary:"#475569",muted:"#94a3b8"},"#cbd5e1");l("Zinc",{primary:"#71717a",primaryHover:"#52525b",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fafafa",secondary:"#f4f4f5",tertiary:"#e4e4e7",hover:"#e4e4e7"},{primary:"#18181b",secondary:"#3f3f46",muted:"#a1a1aa"},"#d4d4d8");l("Stone",{primary:"#78716c",primaryHover:"#57534e",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#fafaf9",secondary:"#f5f5f4",tertiary:"#e7e5e4",hover:"#e7e5e4"},{primary:"#1c1917",secondary:"#44403c",muted:"#a8a29e"},"#d6d3d1");l("Cool Gray",{primary:"#6b7280",primaryHover:"#4b5563",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#3b82f6"},{primary:"#f9fafb",secondary:"#f3f4f6",tertiary:"#e5e7eb",hover:"#e5e7eb"},{primary:"#111827",secondary:"#374151",muted:"#9ca3af"},"#d1d5db");l("Warm Gray",{primary:"#7c7568",primaryHover:"#5c564c",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf9f7",secondary:"#f5f4f0",tertiary:"#e8e6e1",hover:"#e8e6e1"},{primary:"#1f1d19",secondary:"#4a463d",muted:"#a09888"},"#d4d0c8");l("Silver",{primary:"#94a3b8",primaryHover:"#64748b",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#38bdf8"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#334155",secondary:"#64748b",muted:"#94a3b8"},"#cbd5e1");l("Charcoal",{primary:"#374151",primaryHover:"#1f2937",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f9fafb",secondary:"#f3f4f6",tertiary:"#e5e7eb",hover:"#e5e7eb"},{primary:"#111827",secondary:"#374151",muted:"#6b7280"},"#d1d5db");l("Ivory",{primary:"#92876d",primaryHover:"#7a6f55",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fffef7",secondary:"#faf6eb",tertiary:"#f0ead6",hover:"#f0ead6"},{primary:"#2b2517",secondary:"#5c5340",muted:"#9c9280"},"#ddd8c4");l("Rose",{primary:"#e11d48",primaryHover:"#be123c",success:"#16a34a",warning:"#ea580c",error:"#dc2626",info:"#0891b2"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#f43f5e"},"#fda4af");l("Emerald",{primary:"#059669",primaryHover:"#047857",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#34d399"},"#6ee7b7");l("Amber",{primary:"#d97706",primaryHover:"#b45309",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0284c7"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#78350f",muted:"#f59e0b"},"#fcd34d");l("Violet",{primary:"#7c3aed",primaryHover:"#6d28d9",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f5f3ff",secondary:"#ede9fe",tertiary:"#ddd6fe",hover:"#ede9fe"},{primary:"#2e1065",secondary:"#4c1d95",muted:"#a78bfa"},"#c4b5fd");l("Teal",{primary:"#0d9488",primaryHover:"#0f766e",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0fdfa",secondary:"#ccfbf1",tertiary:"#99f6e4",hover:"#ccfbf1"},{primary:"#134e4a",secondary:"#115e59",muted:"#2dd4bf"},"#5eead4");l("Indigo",{primary:"#4f46e5",primaryHover:"#4338ca",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#eef2ff",secondary:"#e0e7ff",tertiary:"#c7d2fe",hover:"#e0e7ff"},{primary:"#1e1b4b",secondary:"#312e81",muted:"#818cf8"},"#a5b4fc");l("Cyan",{primary:"#0891b2",primaryHover:"#0e7490",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#0284c7"},{primary:"#ecfeff",secondary:"#cffafe",tertiary:"#a5f3fc",hover:"#cffafe"},{primary:"#164e63",secondary:"#155e75",muted:"#22d3ee"},"#67e8f9");l("Lime",{primary:"#65a30d",primaryHover:"#4d7c0f",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#f7fee7",secondary:"#ecfccb",tertiary:"#d9f99d",hover:"#ecfccb"},{primary:"#1a2e05",secondary:"#365314",muted:"#84cc16"},"#bef264");l("Pink",{primary:"#db2777",primaryHover:"#be185d",success:"#10b981",warning:"#f59e0b",error:"#dc2626",info:"#06b6d4"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#500724",secondary:"#831843",muted:"#f472b6"},"#f9a8d4");l("Orange",{primary:"#ea580c",primaryHover:"#c2410c",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#7c2d12",muted:"#fb923c"},"#fdba74");l("Fuchsia",{primary:"#c026d3",primaryHover:"#a21caf",success:"#10b981",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fdf4ff",secondary:"#fae8ff",tertiary:"#f5d0fe",hover:"#fae8ff"},{primary:"#4a044e",secondary:"#701a75",muted:"#d946ef"},"#e879f9");l("Sky",{primary:"#0284c7",primaryHover:"#0369a1",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#075985",muted:"#38bdf8"},"#7dd3fc");l("Ruby",{primary:"#be123c",primaryHover:"#9f1239",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#fb7185"},"#fda4af");l("Coral",{primary:"#f97316",primaryHover:"#ea580c",success:"#10b981",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#9a3412",muted:"#fb923c"},"#fdba74");E("Midnight",{primary:"#818cf8",primaryHover:"#6366f1",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#020617",secondary:"#0f172a",tertiary:"#1e293b",hover:"#1e293b"},{primary:"#f1f5f9",secondary:"#94a3b8",muted:"#475569"},"#1e293b");E("Obsidian",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#facc15",error:"#fb7185",info:"#38bdf8"},{primary:"#09090b",secondary:"#18181b",tertiary:"#27272a",hover:"#27272a"},{primary:"#fafafa",secondary:"#a1a1aa",muted:"#52525b"},"#3f3f46");E("Eclipse",{primary:"#c084fc",primaryHover:"#a855f7",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#67e8f9"},{primary:"#0c0a1d",secondary:"#1a1533",tertiary:"#2a2248",hover:"#2a2248"},{primary:"#f5f3ff",secondary:"#a78bfa",muted:"#6d5eac"},"#3b3266");E("Onyx",{primary:"#60a5fa",primaryHover:"#3b82f6",success:"#4ade80",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#000000",secondary:"#0a0a0a",tertiary:"#171717",hover:"#171717"},{primary:"#ffffff",secondary:"#a3a3a3",muted:"#525252"},"#262626");E("Carbon",{primary:"#38bdf8",primaryHover:"#0ea5e9",success:"#4ade80",warning:"#facc15",error:"#f87171",info:"#67e8f9"},{primary:"#161616",secondary:"#262626",tertiary:"#393939",hover:"#393939"},{primary:"#f4f4f4",secondary:"#c6c6c6",muted:"#6f6f6f"},"#525252");E("Cosmos",{primary:"#6366f1",primaryHover:"#4f46e5",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#030712",secondary:"#111827",tertiary:"#1f2937",hover:"#1f2937"},{primary:"#e5e7eb",secondary:"#9ca3af",muted:"#4b5563"},"#374151");E("Nebula",{primary:"#e879f9",primaryHover:"#d946ef",success:"#4ade80",warning:"#fbbf24",error:"#fb7185",info:"#67e8f9"},{primary:"#0d0117",secondary:"#1a0533",tertiary:"#2d0a52",hover:"#2d0a52"},{primary:"#fae8ff",secondary:"#d8b4fe",muted:"#7c3aed"},"#581c87");E("Abyss",{primary:"#22d3ee",primaryHover:"#06b6d4",success:"#34d399",warning:"#fbbf24",error:"#f87171",info:"#38bdf8"},{primary:"#001219",secondary:"#002a3a",tertiary:"#003e54",hover:"#003e54"},{primary:"#e0f2fe",secondary:"#7dd3fc",muted:"#0369a1"},"#075985");E("Shadow",{primary:"#a3a3a3",primaryHover:"#737373",success:"#4ade80",warning:"#facc15",error:"#f87171",info:"#38bdf8"},{primary:"#171717",secondary:"#1f1f1f",tertiary:"#2a2a2a",hover:"#2a2a2a"},{primary:"#e5e5e5",secondary:"#a3a3a3",muted:"#525252"},"#404040");E("Emerald Dark",{primary:"#34d399",primaryHover:"#10b981",success:"#4ade80",warning:"#fbbf24",error:"#f87171",info:"#22d3ee"},{primary:"#022c22",secondary:"#064e3b",tertiary:"#065f46",hover:"#065f46"},{primary:"#ecfdf5",secondary:"#6ee7b7",muted:"#047857"},"#047857");l("Forest",{primary:"#166534",primaryHover:"#14532d",success:"#22c55e",warning:"#ca8a04",error:"#dc2626",info:"#0891b2"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#052e16",secondary:"#166534",muted:"#4ade80"},"#86efac");l("Ocean",{primary:"#0369a1",primaryHover:"#075985",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#38bdf8"},"#7dd3fc");l("Desert",{primary:"#b45309",primaryHover:"#92400e",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fefce8",secondary:"#fef9c3",tertiary:"#fef08a",hover:"#fef9c3"},{primary:"#422006",secondary:"#713f12",muted:"#ca8a04"},"#fde047");l("Sunset",{primary:"#ea580c",primaryHover:"#c2410c",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#431407",secondary:"#9a3412",muted:"#f97316"},"#fdba74");l("Aurora",{primary:"#0d9488",primaryHover:"#0f766e",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#f0fdfa",secondary:"#ccfbf1",tertiary:"#99f6e4",hover:"#ccfbf1"},{primary:"#134e4a",secondary:"#115e59",muted:"#2dd4bf"},"#5eead4");l("Lavender",{primary:"#7e22ce",primaryHover:"#6b21a8",success:"#16a34a",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#faf5ff",secondary:"#f3e8ff",tertiary:"#e9d5ff",hover:"#f3e8ff"},{primary:"#3b0764",secondary:"#581c87",muted:"#a855f7"},"#d8b4fe");l("Autumn",{primary:"#c2410c",primaryHover:"#9a3412",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fef2f2",secondary:"#fee2e2",tertiary:"#fecaca",hover:"#fee2e2"},{primary:"#450a0a",secondary:"#7f1d1d",muted:"#f87171"},"#fca5a5");l("Spring",{primary:"#16a34a",primaryHover:"#15803d",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#06b6d4"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#14532d",secondary:"#166534",muted:"#4ade80"},"#86efac");l("Arctic",{primary:"#0ea5e9",primaryHover:"#0284c7",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#7dd3fc"},"#bae6fd");l("Tropical",{primary:"#0d9488",primaryHover:"#0f766e",success:"#16a34a",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#6ee7b7"},"#a7f3d0");l("Pastel Rose",{primary:"#f472b6",primaryHover:"#ec4899",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#831843",secondary:"#9d174d",muted:"#f9a8d4"},"#f9a8d4");l("Pastel Sky",{primary:"#38bdf8",primaryHover:"#0ea5e9",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#075985",secondary:"#0369a1",muted:"#7dd3fc"},"#bae6fd");l("Pastel Mint",{primary:"#34d399",primaryHover:"#10b981",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#ecfdf5",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#065f46",secondary:"#047857",muted:"#6ee7b7"},"#a7f3d0");l("Pastel Peach",{primary:"#fb923c",primaryHover:"#f97316",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fff7ed",secondary:"#ffedd5",tertiary:"#fed7aa",hover:"#ffedd5"},{primary:"#7c2d12",secondary:"#9a3412",muted:"#fdba74"},"#fed7aa");l("Pastel Lavender",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f5f3ff",secondary:"#ede9fe",tertiary:"#ddd6fe",hover:"#ede9fe"},{primary:"#4c1d95",secondary:"#5b21b6",muted:"#c4b5fd"},"#ddd6fe");l("Pastel Lemon",{primary:"#facc15",primaryHover:"#eab308",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fefce8",secondary:"#fef9c3",tertiary:"#fef08a",hover:"#fef9c3"},{primary:"#713f12",secondary:"#854d0e",muted:"#fde047"},"#fef08a");l("Pastel Sage",{primary:"#86efac",primaryHover:"#4ade80",success:"#22c55e",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#166534",secondary:"#15803d",muted:"#86efac"},"#bbf7d0");l("Pastel Coral",{primary:"#fb7185",primaryHover:"#f43f5e",success:"#4ade80",warning:"#fcd34d",error:"#ef4444",info:"#67e8f9"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#881337",secondary:"#9f1239",muted:"#fda4af"},"#fecdd3");l("Banking",{primary:"#1e3a5f",primaryHover:"#152c4a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#0f172a",secondary:"#334155",muted:"#94a3b8"},"#cbd5e1");l("Healthcare",{primary:"#0891b2",primaryHover:"#0e7490",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#f0fdfa",secondary:"#e0f7fa",tertiary:"#b2ebf2",hover:"#e0f7fa"},{primary:"#134e4a",secondary:"#1a6b6a",muted:"#80cbc4"},"#b2dfdb");l("Legal",{primary:"#1e293b",primaryHover:"#0f172a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0284c7"},{primary:"#fafaf9",secondary:"#f5f5f4",tertiary:"#e7e5e4",hover:"#e7e5e4"},{primary:"#0f172a",secondary:"#44403c",muted:"#a8a29e"},"#d6d3d1");l("Tech Startup",{primary:"#7c3aed",primaryHover:"#6d28d9",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#faf5ff",secondary:"#f3e8ff",tertiary:"#e9d5ff",hover:"#f3e8ff"},{primary:"#1e1b4b",secondary:"#4c1d95",muted:"#a78bfa"},"#c4b5fd");l("Enterprise",{primary:"#1e40af",primaryHover:"#1e3a8a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#eff6ff",secondary:"#dbeafe",tertiary:"#bfdbfe",hover:"#dbeafe"},{primary:"#1e3a5f",secondary:"#1e40af",muted:"#60a5fa"},"#93c5fd");l("Government",{primary:"#1d4ed8",primaryHover:"#1e40af",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#f8fafc",secondary:"#f1f5f9",tertiary:"#e2e8f0",hover:"#e2e8f0"},{primary:"#0f172a",secondary:"#1e293b",muted:"#64748b"},"#cbd5e1");l("Education",{primary:"#059669",primaryHover:"#047857",success:"#16a34a",warning:"#f59e0b",error:"#ef4444",info:"#0891b2"},{primary:"#f0fdf9",secondary:"#d1fae5",tertiary:"#a7f3d0",hover:"#d1fae5"},{primary:"#064e3b",secondary:"#065f46",muted:"#6ee7b7"},"#a7f3d0");l("Real Estate",{primary:"#92400e",primaryHover:"#78350f",success:"#059669",warning:"#b45309",error:"#dc2626",info:"#0891b2"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#422006",secondary:"#713f12",muted:"#d97706"},"#fcd34d");l("Nord",{primary:"#5e81ac",primaryHover:"#4c6b90",success:"#a3be8c",warning:"#ebcb8b",error:"#bf616a",info:"#88c0d0"},{primary:"#eceff4",secondary:"#e5e9f0",tertiary:"#d8dee9",hover:"#d8dee9"},{primary:"#2e3440",secondary:"#3b4252",muted:"#4c566a"},"#d8dee9");E("Dracula",{primary:"#bd93f9",primaryHover:"#9d79d9",success:"#50fa7b",warning:"#f1fa8c",error:"#ff5555",info:"#8be9fd"},{primary:"#282a36",secondary:"#343746",tertiary:"#44475a",hover:"#44475a"},{primary:"#f8f8f2",secondary:"#c0c0c0",muted:"#6272a4"},"#44475a");l("Solarized Light",{primary:"#268bd2",primaryHover:"#1a6da0",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198"},{primary:"#fdf6e3",secondary:"#eee8d5",tertiary:"#e0dbc7",hover:"#eee8d5"},{primary:"#073642",secondary:"#586e75",muted:"#93a1a1"},"#eee8d5");E("Solarized Dark",{primary:"#268bd2",primaryHover:"#3d98db",success:"#859900",warning:"#b58900",error:"#dc322f",info:"#2aa198"},{primary:"#002b36",secondary:"#073642",tertiary:"#0a4858",hover:"#073642"},{primary:"#eee8d5",secondary:"#93a1a1",muted:"#586e75"},"#073642");E("Monokai",{primary:"#66d9ef",primaryHover:"#45c0d6",success:"#a6e22e",warning:"#e6db74",error:"#f92672",info:"#66d9ef"},{primary:"#272822",secondary:"#34352e",tertiary:"#3e3d32",hover:"#3e3d32"},{primary:"#f8f8f2",secondary:"#cfcfc2",muted:"#75715e"},"#3e3d32");E("One Dark",{primary:"#61afef",primaryHover:"#4b9ee0",success:"#98c379",warning:"#e5c07b",error:"#e06c75",info:"#56b6c2"},{primary:"#282c34",secondary:"#2c313a",tertiary:"#353b45",hover:"#353b45"},{primary:"#abb2bf",secondary:"#828997",muted:"#545862"},"#3e4452");E("Synthwave",{primary:"#ff7edb",primaryHover:"#e660c2",success:"#72f1b8",warning:"#fede5d",error:"#fe4450",info:"#36f9f6"},{primary:"#241b2f",secondary:"#2d2140",tertiary:"#362a50",hover:"#362a50"},{primary:"#f0e4fc",secondary:"#b4a0cc",muted:"#6c5c84"},"#4a3866");l("Vaporwave",{primary:"#ff71ce",primaryHover:"#e655b5",success:"#78dcca",warning:"#ffb86c",error:"#ff5555",info:"#76e8fc"},{primary:"#fce4f7",secondary:"#e8d0f4",tertiary:"#d4bcf0",hover:"#e8d0f4"},{primary:"#4a1a4e",secondary:"#7b3f7d",muted:"#c080c0"},"#d8a8e8");E("Terminal Green",{primary:"#00ff41",primaryHover:"#00cc34",success:"#00ff41",warning:"#ffff00",error:"#ff0000",info:"#00ffff"},{primary:"#0a0a0a",secondary:"#0d1a0d",tertiary:"#1a2e1a",hover:"#1a2e1a"},{primary:"#00ff41",secondary:"#00cc33",muted:"#008822"},"#003300");l("Sepia",{primary:"#8b6914",primaryHover:"#704f10",success:"#6b8e23",warning:"#cd853f",error:"#b22222",info:"#5f9ea0"},{primary:"#faf0e6",secondary:"#f5e6d3",tertiary:"#eddcc7",hover:"#f5e6d3"},{primary:"#3e2723",secondary:"#5d4037",muted:"#a1887f"},"#d7ccc8");l("Vintage",{primary:"#8d6e63",primaryHover:"#6d4c41",success:"#66bb6a",warning:"#ffb300",error:"#e53935",info:"#29b6f6"},{primary:"#efebe9",secondary:"#d7ccc8",tertiary:"#bcaaa4",hover:"#d7ccc8"},{primary:"#3e2723",secondary:"#5d4037",muted:"#a1887f"},"#bcaaa4");E("Cyberpunk",{primary:"#00f0ff",primaryHover:"#00c8d4",success:"#39ff14",warning:"#ffff00",error:"#ff003c",info:"#bf00ff"},{primary:"#0a0e17",secondary:"#131824",tertiary:"#1c2333",hover:"#1c2333"},{primary:"#e0fbfc",secondary:"#80d4dd",muted:"#3a6b72"},"#1c3a44");E("Neon",{primary:"#ff00ff",primaryHover:"#cc00cc",success:"#00ff00",warning:"#ffff00",error:"#ff0000",info:"#00ffff"},{primary:"#0d0d0d",secondary:"#1a1a1a",tertiary:"#262626",hover:"#262626"},{primary:"#ffffff",secondary:"#cccccc",muted:"#666666"},"#333333");E("Retrowave",{primary:"#f77fbe",primaryHover:"#e462a3",success:"#72f1b8",warning:"#ffe261",error:"#ff4444",info:"#79e8fb"},{primary:"#1b0a2e",secondary:"#261440",tertiary:"#321e52",hover:"#321e52"},{primary:"#ffe6f7",secondary:"#c9a0c9",muted:"#6b4c7a"},"#4a2d66");l("Christmas",{primary:"#c41e3a",primaryHover:"#a01830",success:"#228b22",warning:"#ffd700",error:"#dc2626",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fde8e8",tertiary:"#f8d0d0",hover:"#fde8e8"},{primary:"#3b0a0a",secondary:"#7f1d1d",muted:"#dc6868"},"#e8a0a0");E("Halloween",{primary:"#ff6600",primaryHover:"#e05500",success:"#4ade80",warning:"#fbbf24",error:"#ff0000",info:"#9333ea"},{primary:"#1a0a00",secondary:"#2d1500",tertiary:"#402000",hover:"#402000"},{primary:"#ffedd5",secondary:"#fdba74",muted:"#9a5c28"},"#5c3400");l("Valentine",{primary:"#e11d48",primaryHover:"#be123c",success:"#10b981",warning:"#f59e0b",error:"#dc2626",info:"#ec4899"},{primary:"#fff1f2",secondary:"#ffe4e6",tertiary:"#fecdd3",hover:"#ffe4e6"},{primary:"#4c0519",secondary:"#881337",muted:"#f9a8d4"},"#fda4af");l("Easter",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#4ade80",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#fef9ff",secondary:"#f3e8ff",tertiary:"#e8d5ff",hover:"#f3e8ff"},{primary:"#581c87",secondary:"#6d28d9",muted:"#c4b5fd"},"#ddd6fe");l("Summer Beach",{primary:"#0ea5e9",primaryHover:"#0284c7",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#0c4a6e",secondary:"#0369a1",muted:"#7dd3fc"},"#fcd34d");l("Winter Frost",{primary:"#3b82f6",primaryHover:"#2563eb",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#f0f9ff",secondary:"#e0f2fe",tertiary:"#bae6fd",hover:"#e0f2fe"},{primary:"#1e3a5f",secondary:"#1e40af",muted:"#93c5fd"},"#bfdbfe");l("Cherry Blossom",{primary:"#ec4899",primaryHover:"#db2777",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#06b6d4"},{primary:"#fdf2f8",secondary:"#fce7f3",tertiary:"#fbcfe8",hover:"#fce7f3"},{primary:"#831843",secondary:"#9d174d",muted:"#f9a8d4"},"#fbcfe8");l("Harvest",{primary:"#b45309",primaryHover:"#92400e",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#78350f",muted:"#d97706"},"#fcd34d");l("Japanese Zen",{primary:"#6b7280",primaryHover:"#4b5563",success:"#6b8e23",warning:"#d4a017",error:"#c0392b",info:"#5f9ea0"},{primary:"#faf9f6",secondary:"#f0ece3",tertiary:"#e6e0d4",hover:"#f0ece3"},{primary:"#2c2c2c",secondary:"#5c5c5c",muted:"#a0998a"},"#d5cec0");l("Moroccan",{primary:"#c2410c",primaryHover:"#9a3412",success:"#15803d",warning:"#ca8a04",error:"#b91c1c",info:"#0e7490"},{primary:"#fffbf0",secondary:"#fef3e0",tertiary:"#fde6c4",hover:"#fef3e0"},{primary:"#3a1a00",secondary:"#7c2d12",muted:"#d97706"},"#f5d0a0");l("Scandinavian",{primary:"#4b5563",primaryHover:"#374151",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#ffffff",secondary:"#f9fafb",tertiary:"#f3f4f6",hover:"#f3f4f6"},{primary:"#111827",secondary:"#374151",muted:"#9ca3af"},"#e5e7eb");l("Mediterranean",{primary:"#1e40af",primaryHover:"#1e3a8a",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#eff6ff",secondary:"#dbeafe",tertiary:"#bfdbfe",hover:"#dbeafe"},{primary:"#1e3a5f",secondary:"#2563eb",muted:"#93c5fd"},"#bfdbfe");l("Chinese New Year",{primary:"#dc2626",primaryHover:"#b91c1c",success:"#16a34a",warning:"#d4a017",error:"#ef4444",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fee2e2",tertiary:"#fecaca",hover:"#fee2e2"},{primary:"#450a0a",secondary:"#991b1b",muted:"#f87171"},"#fca5a5");l("Indian Festive",{primary:"#d97706",primaryHover:"#b45309",success:"#16a34a",warning:"#ca8a04",error:"#dc2626",info:"#7c3aed"},{primary:"#fffbeb",secondary:"#fef3c7",tertiary:"#fde68a",hover:"#fef3c7"},{primary:"#451a03",secondary:"#92400e",muted:"#f59e0b"},"#fcd34d");l("Brazilian Carnival",{primary:"#16a34a",primaryHover:"#15803d",success:"#22c55e",warning:"#facc15",error:"#ef4444",info:"#0ea5e9"},{primary:"#f0fdf4",secondary:"#dcfce7",tertiary:"#bbf7d0",hover:"#dcfce7"},{primary:"#052e16",secondary:"#166534",muted:"#4ade80"},"#86efac");l("African Earth",{primary:"#92400e",primaryHover:"#78350f",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf5f0",secondary:"#f0e6d6",tertiary:"#e6d5bb",hover:"#f0e6d6"},{primary:"#2b1a0e",secondary:"#5c3d1e",muted:"#a08060"},"#d4b896");E("High Contrast Dark",{primary:"#ffff00",primaryHover:"#cccc00",success:"#00ff00",warning:"#ff8c00",error:"#ff0000",info:"#00ffff"},{primary:"#000000",secondary:"#1a1a1a",tertiary:"#333333",hover:"#333333"},{primary:"#ffffff",secondary:"#ffffff",muted:"#cccccc"},"#ffffff");l("Monochrome",{primary:"#404040",primaryHover:"#262626",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#fafafa",secondary:"#f0f0f0",tertiary:"#e0e0e0",hover:"#e0e0e0"},{primary:"#1a1a1a",secondary:"#404040",muted:"#808080"},"#c0c0c0");l("Enhanced Contrast",{primary:"#0050b3",primaryHover:"#003d8c",success:"#006400",warning:"#cc7000",error:"#cc0000",info:"#006680"},{primary:"#ffffff",secondary:"#f5f5f5",tertiary:"#ebebeb",hover:"#ebebeb"},{primary:"#000000",secondary:"#1a1a1a",muted:"#595959"},"#8c8c8c");l("Minimalist",{primary:"#18181b",primaryHover:"#27272a",success:"#22c55e",warning:"#eab308",error:"#ef4444",info:"#3b82f6"},{primary:"#ffffff",secondary:"#fafafa",tertiary:"#f5f5f5",hover:"#f5f5f5"},{primary:"#0a0a0a",secondary:"#404040",muted:"#a3a3a3"},"#e5e5e5");E("Warm Dark",{primary:"#f59e0b",primaryHover:"#d97706",success:"#10b981",warning:"#fbbf24",error:"#f87171",info:"#38bdf8"},{primary:"#1c1917",secondary:"#292524",tertiary:"#44403c",hover:"#44403c"},{primary:"#fafaf9",secondary:"#d6d3d1",muted:"#78716c"},"#57534e");E("Soft Dark",{primary:"#a78bfa",primaryHover:"#8b5cf6",success:"#34d399",warning:"#fcd34d",error:"#fb7185",info:"#67e8f9"},{primary:"#1e1e2e",secondary:"#262637",tertiary:"#313147",hover:"#313147"},{primary:"#e8e8f0",secondary:"#a0a0b8",muted:"#5c5c74"},"#3e3e58");l("Coffee",{primary:"#6f4e37",primaryHover:"#5c3d28",success:"#4d7c0f",warning:"#a16207",error:"#b91c1c",info:"#0e7490"},{primary:"#faf6f1",secondary:"#f0e8dc",tertiary:"#e6d8c6",hover:"#f0e8dc"},{primary:"#2c1a0e",secondary:"#5c3d28",muted:"#a08868"},"#d4c4a8");l("Wine",{primary:"#7f1d1d",primaryHover:"#641717",success:"#059669",warning:"#d97706",error:"#dc2626",info:"#0891b2"},{primary:"#fef2f2",secondary:"#fde8e8",tertiary:"#f8d0d0",hover:"#fde8e8"},{primary:"#3b0a0a",secondary:"#7f1d1d",muted:"#dc6868"},"#e8a0a0");c.createContext(null);const De=[{target:".nice-api-designer",titleKey:"tutorial.apiDesigner.intro.title",title:"API designer",contentKey:"tutorial.apiDesigner.intro.content",content:"Define endpoints, parameters, request/response schemas and security for your OpenAPI document.",placement:"auto"}],Ie={openapi:"3.0.3",info:{title:"New API",version:"1.0.0",description:"API description"},paths:{},components:{schemas:{},securitySchemes:{}},tags:[]},ue=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"];function te(r){var s,i;const a=[];return r.openapi||a.push({path:"openapi",message:"OpenAPI version is required",severity:"error"}),(s=r.info)!=null&&s.title||a.push({path:"info.title",message:"API title is required",severity:"error"}),(i=r.info)!=null&&i.version||a.push({path:"info.version",message:"API version is required",severity:"error"}),Object.entries(r.paths||{}).forEach(([t,u])=>{t.startsWith("/")||a.push({path:`paths.${t}`,message:"Path must start with /",severity:"error"}),ue.forEach(f=>{const y=u[f.toLowerCase()];y&&!y.responses&&a.push({path:`paths.${t}.${f.toLowerCase()}.responses`,message:"Responses are required",severity:"error"})})}),a}function $e({schema:r,onChange:a,onSave:s,readOnly:i=!1,className:t="",tutorial:u}){var D,L;const[f,y]=c.useState(r||Ie),[b,d]=c.useState(null),[g,C]=c.useState(null),[m,k]=c.useState("info"),[v,P]=c.useState([]),S=c.useCallback(x=>{y(j=>{const w=x(j);return a==null||a(w),P(te(w)),w})},[a]),O=c.useCallback(()=>{const x="/new-endpoint";S(j=>({...j,paths:{...j.paths,[x]:{get:{summary:"New endpoint",responses:{200:{description:"Success"}}}}}})),d(x),C("get")},[S]),M=c.useCallback(x=>{S(j=>{const{[x]:w,...U}=j.paths;return{...j,paths:U}}),d(null),C(null)},[S]),V=c.useCallback(()=>{const x="NewSchema";S(j=>{var w;return{...j,components:{...j.components,schemas:{...(w=j.components)==null?void 0:w.schemas,[x]:{type:"object",properties:{}}}}}})},[S]),A=c.useCallback(()=>{const x=te(f);P(x),x.filter(j=>j.severity==="error").length===0&&(s==null||s(f))},[f,s]),$=Object.entries(f.paths).flatMap(([x,j])=>ue.filter(w=>j[w.toLowerCase()]).map(w=>({path:x,method:w,operation:j[w.toLowerCase()]})));return e.jsxs("div",{className:`nice-api-designer ${t}`,style:{position:"relative"},children:[u&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(u,De)})}),e.jsxs("div",{className:"nice-api-designer__toolbar",children:[e.jsx("div",{className:"nice-api-designer__tabs",children:["info","paths","schemas","security","preview"].map(x=>e.jsx("button",{className:`nice-api-designer__tab ${m===x?"nice-api-designer__tab--active":""}`,onClick:()=>k(x),children:x.charAt(0).toUpperCase()+x.slice(1)},x))}),!i&&e.jsx("button",{className:"nice-api-designer__save-btn",onClick:A,children:"Save"})]}),v.length>0&&e.jsx("div",{className:"nice-api-designer__errors",children:v.map((x,j)=>e.jsxs("div",{className:`nice-api-designer__error nice-api-designer__error--${x.severity}`,children:[e.jsxs("strong",{children:[x.path,":"]})," ",x.message]},j))}),e.jsxs("div",{className:"nice-api-designer__content",children:[m==="info"&&e.jsx(Oe,{schema:f,onChange:S,readOnly:i}),m==="paths"&&e.jsx(Me,{endpoints:$,schema:f,selectedPath:b,selectedMethod:g,onSelectEndpoint:(x,j)=>{d(x),C(j)},onAdd:O,onDelete:M,onChange:S,readOnly:i}),m==="schemas"&&e.jsx(Le,{schemas:((D=f.components)==null?void 0:D.schemas)||{},onAdd:V,onChange:x=>S(j=>({...j,components:{...j.components,schemas:x}})),readOnly:i}),m==="security"&&e.jsx(Ue,{schemes:((L=f.components)==null?void 0:L.securitySchemes)||{},onChange:x=>S(j=>({...j,components:{...j.components,securitySchemes:x}})),readOnly:i}),m==="preview"&&e.jsx(Ke,{schema:f})]})]})}function Oe({schema:r,onChange:a,readOnly:s}){return e.jsxs("div",{className:"nice-api-designer__info-editor",children:[e.jsx("h3",{children:"API Information"}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Title"}),e.jsx("input",{type:"text",value:r.info.title,onChange:i=>a(t=>({...t,info:{...t.info,title:i.target.value}})),disabled:s})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Version"}),e.jsx("input",{type:"text",value:r.info.version,onChange:i=>a(t=>({...t,info:{...t.info,version:i.target.value}})),disabled:s})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:r.info.description||"",onChange:i=>a(t=>({...t,info:{...t.info,description:i.target.value}})),disabled:s,rows:5})]}),e.jsx("h4",{children:"Servers"}),(r.servers||[]).map((i,t)=>e.jsxs("div",{className:"nice-api-designer__server",children:[e.jsx("input",{type:"text",value:i.url,placeholder:"Server URL",onChange:u=>a(f=>{var y;return{...f,servers:(y=f.servers)==null?void 0:y.map((b,d)=>d===t?{...b,url:u.target.value}:b)}}),disabled:s}),e.jsx("input",{type:"text",value:i.description||"",placeholder:"Description",onChange:u=>a(f=>{var y;return{...f,servers:(y=f.servers)==null?void 0:y.map((b,d)=>d===t?{...b,description:u.target.value}:b)}}),disabled:s})]},t)),!s&&e.jsx("button",{onClick:()=>a(i=>({...i,servers:[...i.servers||[],{url:"https://api.example.com"}]})),children:"Add Server"})]})}function Me({endpoints:r,schema:a,selectedPath:s,selectedMethod:i,onSelectEndpoint:t,onAdd:u,onDelete:f,onChange:y,readOnly:b}){var g;const d=s&&i?(g=a.paths[s])==null?void 0:g[i]:null;return e.jsxs("div",{className:"nice-api-designer__paths-editor",children:[e.jsxs("div",{className:"nice-api-designer__endpoints-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Endpoints"}),!b&&e.jsx("button",{onClick:u,children:"+ Add"})]}),r.map(({path:C,method:m})=>e.jsxs("div",{className:`nice-api-designer__endpoint ${s===C&&i===m.toLowerCase()?"nice-api-designer__endpoint--selected":""}`,onClick:()=>t(C,m.toLowerCase()),children:[e.jsx("span",{className:`nice-api-designer__method nice-api-designer__method--${m.toLowerCase()}`,children:m}),e.jsx("span",{className:"nice-api-designer__path",children:C})]},`${m}-${C}`))]}),d&&s&&i&&e.jsxs("div",{className:"nice-api-designer__operation-editor",children:[e.jsxs("h3",{children:[i.toUpperCase()," ",s]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Summary"}),e.jsx("input",{type:"text",value:d.summary||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,summary:C.target.value}}}})),disabled:b})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:d.description||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,description:C.target.value}}}})),disabled:b,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Operation ID"}),e.jsx("input",{type:"text",value:d.operationId||"",onChange:C=>y(m=>({...m,paths:{...m.paths,[s]:{...m.paths[s],[i]:{...d,operationId:C.target.value}}}})),disabled:b})]}),!b&&e.jsx("button",{className:"nice-api-designer__delete-btn",onClick:()=>f(s),children:"Delete Endpoint"})]})]})}function Le({schemas:r,onAdd:a,onChange:s,readOnly:i}){const[t,u]=c.useState(null);return e.jsxs("div",{className:"nice-api-designer__schemas-editor",children:[e.jsxs("div",{className:"nice-api-designer__schemas-list",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Schemas"}),!i&&e.jsx("button",{onClick:a,children:"+ Add"})]}),Object.keys(r).map(f=>e.jsx("div",{className:`nice-api-designer__schema-item ${t===f?"nice-api-designer__schema-item--selected":""}`,onClick:()=>u(f),children:f},f))]}),t&&r[t]&&e.jsxs("div",{className:"nice-api-designer__schema-editor",children:[e.jsx("h3",{children:t}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:r[t].type||"object",onChange:f=>s({...r,[t]:{...r[t],type:f.target.value}}),disabled:i,children:[e.jsx("option",{value:"object",children:"object"}),e.jsx("option",{value:"array",children:"array"}),e.jsx("option",{value:"string",children:"string"}),e.jsx("option",{value:"number",children:"number"}),e.jsx("option",{value:"integer",children:"integer"}),e.jsx("option",{value:"boolean",children:"boolean"})]})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"Description"}),e.jsx("textarea",{value:r[t].description||"",onChange:f=>s({...r,[t]:{...r[t],description:f.target.value}}),disabled:i,rows:3})]}),e.jsxs("div",{className:"nice-api-designer__field",children:[e.jsx("label",{children:"JSON Schema"}),e.jsx("textarea",{value:JSON.stringify(r[t],null,2),onChange:f=>{try{const y=JSON.parse(f.target.value);s({...r,[t]:y})}catch{}},disabled:i,rows:10,className:"nice-api-designer__code"})]})]})]})}function Ue({schemes:r,onChange:a,readOnly:s}){const i=()=>{a({...r,newScheme:{type:"apiKey",name:"X-API-Key",in:"header"}})};return e.jsxs("div",{className:"nice-api-designer__security-editor",children:[e.jsxs("div",{className:"nice-api-designer__list-header",children:[e.jsx("h3",{children:"Security Schemes"}),!s&&e.jsx("button",{onClick:i,children:"+ Add"})]}),Object.entries(r).map(([t,u])=>e.jsxs("div",{className:"nice-api-designer__security-item",children:[e.jsx("h4",{children:t}),e.jsx("pre",{children:JSON.stringify(u,null,2)})]},t))]})}function Ke({schema:r}){return e.jsxs("div",{className:"nice-api-designer__json-preview",children:[e.jsx("h3",{children:"OpenAPI Specification"}),e.jsx("pre",{className:"nice-api-designer__code",children:JSON.stringify(r,null,2)})]})}const qe=[{target:".nice-api-tester",titleKey:"tutorial.apiTester.intro.title",title:"API tester",contentKey:"tutorial.apiTester.intro.content",content:"Build requests with collections and environment variables, send them and assert on the responses.",placement:"auto"}],Be=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"],Fe={id:"",name:"New Request",method:"GET",url:"",headers:{},queryParams:{}};function ee(r,a){return r.replace(/\{\{(\w+)\}\}/g,(s,i)=>a[i]||`{{${i}}}`)}function Ve(r,a){const s=Object.entries(a).filter(([,i])=>i).map(([i,t])=>`${encodeURIComponent(i)}=${encodeURIComponent(t)}`).join("&");return s?`${r}?${s}`:r}function ze({collections:r=[],environments:a=[],onRequest:s,onSaveCollection:i,className:t="",tutorial:u}){const[f,y]=c.useState(r),[b,d]=c.useState(a),[g,C]=c.useState(a.find(n=>n.isActive)||null),[m,k]=c.useState({...Fe,id:crypto.randomUUID()}),[v,P]=c.useState(null),[S,O]=c.useState(!1),[M,V]=c.useState("none"),[A,$]=c.useState("params"),[D,L]=c.useState("body"),[x,j]=c.useState(""),[w,U]=c.useState(""),[K,q]=c.useState([]),[I,z]=c.useState([]),B=c.useRef(null),J=c.useCallback(async()=>{var R;if(!m.url)return;O(!0),P(null),q([]);const n=Object.fromEntries(Object.entries((g==null?void 0:g.variables)||{}).map(([H,T])=>[H,T.value])),o={...m,url:ee(m.url,n),headers:Object.fromEntries(Object.entries(m.headers).map(([H,T])=>[H,ee(T,n)])),queryParams:Object.fromEntries(Object.entries(m.queryParams).map(([H,T])=>[H,ee(T,n)]))},_=performance.now();try{let H;if(s)H=await s(o);else{B.current=new AbortController;const T={...o.headers};m.auth&&We(T,m.auth);const he=Ve(o.url,o.queryParams),se={method:o.method,headers:T,signal:B.current.signal};["POST","PUT","PATCH"].includes(o.method)&&((R=m.body)!=null&&R.content)&&(se.body=typeof m.body.content=="string"?m.body.content:JSON.stringify(m.body.content),m.body.type==="json"&&(T["Content-Type"]="application/json"));const G=await fetch(he,se),Q=await G.text();let Z;try{Z=JSON.parse(Q)}catch{Z=Q}const ge=performance.now();H={status:G.status,statusText:G.statusText,headers:Object.fromEntries(G.headers.entries()),body:Z,time:Math.round(ge-_),size:new Blob([Q]).size,timestamp:new Date}}if(P(H),z(T=>[...T,{request:m,response:H}].slice(-50)),w){const T=Ge(w,H);q(T)}}catch(H){H.name!=="AbortError"&&P({status:0,statusText:"Error",headers:{},body:{error:H.message},time:Math.round(performance.now()-_),size:0,timestamp:new Date})}finally{O(!1),B.current=null}},[m,g,s,w]),W=c.useCallback(()=>{var n;(n=B.current)==null||n.abort(),O(!1)},[]),p=c.useCallback(()=>{k(n=>({...n,headers:{...n.headers,"":""}}))},[]),h=c.useCallback(()=>{k(n=>({...n,queryParams:{...n.queryParams,"":""}}))},[]),N=c.useCallback(()=>{if(f.length===0){const n={id:crypto.randomUUID(),name:"My Collection",requests:[m]};y([n]),i==null||i(n)}else{const n={...f[0],requests:[...f[0].requests,m]};y(o=>[n,...o.slice(1)]),i==null||i(n)}},[f,m,i]);return e.jsxs("div",{className:`nice-api-tester ${t}`,style:{position:"relative"},children:[u&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(u,qe)})}),e.jsx("div",{className:"nice-api-tester__toolbar",children:e.jsx("div",{className:"nice-api-tester__env-selector",children:e.jsxs("select",{value:(g==null?void 0:g.id)||"",onChange:n=>C(b.find(o=>o.id===n.target.value)||null),children:[e.jsx("option",{value:"",children:"No Environment"}),b.map(n=>e.jsx("option",{value:n.id,children:n.name},n.id))]})})}),e.jsxs("div",{className:"nice-api-tester__request-bar",children:[e.jsx("select",{value:m.method,onChange:n=>k(o=>({...o,method:n.target.value})),className:`nice-api-tester__method nice-api-tester__method--${m.method.toLowerCase()}`,children:Be.map(n=>e.jsx("option",{value:n,children:n},n))}),e.jsx("input",{type:"text",value:m.url,onChange:n=>k(o=>({...o,url:n.target.value})),placeholder:"Enter request URL",className:"nice-api-tester__url-input"}),e.jsx("button",{onClick:S?W:J,className:`nice-api-tester__send-btn ${S?"nice-api-tester__send-btn--loading":""}`,children:S?"Cancel":"Send"}),e.jsx("button",{onClick:N,className:"nice-api-tester__save-btn",children:"Save"})]}),e.jsxs("div",{className:"nice-api-tester__main",children:[e.jsxs("div",{className:"nice-api-tester__request-panel",children:[e.jsx("div",{className:"nice-api-tester__tabs",children:["params","headers","body","auth","tests"].map(n=>e.jsx("button",{className:`nice-api-tester__tab ${A===n?"nice-api-tester__tab--active":""}`,onClick:()=>$(n),children:n.charAt(0).toUpperCase()+n.slice(1)},n))}),e.jsxs("div",{className:"nice-api-tester__tab-content",children:[A==="params"&&e.jsx(Xe,{params:m.queryParams,onChange:n=>k(o=>({...o,queryParams:n})),onAdd:h}),A==="headers"&&e.jsx(Ye,{headers:m.headers,onChange:n=>k(o=>({...o,headers:n})),onAdd:p}),A==="body"&&e.jsx(Qe,{body:m.body,bodyTab:M,onBodyTabChange:V,onChange:n=>k(o=>({...o,body:n}))}),A==="auth"&&e.jsx(Ze,{auth:m.auth,onChange:n=>k(o=>({...o,auth:n}))}),A==="tests"&&e.jsx(er,{preRequestScript:x,testScript:w,onPreRequestChange:j,onTestChange:U})]})]}),e.jsx("div",{className:"nice-api-tester__response-panel",children:v?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__response-meta",children:[e.jsxs("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(v.status/100)}`,children:[v.status," ",v.statusText]}),e.jsxs("span",{className:"nice-api-tester__time",children:[v.time,"ms"]}),e.jsx("span",{className:"nice-api-tester__size",children:Je(v.size)})]}),e.jsx("div",{className:"nice-api-tester__tabs",children:["body","headers","tests"].map(n=>e.jsxs("button",{className:`nice-api-tester__tab ${D===n?"nice-api-tester__tab--active":""}`,onClick:()=>L(n),children:[n.charAt(0).toUpperCase()+n.slice(1),n==="tests"&&K.length>0&&e.jsxs("span",{className:"nice-api-tester__test-badge",children:[K.filter(o=>o.passed).length,"/",K.length]})]},n))}),e.jsxs("div",{className:"nice-api-tester__response-content",children:[D==="body"&&e.jsx("pre",{className:"nice-api-tester__response-body",children:typeof v.body=="string"?v.body:JSON.stringify(v.body,null,2)}),D==="headers"&&e.jsx("div",{className:"nice-api-tester__response-headers",children:Object.entries(v.headers).map(([n,o])=>e.jsxs("div",{className:"nice-api-tester__header-row",children:[e.jsx("span",{className:"nice-api-tester__header-key",children:n}),e.jsx("span",{className:"nice-api-tester__header-value",children:o})]},n))}),D==="tests"&&e.jsx("div",{className:"nice-api-tester__test-results",children:K.map((n,o)=>e.jsxs("div",{className:`nice-api-tester__test-result nice-api-tester__test-result--${n.passed?"pass":"fail"}`,children:[e.jsx("span",{className:"nice-api-tester__test-icon",children:n.passed?"✓":"✗"}),e.jsx("span",{className:"nice-api-tester__test-name",children:n.name}),n.message&&e.jsx("span",{className:"nice-api-tester__test-message",children:n.message})]},o))})]})]}):e.jsx("div",{className:"nice-api-tester__empty-response",children:S?"Loading...":"Send a request to see the response"})})]}),I.length>0&&e.jsxs("div",{className:"nice-api-tester__history",children:[e.jsx("h4",{children:"History"}),e.jsx("div",{className:"nice-api-tester__history-list",children:I.slice().reverse().map(({request:n,response:o},_)=>e.jsxs("div",{className:"nice-api-tester__history-item",onClick:()=>k(n),children:[e.jsx("span",{className:`nice-api-tester__method nice-api-tester__method--${n.method.toLowerCase()}`,children:n.method}),e.jsx("span",{className:"nice-api-tester__history-url",children:n.url}),e.jsx("span",{className:`nice-api-tester__status nice-api-tester__status--${Math.floor(o.status/100)}`,children:o.status})]},_))})]})]})}function We(r,a){var s,i,t,u,f;switch(a.type){case"bearer":r.Authorization=`${((s=a.bearer)==null?void 0:s.prefix)||"Bearer"} ${(i=a.bearer)==null?void 0:i.token}`;break;case"basic":r.Authorization=`Basic ${btoa(`${(t=a.basic)==null?void 0:t.username}:${(u=a.basic)==null?void 0:u.password}`)}`;break;case"api-key":((f=a.apiKey)==null?void 0:f.in)==="header"&&(r[a.apiKey.key]=a.apiKey.value);break}}function Je(r){return r<1024?`${r} B`:r<1024*1024?`${(r/1024).toFixed(1)} KB`:`${(r/(1024*1024)).toFixed(1)} MB`}function Ge(r,a){const s=[],i={response:{code:a.status,status:a.statusText,headers:a.headers,json:()=>a.body,text:()=>typeof a.body=="string"?a.body:JSON.stringify(a.body),responseTime:a.time},test:(t,u)=>{const f=performance.now();try{u(),s.push({name:t,passed:!0,duration:performance.now()-f})}catch(y){s.push({name:t,passed:!1,message:y.message,duration:performance.now()-f})}},expect:t=>({to:{equal:u=>{if(t!==u)throw new Error(`Expected ${u} but got ${t}`)},be:{oneOf:u=>{if(!u.includes(t))throw new Error(`Expected ${t} to be one of ${u}`)}},have:{property:u=>{if(typeof t!="object"||t===null||!(u in t))throw new Error(`Expected object to have property ${u}`)}}}})};try{new Function("pm",r)(i)}catch(t){s.push({name:"Script Error",passed:!1,message:t.message,duration:0})}return s}function be({items:r,onChange:a,onAdd:s,keyPlaceholder:i="Key",valuePlaceholder:t="Value"}){return e.jsxs("div",{className:"nice-api-tester__kv-editor",children:[Object.entries(r).map(([u,f],y)=>e.jsxs("div",{className:"nice-api-tester__kv-row",children:[e.jsx("input",{type:"text",value:u,placeholder:i,onChange:b=>{const d=Object.entries(r);d[y]=[b.target.value,f],a(Object.fromEntries(d))}}),e.jsx("input",{type:"text",value:f,placeholder:t,onChange:b=>a({...r,[u]:b.target.value})}),e.jsx("button",{onClick:()=>{const{[u]:b,...d}=r;a(d)},children:"×"})]},y)),e.jsx("button",{onClick:s,className:"nice-api-tester__add-btn",children:"+ Add"})]})}function Xe({params:r,onChange:a,onAdd:s}){return e.jsx(be,{items:r,onChange:a,onAdd:s,keyPlaceholder:"Parameter",valuePlaceholder:"Value"})}function Ye({headers:r,onChange:a,onAdd:s}){return e.jsx(be,{items:r,onChange:a,onAdd:s,keyPlaceholder:"Header",valuePlaceholder:"Value"})}function Qe({body:r,bodyTab:a,onBodyTabChange:s,onChange:i}){return e.jsxs("div",{className:"nice-api-tester__body-editor",children:[e.jsx("div",{className:"nice-api-tester__body-tabs",children:["none","json","form-data","raw"].map(t=>e.jsxs("label",{children:[e.jsx("input",{type:"radio",checked:a===t,onChange:()=>{s(t),i({type:t,content:""})}}),t]},t))}),a!=="none"&&e.jsx("textarea",{value:typeof(r==null?void 0:r.content)=="string"?r.content:JSON.stringify(r==null?void 0:r.content,null,2),onChange:t=>i({type:a,content:t.target.value}),placeholder:a==="json"?'{ "key": "value" }':"Enter body content",rows:10,className:"nice-api-tester__body-textarea"})]})}function Ze({auth:r,onChange:a}){var s,i,t,u,f,y;return e.jsxs("div",{className:"nice-api-tester__auth-editor",children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Type"}),e.jsxs("select",{value:(r==null?void 0:r.type)||"none",onChange:b=>a({type:b.target.value}),children:[e.jsx("option",{value:"none",children:"No Auth"}),e.jsx("option",{value:"api-key",children:"API Key"}),e.jsx("option",{value:"bearer",children:"Bearer Token"}),e.jsx("option",{value:"basic",children:"Basic Auth"}),e.jsx("option",{value:"oauth2",children:"OAuth 2.0"})]})]}),(r==null?void 0:r.type)==="api-key"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Key"}),e.jsx("input",{type:"text",value:((s=r.apiKey)==null?void 0:s.key)||"",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,key:b.target.value,value:((d=r.apiKey)==null?void 0:d.value)||"",in:((g=r.apiKey)==null?void 0:g.in)||"header"}})},placeholder:"X-API-Key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:((i=r.apiKey)==null?void 0:i.value)||"",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,value:b.target.value,key:((d=r.apiKey)==null?void 0:d.key)||"",in:((g=r.apiKey)==null?void 0:g.in)||"header"}})},placeholder:"your-api-key"})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Add to"}),e.jsxs("select",{value:((t=r.apiKey)==null?void 0:t.in)||"header",onChange:b=>{var d,g;return a({...r,apiKey:{...r.apiKey,in:b.target.value,key:((d=r.apiKey)==null?void 0:d.key)||"",value:((g=r.apiKey)==null?void 0:g.value)||""}})},children:[e.jsx("option",{value:"header",children:"Header"}),e.jsx("option",{value:"query",children:"Query Params"})]})]})]}),(r==null?void 0:r.type)==="bearer"&&e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Token"}),e.jsx("input",{type:"text",value:((u=r.bearer)==null?void 0:u.token)||"",onChange:b=>a({...r,bearer:{token:b.target.value}}),placeholder:"your-bearer-token"})]}),(r==null?void 0:r.type)==="basic"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Username"}),e.jsx("input",{type:"text",value:((f=r.basic)==null?void 0:f.username)||"",onChange:b=>{var d;return a({...r,basic:{...r.basic,username:b.target.value,password:((d=r.basic)==null?void 0:d.password)||""}})}})]}),e.jsxs("div",{className:"nice-api-tester__field",children:[e.jsx("label",{children:"Password"}),e.jsx("input",{type:"password",value:((y=r.basic)==null?void 0:y.password)||"",onChange:b=>{var d;return a({...r,basic:{...r.basic,password:b.target.value,username:((d=r.basic)==null?void 0:d.username)||""}})}})]})]})]})}function er({preRequestScript:r,testScript:a,onPreRequestChange:s,onTestChange:i}){return e.jsxs("div",{className:"nice-api-tester__tests-editor",children:[e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Pre-request Script"}),e.jsx("textarea",{value:r,onChange:t=>s(t.target.value),placeholder:"// Code to run before the request",rows:5})]}),e.jsxs("div",{className:"nice-api-tester__script-section",children:[e.jsx("h4",{children:"Tests"}),e.jsx("textarea",{value:a,onChange:t=>i(t.target.value),placeholder:`pm.test("Status code is 200", function () {
28
28
  pm.expect(pm.response.code).to.equal(200);
29
- });`,rows:8})]})]})}const rr=[{target:".nice-integration-builder",titleKey:"tutorial.integrationBuilder.intro.title",title:"Integration builder",contentKey:"tutorial.integrationBuilder.intro.content",content:"Wire a flow of nodes (triggers → actions → error handling) and connect them to build an integration.",placement:"auto"}],re=[{type:"trigger",label:"Trigger",icon:"⚡",category:"Control"},{type:"http-request",label:"HTTP Request",icon:"🌐",category:"Actions"},{type:"transform",label:"Transform",icon:"🔄",category:"Data"},{type:"filter",label:"Filter",icon:"🔍",category:"Data"},{type:"switch",label:"Switch",icon:"⑂",category:"Control"},{type:"loop",label:"Loop",icon:"🔁",category:"Control"},{type:"delay",label:"Delay",icon:"⏱️",category:"Control"},{type:"set-variable",label:"Set Variable",icon:"📝",category:"Data"},{type:"database",label:"Database",icon:"🗄️",category:"Actions"},{type:"email",label:"Email",icon:"✉️",category:"Actions"},{type:"webhook",label:"Webhook",icon:"🔗",category:"Actions"},{type:"function",label:"Function",icon:"ƒ",category:"Actions"},{type:"error-handler",label:"Error Handler",icon:"⚠️",category:"Control"}],ar={id:"",name:"New Flow",nodes:[],connections:[],variables:{},triggers:[],errorHandling:{strategy:"stop"}};function sr({flow:r,connectors:a=[],onChange:s,onSave:i,onRun:t,className:u="",tutorial:f}){const[y,b]=c.useState(r||{...ar,id:crypto.randomUUID()}),[d,g]=c.useState(null),[C,m]=c.useState(!0),[k,v]=c.useState("canvas"),[A,S]=c.useState(!1),[O,M]=c.useState(null),[V,P]=c.useState(!1),[$,D]=c.useState(null),[L,x]=c.useState(!1),j=c.useRef(null),w=c.useCallback(p=>{b(h=>{const N=p(h);return s==null||s(N),N})},[s]),U=c.useCallback((p,h)=>{var n;const N={id:crypto.randomUUID(),type:p,name:((n=re.find(o=>o.type===p))==null?void 0:n.label)||p,position:h,config:ir(p),inputs:p!=="trigger"?["input"]:[],outputs:["output"]};w(o=>({...o,nodes:[...o.nodes,N]})),g(N)},[w]),q=c.useCallback(p=>{w(h=>({...h,nodes:h.nodes.filter(N=>N.id!==p),connections:h.connections.filter(N=>N.sourceNodeId!==p&&N.targetNodeId!==p)})),g(null)},[w]),K=c.useCallback((p,h)=>{w(N=>({...N,nodes:N.nodes.map(n=>n.id===p?{...n,...h}:n)})),(d==null?void 0:d.id)===p&&g(N=>N?{...N,...h}:null)},[w,d]),I=c.useCallback((p,h,N,n)=>{p===N||y.connections.some(_=>_.sourceNodeId===p&&_.targetNodeId===N&&_.sourceOutput===h&&_.targetInput===n)||w(_=>({..._,connections:[..._.connections,{id:crypto.randomUUID(),sourceNodeId:p,sourceOutput:h,targetNodeId:N,targetInput:n}]}))},[y.connections,w]),z=c.useCallback(p=>{w(h=>({...h,connections:h.connections.filter(N=>N.id!==p)}))},[w]),B=c.useCallback(p=>{if(p.preventDefault(),!O||!j.current)return;const h=j.current.getBoundingClientRect(),N=p.clientX-h.left,n=p.clientY-h.top;U(O,{x:N,y:n}),S(!1),M(null)},[O,U]),J=c.useCallback(async()=>{if(t){x(!0);try{await t(y)}finally{x(!1)}}},[y,t]),W=c.useCallback(()=>{i==null||i(y)},[y,i]);return e.jsxs("div",{className:`nice-integration-builder ${u}`,style:{position:"relative"},children:[f&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(f,rr)})}),e.jsxs("div",{className:"nice-integration-builder__toolbar",children:[e.jsx("input",{type:"text",value:y.name,onChange:p=>w(h=>({...h,name:p.target.value})),className:"nice-integration-builder__name-input"}),e.jsx("div",{className:"nice-integration-builder__tabs",children:["canvas","code","variables","settings"].map(p=>e.jsx("button",{className:`nice-integration-builder__tab ${k===p?"nice-integration-builder__tab--active":""}`,onClick:()=>v(p),children:p.charAt(0).toUpperCase()+p.slice(1)},p))}),e.jsxs("div",{className:"nice-integration-builder__actions",children:[e.jsx("button",{onClick:J,disabled:L,className:"nice-integration-builder__run-btn",children:L?"⏳ Running...":"▶ Run"}),e.jsx("button",{onClick:W,className:"nice-integration-builder__save-btn",children:"💾 Save"})]})]}),e.jsxs("div",{className:"nice-integration-builder__main",children:[C&&k==="canvas"&&e.jsxs("div",{className:"nice-integration-builder__palette",children:[e.jsx("h4",{children:"Nodes"}),["Control","Actions","Data"].map(p=>e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:p}),re.filter(h=>h.category===p).map(h=>e.jsxs("div",{className:"nice-integration-builder__palette-item",draggable:!0,onDragStart:()=>{S(!0),M(h.type)},onDragEnd:()=>{S(!1),M(null)},children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:h.icon}),e.jsx("span",{children:h.label})]},h.type))]},p)),a.length>0&&e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:"Connectors"}),a.map(p=>e.jsxs("div",{className:"nice-integration-builder__palette-item",children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:"🔌"}),e.jsx("span",{children:p.name})]},p.id))]})]}),k==="canvas"&&e.jsxs("div",{ref:j,className:`nice-integration-builder__canvas ${A?"nice-integration-builder__canvas--dragging":""}`,onDragOver:p=>p.preventDefault(),onDrop:B,onClick:()=>g(null),children:[e.jsx("svg",{className:"nice-integration-builder__connections",children:y.connections.map(p=>{const h=y.nodes.find(T=>T.id===p.sourceNodeId),N=y.nodes.find(T=>T.id===p.targetNodeId);if(!h||!N)return null;const n=h.position.x+150,o=h.position.y+30,_=N.position.x,R=N.position.y+30,H=(n+_)/2;return e.jsx("g",{onClick:()=>z(p.id),children:e.jsx("path",{d:`M ${n} ${o} C ${H} ${o}, ${H} ${R}, ${_} ${R}`,className:"nice-integration-builder__connection"})},p.id)})}),y.nodes.map(p=>e.jsx(tr,{node:p,isSelected:(d==null?void 0:d.id)===p.id,onSelect:()=>g(p),onDelete:()=>q(p.id),onPositionChange:h=>K(p.id,{position:h}),onStartConnection:h=>{P(!0),D({nodeId:p.id,output:h})},onEndConnection:h=>{$&&I($.nodeId,$.output,p.id,h),P(!1),D(null)}},p.id)),y.nodes.length===0&&e.jsx("div",{className:"nice-integration-builder__empty",children:"Drag nodes from the palette to build your flow"})]}),k==="code"&&e.jsx("div",{className:"nice-integration-builder__code-view",children:e.jsx("pre",{children:JSON.stringify(y,null,2)})}),k==="variables"&&e.jsx(cr,{variables:y.variables,onChange:p=>w(h=>({...h,variables:p}))}),k==="settings"&&e.jsx(or,{errorHandling:y.errorHandling,schedule:y.schedule,onChange:(p,h)=>w(N=>({...N,errorHandling:p,schedule:h}))}),d&&k==="canvas"&&e.jsx(nr,{node:d,onChange:p=>K(d.id,p),onClose:()=>g(null)})]})]})}function ir(r){switch(r){case"http-request":return{method:"GET",url:"",headers:{},body:""};case"transform":return{mapping:[]};case"filter":return{condition:""};case"switch":return{cases:[]};case"loop":return{collection:"",itemVariable:"item"};case"delay":return{duration:1e3};case"set-variable":return{name:"",value:""};case"database":return{operation:"query",query:""};case"email":return{to:"",subject:"",body:""};case"webhook":return{method:"POST",url:""};case"function":return{code:`// Your code here
30
- return input;`};case"error-handler":return{strategy:"retry",maxRetries:3};default:return{}}}function tr({node:r,isSelected:a,onSelect:s,onDelete:i,onPositionChange:t,onStartConnection:u,onEndConnection:f}){const[y,b]=c.useState(!1),[d,g]=c.useState({x:0,y:0}),C=c.useRef(null),m=re.find(v=>v.type===r.type),k=v=>{v.button===0&&(v.stopPropagation(),b(!0),g({x:v.clientX-r.position.x,y:v.clientY-r.position.y}),s())};return c.useEffect(()=>{if(!y)return;const v=S=>{t({x:S.clientX-d.x,y:S.clientY-d.y})},A=()=>{b(!1)};return window.addEventListener("mousemove",v),window.addEventListener("mouseup",A),()=>{window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",A)}},[y,d,t]),e.jsxs("div",{ref:C,className:`nice-integration-builder__node nice-integration-builder__node--${r.type} ${a?"nice-integration-builder__node--selected":""}`,style:{left:r.position.x,top:r.position.y},onMouseDown:k,children:[e.jsxs("div",{className:"nice-integration-builder__node-header",children:[e.jsx("span",{className:"nice-integration-builder__node-icon",children:(m==null?void 0:m.icon)||"📦"}),e.jsx("span",{className:"nice-integration-builder__node-name",children:r.name}),e.jsx("button",{className:"nice-integration-builder__node-delete",onClick:v=>{v.stopPropagation(),i()},children:"×"})]}),r.inputs.map(v=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--input",onMouseUp:()=>f(v),children:[e.jsx("span",{className:"nice-integration-builder__port-dot"}),e.jsx("span",{className:"nice-integration-builder__port-label",children:v})]},v)),r.outputs.map(v=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--output",onMouseDown:A=>{A.stopPropagation(),u(v)},children:[e.jsx("span",{className:"nice-integration-builder__port-label",children:v}),e.jsx("span",{className:"nice-integration-builder__port-dot"})]},v))]})}function nr({node:r,onChange:a,onClose:s}){return e.jsxs("div",{className:"nice-integration-builder__properties",children:[e.jsxs("div",{className:"nice-integration-builder__properties-header",children:[e.jsx("h4",{children:r.name}),e.jsx("button",{onClick:s,children:"×"})]}),e.jsxs("div",{className:"nice-integration-builder__properties-content",children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Name"}),e.jsx("input",{type:"text",value:r.name,onChange:i=>a({name:i.target.value})})]}),r.type==="http-request"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Method"}),e.jsx("select",{value:r.config.method||"GET",onChange:i=>a({config:{...r.config,method:i.target.value}}),children:["GET","POST","PUT","PATCH","DELETE"].map(i=>e.jsx("option",{value:i,children:i},i))})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"URL"}),e.jsx("input",{type:"text",value:r.config.url||"",onChange:i=>a({config:{...r.config,url:i.target.value}}),placeholder:"https://api.example.com/endpoint"})]})]}),r.type==="delay"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Duration (ms)"}),e.jsx("input",{type:"number",value:r.config.duration||1e3,onChange:i=>a({config:{...r.config,duration:parseInt(i.target.value,10)}})})]}),r.type==="set-variable"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Variable Name"}),e.jsx("input",{type:"text",value:r.config.name||"",onChange:i=>a({config:{...r.config,name:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:r.config.value||"",onChange:i=>a({config:{...r.config,value:i.target.value}})})]})]}),r.type==="function"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Code"}),e.jsx("textarea",{value:r.config.code||"",onChange:i=>a({config:{...r.config,code:i.target.value}}),rows:10,className:"nice-integration-builder__code-input"})]}),r.type==="email"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"To"}),e.jsx("input",{type:"text",value:r.config.to||"",onChange:i=>a({config:{...r.config,to:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Subject"}),e.jsx("input",{type:"text",value:r.config.subject||"",onChange:i=>a({config:{...r.config,subject:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Body"}),e.jsx("textarea",{value:r.config.body||"",onChange:i=>a({config:{...r.config,body:i.target.value}}),rows:5})]})]})]})]})}function cr({variables:r,onChange:a}){const s=()=>{a({...r,newVariable:""})};return e.jsxs("div",{className:"nice-integration-builder__variables",children:[e.jsx("h4",{children:"Flow Variables"}),e.jsx("div",{className:"nice-integration-builder__variables-list",children:Object.entries(r).map(([i,t])=>e.jsxs("div",{className:"nice-integration-builder__variable-row",children:[e.jsx("input",{type:"text",value:i,onChange:u=>{const{[i]:f,...y}=r;a({...y,[u.target.value]:t})},placeholder:"Name"}),e.jsx("input",{type:"text",value:String(t),onChange:u=>a({...r,[i]:u.target.value}),placeholder:"Value"}),e.jsx("button",{onClick:()=>{const{[i]:u,...f}=r;a(f)},children:"×"})]},i))}),e.jsx("button",{onClick:s,children:"+ Add Variable"})]})}function or({errorHandling:r,schedule:a,onChange:s}){return e.jsxs("div",{className:"nice-integration-builder__settings",children:[e.jsx("h4",{children:"Error Handling"}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Strategy"}),e.jsxs("select",{value:r.strategy,onChange:i=>s({...r,strategy:i.target.value},a),children:[e.jsx("option",{value:"stop",children:"Stop on error"}),e.jsx("option",{value:"continue",children:"Continue on error"}),e.jsx("option",{value:"retry",children:"Retry on error"})]})]}),r.strategy==="retry"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Max Retries"}),e.jsx("input",{type:"number",value:r.maxRetries||3,onChange:i=>s({...r,maxRetries:parseInt(i.target.value,10)},a)})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Retry Delay (ms)"}),e.jsx("input",{type:"number",value:r.retryDelay||1e3,onChange:i=>s({...r,retryDelay:parseInt(i.target.value,10)},a)})]})]}),e.jsx("h4",{children:"Schedule"}),e.jsx("div",{className:"nice-integration-builder__field",children:e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:(a==null?void 0:a.enabled)||!1,onChange:i=>s(r,{...a,enabled:i.target.checked})}),"Enable scheduled execution"]})}),(a==null?void 0:a.enabled)&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Cron Expression"}),e.jsx("input",{type:"text",value:a.cron||"",onChange:i=>s(r,{...a,cron:i.target.value}),placeholder:"0 0 * * *"})]})]})}const dr=[{target:".nice-webhook-tester",titleKey:"tutorial.webhookTester.intro.title",title:"Webhook tester",contentKey:"tutorial.webhookTester.intro.content",content:"Pick a saved payload (or write one), optionally sign it, send it to the endpoint and inspect the response.",placement:"auto"}];function ne(r){return r?Object.entries(r).map(([a,s])=>({key:a,value:s})):[]}function ce(r){const a={};for(const s of r)s.key.trim()!==""&&(a[s.key]=s.value);return a}async function lr(r,a){var f;const s=(f=globalThis.crypto)==null?void 0:f.subtle;if(!s)throw new Error("Web Crypto (crypto.subtle) is unavailable in this environment");const i=new TextEncoder,t=await s.importKey("raw",i.encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),u=await s.sign("HMAC",t,i.encode(a));return[...new Uint8Array(u)].map(y=>y.toString(16).padStart(2,"0")).join("")}const fr=c.forwardRef(function(a,s){const{url:i="",method:t="POST",headers:u,payload:f="",samples:y=[],onSend:b,signing:d,onSaveSample:g,tutorial:C,className:m,style:k,id:v,"data-testid":A}=a,[S,O]=c.useState(i),[M,V]=c.useState(t),[P,$]=c.useState(()=>ne(u)),[D,L]=c.useState(f),[x,j]=c.useState(""),[w,U]=c.useState(!1),[q,K]=c.useState(null),[I,z]=c.useState(null),B=c.useMemo(()=>{const o=new Map;for(const _ of y)o.set(_.id,_);return o},[y]),J=o=>{j(o);const _=B.get(o);_&&(L(_.payload),_.headers&&$(ne(_.headers)))},W=(o,_)=>{$(R=>R.map((H,T)=>T===o?{...H,..._}:H))},p=async()=>{U(!0),K(null),z(null);try{const o=ce(P);if(d&&d.secret){const T=await lr(d.secret,D);o[d.header]=`${d.prefix??""}${T}`}const _=typeof performance<"u"?performance.now():Date.now(),R=await b({url:S,method:M??"POST",headers:o,body:D}),H=Math.round((typeof performance<"u"?performance.now():Date.now())-_);z({...R,durationMs:R.durationMs??H})}catch(o){K(o instanceof Error?o.message:String(o))}finally{U(!1)}},h=()=>{var _;if(!g)return;const o=typeof window<"u"&&((_=window.prompt)==null?void 0:_.call(window,"Sample name"))||"";o&&g({id:`sample_${Date.now().toString(36)}`,name:o,payload:D,headers:ce(P)})},N=I==null?"":I.status>=200&&I.status<300?" nice-webhook-tester__status--ok":" nice-webhook-tester__status--error",n="nice-webhook-tester"+(m?` ${m}`:"");return e.jsxs("div",{ref:s,id:v,className:n,style:k,"data-testid":A,children:[C&&e.jsx("div",{className:"nice-webhook-tester__tutorial",children:e.jsx(Y,{steps:X(C,dr)})}),e.jsxs("div",{className:"nice-webhook-tester__bar",children:[e.jsx("select",{className:"nice-webhook-tester__method",value:M,onChange:o=>V(o.target.value),"aria-label":"Method",children:["POST","PUT","GET","PATCH","DELETE"].map(o=>e.jsx("option",{value:o,children:o},o))}),e.jsx("input",{type:"text",className:"nice-webhook-tester__url",value:S,placeholder:"https://example.com/api/payments/stripe/webhook",onChange:o=>O(o.target.value),"aria-label":"URL"}),e.jsx("button",{type:"button",className:"nice-webhook-tester__send",onClick:()=>void p(),disabled:w||S.trim()==="",children:w?"Sending…":"Send"})]}),y.length>0&&e.jsx("div",{className:"nice-webhook-tester__samples",children:e.jsxs("label",{children:["Sample:"," ",e.jsxs("select",{value:x,onChange:o=>J(o.target.value),children:[e.jsx("option",{value:"",children:"— choose a saved payload —"}),y.map(o=>e.jsx("option",{value:o.id,children:o.name},o.id))]})]})}),e.jsxs("div",{className:"nice-webhook-tester__headers",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Headers",d&&e.jsxs("span",{className:"nice-webhook-tester__signed",children:[" ","· auto-signs ",e.jsx("code",{children:d.header})]})]}),P.map((o,_)=>e.jsxs("div",{className:"nice-webhook-tester__header-row",children:[e.jsx("input",{type:"text",value:o.key,placeholder:"Header",onChange:R=>W(_,{key:R.target.value}),"aria-label":"Header name"}),e.jsx("input",{type:"text",value:o.value,placeholder:"Value",onChange:R=>W(_,{value:R.target.value}),"aria-label":"Header value"}),e.jsx("button",{type:"button",onClick:()=>$(R=>R.filter((H,T)=>T!==_)),"aria-label":"Remove header",children:"✕"})]},_)),e.jsx("button",{type:"button",className:"nice-webhook-tester__add-header",onClick:()=>$(o=>[...o,{key:"",value:""}]),children:"+ Header"})]}),e.jsxs("div",{className:"nice-webhook-tester__payload",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Payload",g&&e.jsx("button",{type:"button",className:"nice-webhook-tester__save",onClick:h,children:"Save as sample"})]}),e.jsx("textarea",{className:"nice-webhook-tester__textarea",value:D,spellCheck:!1,rows:8,placeholder:'{ "type": "payment.succeeded", "data": { ... } }',onChange:o=>L(o.target.value),"aria-label":"Payload"})]}),q&&e.jsx("div",{className:"nice-webhook-tester__error",children:q}),I&&e.jsxs("div",{className:"nice-webhook-tester__response",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Response"," ",e.jsx("span",{className:"nice-webhook-tester__status"+N,children:I.status}),I.durationMs!=null&&e.jsxs("span",{className:"nice-webhook-tester__time",children:[" · ",I.durationMs," ms"]})]}),I.body!=null&&e.jsx("pre",{className:"nice-webhook-tester__response-body",children:I.body})]})]})});exports.NiceAPIDesigner=$e;exports.NiceAPITester=ze;exports.NiceIntegrationBuilder=sr;exports.NiceWebhookTester=fr;
29
+ });`,rows:8})]})]})}const rr=[{target:".nice-integration-builder",titleKey:"tutorial.integrationBuilder.intro.title",title:"Integration builder",contentKey:"tutorial.integrationBuilder.intro.content",content:"Wire a flow of nodes (triggers → actions → error handling) and connect them to build an integration.",placement:"auto"}],re=[{type:"trigger",label:"Trigger",icon:"⚡",category:"Control"},{type:"http-request",label:"HTTP Request",icon:"🌐",category:"Actions"},{type:"transform",label:"Transform",icon:"🔄",category:"Data"},{type:"filter",label:"Filter",icon:"🔍",category:"Data"},{type:"switch",label:"Switch",icon:"⑂",category:"Control"},{type:"loop",label:"Loop",icon:"🔁",category:"Control"},{type:"delay",label:"Delay",icon:"⏱️",category:"Control"},{type:"set-variable",label:"Set Variable",icon:"📝",category:"Data"},{type:"database",label:"Database",icon:"🗄️",category:"Actions"},{type:"email",label:"Email",icon:"✉️",category:"Actions"},{type:"webhook",label:"Webhook",icon:"🔗",category:"Actions"},{type:"function",label:"Function",icon:"ƒ",category:"Actions"},{type:"error-handler",label:"Error Handler",icon:"⚠️",category:"Control"}],ar={id:"",name:"New Flow",nodes:[],connections:[],variables:{},triggers:[],errorHandling:{strategy:"stop"}};function sr({flow:r,connectors:a=[],onChange:s,onSave:i,onRun:t,className:u="",tutorial:f}){const[y,b]=c.useState(r||{...ar,id:crypto.randomUUID()}),[d,g]=c.useState(null),[C,m]=c.useState(!0),[k,v]=c.useState("canvas"),[P,S]=c.useState(!1),[O,M]=c.useState(null),[V,A]=c.useState(!1),[$,D]=c.useState(null),[L,x]=c.useState(!1),j=c.useRef(null),w=c.useCallback(p=>{b(h=>{const N=p(h);return s==null||s(N),N})},[s]),U=c.useCallback((p,h)=>{var n;const N={id:crypto.randomUUID(),type:p,name:((n=re.find(o=>o.type===p))==null?void 0:n.label)||p,position:h,config:ir(p),inputs:p!=="trigger"?["input"]:[],outputs:["output"]};w(o=>({...o,nodes:[...o.nodes,N]})),g(N)},[w]),K=c.useCallback(p=>{w(h=>({...h,nodes:h.nodes.filter(N=>N.id!==p),connections:h.connections.filter(N=>N.sourceNodeId!==p&&N.targetNodeId!==p)})),g(null)},[w]),q=c.useCallback((p,h)=>{w(N=>({...N,nodes:N.nodes.map(n=>n.id===p?{...n,...h}:n)})),(d==null?void 0:d.id)===p&&g(N=>N?{...N,...h}:null)},[w,d]),I=c.useCallback((p,h,N,n)=>{p===N||y.connections.some(_=>_.sourceNodeId===p&&_.targetNodeId===N&&_.sourceOutput===h&&_.targetInput===n)||w(_=>({..._,connections:[..._.connections,{id:crypto.randomUUID(),sourceNodeId:p,sourceOutput:h,targetNodeId:N,targetInput:n}]}))},[y.connections,w]),z=c.useCallback(p=>{w(h=>({...h,connections:h.connections.filter(N=>N.id!==p)}))},[w]),B=c.useCallback(p=>{if(p.preventDefault(),!O||!j.current)return;const h=j.current.getBoundingClientRect(),N=p.clientX-h.left,n=p.clientY-h.top;U(O,{x:N,y:n}),S(!1),M(null)},[O,U]),J=c.useCallback(async()=>{if(t){x(!0);try{await t(y)}finally{x(!1)}}},[y,t]),W=c.useCallback(()=>{i==null||i(y)},[y,i]);return e.jsxs("div",{className:`nice-integration-builder ${u}`,style:{position:"relative"},children:[f&&e.jsx("div",{style:{position:"absolute",top:8,right:8,zIndex:5},children:e.jsx(Y,{steps:X(f,rr)})}),e.jsxs("div",{className:"nice-integration-builder__toolbar",children:[e.jsx("input",{type:"text",value:y.name,onChange:p=>w(h=>({...h,name:p.target.value})),className:"nice-integration-builder__name-input"}),e.jsx("div",{className:"nice-integration-builder__tabs",children:["canvas","code","variables","settings"].map(p=>e.jsx("button",{className:`nice-integration-builder__tab ${k===p?"nice-integration-builder__tab--active":""}`,onClick:()=>v(p),children:p.charAt(0).toUpperCase()+p.slice(1)},p))}),e.jsxs("div",{className:"nice-integration-builder__actions",children:[e.jsx("button",{onClick:J,disabled:L,className:"nice-integration-builder__run-btn",children:L?"⏳ Running...":"▶ Run"}),e.jsx("button",{onClick:W,className:"nice-integration-builder__save-btn",children:"💾 Save"})]})]}),e.jsxs("div",{className:"nice-integration-builder__main",children:[C&&k==="canvas"&&e.jsxs("div",{className:"nice-integration-builder__palette",children:[e.jsx("h4",{children:"Nodes"}),["Control","Actions","Data"].map(p=>e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:p}),re.filter(h=>h.category===p).map(h=>e.jsxs("div",{className:"nice-integration-builder__palette-item",draggable:!0,onDragStart:()=>{S(!0),M(h.type)},onDragEnd:()=>{S(!1),M(null)},children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:h.icon}),e.jsx("span",{children:h.label})]},h.type))]},p)),a.length>0&&e.jsxs("div",{className:"nice-integration-builder__category",children:[e.jsx("h5",{children:"Connectors"}),a.map(p=>e.jsxs("div",{className:"nice-integration-builder__palette-item",children:[e.jsx("span",{className:"nice-integration-builder__palette-icon",children:"🔌"}),e.jsx("span",{children:p.name})]},p.id))]})]}),k==="canvas"&&e.jsxs("div",{ref:j,className:`nice-integration-builder__canvas ${P?"nice-integration-builder__canvas--dragging":""}`,onDragOver:p=>p.preventDefault(),onDrop:B,onClick:()=>g(null),children:[e.jsx("svg",{className:"nice-integration-builder__connections",children:y.connections.map(p=>{const h=y.nodes.find(T=>T.id===p.sourceNodeId),N=y.nodes.find(T=>T.id===p.targetNodeId);if(!h||!N)return null;const n=h.position.x+150,o=h.position.y+30,_=N.position.x,R=N.position.y+30,H=(n+_)/2;return e.jsx("g",{onClick:()=>z(p.id),children:e.jsx("path",{d:`M ${n} ${o} C ${H} ${o}, ${H} ${R}, ${_} ${R}`,className:"nice-integration-builder__connection"})},p.id)})}),y.nodes.map(p=>e.jsx(tr,{node:p,isSelected:(d==null?void 0:d.id)===p.id,onSelect:()=>g(p),onDelete:()=>K(p.id),onPositionChange:h=>q(p.id,{position:h}),onStartConnection:h=>{A(!0),D({nodeId:p.id,output:h})},onEndConnection:h=>{$&&I($.nodeId,$.output,p.id,h),A(!1),D(null)}},p.id)),y.nodes.length===0&&e.jsx("div",{className:"nice-integration-builder__empty",children:"Drag nodes from the palette to build your flow"})]}),k==="code"&&e.jsx("div",{className:"nice-integration-builder__code-view",children:e.jsx("pre",{children:JSON.stringify(y,null,2)})}),k==="variables"&&e.jsx(cr,{variables:y.variables,onChange:p=>w(h=>({...h,variables:p}))}),k==="settings"&&e.jsx(or,{errorHandling:y.errorHandling,schedule:y.schedule,onChange:(p,h)=>w(N=>({...N,errorHandling:p,schedule:h}))}),d&&k==="canvas"&&e.jsx(nr,{node:d,onChange:p=>q(d.id,p),onClose:()=>g(null)})]})]})}function ir(r){switch(r){case"http-request":return{method:"GET",url:"",headers:{},body:""};case"transform":return{mapping:[]};case"filter":return{condition:""};case"switch":return{cases:[]};case"loop":return{collection:"",itemVariable:"item"};case"delay":return{duration:1e3};case"set-variable":return{name:"",value:""};case"database":return{operation:"query",query:""};case"email":return{to:"",subject:"",body:""};case"webhook":return{method:"POST",url:""};case"function":return{code:`// Your code here
30
+ return input;`};case"error-handler":return{strategy:"retry",maxRetries:3};default:return{}}}function tr({node:r,isSelected:a,onSelect:s,onDelete:i,onPositionChange:t,onStartConnection:u,onEndConnection:f}){const[y,b]=c.useState(!1),[d,g]=c.useState({x:0,y:0}),C=c.useRef(null),m=re.find(v=>v.type===r.type),k=v=>{v.button===0&&(v.stopPropagation(),b(!0),g({x:v.clientX-r.position.x,y:v.clientY-r.position.y}),s())};return c.useEffect(()=>{if(!y)return;const v=S=>{t({x:S.clientX-d.x,y:S.clientY-d.y})},P=()=>{b(!1)};return window.addEventListener("mousemove",v),window.addEventListener("mouseup",P),()=>{window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",P)}},[y,d,t]),e.jsxs("div",{ref:C,className:`nice-integration-builder__node nice-integration-builder__node--${r.type} ${a?"nice-integration-builder__node--selected":""}`,style:{left:r.position.x,top:r.position.y},onMouseDown:k,children:[e.jsxs("div",{className:"nice-integration-builder__node-header",children:[e.jsx("span",{className:"nice-integration-builder__node-icon",children:(m==null?void 0:m.icon)||"📦"}),e.jsx("span",{className:"nice-integration-builder__node-name",children:r.name}),e.jsx("button",{className:"nice-integration-builder__node-delete",onClick:v=>{v.stopPropagation(),i()},children:"×"})]}),r.inputs.map(v=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--input",onMouseUp:()=>f(v),children:[e.jsx("span",{className:"nice-integration-builder__port-dot"}),e.jsx("span",{className:"nice-integration-builder__port-label",children:v})]},v)),r.outputs.map(v=>e.jsxs("div",{className:"nice-integration-builder__port nice-integration-builder__port--output",onMouseDown:P=>{P.stopPropagation(),u(v)},children:[e.jsx("span",{className:"nice-integration-builder__port-label",children:v}),e.jsx("span",{className:"nice-integration-builder__port-dot"})]},v))]})}function nr({node:r,onChange:a,onClose:s}){return e.jsxs("div",{className:"nice-integration-builder__properties",children:[e.jsxs("div",{className:"nice-integration-builder__properties-header",children:[e.jsx("h4",{children:r.name}),e.jsx("button",{onClick:s,children:"×"})]}),e.jsxs("div",{className:"nice-integration-builder__properties-content",children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Name"}),e.jsx("input",{type:"text",value:r.name,onChange:i=>a({name:i.target.value})})]}),r.type==="http-request"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Method"}),e.jsx("select",{value:r.config.method||"GET",onChange:i=>a({config:{...r.config,method:i.target.value}}),children:["GET","POST","PUT","PATCH","DELETE"].map(i=>e.jsx("option",{value:i,children:i},i))})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"URL"}),e.jsx("input",{type:"text",value:r.config.url||"",onChange:i=>a({config:{...r.config,url:i.target.value}}),placeholder:"https://api.example.com/endpoint"})]})]}),r.type==="delay"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Duration (ms)"}),e.jsx("input",{type:"number",value:r.config.duration||1e3,onChange:i=>a({config:{...r.config,duration:parseInt(i.target.value,10)}})})]}),r.type==="set-variable"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Variable Name"}),e.jsx("input",{type:"text",value:r.config.name||"",onChange:i=>a({config:{...r.config,name:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Value"}),e.jsx("input",{type:"text",value:r.config.value||"",onChange:i=>a({config:{...r.config,value:i.target.value}})})]})]}),r.type==="function"&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Code"}),e.jsx("textarea",{value:r.config.code||"",onChange:i=>a({config:{...r.config,code:i.target.value}}),rows:10,className:"nice-integration-builder__code-input"})]}),r.type==="email"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"To"}),e.jsx("input",{type:"text",value:r.config.to||"",onChange:i=>a({config:{...r.config,to:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Subject"}),e.jsx("input",{type:"text",value:r.config.subject||"",onChange:i=>a({config:{...r.config,subject:i.target.value}})})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Body"}),e.jsx("textarea",{value:r.config.body||"",onChange:i=>a({config:{...r.config,body:i.target.value}}),rows:5})]})]})]})]})}function cr({variables:r,onChange:a}){const s=()=>{a({...r,newVariable:""})};return e.jsxs("div",{className:"nice-integration-builder__variables",children:[e.jsx("h4",{children:"Flow Variables"}),e.jsx("div",{className:"nice-integration-builder__variables-list",children:Object.entries(r).map(([i,t])=>e.jsxs("div",{className:"nice-integration-builder__variable-row",children:[e.jsx("input",{type:"text",value:i,onChange:u=>{const{[i]:f,...y}=r;a({...y,[u.target.value]:t})},placeholder:"Name"}),e.jsx("input",{type:"text",value:String(t),onChange:u=>a({...r,[i]:u.target.value}),placeholder:"Value"}),e.jsx("button",{onClick:()=>{const{[i]:u,...f}=r;a(f)},children:"×"})]},i))}),e.jsx("button",{onClick:s,children:"+ Add Variable"})]})}function or({errorHandling:r,schedule:a,onChange:s}){return e.jsxs("div",{className:"nice-integration-builder__settings",children:[e.jsx("h4",{children:"Error Handling"}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Strategy"}),e.jsxs("select",{value:r.strategy,onChange:i=>s({...r,strategy:i.target.value},a),children:[e.jsx("option",{value:"stop",children:"Stop on error"}),e.jsx("option",{value:"continue",children:"Continue on error"}),e.jsx("option",{value:"retry",children:"Retry on error"})]})]}),r.strategy==="retry"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Max Retries"}),e.jsx("input",{type:"number",value:r.maxRetries||3,onChange:i=>s({...r,maxRetries:parseInt(i.target.value,10)},a)})]}),e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Retry Delay (ms)"}),e.jsx("input",{type:"number",value:r.retryDelay||1e3,onChange:i=>s({...r,retryDelay:parseInt(i.target.value,10)},a)})]})]}),e.jsx("h4",{children:"Schedule"}),e.jsx("div",{className:"nice-integration-builder__field",children:e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:(a==null?void 0:a.enabled)||!1,onChange:i=>s(r,{...a,enabled:i.target.checked})}),"Enable scheduled execution"]})}),(a==null?void 0:a.enabled)&&e.jsxs("div",{className:"nice-integration-builder__field",children:[e.jsx("label",{children:"Cron Expression"}),e.jsx("input",{type:"text",value:a.cron||"",onChange:i=>s(r,{...a,cron:i.target.value}),placeholder:"0 0 * * *"})]})]})}const dr=[{target:".nice-webhook-tester",titleKey:"tutorial.webhookTester.intro.title",title:"Webhook tester",contentKey:"tutorial.webhookTester.intro.content",content:"Pick a saved payload (or write one), optionally sign it, send it to the endpoint and inspect the response.",placement:"auto"}];function ne(r){return r?Object.entries(r).map(([a,s])=>({key:a,value:s})):[]}function ce(r){const a={};for(const s of r)s.key.trim()!==""&&(a[s.key]=s.value);return a}async function lr(r,a){var f;const s=(f=globalThis.crypto)==null?void 0:f.subtle;if(!s)throw new Error("Web Crypto (crypto.subtle) is unavailable in this environment");const i=new TextEncoder,t=await s.importKey("raw",i.encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),u=await s.sign("HMAC",t,i.encode(a));return[...new Uint8Array(u)].map(y=>y.toString(16).padStart(2,"0")).join("")}const fr=c.forwardRef(function(a,s){const{url:i="",method:t="POST",headers:u,payload:f="",samples:y=[],onSend:b,signing:d,onSaveSample:g,tutorial:C,className:m,style:k,id:v,"data-testid":P}=a,[S,O]=c.useState(i),[M,V]=c.useState(t),[A,$]=c.useState(()=>ne(u)),[D,L]=c.useState(f),[x,j]=c.useState(""),[w,U]=c.useState(!1),[K,q]=c.useState(null),[I,z]=c.useState(null),B=c.useMemo(()=>{const o=new Map;for(const _ of y)o.set(_.id,_);return o},[y]),J=o=>{j(o);const _=B.get(o);_&&(L(_.payload),_.headers&&$(ne(_.headers)))},W=(o,_)=>{$(R=>R.map((H,T)=>T===o?{...H,..._}:H))},p=async()=>{U(!0),q(null),z(null);try{const o=ce(A);if(d&&d.secret){const T=await lr(d.secret,D);o[d.header]=`${d.prefix??""}${T}`}const _=typeof performance<"u"?performance.now():Date.now(),R=await b({url:S,method:M??"POST",headers:o,body:D}),H=Math.round((typeof performance<"u"?performance.now():Date.now())-_);z({...R,durationMs:R.durationMs??H})}catch(o){q(o instanceof Error?o.message:String(o))}finally{U(!1)}},h=()=>{var _;if(!g)return;const o=typeof window<"u"&&((_=window.prompt)==null?void 0:_.call(window,"Sample name"))||"";o&&g({id:`sample_${Date.now().toString(36)}`,name:o,payload:D,headers:ce(A)})},N=I==null?"":I.status>=200&&I.status<300?" nice-webhook-tester__status--ok":" nice-webhook-tester__status--error",n="nice-webhook-tester"+(m?` ${m}`:"");return e.jsxs("div",{ref:s,id:v,className:n,style:k,"data-testid":P,children:[C&&e.jsx("div",{className:"nice-webhook-tester__tutorial",children:e.jsx(Y,{steps:X(C,dr)})}),e.jsxs("div",{className:"nice-webhook-tester__bar",children:[e.jsx("select",{className:"nice-webhook-tester__method",value:M,onChange:o=>V(o.target.value),"aria-label":"Method",children:["POST","PUT","GET","PATCH","DELETE"].map(o=>e.jsx("option",{value:o,children:o},o))}),e.jsx("input",{type:"text",className:"nice-webhook-tester__url",value:S,placeholder:"https://example.com/api/payments/stripe/webhook",onChange:o=>O(o.target.value),"aria-label":"URL"}),e.jsx("button",{type:"button",className:"nice-webhook-tester__send",onClick:()=>void p(),disabled:w||S.trim()==="",children:w?"Sending…":"Send"})]}),y.length>0&&e.jsx("div",{className:"nice-webhook-tester__samples",children:e.jsxs("label",{children:["Sample:"," ",e.jsxs("select",{value:x,onChange:o=>J(o.target.value),children:[e.jsx("option",{value:"",children:"— choose a saved payload —"}),y.map(o=>e.jsx("option",{value:o.id,children:o.name},o.id))]})]})}),e.jsxs("div",{className:"nice-webhook-tester__headers",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Headers",d&&e.jsxs("span",{className:"nice-webhook-tester__signed",children:[" ","· auto-signs ",e.jsx("code",{children:d.header})]})]}),A.map((o,_)=>e.jsxs("div",{className:"nice-webhook-tester__header-row",children:[e.jsx("input",{type:"text",value:o.key,placeholder:"Header",onChange:R=>W(_,{key:R.target.value}),"aria-label":"Header name"}),e.jsx("input",{type:"text",value:o.value,placeholder:"Value",onChange:R=>W(_,{value:R.target.value}),"aria-label":"Header value"}),e.jsx("button",{type:"button",onClick:()=>$(R=>R.filter((H,T)=>T!==_)),"aria-label":"Remove header",children:"✕"})]},_)),e.jsx("button",{type:"button",className:"nice-webhook-tester__add-header",onClick:()=>$(o=>[...o,{key:"",value:""}]),children:"+ Header"})]}),e.jsxs("div",{className:"nice-webhook-tester__payload",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Payload",g&&e.jsx("button",{type:"button",className:"nice-webhook-tester__save",onClick:h,children:"Save as sample"})]}),e.jsx("textarea",{className:"nice-webhook-tester__textarea",value:D,spellCheck:!1,rows:8,placeholder:'{ "type": "payment.succeeded", "data": { ... } }',onChange:o=>L(o.target.value),"aria-label":"Payload"})]}),K&&e.jsx("div",{className:"nice-webhook-tester__error",children:K}),I&&e.jsxs("div",{className:"nice-webhook-tester__response",children:[e.jsxs("div",{className:"nice-webhook-tester__section-label",children:["Response"," ",e.jsx("span",{className:"nice-webhook-tester__status"+N,children:I.status}),I.durationMs!=null&&e.jsxs("span",{className:"nice-webhook-tester__time",children:[" · ",I.durationMs," ms"]})]}),I.body!=null&&e.jsx("pre",{className:"nice-webhook-tester__response-body",children:I.body})]})]})});exports.NiceAPIDesigner=$e;exports.NiceAPITester=ze;exports.NiceIntegrationBuilder=sr;exports.NiceWebhookTester=fr;
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsx as r, jsxs as t, Fragment as J } from "react/jsx-runtime";
2
2
  import { useContext as me, createContext as M, memo as He, useState as g, useEffect as ye, useCallback as P, useRef as se, forwardRef as ke, useMemo as Te } from "react";
3
- const Ee = (e, a) => a, Ae = M(Ee);
4
- function Re() {
5
- return { t: me(Ae) };
3
+ const Ee = (e, a) => a, Re = M(Ee);
4
+ function Ae() {
5
+ return { t: me(Re) };
6
6
  }
7
7
  M({
8
8
  dir: "ltr",
@@ -244,7 +244,7 @@ const Ue = M({
244
244
  run: () => {
245
245
  }
246
246
  });
247
- function je() {
247
+ function Ke() {
248
248
  return me(Ue);
249
249
  }
250
250
  function ee(e, a) {
@@ -257,7 +257,7 @@ function ee(e, a) {
257
257
  const i = e.steps ?? a;
258
258
  return i && i.length > 0 ? i : null;
259
259
  }
260
- function Ke(e, a) {
260
+ function je(e, a) {
261
261
  return e.map((i) => ({
262
262
  target: i.target,
263
263
  title: i.titleKey ? a(i.titleKey, i.title ?? "") : i.title ?? "",
@@ -278,7 +278,7 @@ const re = ({
278
278
  style: u,
279
279
  "data-testid": f
280
280
  }) => {
281
- const { enabled: y, run: b } = je(), { t: d } = Re();
281
+ const { enabled: y, run: b } = Ke(), { t: d } = Ae();
282
282
  if (!y || !e || e.length === 0)
283
283
  return null;
284
284
  const v = i ?? d("tutorial.startAria", "Start tutorial");
@@ -291,7 +291,7 @@ const re = ({
291
291
  "data-testid": f,
292
292
  "aria-label": v,
293
293
  title: v,
294
- onClick: () => b(Ke(e, d), { autoStart: a }),
294
+ onClick: () => b(je(e, d), { autoStart: a }),
295
295
  children: "?"
296
296
  }
297
297
  );
@@ -390,7 +390,7 @@ function l(e, a, i, n, s) {
390
390
  transitions: _e
391
391
  };
392
392
  }
393
- function R(e, a, i, n, s) {
393
+ function A(e, a, i, n, s) {
394
394
  return {
395
395
  name: e,
396
396
  darkMode: "dark",
@@ -721,7 +721,7 @@ l(
721
721
  { primary: "#431407", secondary: "#9a3412", muted: "#fb923c" },
722
722
  "#fdba74"
723
723
  );
724
- R(
724
+ A(
725
725
  "Midnight",
726
726
  {
727
727
  primary: "#818cf8",
@@ -735,7 +735,7 @@ R(
735
735
  { primary: "#f1f5f9", secondary: "#94a3b8", muted: "#475569" },
736
736
  "#1e293b"
737
737
  );
738
- R(
738
+ A(
739
739
  "Obsidian",
740
740
  {
741
741
  primary: "#a78bfa",
@@ -749,7 +749,7 @@ R(
749
749
  { primary: "#fafafa", secondary: "#a1a1aa", muted: "#52525b" },
750
750
  "#3f3f46"
751
751
  );
752
- R(
752
+ A(
753
753
  "Eclipse",
754
754
  {
755
755
  primary: "#c084fc",
@@ -763,7 +763,7 @@ R(
763
763
  { primary: "#f5f3ff", secondary: "#a78bfa", muted: "#6d5eac" },
764
764
  "#3b3266"
765
765
  );
766
- R(
766
+ A(
767
767
  "Onyx",
768
768
  {
769
769
  primary: "#60a5fa",
@@ -777,7 +777,7 @@ R(
777
777
  { primary: "#ffffff", secondary: "#a3a3a3", muted: "#525252" },
778
778
  "#262626"
779
779
  );
780
- R(
780
+ A(
781
781
  "Carbon",
782
782
  {
783
783
  primary: "#38bdf8",
@@ -791,7 +791,7 @@ R(
791
791
  { primary: "#f4f4f4", secondary: "#c6c6c6", muted: "#6f6f6f" },
792
792
  "#525252"
793
793
  );
794
- R(
794
+ A(
795
795
  "Cosmos",
796
796
  {
797
797
  primary: "#6366f1",
@@ -805,7 +805,7 @@ R(
805
805
  { primary: "#e5e7eb", secondary: "#9ca3af", muted: "#4b5563" },
806
806
  "#374151"
807
807
  );
808
- R(
808
+ A(
809
809
  "Nebula",
810
810
  {
811
811
  primary: "#e879f9",
@@ -819,7 +819,7 @@ R(
819
819
  { primary: "#fae8ff", secondary: "#d8b4fe", muted: "#7c3aed" },
820
820
  "#581c87"
821
821
  );
822
- R(
822
+ A(
823
823
  "Abyss",
824
824
  {
825
825
  primary: "#22d3ee",
@@ -833,7 +833,7 @@ R(
833
833
  { primary: "#e0f2fe", secondary: "#7dd3fc", muted: "#0369a1" },
834
834
  "#075985"
835
835
  );
836
- R(
836
+ A(
837
837
  "Shadow",
838
838
  {
839
839
  primary: "#a3a3a3",
@@ -847,7 +847,7 @@ R(
847
847
  { primary: "#e5e5e5", secondary: "#a3a3a3", muted: "#525252" },
848
848
  "#404040"
849
849
  );
850
- R(
850
+ A(
851
851
  "Emerald Dark",
852
852
  {
853
853
  primary: "#34d399",
@@ -1239,7 +1239,7 @@ l(
1239
1239
  { primary: "#2e3440", secondary: "#3b4252", muted: "#4c566a" },
1240
1240
  "#d8dee9"
1241
1241
  );
1242
- R(
1242
+ A(
1243
1243
  "Dracula",
1244
1244
  {
1245
1245
  primary: "#bd93f9",
@@ -1267,7 +1267,7 @@ l(
1267
1267
  { primary: "#073642", secondary: "#586e75", muted: "#93a1a1" },
1268
1268
  "#eee8d5"
1269
1269
  );
1270
- R(
1270
+ A(
1271
1271
  "Solarized Dark",
1272
1272
  {
1273
1273
  primary: "#268bd2",
@@ -1281,7 +1281,7 @@ R(
1281
1281
  { primary: "#eee8d5", secondary: "#93a1a1", muted: "#586e75" },
1282
1282
  "#073642"
1283
1283
  );
1284
- R(
1284
+ A(
1285
1285
  "Monokai",
1286
1286
  {
1287
1287
  primary: "#66d9ef",
@@ -1295,7 +1295,7 @@ R(
1295
1295
  { primary: "#f8f8f2", secondary: "#cfcfc2", muted: "#75715e" },
1296
1296
  "#3e3d32"
1297
1297
  );
1298
- R(
1298
+ A(
1299
1299
  "One Dark",
1300
1300
  {
1301
1301
  primary: "#61afef",
@@ -1309,7 +1309,7 @@ R(
1309
1309
  { primary: "#abb2bf", secondary: "#828997", muted: "#545862" },
1310
1310
  "#3e4452"
1311
1311
  );
1312
- R(
1312
+ A(
1313
1313
  "Synthwave",
1314
1314
  {
1315
1315
  primary: "#ff7edb",
@@ -1337,7 +1337,7 @@ l(
1337
1337
  { primary: "#4a1a4e", secondary: "#7b3f7d", muted: "#c080c0" },
1338
1338
  "#d8a8e8"
1339
1339
  );
1340
- R(
1340
+ A(
1341
1341
  "Terminal Green",
1342
1342
  {
1343
1343
  primary: "#00ff41",
@@ -1379,7 +1379,7 @@ l(
1379
1379
  { primary: "#3e2723", secondary: "#5d4037", muted: "#a1887f" },
1380
1380
  "#bcaaa4"
1381
1381
  );
1382
- R(
1382
+ A(
1383
1383
  "Cyberpunk",
1384
1384
  {
1385
1385
  primary: "#00f0ff",
@@ -1393,7 +1393,7 @@ R(
1393
1393
  { primary: "#e0fbfc", secondary: "#80d4dd", muted: "#3a6b72" },
1394
1394
  "#1c3a44"
1395
1395
  );
1396
- R(
1396
+ A(
1397
1397
  "Neon",
1398
1398
  {
1399
1399
  primary: "#ff00ff",
@@ -1407,7 +1407,7 @@ R(
1407
1407
  { primary: "#ffffff", secondary: "#cccccc", muted: "#666666" },
1408
1408
  "#333333"
1409
1409
  );
1410
- R(
1410
+ A(
1411
1411
  "Retrowave",
1412
1412
  {
1413
1413
  primary: "#f77fbe",
@@ -1435,7 +1435,7 @@ l(
1435
1435
  { primary: "#3b0a0a", secondary: "#7f1d1d", muted: "#dc6868" },
1436
1436
  "#e8a0a0"
1437
1437
  );
1438
- R(
1438
+ A(
1439
1439
  "Halloween",
1440
1440
  {
1441
1441
  primary: "#ff6600",
@@ -1645,7 +1645,7 @@ l(
1645
1645
  { primary: "#2b1a0e", secondary: "#5c3d1e", muted: "#a08060" },
1646
1646
  "#d4b896"
1647
1647
  );
1648
- R(
1648
+ A(
1649
1649
  "High Contrast Dark",
1650
1650
  {
1651
1651
  primary: "#ffff00",
@@ -1701,7 +1701,7 @@ l(
1701
1701
  { primary: "#0a0a0a", secondary: "#404040", muted: "#a3a3a3" },
1702
1702
  "#e5e5e5"
1703
1703
  );
1704
- R(
1704
+ A(
1705
1705
  "Warm Dark",
1706
1706
  {
1707
1707
  primary: "#f59e0b",
@@ -1715,7 +1715,7 @@ R(
1715
1715
  { primary: "#fafaf9", secondary: "#d6d3d1", muted: "#78716c" },
1716
1716
  "#57534e"
1717
1717
  );
1718
- R(
1718
+ A(
1719
1719
  "Soft Dark",
1720
1720
  {
1721
1721
  primary: "#a78bfa",
@@ -1812,7 +1812,7 @@ function _r({
1812
1812
  });
1813
1813
  },
1814
1814
  [a]
1815
- ), j = P(() => {
1815
+ ), K = P(() => {
1816
1816
  const w = "/new-endpoint";
1817
1817
  H((x) => ({
1818
1818
  ...x,
@@ -1826,7 +1826,7 @@ function _r({
1826
1826
  }
1827
1827
  }
1828
1828
  })), d(w), k("get");
1829
- }, [H]), K = P(
1829
+ }, [H]), j = P(
1830
1830
  (w) => {
1831
1831
  H((x) => {
1832
1832
  const { [w]: S, ...B } = x.paths;
@@ -1902,8 +1902,8 @@ function _r({
1902
1902
  onSelectEndpoint: (w, x) => {
1903
1903
  d(w), k(x);
1904
1904
  },
1905
- onAdd: j,
1906
- onDelete: K,
1905
+ onAdd: K,
1906
+ onDelete: j,
1907
1907
  onChange: H,
1908
1908
  readOnly: n
1909
1909
  }
@@ -2280,7 +2280,7 @@ const Ye = [
2280
2280
  content: "Build requests with collections and environment variables, send them and assert on the responses.",
2281
2281
  placement: "auto"
2282
2282
  }
2283
- ], Ze = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"], Qe = {
2283
+ ], Qe = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"], Ze = {
2284
2284
  id: "",
2285
2285
  name: "New Request",
2286
2286
  method: "GET",
@@ -2306,27 +2306,27 @@ function wr({
2306
2306
  const [f, y] = g(e), [b, d] = g(a), [v, k] = g(
2307
2307
  a.find((c) => c.isActive) || null
2308
2308
  ), [m, T] = g({
2309
- ...Qe,
2309
+ ...Ze,
2310
2310
  id: crypto.randomUUID()
2311
- }), [_, I] = g(null), [H, j] = g(!1), [K, G] = g("none"), [$, U] = g(
2311
+ }), [_, I] = g(null), [H, K] = g(!1), [j, G] = g("none"), [$, U] = g(
2312
2312
  "params"
2313
- ), [O, q] = g("body"), [w, x] = g(""), [S, B] = g(""), [V, z] = g([]), [L, X] = g([]), F = se(null), Z = P(async () => {
2313
+ ), [O, q] = g("body"), [w, x] = g(""), [S, B] = g(""), [V, z] = g([]), [L, X] = g([]), F = se(null), Q = P(async () => {
2314
2314
  var D;
2315
2315
  if (!m.url)
2316
2316
  return;
2317
- j(!0), I(null), z([]);
2317
+ K(!0), I(null), z([]);
2318
2318
  const c = Object.fromEntries(
2319
- Object.entries((v == null ? void 0 : v.variables) || {}).map(([E, A]) => [E, A.value])
2319
+ Object.entries((v == null ? void 0 : v.variables) || {}).map(([E, R]) => [E, R.value])
2320
2320
  ), o = {
2321
2321
  ...m,
2322
2322
  url: ne(m.url, c),
2323
2323
  headers: Object.fromEntries(
2324
- Object.entries(m.headers).map(([E, A]) => [E, ne(A, c)])
2324
+ Object.entries(m.headers).map(([E, R]) => [E, ne(R, c)])
2325
2325
  ),
2326
2326
  queryParams: Object.fromEntries(
2327
- Object.entries(m.queryParams).map(([E, A]) => [
2327
+ Object.entries(m.queryParams).map(([E, R]) => [
2328
2328
  E,
2329
- ne(A, c)
2329
+ ne(R, c)
2330
2330
  ])
2331
2331
  )
2332
2332
  }, N = performance.now();
@@ -2336,15 +2336,15 @@ function wr({
2336
2336
  E = await i(o);
2337
2337
  else {
2338
2338
  F.current = new AbortController();
2339
- const A = { ...o.headers };
2340
- m.auth && rr(A, m.auth);
2339
+ const R = { ...o.headers };
2340
+ m.auth && rr(R, m.auth);
2341
2341
  const Se = er(o.url, o.queryParams), oe = {
2342
2342
  method: o.method,
2343
- headers: A,
2343
+ headers: R,
2344
2344
  signal: F.current.signal
2345
2345
  };
2346
- ["POST", "PUT", "PATCH"].includes(o.method) && ((D = m.body) != null && D.content) && (oe.body = typeof m.body.content == "string" ? m.body.content : JSON.stringify(m.body.content), m.body.type === "json" && (A["Content-Type"] = "application/json"));
2347
- const Q = await fetch(Se, oe), ae = await Q.text();
2346
+ ["POST", "PUT", "PATCH"].includes(o.method) && ((D = m.body) != null && D.content) && (oe.body = typeof m.body.content == "string" ? m.body.content : JSON.stringify(m.body.content), m.body.type === "json" && (R["Content-Type"] = "application/json"));
2347
+ const Z = await fetch(Se, oe), ae = await Z.text();
2348
2348
  let ie;
2349
2349
  try {
2350
2350
  ie = JSON.parse(ae);
@@ -2353,9 +2353,9 @@ function wr({
2353
2353
  }
2354
2354
  const Ce = performance.now();
2355
2355
  E = {
2356
- status: Q.status,
2357
- statusText: Q.statusText,
2358
- headers: Object.fromEntries(Q.headers.entries()),
2356
+ status: Z.status,
2357
+ statusText: Z.statusText,
2358
+ headers: Object.fromEntries(Z.headers.entries()),
2359
2359
  body: ie,
2360
2360
  time: Math.round(Ce - N),
2361
2361
  size: new Blob([ae]).size,
@@ -2363,10 +2363,10 @@ function wr({
2363
2363
  };
2364
2364
  }
2365
2365
  if (I(E), X(
2366
- (A) => [...A, { request: m, response: E }].slice(-50)
2366
+ (R) => [...R, { request: m, response: E }].slice(-50)
2367
2367
  ), S) {
2368
- const A = ir(S, E);
2369
- z(A);
2368
+ const R = ir(S, E);
2369
+ z(R);
2370
2370
  }
2371
2371
  } catch (E) {
2372
2372
  E.name !== "AbortError" && I({
@@ -2379,11 +2379,11 @@ function wr({
2379
2379
  timestamp: /* @__PURE__ */ new Date()
2380
2380
  });
2381
2381
  } finally {
2382
- j(!1), F.current = null;
2382
+ K(!1), F.current = null;
2383
2383
  }
2384
2384
  }, [m, v, i, S]), Y = P(() => {
2385
2385
  var c;
2386
- (c = F.current) == null || c.abort(), j(!1);
2386
+ (c = F.current) == null || c.abort(), K(!1);
2387
2387
  }, []), p = P(() => {
2388
2388
  T((c) => ({
2389
2389
  ...c,
@@ -2433,7 +2433,7 @@ function wr({
2433
2433
  method: c.target.value
2434
2434
  })),
2435
2435
  className: `nice-api-tester__method nice-api-tester__method--${m.method.toLowerCase()}`,
2436
- children: Ze.map((c) => /* @__PURE__ */ r("option", { value: c, children: c }, c))
2436
+ children: Qe.map((c) => /* @__PURE__ */ r("option", { value: c, children: c }, c))
2437
2437
  }
2438
2438
  ),
2439
2439
  /* @__PURE__ */ r(
@@ -2449,7 +2449,7 @@ function wr({
2449
2449
  /* @__PURE__ */ r(
2450
2450
  "button",
2451
2451
  {
2452
- onClick: H ? Y : Z,
2452
+ onClick: H ? Y : Q,
2453
2453
  className: `nice-api-tester__send-btn ${H ? "nice-api-tester__send-btn--loading" : ""}`,
2454
2454
  children: H ? "Cancel" : "Send"
2455
2455
  }
@@ -2488,7 +2488,7 @@ function wr({
2488
2488
  sr,
2489
2489
  {
2490
2490
  body: m.body,
2491
- bodyTab: K,
2491
+ bodyTab: j,
2492
2492
  onBodyTabChange: G,
2493
2493
  onChange: (c) => T((o) => ({ ...o, body: c }))
2494
2494
  }
@@ -3012,7 +3012,7 @@ function Nr({
3012
3012
  }) {
3013
3013
  const [y, b] = g(
3014
3014
  e || { ...lr, id: crypto.randomUUID() }
3015
- ), [d, v] = g(null), [k, m] = g(!0), [T, _] = g("canvas"), [I, H] = g(!1), [j, K] = g(null), [G, $] = g(!1), [U, O] = g(null), [q, w] = g(!1), x = se(null), S = P(
3015
+ ), [d, v] = g(null), [k, m] = g(!0), [T, _] = g("canvas"), [I, H] = g(!1), [K, j] = g(null), [G, $] = g(!1), [U, O] = g(null), [q, w] = g(!1), x = se(null), S = P(
3016
3016
  (p) => {
3017
3017
  b((h) => {
3018
3018
  const C = p(h);
@@ -3086,13 +3086,13 @@ function Nr({
3086
3086
  [S]
3087
3087
  ), F = P(
3088
3088
  (p) => {
3089
- if (p.preventDefault(), !j || !x.current)
3089
+ if (p.preventDefault(), !K || !x.current)
3090
3090
  return;
3091
3091
  const h = x.current.getBoundingClientRect(), C = p.clientX - h.left, c = p.clientY - h.top;
3092
- B(j, { x: C, y: c }), H(!1), K(null);
3092
+ B(K, { x: C, y: c }), H(!1), j(null);
3093
3093
  },
3094
- [j, B]
3095
- ), Z = P(async () => {
3094
+ [K, B]
3095
+ ), Q = P(async () => {
3096
3096
  if (s) {
3097
3097
  w(!0);
3098
3098
  try {
@@ -3129,7 +3129,7 @@ function Nr({
3129
3129
  /* @__PURE__ */ r(
3130
3130
  "button",
3131
3131
  {
3132
- onClick: Z,
3132
+ onClick: Q,
3133
3133
  disabled: q,
3134
3134
  className: "nice-integration-builder__run-btn",
3135
3135
  children: q ? "⏳ Running..." : "▶ Run"
@@ -3149,10 +3149,10 @@ function Nr({
3149
3149
  className: "nice-integration-builder__palette-item",
3150
3150
  draggable: !0,
3151
3151
  onDragStart: () => {
3152
- H(!0), K(h.type);
3152
+ H(!0), j(h.type);
3153
3153
  },
3154
3154
  onDragEnd: () => {
3155
- H(!1), K(null);
3155
+ H(!1), j(null);
3156
3156
  },
3157
3157
  children: [
3158
3158
  /* @__PURE__ */ r("span", { className: "nice-integration-builder__palette-icon", children: h.icon }),
@@ -3180,7 +3180,7 @@ function Nr({
3180
3180
  onClick: () => v(null),
3181
3181
  children: [
3182
3182
  /* @__PURE__ */ r("svg", { className: "nice-integration-builder__connections", children: y.connections.map((p) => {
3183
- const h = y.nodes.find((A) => A.id === p.sourceNodeId), C = y.nodes.find((A) => A.id === p.targetNodeId);
3183
+ const h = y.nodes.find((R) => R.id === p.sourceNodeId), C = y.nodes.find((R) => R.id === p.targetNodeId);
3184
3184
  if (!h || !C)
3185
3185
  return null;
3186
3186
  const c = h.position.x + 150, o = h.position.y + 30, N = C.position.x, D = C.position.y + 30, E = (c + N) / 2;
@@ -3653,26 +3653,26 @@ const xr = ke(
3653
3653
  style: T,
3654
3654
  id: _,
3655
3655
  "data-testid": I
3656
- } = a, [H, j] = g(n), [K, G] = g(s), [$, U] = g(() => fe(u)), [O, q] = g(f), [w, x] = g(""), [S, B] = g(!1), [V, z] = g(null), [L, X] = g(null), F = Te(() => {
3656
+ } = a, [H, K] = g(n), [j, G] = g(s), [$, U] = g(() => fe(u)), [O, q] = g(f), [w, x] = g(""), [S, B] = g(!1), [V, z] = g(null), [L, X] = g(null), F = Te(() => {
3657
3657
  const o = /* @__PURE__ */ new Map();
3658
3658
  for (const N of y)
3659
3659
  o.set(N.id, N);
3660
3660
  return o;
3661
- }, [y]), Z = (o) => {
3661
+ }, [y]), Q = (o) => {
3662
3662
  x(o);
3663
3663
  const N = F.get(o);
3664
3664
  N && (q(N.payload), N.headers && U(fe(N.headers)));
3665
3665
  }, Y = (o, N) => {
3666
- U((D) => D.map((E, A) => A === o ? { ...E, ...N } : E));
3666
+ U((D) => D.map((E, R) => R === o ? { ...E, ...N } : E));
3667
3667
  }, p = async () => {
3668
3668
  B(!0), z(null), X(null);
3669
3669
  try {
3670
3670
  const o = pe($);
3671
3671
  if (d && d.secret) {
3672
- const A = await hr(d.secret, O);
3673
- o[d.header] = `${d.prefix ?? ""}${A}`;
3672
+ const R = await hr(d.secret, O);
3673
+ o[d.header] = `${d.prefix ?? ""}${R}`;
3674
3674
  }
3675
- const N = typeof performance < "u" ? performance.now() : Date.now(), D = await b({ url: H, method: K ?? "POST", headers: o, body: O }), E = Math.round(
3675
+ const N = typeof performance < "u" ? performance.now() : Date.now(), D = await b({ url: H, method: j ?? "POST", headers: o, body: O }), E = Math.round(
3676
3676
  (typeof performance < "u" ? performance.now() : Date.now()) - N
3677
3677
  );
3678
3678
  X({ ...D, durationMs: D.durationMs ?? E });
@@ -3700,7 +3700,7 @@ const xr = ke(
3700
3700
  "select",
3701
3701
  {
3702
3702
  className: "nice-webhook-tester__method",
3703
- value: K,
3703
+ value: j,
3704
3704
  onChange: (o) => G(o.target.value),
3705
3705
  "aria-label": "Method",
3706
3706
  children: ["POST", "PUT", "GET", "PATCH", "DELETE"].map((o) => /* @__PURE__ */ r("option", { value: o, children: o }, o))
@@ -3713,7 +3713,7 @@ const xr = ke(
3713
3713
  className: "nice-webhook-tester__url",
3714
3714
  value: H,
3715
3715
  placeholder: "https://example.com/api/payments/stripe/webhook",
3716
- onChange: (o) => j(o.target.value),
3716
+ onChange: (o) => K(o.target.value),
3717
3717
  "aria-label": "URL"
3718
3718
  }
3719
3719
  ),
@@ -3731,7 +3731,7 @@ const xr = ke(
3731
3731
  y.length > 0 && /* @__PURE__ */ r("div", { className: "nice-webhook-tester__samples", children: /* @__PURE__ */ t("label", { children: [
3732
3732
  "Sample:",
3733
3733
  " ",
3734
- /* @__PURE__ */ t("select", { value: w, onChange: (o) => Z(o.target.value), children: [
3734
+ /* @__PURE__ */ t("select", { value: w, onChange: (o) => Q(o.target.value), children: [
3735
3735
  /* @__PURE__ */ r("option", { value: "", children: "— choose a saved payload —" }),
3736
3736
  y.map((o) => /* @__PURE__ */ r("option", { value: o.id, children: o.name }, o.id))
3737
3737
  ] })
@@ -3770,7 +3770,7 @@ const xr = ke(
3770
3770
  "button",
3771
3771
  {
3772
3772
  type: "button",
3773
- onClick: () => U((D) => D.filter((E, A) => A !== N)),
3773
+ onClick: () => U((D) => D.filter((E, R) => R !== N)),
3774
3774
  "aria-label": "Remove header",
3775
3775
  children: "✕"
3776
3776
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice2dev/ui-api",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "Nice2Dev API & Integration Platform — OpenAPI editor, API testing, integration builder",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",