@amelharrak/eldo-ui 1.0.1
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/LICENSE +21 -0
- package/README.md +111 -0
- package/dist/css/eldo.css +11683 -0
- package/dist/css/eldo.css.map +1 -0
- package/dist/css/eldo.min.css +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +64 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types/__tests__/Alert.test.d.ts +1 -0
- package/dist/types/__tests__/Button.test.d.ts +1 -0
- package/dist/types/__tests__/Modal.test.d.ts +1 -0
- package/dist/types/components/Accordion.d.ts +15 -0
- package/dist/types/components/Alert.d.ts +15 -0
- package/dist/types/components/Avatar.d.ts +10 -0
- package/dist/types/components/Badge.d.ts +7 -0
- package/dist/types/components/Box.d.ts +27 -0
- package/dist/types/components/Breadcrumb.d.ts +15 -0
- package/dist/types/components/Button.d.ts +16 -0
- package/dist/types/components/ButtonGroup.d.ts +7 -0
- package/dist/types/components/Card.d.ts +15 -0
- package/dist/types/components/Carousel.d.ts +21 -0
- package/dist/types/components/Checkbox.d.ts +10 -0
- package/dist/types/components/Col.d.ts +12 -0
- package/dist/types/components/Collapse.d.ts +12 -0
- package/dist/types/components/Container.d.ts +8 -0
- package/dist/types/components/Dropdown.d.ts +19 -0
- package/dist/types/components/FileUpload.d.ts +13 -0
- package/dist/types/components/Input.d.ts +20 -0
- package/dist/types/components/InputOTP.d.ts +13 -0
- package/dist/types/components/ListGroup.d.ts +20 -0
- package/dist/types/components/Modal.d.ts +13 -0
- package/dist/types/components/Navbar.d.ts +17 -0
- package/dist/types/components/NumberInput.d.ts +15 -0
- package/dist/types/components/Offcanvas.d.ts +15 -0
- package/dist/types/components/Pagination.d.ts +14 -0
- package/dist/types/components/Popover.d.ts +14 -0
- package/dist/types/components/Progress.d.ts +11 -0
- package/dist/types/components/Radio.d.ts +11 -0
- package/dist/types/components/Row.d.ts +7 -0
- package/dist/types/components/Scrollspy.d.ts +13 -0
- package/dist/types/components/Select.d.ts +16 -0
- package/dist/types/components/Slider.d.ts +16 -0
- package/dist/types/components/Sonner.d.ts +21 -0
- package/dist/types/components/Spinner.d.ts +11 -0
- package/dist/types/components/Stat.d.ts +24 -0
- package/dist/types/components/Switch.d.ts +14 -0
- package/dist/types/components/Tabs.d.ts +20 -0
- package/dist/types/components/Text.d.ts +13 -0
- package/dist/types/components/Timeline.d.ts +41 -0
- package/dist/types/components/Toast.d.ts +17 -0
- package/dist/types/components/Tooltip.d.ts +12 -0
- package/dist/types/index.d.ts +40 -0
- package/package.json +106 -0
- package/setup.js +260 -0
- package/src/scss/abstracts/_functions.scss +19 -0
- package/src/scss/abstracts/_mixins.scss +33 -0
- package/src/scss/abstracts/_variables.scss +119 -0
- package/src/scss/base/_reset.scss +24 -0
- package/src/scss/base/_transitions.scss +10 -0
- package/src/scss/base/_typography.scss +50 -0
- package/src/scss/components/_accordion.scss +238 -0
- package/src/scss/components/_alert.scss +85 -0
- package/src/scss/components/_alerts.scss +137 -0
- package/src/scss/components/_avatar.scss +184 -0
- package/src/scss/components/_badge.scss +70 -0
- package/src/scss/components/_blockquote.scss +41 -0
- package/src/scss/components/_breadcrumb.scss +39 -0
- package/src/scss/components/_button-group.scss +43 -0
- package/src/scss/components/_button.scss +92 -0
- package/src/scss/components/_buttons.scss +66 -0
- package/src/scss/components/_calendar.scss +520 -0
- package/src/scss/components/_card.scss +52 -0
- package/src/scss/components/_cards.scss +123 -0
- package/src/scss/components/_carousel.scss +490 -0
- package/src/scss/components/_charts.scss +29 -0
- package/src/scss/components/_checkbox.scss +194 -0
- package/src/scss/components/_code.scss +70 -0
- package/src/scss/components/_collapse.scss +13 -0
- package/src/scss/components/_combobox.scss +239 -0
- package/src/scss/components/_date-picker.scss +102 -0
- package/src/scss/components/_divider.scss +55 -0
- package/src/scss/components/_dropdown.scss +122 -0
- package/src/scss/components/_file-upload.scss +233 -0
- package/src/scss/components/_floating-labels.scss +247 -0
- package/src/scss/components/_form-select.scss +49 -0
- package/src/scss/components/_forms.scss +41 -0
- package/src/scss/components/_index.scss +7 -0
- package/src/scss/components/_input-otp.scss +338 -0
- package/src/scss/components/_list-group.scss +95 -0
- package/src/scss/components/_modal.scss +166 -0
- package/src/scss/components/_nav.scss +175 -0
- package/src/scss/components/_navbar.scss +228 -0
- package/src/scss/components/_number-input.scss +67 -0
- package/src/scss/components/_offcanvas.scss +123 -0
- package/src/scss/components/_pagination.scss +64 -0
- package/src/scss/components/_placeholders.scss +52 -0
- package/src/scss/components/_popovers.scss +69 -0
- package/src/scss/components/_progress.scss +90 -0
- package/src/scss/components/_range.scss +82 -0
- package/src/scss/components/_scrollspy.scss +239 -0
- package/src/scss/components/_skeleton.scss +108 -0
- package/src/scss/components/_slider.scss +95 -0
- package/src/scss/components/_snippet.scss +79 -0
- package/src/scss/components/_spinners.scss +137 -0
- package/src/scss/components/_stat.scss +42 -0
- package/src/scss/components/_stepper.scss +104 -0
- package/src/scss/components/_switch.scss +57 -0
- package/src/scss/components/_table.scss +109 -0
- package/src/scss/components/_tag.scss +60 -0
- package/src/scss/components/_tags-input.scss +60 -0
- package/src/scss/components/_timeline.scss +238 -0
- package/src/scss/components/_toasts.scss +75 -0
- package/src/scss/components/_tooltips.scss +50 -0
- package/src/scss/components/_tree-view.scss +72 -0
- package/src/scss/components/_user.scss +26 -0
- package/src/scss/docs/_examples.scss +148 -0
- package/src/scss/docs/_layout.scss +251 -0
- package/src/scss/docs/_search.scss +141 -0
- package/src/scss/eldo.scss +74 -0
- package/src/scss/layout/_container.scss +37 -0
- package/src/scss/layout/_grid.scss +49 -0
- package/src/scss/pages/_landing-config.scss +135 -0
- package/src/scss/pages/_landing-features-enhanced.scss +165 -0
- package/src/scss/pages/_landing-hero-enhanced.scss +427 -0
- package/src/scss/pages/_landing-setup.scss +264 -0
- package/src/scss/pages/_landing.scss +1828 -0
- package/src/scss/utilities/_api.scss +66 -0
- package/src/scss/utilities/_colors.scss +32 -0
- package/src/scss/utilities/_display.scss +70 -0
- package/src/scss/utilities/_glass.scss +32 -0
- package/src/scss/utilities/_helpers.scss +16 -0
- package/src/scss/utilities/_map.scss +224 -0
- package/src/scss/utilities/_spacing.scss +58 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function Input({ type, size, isValid, isInvalid, plaintext, readOnly, disabled, className, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
type?: string | undefined;
|
|
4
|
+
size: any;
|
|
5
|
+
isValid: any;
|
|
6
|
+
isInvalid: any;
|
|
7
|
+
plaintext?: boolean | undefined;
|
|
8
|
+
readOnly?: boolean | undefined;
|
|
9
|
+
disabled?: boolean | undefined;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export function Textarea({ rows, size, isValid, isInvalid, autoResize, className, ...props }: {
|
|
13
|
+
[x: string]: any;
|
|
14
|
+
rows?: number | undefined;
|
|
15
|
+
size: any;
|
|
16
|
+
isValid: any;
|
|
17
|
+
isInvalid: any;
|
|
18
|
+
autoResize?: boolean | undefined;
|
|
19
|
+
className?: string | undefined;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* InputOTP Component
|
|
4
|
+
* One-time password input
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {number} [props.length=6] - Number of OTP digits
|
|
8
|
+
* @param {Function} [props.onComplete] - Handler when all digits are entered
|
|
9
|
+
* @param {Function} [props.onChange] - Change handler
|
|
10
|
+
* @param {'numeric' | 'alphanumeric'} [props.type='numeric'] - Input type
|
|
11
|
+
* @param {string} [props.className] - Additional classes
|
|
12
|
+
*/
|
|
13
|
+
export const InputOTP: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function ListGroup({ flush, numbered, horizontal, children, className, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
flush?: boolean | undefined;
|
|
4
|
+
numbered?: boolean | undefined;
|
|
5
|
+
horizontal?: boolean | undefined;
|
|
6
|
+
children: any;
|
|
7
|
+
className?: string | undefined;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export namespace ListGroup {
|
|
10
|
+
function Item({ active, disabled, variant, action, href, children, className, ...props }: {
|
|
11
|
+
[x: string]: any;
|
|
12
|
+
active?: boolean | undefined;
|
|
13
|
+
disabled?: boolean | undefined;
|
|
14
|
+
variant: any;
|
|
15
|
+
action?: boolean | undefined;
|
|
16
|
+
href: any;
|
|
17
|
+
children: any;
|
|
18
|
+
className?: string | undefined;
|
|
19
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export function Modal({ isOpen, onClose, title, children, footer, backdrop, keyboard, size, centered, className, ...props }: {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose: Function;
|
|
5
|
+
title?: string | undefined;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
footer?: React.ReactNode;
|
|
8
|
+
backdrop?: boolean | undefined;
|
|
9
|
+
keyboard?: boolean | undefined;
|
|
10
|
+
size?: "sm" | "lg" | "xl" | undefined;
|
|
11
|
+
centered?: boolean | undefined;
|
|
12
|
+
className?: string | undefined;
|
|
13
|
+
}): React.ReactPortal | null;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Navbar Component
|
|
4
|
+
* Responsive navigation header
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {React.ReactNode} props.children - Navbar content
|
|
8
|
+
* @param {'light' | 'dark'} [props.variant='light'] - Color variant
|
|
9
|
+
* @param {string} [props.bg] - Background color
|
|
10
|
+
* @param {boolean} [props.expand='lg'] - Breakpoint for collapse
|
|
11
|
+
* @param {string} [props.className] - Additional classes
|
|
12
|
+
*/
|
|
13
|
+
export const Navbar: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
14
|
+
export const NavbarBrand: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
15
|
+
export const NavbarToggle: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
16
|
+
export const NavbarCollapse: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
17
|
+
export const NavbarNav: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* NumberInput Component
|
|
4
|
+
* Number input with increment/decrement buttons
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {number} [props.min] - Minimum value
|
|
8
|
+
* @param {number} [props.max] - Maximum value
|
|
9
|
+
* @param {number} [props.step=1] - Step increment
|
|
10
|
+
* @param {number} [props.value] - Controlled value
|
|
11
|
+
* @param {number} [props.defaultValue=0] - Default value
|
|
12
|
+
* @param {Function} [props.onChange] - Change handler
|
|
13
|
+
* @param {string} [props.className] - Additional classes
|
|
14
|
+
*/
|
|
15
|
+
export const NumberInput: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Offcanvas Component
|
|
4
|
+
* Slide-in panel
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {boolean} props.isOpen - Controls visibility
|
|
8
|
+
* @param {Function} props.onClose - Close handler
|
|
9
|
+
* @param {string} [props.title] - Offcanvas title
|
|
10
|
+
* @param {React.ReactNode} props.children - Offcanvas content
|
|
11
|
+
* @param {'start' | 'end' | 'top' | 'bottom'} [props.placement='end'] - Offcanvas placement
|
|
12
|
+
* @param {boolean} [props.backdrop=true] - Show backdrop
|
|
13
|
+
* @param {string} [props.className] - Additional classes
|
|
14
|
+
*/
|
|
15
|
+
export const Offcanvas: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Pagination Component
|
|
4
|
+
* Page navigation
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {number} props.currentPage - Current active page
|
|
8
|
+
* @param {number} props.totalPages - Total number of pages
|
|
9
|
+
* @param {Function} props.onPageChange - Page change handler
|
|
10
|
+
* @param {number} [props.maxVisible=5] - Maximum visible page numbers
|
|
11
|
+
* @param {string} [props.size] - Size variant ('sm' | 'lg')
|
|
12
|
+
* @param {string} [props.className] - Additional classes
|
|
13
|
+
*/
|
|
14
|
+
export const Pagination: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Popover Component
|
|
4
|
+
* Rich popover with title and content
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {React.ReactNode} props.children - Trigger element
|
|
8
|
+
* @param {string} [props.title] - Popover title
|
|
9
|
+
* @param {React.ReactNode} props.content - Popover content
|
|
10
|
+
* @param {'top' | 'bottom' | 'left' | 'right'} [props.placement='top'] - Popover placement
|
|
11
|
+
* @param {'click' | 'hover'} [props.trigger='click'] - Trigger type
|
|
12
|
+
* @param {string} [props.className] - Additional classes
|
|
13
|
+
*/
|
|
14
|
+
export const Popover: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function Progress({ value, max, variant, striped, animated, label, showValue, className, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
value?: number | undefined;
|
|
4
|
+
max?: number | undefined;
|
|
5
|
+
variant?: string | undefined;
|
|
6
|
+
striped?: boolean | undefined;
|
|
7
|
+
animated?: boolean | undefined;
|
|
8
|
+
label: any;
|
|
9
|
+
showValue?: boolean | undefined;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function Radio({ id, name, label, value, checked, disabled, onChange, className, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
id: any;
|
|
4
|
+
name: any;
|
|
5
|
+
label: any;
|
|
6
|
+
value: any;
|
|
7
|
+
checked: any;
|
|
8
|
+
disabled?: boolean | undefined;
|
|
9
|
+
onChange: any;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default Row;
|
|
2
|
+
/**
|
|
3
|
+
* Row component - wrapper for Bootstrap row
|
|
4
|
+
* @param {string} className - Additional CSS classes
|
|
5
|
+
* @param {React.ReactNode} children - Child elements
|
|
6
|
+
*/
|
|
7
|
+
declare function Row({ className, children, ...props }: string): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Scrollspy Component
|
|
4
|
+
* Scroll tracking navigation
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {Array<string>} props.targets - Array of target element IDs
|
|
8
|
+
* @param {Function} [props.onActiveChange] - Handler when active section changes
|
|
9
|
+
* @param {number} [props.offset=0] - Scroll offset
|
|
10
|
+
* @param {React.ReactNode} props.children - Navigation items
|
|
11
|
+
* @param {string} [props.className] - Additional classes
|
|
12
|
+
*/
|
|
13
|
+
export const Scrollspy: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Select Component
|
|
4
|
+
* Custom select dropdown with search
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {Array} props.options - Array of {value, label} objects
|
|
8
|
+
* @param {*} [props.value] - Controlled value
|
|
9
|
+
* @param {*} [props.defaultValue] - Default value
|
|
10
|
+
* @param {Function} [props.onChange] - Change handler
|
|
11
|
+
* @param {string} [props.placeholder='Select...'] - Placeholder text
|
|
12
|
+
* @param {boolean} [props.searchable=false] - Enable search
|
|
13
|
+
* @param {boolean} [props.disabled=false] - Disabled state
|
|
14
|
+
* @param {string} [props.className] - Additional classes
|
|
15
|
+
*/
|
|
16
|
+
export const Select: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Slider Component
|
|
4
|
+
* Range input slider
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {number} [props.min=0] - Minimum value
|
|
8
|
+
* @param {number} [props.max=100] - Maximum value
|
|
9
|
+
* @param {number} [props.step=1] - Step increment
|
|
10
|
+
* @param {number} [props.value] - Controlled value
|
|
11
|
+
* @param {number} [props.defaultValue] - Default value (uncontrolled)
|
|
12
|
+
* @param {Function} [props.onChange] - Change handler
|
|
13
|
+
* @param {boolean} [props.showValue=false] - Show current value
|
|
14
|
+
* @param {string} [props.className] - Additional classes
|
|
15
|
+
*/
|
|
16
|
+
export const Slider: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sonner - Modern toast notification system
|
|
3
|
+
* Inspired by shadcn/ui's Sonner component
|
|
4
|
+
*/
|
|
5
|
+
export function Toaster({ position, expand, richColors, closeButton, ...props }: {
|
|
6
|
+
[x: string]: any;
|
|
7
|
+
position?: string | undefined;
|
|
8
|
+
expand?: boolean | undefined;
|
|
9
|
+
richColors?: boolean | undefined;
|
|
10
|
+
closeButton?: boolean | undefined;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export function useToast(): never;
|
|
13
|
+
export const toast: ((message: any, options?: {}) => void) & {
|
|
14
|
+
success: (message: any, options?: {}) => void;
|
|
15
|
+
error: (message: any, options?: {}) => void;
|
|
16
|
+
warning: (message: any, options?: {}) => void;
|
|
17
|
+
info: (message: any, options?: {}) => void;
|
|
18
|
+
loading: (message: any, options?: {}) => void;
|
|
19
|
+
promise: (promise: any, options?: {}) => any;
|
|
20
|
+
};
|
|
21
|
+
export default toast;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Spinner Component
|
|
4
|
+
* Loading spinner
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {'sm' | 'md' | 'lg'} [props.size='md'] - Spinner size
|
|
8
|
+
* @param {'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark'} [props.variant='primary'] - Spinner color variant
|
|
9
|
+
* @param {string} [props.className] - Additional classes
|
|
10
|
+
*/
|
|
11
|
+
export const Spinner: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stat Component - Display statistics and key metrics
|
|
3
|
+
*
|
|
4
|
+
* @param {string} title - The stat title/label
|
|
5
|
+
* @param {string|number} value - The main stat value
|
|
6
|
+
* @param {string} description - Optional description or change indicator
|
|
7
|
+
* @param {string} descClass - CSS class for description (positive/negative)
|
|
8
|
+
* @param {string} icon - Optional icon (emoji or text)
|
|
9
|
+
* @param {string} iconBg - Background color for icon
|
|
10
|
+
* @param {boolean} compact - Use compact variant
|
|
11
|
+
* @param {number} progress - Progress percentage (0-100)
|
|
12
|
+
* @param {string} target - Target value for progress variant
|
|
13
|
+
* @param {number} change - Percentage change for compact variant
|
|
14
|
+
* @param {string} className - Additional CSS classes
|
|
15
|
+
*/
|
|
16
|
+
export function Stat({ title, value, description, descClass, icon, iconBg, compact, progress, target, change, className, ...props }: string): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* StatGroup Component - Display multiple stats in a grid
|
|
19
|
+
*
|
|
20
|
+
* @param {Array} stats - Array of stat objects
|
|
21
|
+
* @param {number} columns - Number of columns (2, 3, or 4)
|
|
22
|
+
*/
|
|
23
|
+
export function StatGroup({ stats, columns, className, ...props }: any[]): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export default Stat;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Switch Component
|
|
4
|
+
* Toggle switch for boolean values
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {boolean} [props.checked] - Controlled checked state
|
|
8
|
+
* @param {boolean} [props.defaultChecked] - Default checked state (uncontrolled)
|
|
9
|
+
* @param {Function} [props.onChange] - Change handler
|
|
10
|
+
* @param {boolean} [props.disabled=false] - Disabled state
|
|
11
|
+
* @param {string} [props.label] - Label text
|
|
12
|
+
* @param {string} [props.className] - Additional classes
|
|
13
|
+
*/
|
|
14
|
+
export const Switch: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Tabs Component
|
|
4
|
+
* Tab navigation
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {number} [props.activeTab] - Controlled active tab index
|
|
8
|
+
* @param {number} [props.defaultActiveTab=0] - Default active tab
|
|
9
|
+
* @param {Function} [props.onTabChange] - Tab change handler
|
|
10
|
+
* @param {React.ReactNode} props.children - Tab panes
|
|
11
|
+
* @param {string} [props.className] - Additional classes
|
|
12
|
+
*/
|
|
13
|
+
export const Tabs: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
14
|
+
export function TabPane({ title, children }: {
|
|
15
|
+
title: any;
|
|
16
|
+
children: any;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export namespace TabPane {
|
|
19
|
+
let displayName: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default Text;
|
|
2
|
+
/**
|
|
3
|
+
* Text component - wrapper for text utilities
|
|
4
|
+
* @param {string} align - Text alignment: 'start', 'center', 'end'
|
|
5
|
+
* @param {string} transform - Text transform: 'lowercase', 'uppercase', 'capitalize'
|
|
6
|
+
* @param {string} color - Text color: 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', 'muted'
|
|
7
|
+
* @param {string} size - Font size: '1', '2', '3', '4', '5', '6'
|
|
8
|
+
* @param {string} weight - Font weight: 'bold', 'bolder', 'normal', 'light', 'lighter'
|
|
9
|
+
* @param {string} as - HTML element to render (default: 'p')
|
|
10
|
+
* @param {string} className - Additional CSS classes
|
|
11
|
+
* @param {React.ReactNode} children - Child elements
|
|
12
|
+
*/
|
|
13
|
+
declare function Text({ align, transform, color, size, weight, as: Component, className, children, ...props }: string): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export function Timeline({ children, className, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
children: any;
|
|
4
|
+
className?: string | undefined;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export namespace Timeline {
|
|
7
|
+
export { TimelineItem as Item };
|
|
8
|
+
export { TimelineDate as Date };
|
|
9
|
+
export { TimelineTitle as Title };
|
|
10
|
+
export { TimelineText as Text };
|
|
11
|
+
export { TimelineContent as Content };
|
|
12
|
+
}
|
|
13
|
+
declare function TimelineItem({ children, className, active, completed, animated, ...props }: {
|
|
14
|
+
[x: string]: any;
|
|
15
|
+
children: any;
|
|
16
|
+
className?: string | undefined;
|
|
17
|
+
active?: boolean | undefined;
|
|
18
|
+
completed?: boolean | undefined;
|
|
19
|
+
animated?: boolean | undefined;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function TimelineDate({ children, className, ...props }: {
|
|
22
|
+
[x: string]: any;
|
|
23
|
+
children: any;
|
|
24
|
+
className?: string | undefined;
|
|
25
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
declare function TimelineTitle({ children, className, ...props }: {
|
|
27
|
+
[x: string]: any;
|
|
28
|
+
children: any;
|
|
29
|
+
className?: string | undefined;
|
|
30
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
declare function TimelineText({ children, className, ...props }: {
|
|
32
|
+
[x: string]: any;
|
|
33
|
+
children: any;
|
|
34
|
+
className?: string | undefined;
|
|
35
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
declare function TimelineContent({ children, className, ...props }: {
|
|
37
|
+
[x: string]: any;
|
|
38
|
+
children: any;
|
|
39
|
+
className?: string | undefined;
|
|
40
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Toast Component
|
|
4
|
+
* Notification toast
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {boolean} [props.show] - Controlled visibility
|
|
8
|
+
* @param {Function} [props.onClose] - Close handler
|
|
9
|
+
* @param {string} [props.title] - Toast title
|
|
10
|
+
* @param {React.ReactNode} props.children - Toast content
|
|
11
|
+
* @param {'primary' | 'success' | 'danger' | 'warning' | 'info'} [props.variant] - Color variant
|
|
12
|
+
* @param {number} [props.autoHide] - Auto hide duration in ms (false to disable)
|
|
13
|
+
* @param {'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'} [props.position='top-right'] - Toast position
|
|
14
|
+
* @param {string} [props.className] - Additional classes
|
|
15
|
+
*/
|
|
16
|
+
export const Toast: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
17
|
+
export function createToast(options: any): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Tooltip Component
|
|
4
|
+
* Contextual tooltip
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {React.ReactNode} props.children - Trigger element
|
|
8
|
+
* @param {string} props.content - Tooltip content
|
|
9
|
+
* @param {'top' | 'bottom' | 'left' | 'right'} [props.placement='top'] - Tooltip placement
|
|
10
|
+
* @param {string} [props.className] - Additional classes
|
|
11
|
+
*/
|
|
12
|
+
export const Tooltip: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export { Button } from './components/Button';
|
|
2
|
+
export { Alert } from './components/Alert';
|
|
3
|
+
export { Card } from './components/Card';
|
|
4
|
+
export { Modal } from './components/Modal';
|
|
5
|
+
export { Dropdown } from './components/Dropdown';
|
|
6
|
+
export { Tooltip } from './components/Tooltip';
|
|
7
|
+
export { Collapse } from './components/Collapse';
|
|
8
|
+
export { Tabs } from './components/Tabs';
|
|
9
|
+
export { Timeline } from './components/Timeline';
|
|
10
|
+
export { default as Container } from './components/Container';
|
|
11
|
+
export { default as Row } from './components/Row';
|
|
12
|
+
export { default as Col } from './components/Col';
|
|
13
|
+
export { default as Text } from './components/Text';
|
|
14
|
+
export { default as Box } from './components/Box';
|
|
15
|
+
export { Offcanvas } from './components/Offcanvas';
|
|
16
|
+
export { Carousel } from './components/Carousel';
|
|
17
|
+
export { Popover } from './components/Popover';
|
|
18
|
+
export { Scrollspy } from './components/Scrollspy';
|
|
19
|
+
export { Select } from './components/Select';
|
|
20
|
+
export { FileUpload } from './components/FileUpload';
|
|
21
|
+
export { NumberInput } from './components/NumberInput';
|
|
22
|
+
export { Slider } from './components/Slider';
|
|
23
|
+
export { Switch } from './components/Switch';
|
|
24
|
+
export { InputOTP } from './components/InputOTP';
|
|
25
|
+
export { Checkbox } from './components/Checkbox';
|
|
26
|
+
export { Radio } from './components/Radio';
|
|
27
|
+
export { Accordion } from './components/Accordion';
|
|
28
|
+
export { Navbar } from './components/Navbar';
|
|
29
|
+
export { Pagination } from './components/Pagination';
|
|
30
|
+
export { Spinner } from './components/Spinner';
|
|
31
|
+
export { Badge } from './components/Badge';
|
|
32
|
+
export { Avatar } from './components/Avatar';
|
|
33
|
+
export { Breadcrumb } from './components/Breadcrumb';
|
|
34
|
+
export { Progress } from './components/Progress';
|
|
35
|
+
export { ButtonGroup } from './components/ButtonGroup';
|
|
36
|
+
export { ListGroup } from './components/ListGroup';
|
|
37
|
+
export const version: "1.0.1";
|
|
38
|
+
export { Toaster, toast } from './components/Sonner';
|
|
39
|
+
export { Input, Textarea } from './components/Input';
|
|
40
|
+
export { Stat, StatGroup } from './components/Stat';
|
package/package.json
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@amelharrak/eldo-ui",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Modern, lightweight React component library with TypeScript support - 23+ components, tree-shakeable",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/types/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"eldo-setup": "./setup.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/types/index.d.ts",
|
|
15
|
+
"import": "./dist/index.mjs",
|
|
16
|
+
"require": "./dist/index.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./css/*": "./dist/css/*",
|
|
19
|
+
"./scss/*": "./src/scss/*"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"src/scss",
|
|
24
|
+
"setup.js",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"scripts": {
|
|
30
|
+
"dev": "vite",
|
|
31
|
+
"dev:lib": "vite build --watch --config vite.config.lib.js",
|
|
32
|
+
"build": "vite build --config vite.config.lib.js",
|
|
33
|
+
"build:docs": "vite build",
|
|
34
|
+
"build:css": "sass src/scss/eldo.scss dist/css/eldo.css",
|
|
35
|
+
"build:css:min": "sass src/scss/eldo.scss dist/css/eldo.min.css --style=compressed --no-source-map",
|
|
36
|
+
"build:all": "npm run build && npm run build:css && npm run build:css:min",
|
|
37
|
+
"preview": "vite preview",
|
|
38
|
+
"preview:docs": "vite preview --outDir dist-docs",
|
|
39
|
+
"test": "vitest",
|
|
40
|
+
"test:ui": "vitest --ui",
|
|
41
|
+
"test:coverage": "vitest --coverage",
|
|
42
|
+
"prepublishOnly": "npm run build:all",
|
|
43
|
+
"setup": "node setup.js"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"react",
|
|
47
|
+
"react-component",
|
|
48
|
+
"ui-library",
|
|
49
|
+
"components",
|
|
50
|
+
"typescript",
|
|
51
|
+
"modal",
|
|
52
|
+
"dropdown",
|
|
53
|
+
"accordion",
|
|
54
|
+
"hooks",
|
|
55
|
+
"accessible",
|
|
56
|
+
"design-system"
|
|
57
|
+
],
|
|
58
|
+
"repository": {
|
|
59
|
+
"type": "git",
|
|
60
|
+
"url": "https://github.com/aelharrak/eldo-ui.git"
|
|
61
|
+
},
|
|
62
|
+
"bugs": {
|
|
63
|
+
"url": "https://github.com/aelharrak/eldo-ui/issues"
|
|
64
|
+
},
|
|
65
|
+
"homepage": "https://eldo-ui.com",
|
|
66
|
+
"author": "Eldo UI Team",
|
|
67
|
+
"license": "MIT",
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
70
|
+
"@testing-library/react": "^16.3.1",
|
|
71
|
+
"@testing-library/user-event": "^14.6.1",
|
|
72
|
+
"@types/node": "^25.0.7",
|
|
73
|
+
"@types/react": "^19.2.8",
|
|
74
|
+
"@types/react-dom": "^19.2.3",
|
|
75
|
+
"@vitejs/plugin-react": "^5.1.2",
|
|
76
|
+
"jsdom": "^27.4.0",
|
|
77
|
+
"react": "^19.2.3",
|
|
78
|
+
"react-dom": "^19.2.3",
|
|
79
|
+
"sass": "^1.97.1",
|
|
80
|
+
"terser": "^5.44.1",
|
|
81
|
+
"typescript": "^5.9.3",
|
|
82
|
+
"vite": "^7.3.0",
|
|
83
|
+
"vite-plugin-dts": "^4.5.4",
|
|
84
|
+
"vitest": "^4.0.17"
|
|
85
|
+
},
|
|
86
|
+
"peerDependencies": {
|
|
87
|
+
"@popperjs/core": "^2.11.8",
|
|
88
|
+
"react": "^19.2.3",
|
|
89
|
+
"react-dom": "^19.2.3"
|
|
90
|
+
},
|
|
91
|
+
"peerDependenciesMeta": {
|
|
92
|
+
"@popperjs/core": {
|
|
93
|
+
"optional": true
|
|
94
|
+
},
|
|
95
|
+
"react": {
|
|
96
|
+
"optional": true
|
|
97
|
+
},
|
|
98
|
+
"react-dom": {
|
|
99
|
+
"optional": true
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"optionalDependencies": {
|
|
103
|
+
"chart.js": "^4.5.1",
|
|
104
|
+
"prismjs": "^1.30.0"
|
|
105
|
+
}
|
|
106
|
+
}
|