@houssemdi2000/design-system 1.0.0 → 1.1.0
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/__tests__/Button.test.d.ts +1 -0
- package/dist/components/Bloc/Bloc.d.ts +10 -0
- package/dist/components/Bloc/Bloc.stories.d.ts +10 -0
- package/dist/components/Bloc/index.d.ts +1 -0
- package/dist/components/Button/Button.d.ts +6 -1
- package/dist/components/Button/Button.stories.d.ts +16 -0
- package/dist/components/Card/Card.d.ts +8 -2
- package/dist/components/Card/Card.stories.d.ts +11 -0
- package/dist/components/Center/Center.d.ts +7 -0
- package/dist/components/Center/Center.stories.d.ts +7 -0
- package/dist/components/Center/index.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +15 -0
- package/dist/components/Checkbox/Checkbox.stories.d.ts +6 -0
- package/dist/components/Checkbox/index.d.ts +1 -0
- package/dist/components/Column/Column.d.ts +8 -0
- package/dist/components/Column/index.d.ts +1 -0
- package/dist/components/Container/Container.d.ts +9 -0
- package/dist/components/Container/Container.stories.d.ts +7 -0
- package/dist/components/Container/index.d.ts +1 -0
- package/dist/components/Divider/Divider.d.ts +8 -0
- package/dist/components/Divider/Divider.stories.d.ts +7 -0
- package/dist/components/Divider/index.d.ts +1 -0
- package/dist/components/Grid/Grid.d.ts +10 -0
- package/dist/components/Grid/Grid.stories.d.ts +6 -0
- package/dist/components/Grid/index.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +18 -0
- package/dist/components/Radio/Radio.stories.d.ts +6 -0
- package/dist/components/Radio/index.d.ts +1 -0
- package/dist/components/Row/Row.d.ts +8 -0
- package/dist/components/Row/index.d.ts +1 -0
- package/dist/components/Select/Select.d.ts +22 -0
- package/dist/components/Select/Select.stories.d.ts +7 -0
- package/dist/components/Select/index.d.ts +1 -0
- package/dist/components/Spacer/Spacer.d.ts +6 -0
- package/dist/components/Spacer/Spacer.stories.d.ts +7 -0
- package/dist/components/Spacer/index.d.ts +1 -0
- package/dist/components/TextField/TextField.d.ts +14 -0
- package/dist/components/TextField/TextField.stories.d.ts +9 -0
- package/dist/components/TextField/index.d.ts +1 -0
- package/dist/components/Toast/ToastContext.d.ts +17 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/index.esm.js +136 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +147 -4
- package/dist/index.js.map +1 -1
- package/dist/stories/Button.d.ts +15 -0
- package/dist/stories/Button.stories.d.ts +8 -0
- package/dist/stories/Header.d.ts +12 -0
- package/dist/stories/Header.stories.d.ts +6 -0
- package/dist/stories/Page.d.ts +3 -0
- package/dist/stories/Page.stories.d.ts +6 -0
- package/package.json +21 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./Bloc.css";
|
|
3
|
+
export type BlocLayout = "default" | "center" | "row" | "row-between" | "column" | "sidebar" | "navbar";
|
|
4
|
+
export interface BlocProps {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: React.CSSProperties;
|
|
8
|
+
layout?: BlocLayout;
|
|
9
|
+
}
|
|
10
|
+
export declare const Bloc: React.FC<BlocProps>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Bloc").BlocProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const CustomColors: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const Navbar: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const Sidebar: () => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const Center: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Bloc';
|
|
@@ -3,8 +3,13 @@ import React from "react";
|
|
|
3
3
|
export interface ButtonProps {
|
|
4
4
|
label: string;
|
|
5
5
|
onClick?: () => void;
|
|
6
|
-
variant?: "primary" | "secondary" | "danger";
|
|
6
|
+
variant?: "primary" | "secondary" | "danger" | "dark" | "light";
|
|
7
7
|
size?: "small" | "medium" | "large";
|
|
8
8
|
disabled?: boolean;
|
|
9
|
+
icon?: React.ReactNode;
|
|
10
|
+
iconPosition?: "left" | "right";
|
|
11
|
+
backgroundColor?: string;
|
|
12
|
+
color?: string;
|
|
13
|
+
isLoading?: boolean;
|
|
9
14
|
}
|
|
10
15
|
export declare const Button: React.FC<ButtonProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Button").ButtonProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Primary: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Secondary: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const Large: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const Disabled: () => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const Dark: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const Light: () => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare const Click: () => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare const WithIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const WithIconRight: () => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare const CustomColors: () => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const Loading: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import "./Card.css";
|
|
2
3
|
export interface CardProps {
|
|
3
|
-
title
|
|
4
|
-
|
|
4
|
+
title?: string;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
backgroundColor?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
variant?: "elevated" | "outlined" | "flat";
|
|
9
|
+
padding?: "sm" | "md" | "lg";
|
|
10
|
+
footer?: React.ReactNode;
|
|
5
11
|
}
|
|
6
12
|
export declare const Card: React.FC<CardProps>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Card").CardProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const DefaultCard: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const CardWithTitle: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const GreenCard: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const WithCustomContent: () => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const LargePaddingCard: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const DarkCard: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Center").CenterProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const DefaultCenter: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const DarkCenter: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Center";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./Checkbox.css";
|
|
3
|
+
export interface CheckboxProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
onChange: (value: boolean) => void;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
error?: boolean;
|
|
9
|
+
boxColor?: string;
|
|
10
|
+
checkColor?: string;
|
|
11
|
+
checkedBackground?: string;
|
|
12
|
+
focusShadow?: string;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
}
|
|
15
|
+
export declare const Checkbox: React.FC<CheckboxProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Checkbox";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Column";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Container").ContainerProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Custom: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Container";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Divider").DividerProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Horizontal: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Vertical: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Divider";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface GridColumn {
|
|
2
|
+
children?: React.ReactNode;
|
|
3
|
+
span?: number;
|
|
4
|
+
style?: React.CSSProperties;
|
|
5
|
+
className?: "small" | "medium" | "large";
|
|
6
|
+
}
|
|
7
|
+
export interface GridProps {
|
|
8
|
+
items: GridColumn[];
|
|
9
|
+
}
|
|
10
|
+
export declare const Grid: React.FC<GridProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Grid";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./Radio.css";
|
|
3
|
+
export interface RadioProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
value: string;
|
|
7
|
+
selectedValue: string;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
error?: boolean;
|
|
11
|
+
borderColor?: string;
|
|
12
|
+
dotColor?: string;
|
|
13
|
+
checkedBorderColor?: string;
|
|
14
|
+
checkedBackground?: string;
|
|
15
|
+
focusShadow?: string;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
export declare const Radio: React.FC<RadioProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Radio";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Row";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./Select.css";
|
|
3
|
+
export interface SelectOption {
|
|
4
|
+
value: string | number;
|
|
5
|
+
label: string;
|
|
6
|
+
bgColor?: string;
|
|
7
|
+
textColor?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SelectProps {
|
|
10
|
+
label?: string;
|
|
11
|
+
value: string | number;
|
|
12
|
+
onChange: (value: string | number) => void;
|
|
13
|
+
options: SelectOption[];
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
error?: boolean;
|
|
16
|
+
borderColor?: string;
|
|
17
|
+
focusBorder?: string;
|
|
18
|
+
focusShadow?: string;
|
|
19
|
+
errorColor?: string;
|
|
20
|
+
style?: React.CSSProperties;
|
|
21
|
+
}
|
|
22
|
+
export declare const Select: React.FC<SelectProps>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Select").SelectProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Custom: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Select";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./Spacer").SpacerProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Vertical: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Horizontal: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Spacer";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./TextField.css";
|
|
3
|
+
export interface TextFieldProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
onChange?: (value: string) => void;
|
|
8
|
+
error?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
type?: string;
|
|
11
|
+
fullWidth?: boolean;
|
|
12
|
+
icon?: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare const TextField: React.FC<TextFieldProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("react").FC<import("./TextField").TextFieldProps>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const WithError: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const Disabled: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const WithIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./TextField";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./Toast.css";
|
|
3
|
+
export type ToastVariant = "success" | "error" | "warning" | "info";
|
|
4
|
+
export interface Toast {
|
|
5
|
+
id: string;
|
|
6
|
+
message: string;
|
|
7
|
+
variant?: ToastVariant;
|
|
8
|
+
duration?: number;
|
|
9
|
+
}
|
|
10
|
+
interface ToastContextType {
|
|
11
|
+
addToast: (msg: string, variant?: ToastVariant, duration?: number) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const useToast: () => ToastContextType;
|
|
14
|
+
export declare const ToastProvider: React.FC<{
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
}>;
|
|
17
|
+
export {};
|
|
@@ -1 +1,14 @@
|
|
|
1
1
|
export * from './Button';
|
|
2
|
+
export * from './Center';
|
|
3
|
+
export * from './Card';
|
|
4
|
+
export * from './Bloc';
|
|
5
|
+
export * from './Container';
|
|
6
|
+
export * from './Row';
|
|
7
|
+
export * from './Column';
|
|
8
|
+
export * from './Grid';
|
|
9
|
+
export * from './Spacer';
|
|
10
|
+
export * from './Divider';
|
|
11
|
+
export * from './Checkbox';
|
|
12
|
+
export * from './TextField';
|
|
13
|
+
export * from './Radio';
|
|
14
|
+
export * from './Select';
|
package/dist/index.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
3
|
function styleInject(css, ref) {
|
|
4
4
|
if ( ref === void 0 ) ref = {};
|
|
5
5
|
var insertAt = ref.insertAt;
|
|
6
6
|
|
|
7
|
-
if (typeof document === 'undefined') { return; }
|
|
7
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
8
8
|
|
|
9
9
|
var head = document.head || document.getElementsByTagName('head')[0];
|
|
10
10
|
var style = document.createElement('style');
|
|
@@ -27,12 +27,142 @@ function styleInject(css, ref) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
var css_248z = ".btn{border:none;border-radius:4px;cursor:pointer;font-size:16px;font-weight:500;padding:10px 20px;transition:all .3s ease}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover{background-color:#0056b3}.btn-secondary{background-color:#6c757d;color:#fff}.btn-danger{background-color:#dc3545;color:#fff}.btn-small{font-size:14px;padding:5px 10px}.btn-medium{font-size:16px;padding:10px 20px}.btn-large{font-size:18px;padding:15px 30px}.btn:disabled{cursor:not-allowed;opacity:.5}";
|
|
30
|
+
var css_248z$a = ".btn{align-items:center;border:none;border-radius:4px;cursor:pointer;display:inline-flex;font-size:16px;font-weight:500;justify-content:center;padding:10px 20px;transition:all .3s ease}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover{background-color:#0056b3}.btn-secondary{background-color:#6c757d;color:#fff}.btn-danger{background-color:#dc3545;color:#fff}.btn-dark{background-color:#141617;color:#fff}.btn-light{background-color:#f8f9fa;color:#000}.btn-small{font-size:14px;padding:5px 10px}.btn-medium{font-size:16px;padding:10px 20px}.btn-large{font-size:18px;padding:15px 30px}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-left-icon{margin-right:8px}.btn-left-icon,.btn-right-icon{align-items:center;display:inline-flex}.btn-right-icon{margin-left:8px}.btn-spinner{animation:spin .7s linear infinite;border:3px solid hsla(0,0%,100%,.4);border-radius:50%;border-top-color:#fff;display:inline-block;height:12px;margin-left:5px;width:12px}@keyframes spin{to{transform:rotate(1turn)}}.btn-loading{cursor:not-allowed;position:relative}.btn-loading span,.btn-loading svg{opacity:0}.btn-loading>:not(.btn-spinner){visibility:hidden}";
|
|
31
|
+
styleInject(css_248z$a);
|
|
32
|
+
|
|
33
|
+
const Button = ({ label, onClick, variant = "primary", size = "medium", disabled = false, icon, iconPosition = "left", backgroundColor, color, isLoading = false, }) => {
|
|
34
|
+
return (jsx(Fragment, { children: jsxs("button", { className: `btn btn-${variant} btn-${size}`, onClick: onClick, disabled: disabled || isLoading, style: { backgroundColor, color }, children: [icon && iconPosition === "left" && jsx("span", { className: "btn-left-icon", children: icon }), label, icon && iconPosition === "right" && jsx("span", { className: "btn-right-icon", children: icon }), isLoading && jsx("span", { className: "btn-spinner" })] }) }));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
var css_248z$9 = ".center{align-items:center;display:flex;justify-content:center}";
|
|
38
|
+
styleInject(css_248z$9);
|
|
39
|
+
|
|
40
|
+
const Center = ({ children, backgroundColor = 'white', color = 'black' }) => {
|
|
41
|
+
return jsx("div", { className: "center", style: { backgroundColor, color }, children: children });
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
var css_248z$8 = ".card{background:#fff;border-radius:12px;display:flex;flex-direction:column;gap:12px;transition:box-shadow .2s ease,transform .2s ease}.card-elevated{box-shadow:0 2px 4px rgba(0,0,0,.08),0 8px 16px rgba(0,0,0,.06)}.card-elevated:hover{box-shadow:0 4px 8px rgba(0,0,0,.1),0 12px 24px rgba(0,0,0,.08);transform:translateY(-2px)}.card-outlined{border:1px solid #e5e7eb}.card-flat{background:transparent;border:none}.card-padding-sm{padding:8px}.card-padding-md{padding:16px}.card-padding-lg{padding:24px}.card-header{font-size:1.25rem;font-weight:600;margin-bottom:4px}.card-body{font-size:.95rem;line-height:1.5}.card-footer{border-top:1px solid #ececec;color:#555;font-size:.9rem;margin-top:8px;padding-top:8px}";
|
|
45
|
+
styleInject(css_248z$8);
|
|
46
|
+
|
|
47
|
+
const Card = ({ title, children, footer, backgroundColor, color, variant = "elevated", padding = "md", }) => {
|
|
48
|
+
return (jsxs("div", { className: `card card-${variant} card-padding-${padding}`, style: { backgroundColor, color }, children: [title && jsx("div", { className: "card-header", children: title }), jsx("div", { className: "card-body", children: children }), footer && jsx("div", { className: "card-footer", children: footer })] }));
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var css_248z$7 = ".bloc{box-sizing:border-box;max-width:100%;padding:16px;width:100%}@media (max-width:600px){.bloc{border-radius:6px;padding:12px}}@media (max-width:900px){.bloc{padding:14px}}";
|
|
52
|
+
styleInject(css_248z$7);
|
|
53
|
+
|
|
54
|
+
const Bloc = ({ children, className = "", style = {}, layout = "default", }) => {
|
|
55
|
+
const layoutStyles = (() => {
|
|
56
|
+
switch (layout) {
|
|
57
|
+
case "center":
|
|
58
|
+
return { display: "flex", justifyContent: "center", alignItems: "center" };
|
|
59
|
+
case "row":
|
|
60
|
+
return { display: "flex", flexDirection: "row", alignItems: "center" };
|
|
61
|
+
case "row-between":
|
|
62
|
+
return { display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center" };
|
|
63
|
+
case "column":
|
|
64
|
+
return { display: "flex", flexDirection: "column", alignItems: "flex-start" };
|
|
65
|
+
case "sidebar":
|
|
66
|
+
return { display: "flex", flexDirection: "column", alignItems: "flex-start", gap: "12px" };
|
|
67
|
+
case "navbar":
|
|
68
|
+
return { display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center", padding: "12px 20px" };
|
|
69
|
+
default:
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
})();
|
|
73
|
+
return (jsx("div", { className: `bloc ${className}`, style: Object.assign(Object.assign({}, layoutStyles), style), children: children }));
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var css_248z$6 = ".container{margin:0 auto;padding:0 16px;width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1200px}}.container-fluid{max-width:100%}";
|
|
77
|
+
styleInject(css_248z$6);
|
|
78
|
+
|
|
79
|
+
const Container = ({ children, className = "", style = {}, fluid = false }) => {
|
|
80
|
+
return (jsx("div", { className: `container ${fluid ? "container-fluid" : ""} ${className}`, style: style, children: children }));
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var css_248z$5 = ".row{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:row;gap:16px}@media (max-width:768px){.row{flex-direction:column}}";
|
|
84
|
+
styleInject(css_248z$5);
|
|
85
|
+
|
|
86
|
+
const Row = ({ children, className = "", style = {} }) => {
|
|
87
|
+
return jsx("div", { className: `row ${className}`, style: Object.assign({}, style), children: children });
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
var css_248z$4 = ".col,.column{box-sizing:border-box;flex:1 1 0;min-width:0;padding:8px}.col.small{max-width:20%}.col.medium{max-width:50%}.col.large{max-width:100%}.col>*,.column>*{box-sizing:border-box;max-width:100%;overflow-wrap:anywhere;word-break:break-word}.col img,.column img{display:block;height:auto;max-width:100%}@media (max-width:768px){.col,.col.large,.col.medium,.col.small,.column{flex:none;max-width:100%;width:100%}}";
|
|
91
|
+
styleInject(css_248z$4);
|
|
92
|
+
|
|
93
|
+
const Column = ({ children, className = "", style = {} }) => {
|
|
94
|
+
return (jsx("div", { className: `col ${className}`, style: Object.assign({}, style), children: children }));
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const Grid = ({ items }) => {
|
|
98
|
+
return (jsx(Row, { children: items.map((item, index) => (jsx(Column, { className: item.className, style: Object.assign({}, item.style), children: item.children }, index))) }));
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const Spacer = ({ size = 16, direction = "vertical" }) => {
|
|
102
|
+
const style = direction === "vertical"
|
|
103
|
+
? { height: size }
|
|
104
|
+
: { width: size, display: "inline-block" };
|
|
105
|
+
return jsx("div", { style: style });
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const Divider = ({ color = "#e0e0e0", thickness = 1, orientation = "horizontal", margin = 8, }) => {
|
|
109
|
+
const styles = orientation === "horizontal"
|
|
110
|
+
? {
|
|
111
|
+
width: "100%",
|
|
112
|
+
height: thickness,
|
|
113
|
+
backgroundColor: color,
|
|
114
|
+
margin: `${margin}px 0`,
|
|
115
|
+
}
|
|
116
|
+
: {
|
|
117
|
+
width: thickness,
|
|
118
|
+
height: "100%",
|
|
119
|
+
backgroundColor: color,
|
|
120
|
+
margin: `0 ${margin}px`,
|
|
121
|
+
};
|
|
122
|
+
return jsx("div", { style: styles });
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var css_248z$3 = ".checkbox-container{align-items:center;cursor:pointer;display:flex;font-family:sans-serif;gap:8px;user-select:none}.checkbox-container.disabled{cursor:not-allowed;opacity:.5}.checkbox-container input{appearance:none;-webkit-appearance:none;height:0;position:absolute;width:0}.checkbox-box{border:2px solid var(--cb-box-color,#777);border-radius:4px;display:inline-block;height:18px;position:relative;transition:.2s ease;width:18px}.checkbox-container input:checked+.checkbox-box{background-color:var(--cb-checked-bg,#007bff);border-color:var(--cb-checked-bg,#007bff)}.checkbox-container input:checked+.checkbox-box:after{border-width:medium;border-bottom:2px solid var(--cb-check-color,#fff);border-left:0 solid var(--cb-check-color,#fff);border-right:2px solid var(--cb-check-color,#fff);border-top:0 solid var(--cb-check-color,#fff);content:\"\";height:10px;left:5px;position:absolute;top:1px;transform:rotate(45deg);width:5px}.checkbox-container input:focus+.checkbox-box{box-shadow:0 0 4px var(--cb-focus-shadow,rgba(0,123,255,.4))}.checkbox-box.error{border-color:#d93025!important}.checkbox-label{font-size:14px}";
|
|
126
|
+
styleInject(css_248z$3);
|
|
127
|
+
|
|
128
|
+
const Checkbox = ({ label, checked, onChange, disabled = false, error = false, boxColor = "#777", checkColor = "#fff", checkedBackground = "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", style, }) => {
|
|
129
|
+
return (jsxs("label", { className: `checkbox-container ${disabled ? "disabled" : ""}`, style: {
|
|
130
|
+
["--cb-box-color"]: boxColor,
|
|
131
|
+
["--cb-check-color"]: checkColor,
|
|
132
|
+
["--cb-checked-bg"]: checkedBackground,
|
|
133
|
+
["--cb-focus-shadow"]: focusShadow,
|
|
134
|
+
}, children: [jsx("input", { type: "checkbox", checked: checked, disabled: disabled, onChange: (e) => onChange(e.target.checked) }), jsx("span", { className: `checkbox-box ${error ? "error" : ""}` }), label && jsx("span", { className: "checkbox-label", children: label })] }));
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
var css_248z$2 = ".textfield{display:flex;flex-direction:column;font-family:sans-serif;gap:6px}.fullWidth{width:100%}.textfield-label{color:#333;font-size:14px;font-weight:600}.textfield-input{border:1px solid #ccc;border-radius:6px;font-size:14px;padding:10px 12px;transition:.2s ease}.textfield-input:focus{border-color:#4c00ff;box-shadow:0 0 2px #007bff;outline:none}.textfield-input.error{background-color:#fff5f5;border-color:#d93025}.textfield-error{background-color:#f44343;color:#ece6e6;font-size:12px;padding:8px}.textfield-icon{position:absolute;right:45px;top:45px;width:2px}";
|
|
138
|
+
styleInject(css_248z$2);
|
|
139
|
+
|
|
140
|
+
const TextField = ({ label, value = "", placeholder, onChange, error, disabled = false, type = "text", fullWidth = true, icon, }) => {
|
|
141
|
+
return (jsxs("div", { className: `textfield ${fullWidth ? "fullWidth" : ""}`, children: [label && jsx("label", { className: "textfield-label", children: label }), jsx("input", { type: type, className: `textfield-input ${error ? "error" : ""}`, value: value, placeholder: placeholder, disabled: disabled, onChange: (e) => onChange && onChange(e.target.value) }), icon && jsx("div", { className: "textfield-icon", children: icon }), error && jsx("p", { className: "textfield-error", children: error })] }));
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
var css_248z$1 = ".radio-container{align-items:center;cursor:pointer;display:flex;font-family:sans-serif;gap:8px}.radio-container input{display:none}.radio-circle{align-items:center;border:2px solid var(--rd-border-color,#777);border-radius:50%;display:flex;height:18px;justify-content:center;position:relative;transition:.2s ease;width:18px}.radio-circle:after{background-color:var(--rd-dot-color,#fff);border-radius:50%;content:\"\";height:10px;opacity:0;transform:scale(.4);transition:.2s ease;width:10px}.radio-container input:checked+.radio-circle{background-color:var(--rd-checked-bg,#007bff);border-color:var(--rd-checked-border,#007bff)}.radio-container input:checked+.radio-circle:after{opacity:1;transform:scale(1)}.radio-circle.error{border-color:#d93025!important}.radio-label{font-size:14px}.disabled{cursor:not-allowed;opacity:.6}";
|
|
145
|
+
styleInject(css_248z$1);
|
|
146
|
+
|
|
147
|
+
const Radio = ({ label, name, value, selectedValue, onChange, disabled = false, error = false, borderColor = "#777", dotColor = "#fff", checkedBorderColor = "#007bff", checkedBackground = error ? "#d93025" : "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", style, }) => {
|
|
148
|
+
const checked = selectedValue === value;
|
|
149
|
+
return (jsxs("label", { className: `radio-container ${disabled ? "disabled" : ""}`, style: Object.assign(Object.assign({}, style), { ["--rd-border-color"]: borderColor, ["--rd-dot-color"]: dotColor, ["--rd-checked-border"]: checkedBorderColor, ["--rd-checked-bg"]: checkedBackground, ["--rd-focus-shadow"]: focusShadow }), children: [jsx("input", { type: "radio", name: name, value: value, disabled: disabled, checked: checked, onChange: () => onChange(value) }), jsx("span", { className: `radio-circle ${error ? "error" : ""}` }), label && jsx("span", { className: "radio-label", children: label })] }));
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
var css_248z = ".select-wrapper{display:flex;flex-direction:column;font-family:sans-serif;gap:4px}.select-label{font-size:14px;font-weight:500}.select-container{position:relative;width:100%}.select-container select{background:#fff;border:1px solid var(--sel-border,#ccc);border-radius:6px;cursor:pointer;font-size:15px;padding:10px 12px;transition:all .2s ease;width:100%}.select-container select:focus{border-color:var(--sel-focus-border,#007bff);box-shadow:0 0 0 2px var(--sel-focus-shadow,rgba(0,123,255,.4));outline:none}.select-container.disabled select{background:#f2f2f2;cursor:not-allowed;opacity:.6}.select-container.error select{border-color:var(--sel-error,red)}.select-container.error select:focus{border-color:var(--sel-error,red);box-shadow:0 0 0 2px rgba(230,57,70,.35)}";
|
|
31
153
|
styleInject(css_248z);
|
|
32
154
|
|
|
33
|
-
const
|
|
34
|
-
return (jsx(
|
|
155
|
+
const Select = ({ label, value, onChange, options, disabled = false, error = false, borderColor = "#ccc", focusBorder = "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", errorColor = "#e63946", style, }) => {
|
|
156
|
+
return (jsxs("div", { className: "select-wrapper", style: style, children: [label && jsx("label", { className: "select-label", children: label }), jsx("div", { className: `select-container ${disabled ? "disabled" : ""} ${error ? "error" : ""}`, children: jsx("select", { value: value, disabled: disabled, onChange: (e) => onChange(e.target.value), style: {
|
|
157
|
+
["--sel-border"]: borderColor,
|
|
158
|
+
["--sel-focus-border"]: focusBorder,
|
|
159
|
+
["--sel-focus-shadow"]: focusShadow,
|
|
160
|
+
["--sel-error"]: errorColor,
|
|
161
|
+
}, children: options.map((opt) => (jsx("option", { value: opt.value, style: {
|
|
162
|
+
backgroundColor: opt.bgColor,
|
|
163
|
+
color: opt.textColor,
|
|
164
|
+
}, children: opt.label }, opt.value))) }) })] }));
|
|
35
165
|
};
|
|
36
166
|
|
|
37
|
-
export { Button };
|
|
167
|
+
export { Bloc, Button, Card, Center, Checkbox, Column, Container, Divider, Grid, Radio, Row, Select, Spacer, TextField };
|
|
38
168
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./Button.css\";\r\nimport React from \"react\";\r\n\r\n\r\nexport interface ButtonProps {\r\n label: string;\r\n onClick?: () => void;\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"small\" | \"medium\" | \"large\";\r\n disabled?: boolean;\r\n}\r\n\r\nexport const Button: React.FC<ButtonProps> = ({\r\n label,\r\n onClick,\r\n variant = \"primary\",\r\n size = \"medium\",\r\n disabled = false,\r\n}) => {\r\n return (\r\n <>\r\n <button\r\n className={`btn btn-${variant} btn-${size}`}\r\n onClick={onClick}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </button>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsx"],"mappings":";;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;MCba,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,KAAK,GACjB,KAAI;IACH,QACEA,0BACEA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,QAAA,EAAW,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,EAC3C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,KAAK,EAAA,CACC,EAAA,CACR;AAEP;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Center/Center.tsx","../src/components/Card/Card.tsx","../src/components/Bloc/Bloc.tsx","../src/components/Container/Container.tsx","../src/components/Row/Row.tsx","../src/components/Column/Column.tsx","../src/components/Grid/Grid.tsx","../src/components/Spacer/Spacer.tsx","../src/components/Divider/Divider.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/TextField/TextField.tsx","../src/components/Radio/Radio.tsx","../src/components/Select/Select.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./Button.css\";\r\nimport React from \"react\";\r\n\r\n\r\nexport interface ButtonProps {\r\n label: string;\r\n onClick?: () => void;\r\n variant?: \"primary\" | \"secondary\" | \"danger\" | \"dark\" | \"light\";\r\n size?: \"small\" | \"medium\" | \"large\";\r\n disabled?: boolean;\r\n icon?: React.ReactNode;\r\n iconPosition?: \"left\" | \"right\";\r\n backgroundColor?: string;\r\n color?: string;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport const Button: React.FC<ButtonProps> = ({\r\n label,\r\n onClick,\r\n variant = \"primary\",\r\n size = \"medium\",\r\n disabled = false,\r\n icon,\r\n iconPosition = \"left\",\r\n backgroundColor,\r\n color,\r\n isLoading = false,\r\n}) => {\r\n return (\r\n <>\r\n <button\r\n className={`btn btn-${variant} btn-${size}`}\r\n onClick={onClick}\r\n disabled={disabled || isLoading}\r\n style={{ backgroundColor, color }}\r\n >\r\n {icon && iconPosition === \"left\" && <span className=\"btn-left-icon\">{icon}</span>}\r\n {label}\r\n {icon && iconPosition === \"right\" && <span className=\"btn-right-icon\">{icon}</span>}\r\n {isLoading && <span className=\"btn-spinner\"></span>}\r\n </button>\r\n </>\r\n );\r\n};\r\n","import \"./Center.css\"\r\n\r\nexport interface CenterProps {\r\n children: React.ReactNode;\r\n backgroundColor?: string;\r\n color?: string;\r\n}\r\n\r\nexport const Center: React.FC<CenterProps> = ({ children, backgroundColor = 'white', color = 'black' }) => {\r\n return <div className=\"center\" style={{ backgroundColor, color}}>{children}</div>;\r\n};\r\n","import React from \"react\";\r\nimport \"./Card.css\";\r\n\r\nexport interface CardProps {\r\n title?: string;\r\n children: React.ReactNode;\r\n backgroundColor?: string;\r\n color?: string;\r\n variant?: \"elevated\" | \"outlined\" | \"flat\";\r\n padding?: \"sm\" | \"md\" | \"lg\";\r\n footer?: React.ReactNode;\r\n}\r\n\r\nexport const Card: React.FC<CardProps> = ({\r\n title,\r\n children,\r\n footer,\r\n backgroundColor,\r\n color,\r\n variant = \"elevated\",\r\n padding = \"md\",\r\n}) => {\r\n return (\r\n <div\r\n className={`card card-${variant} card-padding-${padding}`}\r\n style={{ backgroundColor, color }}\r\n >\r\n {title && <div className=\"card-header\">{title}</div>}\r\n <div className=\"card-body\">{children}</div>\r\n {footer && <div className=\"card-footer\">{footer}</div>}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Bloc.css\";\r\n\r\nexport type BlocLayout =\r\n | \"default\"\r\n | \"center\"\r\n | \"row\"\r\n | \"row-between\"\r\n | \"column\"\r\n | \"sidebar\"\r\n | \"navbar\";\r\n\r\nexport interface BlocProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n layout?: BlocLayout;\r\n}\r\n\r\nexport const Bloc: React.FC<BlocProps> = ({\r\n children,\r\n className = \"\",\r\n style = {},\r\n layout = \"default\",\r\n}) => {\r\n const layoutStyles: React.CSSProperties = (() => {\r\n switch (layout) {\r\n case \"center\":\r\n return { display: \"flex\", justifyContent: \"center\", alignItems: \"center\" };\r\n case \"row\":\r\n return { display: \"flex\", flexDirection: \"row\", alignItems: \"center\" };\r\n case \"row-between\":\r\n return { display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\", alignItems: \"center\" };\r\n case \"column\":\r\n return { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\" };\r\n case \"sidebar\":\r\n return { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\", gap: \"12px\" };\r\n case \"navbar\":\r\n return { display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\", alignItems: \"center\", padding: \"12px 20px\" };\r\n default:\r\n return {};\r\n }\r\n })();\r\n\r\n return (\r\n <div className={`bloc ${className}`} style={{ ...layoutStyles, ...style }}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Container.css\";\r\n\r\nexport interface ContainerProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n fluid?: boolean;\r\n}\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, className = \"\", style = {}, fluid = false }) => {\r\n return (\r\n <div className={`container ${fluid ? \"container-fluid\" : \"\"} ${className}`} style={style}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Row.css\";\r\n\r\nexport interface RowProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({\r\n children,\r\n className = \"\",\r\n style = {}\r\n}) => {\r\n return <div className={`row ${className}`} style={{...style}}>{children}</div>;\r\n};\r\n","import React from \"react\";\r\nimport \"./Column.css\";\r\n\r\nexport interface ColumnProps {\r\n children?: React.ReactNode;\r\n className?: \"small\" | \"medium\" | \"large\";\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Column: React.FC<ColumnProps> = ({ children, className = \"\", style = {}}) => {\r\n return (\r\n <div className={`col ${className}`} style={{...style}}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import { Column } from \"../Column\";\r\nimport { Row } from \"../Row\";\r\n\r\nexport interface GridColumn {\r\n children?: React.ReactNode;\r\n span?: number;\r\n style?: React.CSSProperties;\r\n className?: \"small\" | \"medium\" | \"large\";\r\n}\r\n\r\nexport interface GridProps {\r\n items: GridColumn[];\r\n}\r\n\r\nexport const Grid: React.FC<GridProps> = ({ items }) => {\r\n\r\n return (\r\n <Row>\r\n {items.map((item: GridColumn, index: number) => (\r\n <Column\r\n key={index}\r\n className={item.className}\r\n style={{ ...item.style }}\r\n >\r\n {item.children}\r\n </Column>\r\n ))}\r\n </Row>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport interface SpacerProps {\r\n size?: number;\r\n direction?: \"vertical\" | \"horizontal\";\r\n}\r\n\r\nexport const Spacer: React.FC<SpacerProps> = ({\r\n size = 16,\r\n direction = \"vertical\"\r\n}) => {\r\n const style: React.CSSProperties =\r\n direction === \"vertical\"\r\n ? { height: size }\r\n : { width: size, display: \"inline-block\" };\r\n\r\n return <div style={style} />;\r\n};\r\n","import React from \"react\";\r\n\r\nexport interface DividerProps {\r\n color?: string;\r\n thickness?: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n margin?: number;\r\n}\r\n\r\nexport const Divider: React.FC<DividerProps> = ({\r\n color = \"#e0e0e0\",\r\n thickness = 1,\r\n orientation = \"horizontal\",\r\n margin = 8,\r\n}) => {\r\n const styles: React.CSSProperties =\r\n orientation === \"horizontal\"\r\n ? {\r\n width: \"100%\",\r\n height: thickness,\r\n backgroundColor: color,\r\n margin: `${margin}px 0`,\r\n }\r\n : {\r\n width: thickness,\r\n height: \"100%\",\r\n backgroundColor: color,\r\n margin: `0 ${margin}px`,\r\n };\r\n\r\n return <div style={styles} />;\r\n};\r\n","import React from \"react\";\r\nimport \"./Checkbox.css\";\r\n\r\nexport interface CheckboxProps {\r\n label?: string;\r\n checked: boolean;\r\n onChange: (value: boolean) => void;\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Custom colors\r\n boxColor?: string;\r\n checkColor?: string;\r\n checkedBackground?: string;\r\n focusShadow?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Checkbox: React.FC<CheckboxProps> = ({\r\n label,\r\n checked,\r\n onChange,\r\n disabled = false,\r\n error = false,\r\n\r\n boxColor = \"#777\",\r\n checkColor = \"#fff\",\r\n checkedBackground = \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n\r\n style,\r\n}) => {\r\n return (\r\n <label\r\n className={`checkbox-container ${disabled ? \"disabled\" : \"\"}`}\r\n style={{\r\n [\"--cb-box-color\" as any]: boxColor,\r\n [\"--cb-check-color\" as any]: checkColor,\r\n [\"--cb-checked-bg\" as any]: checkedBackground,\r\n [\"--cb-focus-shadow\" as any]: focusShadow,\r\n }}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n checked={checked}\r\n disabled={disabled}\r\n onChange={(e) => onChange(e.target.checked)}\r\n />\r\n\r\n <span className={`checkbox-box ${error ? \"error\" : \"\"}`} />\r\n\r\n {label && <span className=\"checkbox-label\">{label}</span>}\r\n </label>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./TextField.css\";\r\n\r\nexport interface TextFieldProps {\r\n label?: string;\r\n value?: string;\r\n placeholder?: string;\r\n onChange?: (value: string) => void;\r\n error?: string;\r\n disabled?: boolean;\r\n type?: string;\r\n fullWidth?: boolean;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const TextField: React.FC<TextFieldProps> = ({\r\n label,\r\n value = \"\",\r\n placeholder,\r\n onChange,\r\n error,\r\n disabled = false,\r\n type = \"text\",\r\n fullWidth = true,\r\n icon,\r\n}) => {\r\n return (\r\n <div className={`textfield ${fullWidth ? \"fullWidth\" : \"\"}`}>\r\n {label && <label className=\"textfield-label\">{label}</label>}\r\n\r\n <input\r\n type={type}\r\n className={`textfield-input ${error ? \"error\" : \"\"}`}\r\n value={value}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n onChange={(e) => onChange && onChange(e.target.value)}\r\n />\r\n {icon && <div className=\"textfield-icon\">{icon}</div>}\r\n\r\n {error && <p className=\"textfield-error\">{error}</p>}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Radio.css\";\r\n\r\nexport interface RadioProps {\r\n label?: string;\r\n name: string; // obligatoire pour grouper les radios\r\n value: string;\r\n selectedValue: string;\r\n onChange: (value: string) => void;\r\n\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Thème custom\r\n borderColor?: string;\r\n dotColor?: string;\r\n checkedBorderColor?: string;\r\n checkedBackground?: string;\r\n focusShadow?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Radio: React.FC<RadioProps> = ({\r\n label,\r\n name,\r\n value,\r\n selectedValue,\r\n onChange,\r\n disabled = false,\r\n error = false,\r\n\r\n borderColor = \"#777\",\r\n dotColor = \"#fff\",\r\n checkedBorderColor = \"#007bff\",\r\n checkedBackground = error ? \"#d93025\" : \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n\r\n style,\r\n}) => {\r\n const checked = selectedValue === value;\r\n\r\n return (\r\n <label\r\n className={`radio-container ${disabled ? \"disabled\" : \"\"}`}\r\n style={{\r\n ...style,\r\n [\"--rd-border-color\" as any]: borderColor,\r\n [\"--rd-dot-color\" as any]: dotColor,\r\n [\"--rd-checked-border\" as any]: checkedBorderColor,\r\n [\"--rd-checked-bg\" as any]: checkedBackground,\r\n [\"--rd-focus-shadow\" as any]: focusShadow,\r\n }}\r\n >\r\n <input\r\n type=\"radio\"\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n checked={checked}\r\n onChange={() => onChange(value)}\r\n />\r\n\r\n <span className={`radio-circle ${error ? \"error\" : \"\"}`} />\r\n\r\n {label && <span className=\"radio-label\">{label}</span>}\r\n </label>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Select.css\";\r\n\r\nexport interface SelectOption {\r\n value: string | number;\r\n label: string;\r\n\r\n bgColor?: string;\r\n textColor?: string;\r\n}\r\n\r\nexport interface SelectProps {\r\n label?: string;\r\n value: string | number;\r\n onChange: (value: string | number) => void;\r\n options: SelectOption[];\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Custom colors\r\n borderColor?: string;\r\n focusBorder?: string;\r\n focusShadow?: string;\r\n errorColor?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Select: React.FC<SelectProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n disabled = false,\r\n error = false,\r\n\r\n borderColor = \"#ccc\",\r\n focusBorder = \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n errorColor = \"#e63946\",\r\n\r\n style,\r\n}) => {\r\n return (\r\n <div className=\"select-wrapper\" style={style}>\r\n {label && <label className=\"select-label\">{label}</label>}\r\n\r\n <div\r\n className={`select-container ${disabled ? \"disabled\" : \"\"} ${\r\n error ? \"error\" : \"\"\r\n }`}\r\n >\r\n <select\r\n value={value}\r\n disabled={disabled}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n [\"--sel-border\" as any]: borderColor,\r\n [\"--sel-focus-border\" as any]: focusBorder,\r\n [\"--sel-focus-shadow\" as any]: focusShadow,\r\n [\"--sel-error\" as any]: errorColor,\r\n }}\r\n >\r\n {options.map((opt) => (\r\n <option\r\n key={opt.value}\r\n value={opt.value}\r\n style={{\r\n backgroundColor: opt.bgColor,\r\n color: opt.textColor,\r\n }}\r\n >\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ function styleInject(css, ref) {
|
|
|
6
6
|
if ( ref === void 0 ) ref = {};
|
|
7
7
|
var insertAt = ref.insertAt;
|
|
8
8
|
|
|
9
|
-
if (typeof document === 'undefined') { return; }
|
|
9
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
10
10
|
|
|
11
11
|
var head = document.head || document.getElementsByTagName('head')[0];
|
|
12
12
|
var style = document.createElement('style');
|
|
@@ -29,12 +29,155 @@ function styleInject(css, ref) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
var css_248z = ".btn{border:none;border-radius:4px;cursor:pointer;font-size:16px;font-weight:500;padding:10px 20px;transition:all .3s ease}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover{background-color:#0056b3}.btn-secondary{background-color:#6c757d;color:#fff}.btn-danger{background-color:#dc3545;color:#fff}.btn-small{font-size:14px;padding:5px 10px}.btn-medium{font-size:16px;padding:10px 20px}.btn-large{font-size:18px;padding:15px 30px}.btn:disabled{cursor:not-allowed;opacity:.5}";
|
|
32
|
+
var css_248z$a = ".btn{align-items:center;border:none;border-radius:4px;cursor:pointer;display:inline-flex;font-size:16px;font-weight:500;justify-content:center;padding:10px 20px;transition:all .3s ease}.btn-primary{background-color:#007bff;color:#fff}.btn-primary:hover{background-color:#0056b3}.btn-secondary{background-color:#6c757d;color:#fff}.btn-danger{background-color:#dc3545;color:#fff}.btn-dark{background-color:#141617;color:#fff}.btn-light{background-color:#f8f9fa;color:#000}.btn-small{font-size:14px;padding:5px 10px}.btn-medium{font-size:16px;padding:10px 20px}.btn-large{font-size:18px;padding:15px 30px}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-left-icon{margin-right:8px}.btn-left-icon,.btn-right-icon{align-items:center;display:inline-flex}.btn-right-icon{margin-left:8px}.btn-spinner{animation:spin .7s linear infinite;border:3px solid hsla(0,0%,100%,.4);border-radius:50%;border-top-color:#fff;display:inline-block;height:12px;margin-left:5px;width:12px}@keyframes spin{to{transform:rotate(1turn)}}.btn-loading{cursor:not-allowed;position:relative}.btn-loading span,.btn-loading svg{opacity:0}.btn-loading>:not(.btn-spinner){visibility:hidden}";
|
|
33
|
+
styleInject(css_248z$a);
|
|
34
|
+
|
|
35
|
+
const Button = ({ label, onClick, variant = "primary", size = "medium", disabled = false, icon, iconPosition = "left", backgroundColor, color, isLoading = false, }) => {
|
|
36
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("button", { className: `btn btn-${variant} btn-${size}`, onClick: onClick, disabled: disabled || isLoading, style: { backgroundColor, color }, children: [icon && iconPosition === "left" && jsxRuntime.jsx("span", { className: "btn-left-icon", children: icon }), label, icon && iconPosition === "right" && jsxRuntime.jsx("span", { className: "btn-right-icon", children: icon }), isLoading && jsxRuntime.jsx("span", { className: "btn-spinner" })] }) }));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var css_248z$9 = ".center{align-items:center;display:flex;justify-content:center}";
|
|
40
|
+
styleInject(css_248z$9);
|
|
41
|
+
|
|
42
|
+
const Center = ({ children, backgroundColor = 'white', color = 'black' }) => {
|
|
43
|
+
return jsxRuntime.jsx("div", { className: "center", style: { backgroundColor, color }, children: children });
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var css_248z$8 = ".card{background:#fff;border-radius:12px;display:flex;flex-direction:column;gap:12px;transition:box-shadow .2s ease,transform .2s ease}.card-elevated{box-shadow:0 2px 4px rgba(0,0,0,.08),0 8px 16px rgba(0,0,0,.06)}.card-elevated:hover{box-shadow:0 4px 8px rgba(0,0,0,.1),0 12px 24px rgba(0,0,0,.08);transform:translateY(-2px)}.card-outlined{border:1px solid #e5e7eb}.card-flat{background:transparent;border:none}.card-padding-sm{padding:8px}.card-padding-md{padding:16px}.card-padding-lg{padding:24px}.card-header{font-size:1.25rem;font-weight:600;margin-bottom:4px}.card-body{font-size:.95rem;line-height:1.5}.card-footer{border-top:1px solid #ececec;color:#555;font-size:.9rem;margin-top:8px;padding-top:8px}";
|
|
47
|
+
styleInject(css_248z$8);
|
|
48
|
+
|
|
49
|
+
const Card = ({ title, children, footer, backgroundColor, color, variant = "elevated", padding = "md", }) => {
|
|
50
|
+
return (jsxRuntime.jsxs("div", { className: `card card-${variant} card-padding-${padding}`, style: { backgroundColor, color }, children: [title && jsxRuntime.jsx("div", { className: "card-header", children: title }), jsxRuntime.jsx("div", { className: "card-body", children: children }), footer && jsxRuntime.jsx("div", { className: "card-footer", children: footer })] }));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var css_248z$7 = ".bloc{box-sizing:border-box;max-width:100%;padding:16px;width:100%}@media (max-width:600px){.bloc{border-radius:6px;padding:12px}}@media (max-width:900px){.bloc{padding:14px}}";
|
|
54
|
+
styleInject(css_248z$7);
|
|
55
|
+
|
|
56
|
+
const Bloc = ({ children, className = "", style = {}, layout = "default", }) => {
|
|
57
|
+
const layoutStyles = (() => {
|
|
58
|
+
switch (layout) {
|
|
59
|
+
case "center":
|
|
60
|
+
return { display: "flex", justifyContent: "center", alignItems: "center" };
|
|
61
|
+
case "row":
|
|
62
|
+
return { display: "flex", flexDirection: "row", alignItems: "center" };
|
|
63
|
+
case "row-between":
|
|
64
|
+
return { display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center" };
|
|
65
|
+
case "column":
|
|
66
|
+
return { display: "flex", flexDirection: "column", alignItems: "flex-start" };
|
|
67
|
+
case "sidebar":
|
|
68
|
+
return { display: "flex", flexDirection: "column", alignItems: "flex-start", gap: "12px" };
|
|
69
|
+
case "navbar":
|
|
70
|
+
return { display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center", padding: "12px 20px" };
|
|
71
|
+
default:
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
})();
|
|
75
|
+
return (jsxRuntime.jsx("div", { className: `bloc ${className}`, style: Object.assign(Object.assign({}, layoutStyles), style), children: children }));
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var css_248z$6 = ".container{margin:0 auto;padding:0 16px;width:100%}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1200px}}.container-fluid{max-width:100%}";
|
|
79
|
+
styleInject(css_248z$6);
|
|
80
|
+
|
|
81
|
+
const Container = ({ children, className = "", style = {}, fluid = false }) => {
|
|
82
|
+
return (jsxRuntime.jsx("div", { className: `container ${fluid ? "container-fluid" : ""} ${className}`, style: style, children: children }));
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
var css_248z$5 = ".row{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:row;gap:16px}@media (max-width:768px){.row{flex-direction:column}}";
|
|
86
|
+
styleInject(css_248z$5);
|
|
87
|
+
|
|
88
|
+
const Row = ({ children, className = "", style = {} }) => {
|
|
89
|
+
return jsxRuntime.jsx("div", { className: `row ${className}`, style: Object.assign({}, style), children: children });
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
var css_248z$4 = ".col,.column{box-sizing:border-box;flex:1 1 0;min-width:0;padding:8px}.col.small{max-width:20%}.col.medium{max-width:50%}.col.large{max-width:100%}.col>*,.column>*{box-sizing:border-box;max-width:100%;overflow-wrap:anywhere;word-break:break-word}.col img,.column img{display:block;height:auto;max-width:100%}@media (max-width:768px){.col,.col.large,.col.medium,.col.small,.column{flex:none;max-width:100%;width:100%}}";
|
|
93
|
+
styleInject(css_248z$4);
|
|
94
|
+
|
|
95
|
+
const Column = ({ children, className = "", style = {} }) => {
|
|
96
|
+
return (jsxRuntime.jsx("div", { className: `col ${className}`, style: Object.assign({}, style), children: children }));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const Grid = ({ items }) => {
|
|
100
|
+
return (jsxRuntime.jsx(Row, { children: items.map((item, index) => (jsxRuntime.jsx(Column, { className: item.className, style: Object.assign({}, item.style), children: item.children }, index))) }));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const Spacer = ({ size = 16, direction = "vertical" }) => {
|
|
104
|
+
const style = direction === "vertical"
|
|
105
|
+
? { height: size }
|
|
106
|
+
: { width: size, display: "inline-block" };
|
|
107
|
+
return jsxRuntime.jsx("div", { style: style });
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const Divider = ({ color = "#e0e0e0", thickness = 1, orientation = "horizontal", margin = 8, }) => {
|
|
111
|
+
const styles = orientation === "horizontal"
|
|
112
|
+
? {
|
|
113
|
+
width: "100%",
|
|
114
|
+
height: thickness,
|
|
115
|
+
backgroundColor: color,
|
|
116
|
+
margin: `${margin}px 0`,
|
|
117
|
+
}
|
|
118
|
+
: {
|
|
119
|
+
width: thickness,
|
|
120
|
+
height: "100%",
|
|
121
|
+
backgroundColor: color,
|
|
122
|
+
margin: `0 ${margin}px`,
|
|
123
|
+
};
|
|
124
|
+
return jsxRuntime.jsx("div", { style: styles });
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
var css_248z$3 = ".checkbox-container{align-items:center;cursor:pointer;display:flex;font-family:sans-serif;gap:8px;user-select:none}.checkbox-container.disabled{cursor:not-allowed;opacity:.5}.checkbox-container input{appearance:none;-webkit-appearance:none;height:0;position:absolute;width:0}.checkbox-box{border:2px solid var(--cb-box-color,#777);border-radius:4px;display:inline-block;height:18px;position:relative;transition:.2s ease;width:18px}.checkbox-container input:checked+.checkbox-box{background-color:var(--cb-checked-bg,#007bff);border-color:var(--cb-checked-bg,#007bff)}.checkbox-container input:checked+.checkbox-box:after{border-width:medium;border-bottom:2px solid var(--cb-check-color,#fff);border-left:0 solid var(--cb-check-color,#fff);border-right:2px solid var(--cb-check-color,#fff);border-top:0 solid var(--cb-check-color,#fff);content:\"\";height:10px;left:5px;position:absolute;top:1px;transform:rotate(45deg);width:5px}.checkbox-container input:focus+.checkbox-box{box-shadow:0 0 4px var(--cb-focus-shadow,rgba(0,123,255,.4))}.checkbox-box.error{border-color:#d93025!important}.checkbox-label{font-size:14px}";
|
|
128
|
+
styleInject(css_248z$3);
|
|
129
|
+
|
|
130
|
+
const Checkbox = ({ label, checked, onChange, disabled = false, error = false, boxColor = "#777", checkColor = "#fff", checkedBackground = "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", style, }) => {
|
|
131
|
+
return (jsxRuntime.jsxs("label", { className: `checkbox-container ${disabled ? "disabled" : ""}`, style: {
|
|
132
|
+
["--cb-box-color"]: boxColor,
|
|
133
|
+
["--cb-check-color"]: checkColor,
|
|
134
|
+
["--cb-checked-bg"]: checkedBackground,
|
|
135
|
+
["--cb-focus-shadow"]: focusShadow,
|
|
136
|
+
}, children: [jsxRuntime.jsx("input", { type: "checkbox", checked: checked, disabled: disabled, onChange: (e) => onChange(e.target.checked) }), jsxRuntime.jsx("span", { className: `checkbox-box ${error ? "error" : ""}` }), label && jsxRuntime.jsx("span", { className: "checkbox-label", children: label })] }));
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
var css_248z$2 = ".textfield{display:flex;flex-direction:column;font-family:sans-serif;gap:6px}.fullWidth{width:100%}.textfield-label{color:#333;font-size:14px;font-weight:600}.textfield-input{border:1px solid #ccc;border-radius:6px;font-size:14px;padding:10px 12px;transition:.2s ease}.textfield-input:focus{border-color:#4c00ff;box-shadow:0 0 2px #007bff;outline:none}.textfield-input.error{background-color:#fff5f5;border-color:#d93025}.textfield-error{background-color:#f44343;color:#ece6e6;font-size:12px;padding:8px}.textfield-icon{position:absolute;right:45px;top:45px;width:2px}";
|
|
140
|
+
styleInject(css_248z$2);
|
|
141
|
+
|
|
142
|
+
const TextField = ({ label, value = "", placeholder, onChange, error, disabled = false, type = "text", fullWidth = true, icon, }) => {
|
|
143
|
+
return (jsxRuntime.jsxs("div", { className: `textfield ${fullWidth ? "fullWidth" : ""}`, children: [label && jsxRuntime.jsx("label", { className: "textfield-label", children: label }), jsxRuntime.jsx("input", { type: type, className: `textfield-input ${error ? "error" : ""}`, value: value, placeholder: placeholder, disabled: disabled, onChange: (e) => onChange && onChange(e.target.value) }), icon && jsxRuntime.jsx("div", { className: "textfield-icon", children: icon }), error && jsxRuntime.jsx("p", { className: "textfield-error", children: error })] }));
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
var css_248z$1 = ".radio-container{align-items:center;cursor:pointer;display:flex;font-family:sans-serif;gap:8px}.radio-container input{display:none}.radio-circle{align-items:center;border:2px solid var(--rd-border-color,#777);border-radius:50%;display:flex;height:18px;justify-content:center;position:relative;transition:.2s ease;width:18px}.radio-circle:after{background-color:var(--rd-dot-color,#fff);border-radius:50%;content:\"\";height:10px;opacity:0;transform:scale(.4);transition:.2s ease;width:10px}.radio-container input:checked+.radio-circle{background-color:var(--rd-checked-bg,#007bff);border-color:var(--rd-checked-border,#007bff)}.radio-container input:checked+.radio-circle:after{opacity:1;transform:scale(1)}.radio-circle.error{border-color:#d93025!important}.radio-label{font-size:14px}.disabled{cursor:not-allowed;opacity:.6}";
|
|
147
|
+
styleInject(css_248z$1);
|
|
148
|
+
|
|
149
|
+
const Radio = ({ label, name, value, selectedValue, onChange, disabled = false, error = false, borderColor = "#777", dotColor = "#fff", checkedBorderColor = "#007bff", checkedBackground = error ? "#d93025" : "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", style, }) => {
|
|
150
|
+
const checked = selectedValue === value;
|
|
151
|
+
return (jsxRuntime.jsxs("label", { className: `radio-container ${disabled ? "disabled" : ""}`, style: Object.assign(Object.assign({}, style), { ["--rd-border-color"]: borderColor, ["--rd-dot-color"]: dotColor, ["--rd-checked-border"]: checkedBorderColor, ["--rd-checked-bg"]: checkedBackground, ["--rd-focus-shadow"]: focusShadow }), children: [jsxRuntime.jsx("input", { type: "radio", name: name, value: value, disabled: disabled, checked: checked, onChange: () => onChange(value) }), jsxRuntime.jsx("span", { className: `radio-circle ${error ? "error" : ""}` }), label && jsxRuntime.jsx("span", { className: "radio-label", children: label })] }));
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
var css_248z = ".select-wrapper{display:flex;flex-direction:column;font-family:sans-serif;gap:4px}.select-label{font-size:14px;font-weight:500}.select-container{position:relative;width:100%}.select-container select{background:#fff;border:1px solid var(--sel-border,#ccc);border-radius:6px;cursor:pointer;font-size:15px;padding:10px 12px;transition:all .2s ease;width:100%}.select-container select:focus{border-color:var(--sel-focus-border,#007bff);box-shadow:0 0 0 2px var(--sel-focus-shadow,rgba(0,123,255,.4));outline:none}.select-container.disabled select{background:#f2f2f2;cursor:not-allowed;opacity:.6}.select-container.error select{border-color:var(--sel-error,red)}.select-container.error select:focus{border-color:var(--sel-error,red);box-shadow:0 0 0 2px rgba(230,57,70,.35)}";
|
|
33
155
|
styleInject(css_248z);
|
|
34
156
|
|
|
35
|
-
const
|
|
36
|
-
return (jsxRuntime.
|
|
157
|
+
const Select = ({ label, value, onChange, options, disabled = false, error = false, borderColor = "#ccc", focusBorder = "#007bff", focusShadow = "rgba(0, 123, 255, 0.4)", errorColor = "#e63946", style, }) => {
|
|
158
|
+
return (jsxRuntime.jsxs("div", { className: "select-wrapper", style: style, children: [label && jsxRuntime.jsx("label", { className: "select-label", children: label }), jsxRuntime.jsx("div", { className: `select-container ${disabled ? "disabled" : ""} ${error ? "error" : ""}`, children: jsxRuntime.jsx("select", { value: value, disabled: disabled, onChange: (e) => onChange(e.target.value), style: {
|
|
159
|
+
["--sel-border"]: borderColor,
|
|
160
|
+
["--sel-focus-border"]: focusBorder,
|
|
161
|
+
["--sel-focus-shadow"]: focusShadow,
|
|
162
|
+
["--sel-error"]: errorColor,
|
|
163
|
+
}, children: options.map((opt) => (jsxRuntime.jsx("option", { value: opt.value, style: {
|
|
164
|
+
backgroundColor: opt.bgColor,
|
|
165
|
+
color: opt.textColor,
|
|
166
|
+
}, children: opt.label }, opt.value))) }) })] }));
|
|
37
167
|
};
|
|
38
168
|
|
|
169
|
+
exports.Bloc = Bloc;
|
|
39
170
|
exports.Button = Button;
|
|
171
|
+
exports.Card = Card;
|
|
172
|
+
exports.Center = Center;
|
|
173
|
+
exports.Checkbox = Checkbox;
|
|
174
|
+
exports.Column = Column;
|
|
175
|
+
exports.Container = Container;
|
|
176
|
+
exports.Divider = Divider;
|
|
177
|
+
exports.Grid = Grid;
|
|
178
|
+
exports.Radio = Radio;
|
|
179
|
+
exports.Row = Row;
|
|
180
|
+
exports.Select = Select;
|
|
181
|
+
exports.Spacer = Spacer;
|
|
182
|
+
exports.TextField = TextField;
|
|
40
183
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./Button.css\";\r\nimport React from \"react\";\r\n\r\n\r\nexport interface ButtonProps {\r\n label: string;\r\n onClick?: () => void;\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"small\" | \"medium\" | \"large\";\r\n disabled?: boolean;\r\n}\r\n\r\nexport const Button: React.FC<ButtonProps> = ({\r\n label,\r\n onClick,\r\n variant = \"primary\",\r\n size = \"medium\",\r\n disabled = false,\r\n}) => {\r\n return (\r\n <>\r\n <button\r\n className={`btn btn-${variant} btn-${size}`}\r\n onClick={onClick}\r\n disabled={disabled}\r\n >\r\n {label}\r\n </button>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsx"],"mappings":";;;;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;MCba,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,KAAK,GACjB,KAAI;IACH,QACEA,gDACEA,cAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,QAAA,EAAW,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,EAC3C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,KAAK,EAAA,CACC,EAAA,CACR;AAEP;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/Button/Button.tsx","../src/components/Center/Center.tsx","../src/components/Card/Card.tsx","../src/components/Bloc/Bloc.tsx","../src/components/Container/Container.tsx","../src/components/Row/Row.tsx","../src/components/Column/Column.tsx","../src/components/Grid/Grid.tsx","../src/components/Spacer/Spacer.tsx","../src/components/Divider/Divider.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/TextField/TextField.tsx","../src/components/Radio/Radio.tsx","../src/components/Select/Select.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./Button.css\";\r\nimport React from \"react\";\r\n\r\n\r\nexport interface ButtonProps {\r\n label: string;\r\n onClick?: () => void;\r\n variant?: \"primary\" | \"secondary\" | \"danger\" | \"dark\" | \"light\";\r\n size?: \"small\" | \"medium\" | \"large\";\r\n disabled?: boolean;\r\n icon?: React.ReactNode;\r\n iconPosition?: \"left\" | \"right\";\r\n backgroundColor?: string;\r\n color?: string;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport const Button: React.FC<ButtonProps> = ({\r\n label,\r\n onClick,\r\n variant = \"primary\",\r\n size = \"medium\",\r\n disabled = false,\r\n icon,\r\n iconPosition = \"left\",\r\n backgroundColor,\r\n color,\r\n isLoading = false,\r\n}) => {\r\n return (\r\n <>\r\n <button\r\n className={`btn btn-${variant} btn-${size}`}\r\n onClick={onClick}\r\n disabled={disabled || isLoading}\r\n style={{ backgroundColor, color }}\r\n >\r\n {icon && iconPosition === \"left\" && <span className=\"btn-left-icon\">{icon}</span>}\r\n {label}\r\n {icon && iconPosition === \"right\" && <span className=\"btn-right-icon\">{icon}</span>}\r\n {isLoading && <span className=\"btn-spinner\"></span>}\r\n </button>\r\n </>\r\n );\r\n};\r\n","import \"./Center.css\"\r\n\r\nexport interface CenterProps {\r\n children: React.ReactNode;\r\n backgroundColor?: string;\r\n color?: string;\r\n}\r\n\r\nexport const Center: React.FC<CenterProps> = ({ children, backgroundColor = 'white', color = 'black' }) => {\r\n return <div className=\"center\" style={{ backgroundColor, color}}>{children}</div>;\r\n};\r\n","import React from \"react\";\r\nimport \"./Card.css\";\r\n\r\nexport interface CardProps {\r\n title?: string;\r\n children: React.ReactNode;\r\n backgroundColor?: string;\r\n color?: string;\r\n variant?: \"elevated\" | \"outlined\" | \"flat\";\r\n padding?: \"sm\" | \"md\" | \"lg\";\r\n footer?: React.ReactNode;\r\n}\r\n\r\nexport const Card: React.FC<CardProps> = ({\r\n title,\r\n children,\r\n footer,\r\n backgroundColor,\r\n color,\r\n variant = \"elevated\",\r\n padding = \"md\",\r\n}) => {\r\n return (\r\n <div\r\n className={`card card-${variant} card-padding-${padding}`}\r\n style={{ backgroundColor, color }}\r\n >\r\n {title && <div className=\"card-header\">{title}</div>}\r\n <div className=\"card-body\">{children}</div>\r\n {footer && <div className=\"card-footer\">{footer}</div>}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Bloc.css\";\r\n\r\nexport type BlocLayout =\r\n | \"default\"\r\n | \"center\"\r\n | \"row\"\r\n | \"row-between\"\r\n | \"column\"\r\n | \"sidebar\"\r\n | \"navbar\";\r\n\r\nexport interface BlocProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n layout?: BlocLayout;\r\n}\r\n\r\nexport const Bloc: React.FC<BlocProps> = ({\r\n children,\r\n className = \"\",\r\n style = {},\r\n layout = \"default\",\r\n}) => {\r\n const layoutStyles: React.CSSProperties = (() => {\r\n switch (layout) {\r\n case \"center\":\r\n return { display: \"flex\", justifyContent: \"center\", alignItems: \"center\" };\r\n case \"row\":\r\n return { display: \"flex\", flexDirection: \"row\", alignItems: \"center\" };\r\n case \"row-between\":\r\n return { display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\", alignItems: \"center\" };\r\n case \"column\":\r\n return { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\" };\r\n case \"sidebar\":\r\n return { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\", gap: \"12px\" };\r\n case \"navbar\":\r\n return { display: \"flex\", flexDirection: \"row\", justifyContent: \"space-between\", alignItems: \"center\", padding: \"12px 20px\" };\r\n default:\r\n return {};\r\n }\r\n })();\r\n\r\n return (\r\n <div className={`bloc ${className}`} style={{ ...layoutStyles, ...style }}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Container.css\";\r\n\r\nexport interface ContainerProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n fluid?: boolean;\r\n}\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, className = \"\", style = {}, fluid = false }) => {\r\n return (\r\n <div className={`container ${fluid ? \"container-fluid\" : \"\"} ${className}`} style={style}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Row.css\";\r\n\r\nexport interface RowProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({\r\n children,\r\n className = \"\",\r\n style = {}\r\n}) => {\r\n return <div className={`row ${className}`} style={{...style}}>{children}</div>;\r\n};\r\n","import React from \"react\";\r\nimport \"./Column.css\";\r\n\r\nexport interface ColumnProps {\r\n children?: React.ReactNode;\r\n className?: \"small\" | \"medium\" | \"large\";\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Column: React.FC<ColumnProps> = ({ children, className = \"\", style = {}}) => {\r\n return (\r\n <div className={`col ${className}`} style={{...style}}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n","import { Column } from \"../Column\";\r\nimport { Row } from \"../Row\";\r\n\r\nexport interface GridColumn {\r\n children?: React.ReactNode;\r\n span?: number;\r\n style?: React.CSSProperties;\r\n className?: \"small\" | \"medium\" | \"large\";\r\n}\r\n\r\nexport interface GridProps {\r\n items: GridColumn[];\r\n}\r\n\r\nexport const Grid: React.FC<GridProps> = ({ items }) => {\r\n\r\n return (\r\n <Row>\r\n {items.map((item: GridColumn, index: number) => (\r\n <Column\r\n key={index}\r\n className={item.className}\r\n style={{ ...item.style }}\r\n >\r\n {item.children}\r\n </Column>\r\n ))}\r\n </Row>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport interface SpacerProps {\r\n size?: number;\r\n direction?: \"vertical\" | \"horizontal\";\r\n}\r\n\r\nexport const Spacer: React.FC<SpacerProps> = ({\r\n size = 16,\r\n direction = \"vertical\"\r\n}) => {\r\n const style: React.CSSProperties =\r\n direction === \"vertical\"\r\n ? { height: size }\r\n : { width: size, display: \"inline-block\" };\r\n\r\n return <div style={style} />;\r\n};\r\n","import React from \"react\";\r\n\r\nexport interface DividerProps {\r\n color?: string;\r\n thickness?: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n margin?: number;\r\n}\r\n\r\nexport const Divider: React.FC<DividerProps> = ({\r\n color = \"#e0e0e0\",\r\n thickness = 1,\r\n orientation = \"horizontal\",\r\n margin = 8,\r\n}) => {\r\n const styles: React.CSSProperties =\r\n orientation === \"horizontal\"\r\n ? {\r\n width: \"100%\",\r\n height: thickness,\r\n backgroundColor: color,\r\n margin: `${margin}px 0`,\r\n }\r\n : {\r\n width: thickness,\r\n height: \"100%\",\r\n backgroundColor: color,\r\n margin: `0 ${margin}px`,\r\n };\r\n\r\n return <div style={styles} />;\r\n};\r\n","import React from \"react\";\r\nimport \"./Checkbox.css\";\r\n\r\nexport interface CheckboxProps {\r\n label?: string;\r\n checked: boolean;\r\n onChange: (value: boolean) => void;\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Custom colors\r\n boxColor?: string;\r\n checkColor?: string;\r\n checkedBackground?: string;\r\n focusShadow?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Checkbox: React.FC<CheckboxProps> = ({\r\n label,\r\n checked,\r\n onChange,\r\n disabled = false,\r\n error = false,\r\n\r\n boxColor = \"#777\",\r\n checkColor = \"#fff\",\r\n checkedBackground = \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n\r\n style,\r\n}) => {\r\n return (\r\n <label\r\n className={`checkbox-container ${disabled ? \"disabled\" : \"\"}`}\r\n style={{\r\n [\"--cb-box-color\" as any]: boxColor,\r\n [\"--cb-check-color\" as any]: checkColor,\r\n [\"--cb-checked-bg\" as any]: checkedBackground,\r\n [\"--cb-focus-shadow\" as any]: focusShadow,\r\n }}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n checked={checked}\r\n disabled={disabled}\r\n onChange={(e) => onChange(e.target.checked)}\r\n />\r\n\r\n <span className={`checkbox-box ${error ? \"error\" : \"\"}`} />\r\n\r\n {label && <span className=\"checkbox-label\">{label}</span>}\r\n </label>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./TextField.css\";\r\n\r\nexport interface TextFieldProps {\r\n label?: string;\r\n value?: string;\r\n placeholder?: string;\r\n onChange?: (value: string) => void;\r\n error?: string;\r\n disabled?: boolean;\r\n type?: string;\r\n fullWidth?: boolean;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const TextField: React.FC<TextFieldProps> = ({\r\n label,\r\n value = \"\",\r\n placeholder,\r\n onChange,\r\n error,\r\n disabled = false,\r\n type = \"text\",\r\n fullWidth = true,\r\n icon,\r\n}) => {\r\n return (\r\n <div className={`textfield ${fullWidth ? \"fullWidth\" : \"\"}`}>\r\n {label && <label className=\"textfield-label\">{label}</label>}\r\n\r\n <input\r\n type={type}\r\n className={`textfield-input ${error ? \"error\" : \"\"}`}\r\n value={value}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n onChange={(e) => onChange && onChange(e.target.value)}\r\n />\r\n {icon && <div className=\"textfield-icon\">{icon}</div>}\r\n\r\n {error && <p className=\"textfield-error\">{error}</p>}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Radio.css\";\r\n\r\nexport interface RadioProps {\r\n label?: string;\r\n name: string; // obligatoire pour grouper les radios\r\n value: string;\r\n selectedValue: string;\r\n onChange: (value: string) => void;\r\n\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Thème custom\r\n borderColor?: string;\r\n dotColor?: string;\r\n checkedBorderColor?: string;\r\n checkedBackground?: string;\r\n focusShadow?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Radio: React.FC<RadioProps> = ({\r\n label,\r\n name,\r\n value,\r\n selectedValue,\r\n onChange,\r\n disabled = false,\r\n error = false,\r\n\r\n borderColor = \"#777\",\r\n dotColor = \"#fff\",\r\n checkedBorderColor = \"#007bff\",\r\n checkedBackground = error ? \"#d93025\" : \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n\r\n style,\r\n}) => {\r\n const checked = selectedValue === value;\r\n\r\n return (\r\n <label\r\n className={`radio-container ${disabled ? \"disabled\" : \"\"}`}\r\n style={{\r\n ...style,\r\n [\"--rd-border-color\" as any]: borderColor,\r\n [\"--rd-dot-color\" as any]: dotColor,\r\n [\"--rd-checked-border\" as any]: checkedBorderColor,\r\n [\"--rd-checked-bg\" as any]: checkedBackground,\r\n [\"--rd-focus-shadow\" as any]: focusShadow,\r\n }}\r\n >\r\n <input\r\n type=\"radio\"\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n checked={checked}\r\n onChange={() => onChange(value)}\r\n />\r\n\r\n <span className={`radio-circle ${error ? \"error\" : \"\"}`} />\r\n\r\n {label && <span className=\"radio-label\">{label}</span>}\r\n </label>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Select.css\";\r\n\r\nexport interface SelectOption {\r\n value: string | number;\r\n label: string;\r\n\r\n bgColor?: string;\r\n textColor?: string;\r\n}\r\n\r\nexport interface SelectProps {\r\n label?: string;\r\n value: string | number;\r\n onChange: (value: string | number) => void;\r\n options: SelectOption[];\r\n disabled?: boolean;\r\n error?: boolean;\r\n\r\n // Custom colors\r\n borderColor?: string;\r\n focusBorder?: string;\r\n focusShadow?: string;\r\n errorColor?: string;\r\n\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const Select: React.FC<SelectProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n disabled = false,\r\n error = false,\r\n\r\n borderColor = \"#ccc\",\r\n focusBorder = \"#007bff\",\r\n focusShadow = \"rgba(0, 123, 255, 0.4)\",\r\n errorColor = \"#e63946\",\r\n\r\n style,\r\n}) => {\r\n return (\r\n <div className=\"select-wrapper\" style={style}>\r\n {label && <label className=\"select-label\">{label}</label>}\r\n\r\n <div\r\n className={`select-container ${disabled ? \"disabled\" : \"\"} ${\r\n error ? \"error\" : \"\"\r\n }`}\r\n >\r\n <select\r\n value={value}\r\n disabled={disabled}\r\n onChange={(e) => onChange(e.target.value)}\r\n style={{\r\n [\"--sel-border\" as any]: borderColor,\r\n [\"--sel-focus-border\" as any]: focusBorder,\r\n [\"--sel-focus-shadow\" as any]: focusShadow,\r\n [\"--sel-error\" as any]: errorColor,\r\n }}\r\n >\r\n {options.map((opt) => (\r\n <option\r\n key={opt.value}\r\n value={opt.value}\r\n style={{\r\n backgroundColor: opt.bgColor,\r\n color: opt.textColor,\r\n }}\r\n >\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import './button.css';
|
|
2
|
+
export interface ButtonProps {
|
|
3
|
+
/** Is this the principal call to action on the page? */
|
|
4
|
+
primary?: boolean;
|
|
5
|
+
/** What background color to use */
|
|
6
|
+
backgroundColor?: string;
|
|
7
|
+
/** How large should the button be? */
|
|
8
|
+
size?: 'small' | 'medium' | 'large';
|
|
9
|
+
/** Button contents */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Optional click handler */
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/** Primary UI component for user interaction */
|
|
15
|
+
export declare const Button: ({ primary, size, backgroundColor, label, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-webpack5';
|
|
2
|
+
declare const meta: Meta<({ primary, size, backgroundColor, label, ...props }: import("./Button").ButtonProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj<typeof meta>;
|
|
5
|
+
export declare const Primary: Story;
|
|
6
|
+
export declare const Secondary: Story;
|
|
7
|
+
export declare const Large: Story;
|
|
8
|
+
export declare const Small: Story;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './header.css';
|
|
2
|
+
type User = {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
export interface HeaderProps {
|
|
6
|
+
user?: User;
|
|
7
|
+
onLogin?: () => void;
|
|
8
|
+
onLogout?: () => void;
|
|
9
|
+
onCreateAccount?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const Header: ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-webpack5';
|
|
2
|
+
declare const meta: Meta<({ user, onLogin, onLogout, onCreateAccount }: import("./Header").HeaderProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj<typeof meta>;
|
|
5
|
+
export declare const LoggedIn: Story;
|
|
6
|
+
export declare const LoggedOut: Story;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@houssemdi2000/design-system",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Mon système de design React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -10,7 +10,11 @@
|
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "rollup -c",
|
|
13
|
-
"
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"test:watch": "jest --watch",
|
|
15
|
+
"prepublishOnly": "npm run build",
|
|
16
|
+
"storybook": "storybook dev -p 6006",
|
|
17
|
+
"build-storybook": "storybook build"
|
|
14
18
|
},
|
|
15
19
|
"peerDependencies": {
|
|
16
20
|
"react": "^18.0.0",
|
|
@@ -28,11 +32,26 @@
|
|
|
28
32
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
29
33
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
30
34
|
"@rollup/plugin-typescript": "^12.3.0",
|
|
35
|
+
"@storybook/addon-a11y": "^10.1.4",
|
|
36
|
+
"@storybook/addon-docs": "^10.1.4",
|
|
37
|
+
"@storybook/addon-webpack5-compiler-swc": "^4.0.2",
|
|
38
|
+
"@storybook/react-webpack5": "^10.1.4",
|
|
39
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
40
|
+
"@testing-library/react": "^16.3.0",
|
|
41
|
+
"@testing-library/user-event": "^14.6.1",
|
|
42
|
+
"@types/jest": "^30.0.0",
|
|
31
43
|
"@types/react": "^19.2.7",
|
|
32
44
|
"@types/react-dom": "^19.2.3",
|
|
45
|
+
"@vitest/mocker": "^4.0.15",
|
|
46
|
+
"identity-obj-proxy": "^3.0.0",
|
|
47
|
+
"jest": "^30.2.0",
|
|
48
|
+
"jest-environment-jsdom": "^30.2.0",
|
|
49
|
+
"jsdom": "^27.0.1",
|
|
33
50
|
"rollup": "^4.53.3",
|
|
34
51
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
35
52
|
"rollup-plugin-postcss": "^4.0.2",
|
|
53
|
+
"storybook": "^10.1.4",
|
|
54
|
+
"ts-jest": "^29.4.6",
|
|
36
55
|
"tslib": "^2.8.1",
|
|
37
56
|
"typescript": "^5.9.3"
|
|
38
57
|
}
|