let componentsData;
try {
    componentsData = require('../../../../dist/components_json.json');
}
catch (error) {
    console.warn('components_json.json non trouvé. Utilisation de valeurs par défaut.');
    componentsData = {};
}
import { withComponentControls, toKebabCase } from "../../../utils/utils";
const elementTag = 'spw-file-upload';
const argTypes = withComponentControls(componentsData, { tag: elementTag });
const meta = {
    title: 'Composants/Envoi de fichiers (input upload)',
    component: elementTag,
    argTypes,
    tags: ['autodocs'],
    parameters: {
        docs: {
            description: {
                component: `

Le composant File Upload permet aux utilisateurs de sélectionner et télécharger un ou plusieurs fichiers vers l'application. Il intègre validation de type, taille et nombre de fichiers avec feedback visuel.

## Fonctionnalités

- Sélection de fichiers unique ou multiple
- Drag and drop pour déposer des fichiers
- Validation des types de fichiers acceptés
- Limitation de taille par fichier (Mo)
- Limitation du nombre de fichiers
- Aperçu des fichiers sélectionnés
- Suppression individuelle des fichiers
- Messages d'erreur détaillés

## Cas d'usage

- Upload de documents
- Envoi de photos ou images
- Ajout de pièces jointes dans formulaires
- Import de fichiers de données (CSV, Excel)
- Téléchargement de fichiers multiples

[<spw-link>Consulter la documentation</spw-link>](https://zeroheight.com/2310c7a1e/p/934c31-envoi-de-fichiers-upload)
        `,
            },
        },
    },
};
export default meta;
const Template = args => {
    const element = document.createElement(elementTag);
    const controls = withComponentControls(componentsData, { tag: elementTag }) || {};
    const masterProps = controls.__realProps || Object.keys(controls);
    Object.entries(args).forEach(([key, val]) => {
        if (masterProps.includes(key)) {
            element.setAttribute(toKebabCase(key), val);
        }
        else if (key.startsWith('on')) {
            element.addEventListener(key.substring(2).toLowerCase(), val);
        }
    });
    return element;
};
export const Default = Template.bind({});
Default.args = {
    multiple: true,
    name: 'upload',
    maxFiles: 3,
    maxFileSize: 3,
    accept: '.pdf, .doc, .docx',
};
