import { Meta, StoryObj } from "@storybook/nextjs-vite";
import { LoadersTemplate } from "./LoadersTemplate";
import { fn } from "storybook/test";
import { buildLoadersDefaults } from "@/lib/admin/builder/state/defaults/loaders";
import type { LoadersScreenDefinition } from "@/lib/funnel/types";

// Получаем дефолтные значения из builder
const defaultScreen = buildLoadersDefaults("loaders-screen-story") as LoadersScreenDefinition;

/** LoadersTemplate - экраны с анимированными загрузчиками */
const meta: Meta<typeof LoadersTemplate> = {
  title: "Funnel Templates/LoadersTemplate",
  component: LoadersTemplate,
  tags: ["autodocs"],
  parameters: {
    layout: "fullscreen",
  },
  args: {
    screen: defaultScreen,
    onContinue: fn(),
    canGoBack: false, // Обычно на лоадерах нет кнопки назад
    onBack: fn(),
    screenProgress: undefined, // У лоадеров обычно нет прогресса
    defaultTexts: {
      nextButton: "Next",
      
    },
  },
  argTypes: {
    screen: {
      control: { type: "object" },
    },
    screenProgress: {
      control: { type: "object" },
    },
    onContinue: { action: "continue" },
    onBack: { action: "back" },
  },
};

export default meta;
type Story = StoryObj<typeof meta>;

/** Дефолтный loaders экран */
export const Default: Story = {};

/** Лоадеры с быстрой анимацией */
export const FastAnimation: Story = {
  args: {
    screen: {
      ...defaultScreen,
      progressbars: {
        ...defaultScreen.progressbars,
        transitionDuration: 1000, // Быстрее
      },
    },
  },
};

/** Лоадеры с медленной анимацией */
export const SlowAnimation: Story = {
  args: {
    screen: {
      ...defaultScreen,
      progressbars: {
        ...defaultScreen.progressbars,
        transitionDuration: 5000, // Медленнее
      },
    },
  },
};

/** Лоадеры с кастомными сообщениями */
export const CustomMessages: Story = {
  args: {
    screen: {
      ...defaultScreen,
      progressbars: {
        ...defaultScreen.progressbars,
        items: [
          {
            processingTitle: "Анализируем ваши ответы...",
            processingSubtitle: "Обработка данных",
            completedTitle: "Анализ завершен",
            completedSubtitle: "Готово!",
          },
          {
            processingTitle: "Создаем персональный портрет...",
            processingSubtitle: "Генерация",
            completedTitle: "Портрет готов",
            completedSubtitle: "Завершено",
          },
        ],
      },
    },
  },
};

/** Лоадеры с header (необычно, но возможно) */
export const WithHeader: Story = {
  args: {
    screen: {
      ...defaultScreen,
      header: {
        show: true,
        showBackButton: false,
        showProgress: true,
      },
    },
    screenProgress: { current: 7, total: 10 },
  },
};
