Merge branch 'features/input' into 'dev'
Features/input See merge request sae-but2/2025-26/gestion-benevoles-association/Frontend!12
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
import styles from "./input.module.css";
|
||||||
|
|
||||||
|
const TextInput = ({ placeholder, onChange, value, borderStyle, ...props }) => {
|
||||||
|
|
||||||
|
|
||||||
|
let inputBorderStyle = styles.square;
|
||||||
|
if (borderStyle === "square") inputBorderStyle = styles.square;
|
||||||
|
if(borderStyle === "rounded") inputBorderStyle = styles.rounded;
|
||||||
|
|
||||||
|
return <input className={`${styles.input} ${inputBorderStyle}`} onChange={onChange} placeholder={placeholder} value={value} {...props} />
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TextInput;
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
.input {
|
||||||
|
border: 1px solid rgba(200, 200, 200, 0.3);
|
||||||
|
background: rgba(255, 255, 255, 0.3);
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
-webkit-backdrop-filter: blur(10px);
|
||||||
|
color: #000;
|
||||||
|
font-size: 16px;
|
||||||
|
outline: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
width: fit-content;
|
||||||
|
padding: 8px 10px 8px 10px;
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input::placeholder {
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.input:focus {
|
||||||
|
border-color: rgba(200, 200, 200, 0.6);
|
||||||
|
box-shadow: 0 4px 30px rgba(255, 255, 255, 0.2);
|
||||||
|
background: rgba(255, 255, 255, 0.38);
|
||||||
|
}
|
||||||
|
|
||||||
|
.rounded {
|
||||||
|
border-radius: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.square {
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import { useState } from "react";
|
||||||
|
import TextInput from "../components/ui/input/input.jsx";
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'UI/Input',
|
||||||
|
component: TextInput,
|
||||||
|
parameters: {
|
||||||
|
layout: 'centered',
|
||||||
|
},
|
||||||
|
tags: ['autodocs'],
|
||||||
|
args: {
|
||||||
|
placeholder: "Placeholder",
|
||||||
|
borderStyle: "square",
|
||||||
|
value: "",
|
||||||
|
onChange: () => {}
|
||||||
|
},
|
||||||
|
argTypes: {
|
||||||
|
placeholder: {
|
||||||
|
control: 'text',
|
||||||
|
description: 'Texte affiché quand le champ est vide.',
|
||||||
|
},
|
||||||
|
borderStyle: {
|
||||||
|
control: { type: 'select' },
|
||||||
|
options: ['square', 'rounded'],
|
||||||
|
description: 'Style de bordure du champ.',
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
control: 'text',
|
||||||
|
description: 'Valeur actuelle du champ de texte.',
|
||||||
|
},
|
||||||
|
onChange: {
|
||||||
|
action: 'changed',
|
||||||
|
description: 'Fonction appelée à chaque changement de valeur.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const InputRender = ({ placeholder, borderStyle }) => {
|
||||||
|
const [value, setValue] = useState("");
|
||||||
|
|
||||||
|
return <div>
|
||||||
|
<p>Value: {value}</p>
|
||||||
|
<TextInput placeholder={placeholder} borderStyle={borderStyle} value={value} onChange={e => setValue(e.target.value)} />
|
||||||
|
</div>
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Default = (args) => <InputRender {...args} />;
|
||||||
|
export const Rounded = (args) => <InputRender {...args} />;
|
||||||
|
Rounded.args = {
|
||||||
|
placeholder: "Rounded",
|
||||||
|
borderStyle: "rounded",
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user