@amelharrak/eldo-ui 1.0.1 → 1.0.5
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/README.md +34 -16
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +42 -40
- package/dist/index.mjs.map +1 -1
- package/dist/types/index.d.ts +9 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ A modern, lightweight, and accessible React component library. Fully tree-shakea
|
|
|
8
8
|
|
|
9
9
|
## 🚀 Features
|
|
10
10
|
|
|
11
|
-
- **
|
|
11
|
+
- **50+ React Components** - Fully typed and ready to use
|
|
12
12
|
- **Tree-Shakeable** - Import only what you need (Full bundle ~10kb gzipped)
|
|
13
13
|
- **TypeScript** - Built-in type definitions
|
|
14
14
|
- **Accessible** - WAI-ARIA compliant
|
|
@@ -27,13 +27,17 @@ yarn add @amelharrak/eldo-ui
|
|
|
27
27
|
|
|
28
28
|
### 1. Import Styles
|
|
29
29
|
|
|
30
|
-
Add the styles to your root `App.js` or `
|
|
30
|
+
Add the styles to your root `App.js`, `index.js`, or `layout.tsx`:
|
|
31
31
|
|
|
32
32
|
```javascript
|
|
33
|
-
import '@amelharrak/eldo-ui/
|
|
33
|
+
import '@amelharrak/eldo-ui/css/eldo.css';
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
### 2.
|
|
36
|
+
### 2. Next.js Usage
|
|
37
|
+
|
|
38
|
+
Since `eldo-ui` uses interactive React features, components include the `"use client";` directive automatically. You can use them directly in your Pages or App Router.
|
|
39
|
+
|
|
40
|
+
### 3. Basic Example
|
|
37
41
|
|
|
38
42
|
```tsx
|
|
39
43
|
import { Button, Modal, Card } from '@amelharrak/eldo-ui';
|
|
@@ -63,32 +67,46 @@ function App() {
|
|
|
63
67
|
|
|
64
68
|
## 📖 Components
|
|
65
69
|
|
|
66
|
-
### Core
|
|
70
|
+
### Core & Layout
|
|
67
71
|
|
|
68
|
-
- **Button** - Multiple variants, sizes, and loading states
|
|
72
|
+
- **Button**, **ButtonGroup** - Multiple variants, sizes, and loading states
|
|
69
73
|
- **Alert** - Dismissible alerts with variations
|
|
70
|
-
- **Card**
|
|
71
|
-
- **Badge
|
|
74
|
+
- **Card** (`Header`, `Body`, `Footer`) - Flexible card layouts
|
|
75
|
+
- **Badge**, **Spinner** - Status indicators
|
|
76
|
+
- **Container**, **Row**, **Col**, **Box**, **Text** - Layout primitives
|
|
77
|
+
- **Navbar** (`Brand`, `Toggle`, `Collapse`, `Nav`), **Offcanvas** - Navigation
|
|
78
|
+
- **Breadcrumb**, **Pagination** - Navigation helpers
|
|
72
79
|
|
|
73
80
|
### Interactive
|
|
74
81
|
|
|
75
82
|
- **Modal** - Accessible dialogs
|
|
76
|
-
- **Dropdown** - Context menus and actions
|
|
77
|
-
- **Accordion** - Collapsible sections
|
|
78
|
-
- **Tabs** - Tabbed navigation
|
|
83
|
+
- **Dropdown** (`Item`, `Divider`) - Context menus and actions
|
|
84
|
+
- **Accordion**, **AccordionItem** - Collapsible sections
|
|
85
|
+
- **Tabs**, **TabPane** - Tabbed navigation
|
|
79
86
|
- **Collapse** - Expand/collapse toggles
|
|
80
|
-
- **Tooltip
|
|
87
|
+
- **Tooltip**, **Popover** - Contextual info
|
|
88
|
+
- **Carousel**, **CarouselItem** - Interactive slideshow
|
|
89
|
+
- **Timeline** - Process indicators
|
|
90
|
+
- **Scrollspy** - Scroll tracking
|
|
81
91
|
|
|
82
92
|
### Forms
|
|
83
93
|
|
|
84
|
-
- **Input**, **
|
|
94
|
+
- **Input**, **Textarea** - Text inputs
|
|
95
|
+
- **Select** - Native and custom selects
|
|
96
|
+
- **Switch**, **Checkbox**, **Radio** - Toggles and choices
|
|
85
97
|
- **InputOTP** - One-time password input
|
|
98
|
+
- **NumberInput** - Numeric controls
|
|
99
|
+
- **Slider** - Range inputs
|
|
86
100
|
- **FileUpload** - Drag & drop zone
|
|
87
101
|
|
|
88
|
-
###
|
|
102
|
+
### Feedback
|
|
89
103
|
|
|
90
|
-
- **
|
|
91
|
-
- **
|
|
104
|
+
- **Toaster**, **toast** (Sonner) - Modern notifications
|
|
105
|
+
- **Toast** (Classic) - Positioning and stacking
|
|
106
|
+
- **Progress** - Bars and indicators
|
|
107
|
+
- **Stat**, **StatGroup** - Data display
|
|
108
|
+
- **Avatar** - User profile images
|
|
109
|
+
- **ListGroup** - List items
|
|
92
110
|
|
|
93
111
|
## 🎨 Customization
|
|
94
112
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),a=require("react-dom"),t=e.forwardRef(({children:a,variant:t="primary",size:n,outline:r=!1,disabled:l=!1,loading:s=!1,type:o="button",className:c="",onClick:i,...d},m)=>{const u=["btn",r?`btn-outline-${t}`:`btn-${t}`,n?`btn-${n}`:"",c].filter(Boolean).join(" ");return e.createElement("button",{ref:m,type:o,className:u,disabled:l||s,onClick:i,...d},s&&e.createElement("span",{className:"spinner-border spinner-border-sm me-2",role:"status","aria-hidden":"true"}),a)});t.displayName="Button";const n=e.forwardRef(({children:a,variant:t="primary",dismissible:n=!1,show:r,onClose:l,autoClose:s=!1,className:o="",...c},i)=>{const[d,m]=e.useState(!0),u=void 0!==r?r:d,p=e.useCallback(()=>{void 0===r&&m(!1),l&&l()},[r,l]);return e.useEffect(()=>{let e;return u&&s&&(e=setTimeout(()=>{p()},"number"==typeof s?s:5e3)),()=>{e&&clearTimeout(e)}},[u,s,p]),u?e.createElement("div",{ref:i,className:`alert alert-${t} ${n?"alert-dismissible":""} ${o}`,role:"alert",...c},a,n&&e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:p})):null});n.displayName="Alert";const r=e.forwardRef(({children:a,hoverable:t=!1,className:n="",bodyClassName:r="",...l},s)=>e.createElement("div",{ref:s,className:`card ${t?"card-hoverable":""} ${n}`,...l},a));r.displayName="Card";const l=e.forwardRef(({className:a="",children:t,...n},r)=>e.createElement("div",{ref:r,className:`card-body ${a}`,...n},t));l.displayName="Card.Body";const s=e.forwardRef(({className:a="",children:t,...n},r)=>e.createElement("div",{ref:r,className:`card-header ${a}`,...n},t));s.displayName="Card.Header";const o=e.forwardRef(({className:a="",children:t,...n},r)=>e.createElement("div",{ref:r,className:`card-footer ${a}`,...n},t));o.displayName="Card.Footer",r.Body=l,r.Header=s,r.Footer=o;const c=e.forwardRef(({trigger:a,children:t,isOpen:n,onToggle:r,align:l="start",className:s="",...o},c)=>{const[i,d]=e.useState(!1),m=e.useRef(null),u=void 0!==n?n:i;e.useEffect(()=>{const e=e=>{m.current&&!m.current.contains(e.target)&&(void 0===n&&d(!1),r&&r(!1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const p=()=>{const e=!u;void 0===n&&d(e),r&&r(e)};return e.createElement("div",{ref:m,className:`dropdown ${u?"show":""} ${s}`,onKeyDown:e=>{"Escape"===e.key&&u&&(p(),a.ref&&a.ref.current&&a.ref.current.focus())},...o},e.createElement("div",{onClick:p,"aria-expanded":u,"aria-haspopup":"true",role:"button",tabIndex:0},a),u&&e.createElement("div",{className:`dropdown-menu show dropdown-menu-${l}`,role:"menu"},t))});c.displayName="Dropdown";const i=e.forwardRef(({children:a,onClick:t,className:n="",...r},l)=>e.createElement("button",{ref:l,className:`dropdown-item ${n}`,onClick:t,role:"menuitem",...r},a));i.displayName="Dropdown.Item";const d=()=>e.createElement("hr",{className:"dropdown-divider"});d.displayName="Dropdown.Divider",c.Item=i,c.Divider=d;const m=e.forwardRef(({children:a,content:t,placement:n="top",className:r="",...l},s)=>{const[o,c]=e.useState(!1),i=e.useRef(null),d=`tooltip-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:s,className:`tooltip-wrapper ${r}`,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),onFocus:()=>c(!0),onBlur:()=>c(!1),"aria-describedby":o?d:void 0,...l},a,o&&e.createElement("div",{id:d,ref:i,className:`tooltip bs-tooltip-${n} show`,role:"tooltip"},e.createElement("div",{className:"tooltip-arrow"}),e.createElement("div",{className:"tooltip-inner"},t)))});m.displayName="Tooltip";const u=e.forwardRef(({isOpen:a,defaultOpen:t=!1,children:n,className:r="",...l},s)=>{const[o,c]=e.useState(t),i=void 0!==a?a:o,d=l.id||`collapse-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:s,id:d,className:`collapse ${i?"show":""} ${r}`,...l},n)});u.displayName="Collapse";const p=e.forwardRef(({activeTab:a,defaultActiveTab:t=0,onTabChange:n,children:r,className:l="",...s},o)=>{const[c,i]=e.useState(t),d=void 0!==a?a:c,m=e.Children.toArray(r);return e.createElement("div",{ref:o,className:`tabs-container ${l}`,...s},e.createElement("ul",{className:"nav nav-tabs",role:"tablist"},m.map((t,r)=>{const l=d===r,s=`tab-${r}`,o=`pane-${r}`;return e.createElement("li",{key:r,className:"nav-item",role:"presentation"},e.createElement("button",{className:"nav-link "+(l?"active":""),onClick:()=>(e=>{void 0===a&&i(e),n&&n(e)})(r),role:"tab","aria-selected":l,"aria-controls":o,id:s,tabIndex:l?0:-1},t.props.title))})),e.createElement("div",{className:"tab-content"},m.map((a,t)=>{const n=d===t,r=`tab-${t}`,l=`pane-${t}`;return e.createElement("div",{key:t,className:"tab-pane "+(n?"active show":""),role:"tabpanel",id:l,"aria-labelledby":r,tabIndex:0,hidden:!n},n&&a.props.children)})))});p.displayName="Tabs";const v=({title:a,children:t})=>e.createElement(e.Fragment,null,t);v.displayName="Tabs.Pane",p.Pane=v;const f=e.createContext(null);let h=0;function N({toast:a,index:t,onClose:n,richColors:r,closeButton:l}){const s={success:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),error:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",clipRule:"evenodd"})),warning:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),info:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),loading:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",className:"sonner-loading"},e.createElement("circle",{cx:"10",cy:"10",r:"8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeDasharray:"50.265",strokeDashoffset:"25"}))},o=a.type?`sonner-${a.type}`:"",c=r&&a.type?`sonner-rich-${a.type}`:"";return e.createElement("li",{className:`sonner-toast ${o} ${c}`,style:{"--index":t}},e.createElement("div",{className:"sonner-toast-content"},a.type&&s[a.type]&&e.createElement("div",{className:"sonner-toast-icon"},s[a.type]),e.createElement("div",{className:"sonner-toast-body"},a.title&&e.createElement("div",{className:"sonner-toast-title"},a.title),a.description&&e.createElement("div",{className:"sonner-toast-description"},a.description),!a.title&&!a.description&&e.createElement("div",{className:"sonner-toast-description"},a.message)),(l||a.closeButton)&&e.createElement("button",{className:"sonner-toast-close",onClick:n,"aria-label":"Close"},e.createElement("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},e.createElement("path",{d:"M13 1L1 13M1 1L13 13",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})))),a.action&&e.createElement("div",{className:"sonner-toast-action"},e.createElement("button",{className:"sonner-action-button",onClick:()=>{a.action.onClick?.(),n()}},a.action.label)))}const b=Object.assign((e,a={})=>{if("undefined"==typeof window)return;const t=new CustomEvent("sonner-toast",{detail:{message:e,...a}});window.dispatchEvent(t)},{success:(e,a={})=>{b(e,{...a,type:"success"})},error:(e,a={})=>{b(e,{...a,type:"error"})},warning:(e,a={})=>{b(e,{...a,type:"warning"})},info:(e,a={})=>{b(e,{...a,type:"info"})},loading:(e,a={})=>{b(e,{...a,type:"loading",duration:1/0})},promise:(e,a={})=>(b(a.loading||"Loading...",{type:"loading",duration:1/0}),e.then(e=>{const t="function"==typeof a.success?a.success(e):a.success||"Success";b(t,{type:"success"})}).catch(e=>{const t="function"==typeof a.error?a.error(e):a.error||"Error";b(t,{type:"error"})}),e)});"undefined"!=typeof window&&window.addEventListener("sonner-toast",e=>{const a=new CustomEvent("add-sonner-toast",{detail:e.detail});window.dispatchEvent(a)});const E=({children:a,className:t="",...n})=>e.createElement("ul",{className:`timeline ${t}`,...n},a);E.Item=({children:a,className:t="",active:n=!1,completed:r=!1,animated:l=!1,...s})=>e.createElement("li",{className:`timeline-item ${n?"active":""} ${r?"completed":""} ${l?"animated":""} ${t}`,...s},a),E.Date=({children:a,className:t="",...n})=>e.createElement("div",{className:`timeline-date ${t}`,...n},a),E.Title=({children:a,className:t="",...n})=>e.createElement("h5",{className:`timeline-title ${t}`,...n},a),E.Text=({children:a,className:t="",...n})=>e.createElement("p",{className:`timeline-text ${t}`,...n},a),E.Content=({children:a,className:t="",...n})=>e.createElement("div",{className:`timeline-content ${t}`,...n},a);const g=e.forwardRef(({isOpen:t,onClose:n,title:r,children:l,placement:s="end",backdrop:o=!0,className:c="",...i},d)=>{if(e.useEffect(()=>(t?document.body.classList.add("offcanvas-open"):document.body.classList.remove("offcanvas-open"),()=>{document.body.classList.remove("offcanvas-open")}),[t]),!t)return null;const m=e.createElement(e.Fragment,null,o&&e.createElement("div",{className:"offcanvas-backdrop fade show",onClick:n}),e.createElement("div",{ref:d,className:`offcanvas offcanvas-${s} show ${c}`,tabIndex:"-1",role:"dialog","aria-modal":"true","aria-labelledby":r?"offcanvas-label":void 0,...i},e.createElement("div",{className:"offcanvas-header"},r&&e.createElement("h5",{className:"offcanvas-title",id:"offcanvas-label"},r),e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:n})),e.createElement("div",{className:"offcanvas-body"},l)));return a.createPortal(m,document.body)});g.displayName="Offcanvas";const y=e.forwardRef(({children:a,activeIndex:t,onSlide:n,controls:r=!0,indicators:l=!0,interval:s=!1,className:o="",...c},i)=>{const d=e.Children.toArray(a),[m,u]=e.useState(0),p=void 0!==t?t:m;e.useEffect(()=>{if(s){const e=setInterval(()=>{f()},s);return()=>clearInterval(e)}},[p,s]);const v=e=>{void 0===t&&u(e),n&&n(e)},f=()=>{const e=p===d.length-1?0:p+1;v(e)};return e.createElement("div",{ref:i,className:`carousel slide ${o}`,...c},l&&e.createElement("div",{className:"carousel-indicators"},d.map((a,t)=>e.createElement("button",{key:t,type:"button",className:t===p?"active":"",onClick:()=>v(t),"aria-current":t===p?"true":"false","aria-label":`Slide ${t+1}`}))),e.createElement("div",{className:"carousel-inner"},d.map((a,t)=>e.createElement("div",{key:t,className:"carousel-item "+(t===p?"active":"")},a))),r&&e.createElement(e.Fragment,null,e.createElement("button",{className:"carousel-control-prev",type:"button",onClick:()=>{const e=0===p?d.length-1:p-1;v(e)},"aria-label":"Previous slide"},e.createElement("span",{className:"carousel-control-prev-icon","aria-hidden":"true"}),e.createElement("span",{className:"visually-hidden"},"Previous")),e.createElement("button",{className:"carousel-control-next",type:"button",onClick:f,"aria-label":"Next slide"},e.createElement("span",{className:"carousel-control-next-icon","aria-hidden":"true"}),e.createElement("span",{className:"visually-hidden"},"Next"))))});y.displayName="Carousel";const $=({children:a})=>e.createElement(e.Fragment,null,a);$.displayName="Carousel.Item",y.Item=$;const w=e.forwardRef(({children:a,title:t,content:n,placement:r="top",trigger:l="click",className:s="",...o},c)=>{const[i,d]=e.useState(!1),m=e.useRef(null);e.useEffect(()=>{const e=e=>{m.current&&!m.current.contains(e.target)&&d(!1)};if("click"===l)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[l]);const u=()=>{"click"===l&&d(!i)},p=`popover-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:m,className:`popover-wrapper ${s}`,onClick:u,onMouseEnter:()=>{"hover"===l&&d(!0)},onMouseLeave:()=>{"hover"===l&&d(!1)},onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||u()},"aria-describedby":i?p:void 0,tabIndex:"0",role:"button",...o},a,i&&e.createElement("div",{id:p,className:`popover bs-popover-${r} show`,role:"tooltip"},e.createElement("div",{className:"popover-arrow"}),t&&e.createElement("h3",{className:"popover-header"},t),e.createElement("div",{className:"popover-body"},n)))});w.displayName="Popover";const x=e.forwardRef(({targets:a=[],onActiveChange:t,offset:n=0,children:r,className:l="",...s},o)=>{const[c,i]=e.useState("");return e.useEffect(()=>{const e=()=>{const e=window.scrollY+n;for(let n=a.length-1;n>=0;n--){const r=document.getElementById(a[n]);if(r){const{offsetTop:l}=r;if(e>=l){c!==a[n]&&(i(a[n]),t&&t(a[n]));break}}}};return window.addEventListener("scroll",e),e(),()=>window.removeEventListener("scroll",e)},[a,n,c,t]),e.createElement("nav",{ref:o,className:`scrollspy ${l}`,...s},e.Children.map(r,a=>e.isValidElement(a)?e.cloneElement(a,{activeId:c}):a))});x.displayName="Scrollspy";const k=e.forwardRef(({options:a=[],value:t,defaultValue:n,onChange:r,placeholder:l="Select...",searchable:s=!1,disabled:o=!1,className:c="",...i},d)=>{const[m,u]=e.useState(!1),[p,v]=e.useState(n),[f,h]=e.useState(""),N=e.useRef(null),b=void 0!==t?t:p,E=a.find(e=>e.value===b);e.useEffect(()=>{const e=e=>{N.current&&!N.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const g=e=>{void 0===t&&v(e.value),r&&r(e.value),u(!1),h("")},y=s&&f?a.filter(e=>e.label.toLowerCase().includes(f.toLowerCase())):a;return e.createElement("div",{ref:N,className:`select-container ${m?"open":""} ${o?"disabled":""} ${c}`,...i},e.createElement("div",{className:"select-trigger",onClick:()=>!o&&u(!m)},e.createElement("span",null,E?E.label:l),e.createElement("span",{className:"select-arrow"},"▼")),m&&e.createElement("div",{className:"select-dropdown",role:"listbox",id:"select-dropdown"},s&&e.createElement("input",{type:"text",className:"select-search",placeholder:"Search...",value:f,onChange:e=>h(e.target.value),onClick:e=>e.stopPropagation(),role:"searchbox"}),e.createElement("div",{className:"select-options"},y.map(a=>e.createElement("div",{key:a.value,className:"select-option "+(a.value===b?"selected":""),onClick:()=>g(a),role:"option","aria-selected":a.value===b,tabIndex:"0",onKeyDown:e=>{"Enter"===e.key&&g(a)}},a.label)),0===y.length&&e.createElement("div",{className:"select-option disabled",role:"option","aria-disabled":"true"},"No options found"))))});k.displayName="Select";const C=e.forwardRef(({onFileSelect:a,multiple:t=!1,accept:n,maxSize:r,className:l="",...s},o)=>{const[c,i]=e.useState(!1),[d,m]=e.useState([]),u=e.useRef(null),p=e=>{const t=Array.from(e).filter(e=>!(r&&e.size>r));m(t),a&&a(t)},v=()=>{u.current?.click()};return e.createElement("div",{ref:o,className:`file-upload ${c?"dragging":""} ${l}`,onDragOver:e=>{e.preventDefault(),i(!0)},onDragLeave:()=>{i(!1)},onDrop:e=>{e.preventDefault(),i(!1),p(e.dataTransfer.files)},onClick:v,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||v()},tabIndex:"0",role:"button","aria-label":"File upload dropzone",...s},e.createElement("input",{ref:u,type:"file",multiple:t,accept:n,onChange:e=>{e.target.files&&p(e.target.files)},style:{display:"none"}}),e.createElement("div",{className:"file-upload-content"},d.length>0?e.createElement("div",{className:"file-list"},d.map((a,t)=>e.createElement("div",{key:t,className:"file-item"},a.name," (",(a.size/1024).toFixed(2)," KB)"))):e.createElement("div",{className:"file-upload-placeholder"},e.createElement("p",null,"Drag and drop files here or click to browse"))))});C.displayName="FileUpload";const R=e.forwardRef(({min:a,max:t,step:n=1,value:r,defaultValue:l=0,onChange:s,className:o="",...c},i)=>{const[d,m]=e.useState(l),u=void 0!==r?r:d,p=e=>{let n=e;void 0!==a&&(n=Math.max(a,n)),void 0!==t&&(n=Math.min(t,n)),void 0===r&&m(n),s&&s(n)};return e.createElement("div",{className:`number-input ${o}`},e.createElement("button",{type:"button",className:"btn btn-outline-secondary",onClick:()=>p(u-n),disabled:void 0!==a&&u<=a},"-"),e.createElement("input",{ref:i,type:"number",className:"form-control",value:u,min:a,max:t,step:n,onChange:e=>p(parseFloat(e.target.value)||0),...c}),e.createElement("button",{type:"button",className:"btn btn-outline-secondary",onClick:()=>p(u+n),disabled:void 0!==t&&u>=t},"+"))});R.displayName="NumberInput";const S=e.forwardRef(({min:a=0,max:t=100,step:n=1,value:r,defaultValue:l,onChange:s,showValue:o=!1,className:c="",...i},d)=>{const[m,u]=e.useState(l||a),p=void 0!==r?r:m;return e.createElement("div",{className:`slider-container ${c}`},e.createElement("input",{ref:d,type:"range",className:"form-range",min:a,max:t,step:n,value:p,onChange:e=>{const a=parseFloat(e.target.value);void 0===r&&u(a),s&&s(a)},"aria-label":i["aria-label"]||"Range slider","aria-valuemin":a,"aria-valuemax":t,"aria-valuenow":p,...i}),o&&e.createElement("div",{className:"slider-value"},p))});S.displayName="Slider";const L=e.forwardRef(({checked:a,defaultChecked:t,onChange:n,disabled:r=!1,label:l,className:s="",...o},c)=>e.createElement("div",{className:`form-switch ${s}`},e.createElement("input",{ref:c,type:"checkbox",className:"form-check-input",role:"switch",checked:a,defaultChecked:t,onChange:n,disabled:r,...o}),l&&e.createElement("label",{className:"form-check-label"},l)));L.displayName="Switch";const B=e.forwardRef(({length:a=6,onComplete:t,onChange:n,type:r="numeric",className:l="",...s},o)=>{const[c,i]=e.useState(Array(a).fill("")),d=e.useRef([]),m=e=>{e.preventDefault();const r=e.clipboardData.getData("text").slice(0,a).split("").concat(Array(a).fill("")).slice(0,a);i(r),n&&n(r.join("")),r.every(e=>""!==e)&&t&&t(r.join(""))};return e.createElement("div",{ref:o,className:`input-otp ${l}`,...s},c.map((l,s)=>e.createElement("input",{key:s,ref:e=>d.current[s]=e,type:"text",className:"otp-input",value:l,onChange:e=>((e,l)=>{if(!("numeric"===r?/^\d*$/.test(l):/^[a-zA-Z0-9]*$/.test(l)))return;const s=[...c];s[e]=l.slice(-1),i(s),n&&n(s.join("")),l&&e<a-1&&d.current[e+1]?.focus(),s.every(e=>""!==e)&&t&&t(s.join(""))})(s,e.target.value),onKeyDown:e=>((e,t)=>{"Backspace"===t.key&&!c[e]&&e>0&&d.current[e-1]?.focus(),"ArrowLeft"===t.key&&e>0&&d.current[e-1]?.focus(),"ArrowRight"===t.key&&e<a-1&&d.current[e+1]?.focus()})(s,e),onPaste:0===s?m:void 0,maxLength:1})))});B.displayName="InputOTP";const T=e.forwardRef(({children:a,className:t="",alwaysOpen:n=!1,...r},l)=>{const[s,o]=e.useState(new Set);return e.createElement("div",{ref:l,className:`accordion ${t}`,...r},e.Children.map(a,(a,t)=>e.isValidElement(a)?e.cloneElement(a,{isOpen:s.has(t),onToggle:()=>(e=>{o(a=>{const t=new Set(n?a:[]);return a.has(e)?t.delete(e):t.add(e),t})})(t)}):a))});T.displayName="Accordion";const I=e.forwardRef(({title:a,children:t,isOpen:n,onToggle:r,className:l="",...s},o)=>{const c=`accordion-header-${s.id||Math.random().toString(36).substr(2,9)}`,i=`accordion-collapse-${s.id||Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:o,className:`accordion-item ${l}`,...s},e.createElement("h2",{className:"accordion-header",id:c},e.createElement("button",{className:"accordion-button "+(n?"":"collapsed"),type:"button",onClick:r,"aria-expanded":n,"aria-controls":i},a)),e.createElement("div",{id:i,className:"accordion-collapse collapse "+(n?"show":""),"aria-labelledby":c},e.createElement("div",{className:"accordion-body"},t)))});I.displayName="Accordion.Item",T.Item=I;const M=e.forwardRef(({children:a,variant:t="light",bg:n,expand:r="lg",className:l="",...s},o)=>{const c=n?`bg-${n}`:"",i=r?`navbar-expand-${r}`:"";return e.createElement("nav",{ref:o,className:`navbar navbar-${t} ${c} ${i} ${l}`,...s},a)});M.displayName="Navbar";const z=e.forwardRef(({children:a,href:t="#",className:n="",...r},l)=>e.createElement("a",{ref:l,className:`navbar-brand ${n}`,href:t,...r},a));z.displayName="Navbar.Brand";const D=e.forwardRef(({onClick:a,className:t="",...n},r)=>e.createElement("button",{ref:r,className:`navbar-toggler ${t}`,type:"button",onClick:a,"aria-label":"Toggle navigation",...n},e.createElement("span",{className:"navbar-toggler-icon"})));D.displayName="Navbar.Toggle";const j=e.forwardRef(({children:a,isOpen:t,className:n="",...r},l)=>e.createElement("div",{ref:l,className:`collapse navbar-collapse ${t?"show":""} ${n}`,...r},a));j.displayName="Navbar.Collapse";const P=e.forwardRef(({children:a,className:t="",...n},r)=>e.createElement("ul",{ref:r,className:`navbar-nav ${t}`,...n},a));P.displayName="Navbar.Nav",M.Brand=z,M.Toggle=D,M.Collapse=j,M.Nav=P;const A=e.forwardRef(({currentPage:a,totalPages:t,onPageChange:n,maxVisible:r=5,size:l,className:s="",...o},c)=>{const i=l?`pagination-${l}`:"";return e.createElement("nav",{ref:c,"aria-label":"Page navigation",...o},e.createElement("ul",{className:`pagination ${i} ${s}`},e.createElement("li",{className:"page-item "+(1===a?"disabled":"")},e.createElement("button",{className:"page-link",onClick:()=>n(a-1),disabled:1===a},"Previous")),(()=>{const e=[];let n=Math.max(1,a-Math.floor(r/2)),l=Math.min(t,n+r-1);l-n<r-1&&(n=Math.max(1,l-r+1));for(let a=n;a<=l;a++)e.push(a);return e})().map(t=>e.createElement("li",{key:t,className:"page-item "+(t===a?"active":"")},e.createElement("button",{className:"page-link",onClick:()=>n(t),"aria-current":t===a?"page":void 0},t))),e.createElement("li",{className:"page-item "+(a===t?"disabled":"")},e.createElement("button",{className:"page-link",onClick:()=>n(a+1),disabled:a===t},"Next"))))});A.displayName="Pagination";const F=e.forwardRef(({size:a="md",variant:t="primary",className:n="",...r},l)=>e.createElement("div",{ref:l,className:`spinner spinner-${a} spinner-${t} ${n}`,role:"status",...r},e.createElement("div",{className:"spinner-circle"}),e.createElement("span",{className:"visually-hidden"},"Loading...")));function O({title:a,value:t,description:n,descClass:r="",icon:l,iconBg:s,compact:o=!1,progress:c,target:i,change:d,className:m="",...u}){const p=["stat"];return o&&p.push("stat-compact"),m&&p.push(m),e.createElement("div",{className:p.join(" "),...u},l&&e.createElement("div",{className:"stat-icon",style:{backgroundColor:s}},l),e.createElement("div",{className:"stat-title"},a),e.createElement("div",{className:"stat-value"},t),n&&e.createElement("div",{className:`stat-desc ${r}`.trim()},n),o&&void 0!==d&&e.createElement("span",{className:"stat-badge "+(d>0?"success":"danger")},d>0?"↗":"↘"," ",Math.abs(d),"%"),void 0!==c&&e.createElement(e.Fragment,null,i&&e.createElement("div",{className:"stat-desc"},"Target: ",i),e.createElement("div",{className:"stat-progress"},e.createElement("div",{className:"stat-progress-bar",style:{width:`${c}%`}}))))}function V({items:a=[],separator:t="/",className:n="",...r}){return e.createElement("nav",{"aria-label":"breadcrumb",className:n,...r},e.createElement("ol",{className:"breadcrumb"},a.map((t,n)=>e.createElement(V.Item,{key:n,active:n===a.length-1,href:t.href},t.label))))}function H({flush:a=!1,numbered:t=!1,horizontal:n=!1,children:r,className:l="",...s}){const o=t?"ol":"ul",c=["list-group",a?"list-group-flush":"",t?"list-group-numbered":"",n?"list-group-horizontal":"",l].filter(Boolean).join(" ");return e.createElement(o,{className:c,...s},r)}F.displayName="Spinner",V.Item=function({children:a,active:t=!1,href:n,className:r="",...l}){const s=["breadcrumb-item",t?"active":"",r].filter(Boolean).join(" ");return e.createElement("li",{className:s,"aria-current":t?"page":void 0,...l},t||!n?a:e.createElement("a",{href:n},a))},H.Item=function({active:a=!1,disabled:t=!1,variant:n,action:r=!1,href:l,children:s,className:o="",...c}){const i=l?"a":"li",d=["list-group-item",a?"active":"",t?"disabled":"",r||l?"list-group-item-action":"",n?`list-group-item-${n}`:"",o].filter(Boolean).join(" ");return e.createElement(i,{className:d,href:l,"aria-current":a?"true":void 0,"aria-disabled":t?"true":void 0,...c},s)};exports.Accordion=T,exports.Alert=n,exports.Avatar=function({src:a,alt:t="Avatar",size:n="md",shape:r="circle",fallback:l,status:s,className:o="",...c}){const[i,d]=e.useState(!1),m=["avatar",`avatar-${n}`,`avatar-${r}`,s?`avatar-status-${s}`:"",o].filter(Boolean).join(" "),u=!a||i;return e.createElement("div",{className:m,...c},u?e.createElement("span",{className:"avatar-fallback"},l||t?.charAt(0)?.toUpperCase()||"?"):e.createElement("img",{src:a,alt:t,onError:()=>d(!0),className:"avatar-img"}),s&&e.createElement("span",{className:"avatar-status"}))},exports.Badge=function({variant:a="primary",pill:t=!1,children:n,className:r="",...l}){const s=["badge",`bg-${a}`,t?"rounded-pill":"",r].filter(Boolean).join(" ");return e.createElement("span",{className:s,...l},n)},exports.Box=({m:a,mt:t,mb:n,ml:r,mr:l,mx:s,my:o,p:c,pt:i,pb:d,pl:m,pr:u,px:p,py:v,d:f,flex:h,justify:N,align:b,gap:E,as:g="div",className:y="",children:$,...w})=>{const x=[];void 0!==a&&x.push(`m-${a}`),void 0!==t&&x.push(`mt-${t}`),void 0!==n&&x.push(`mb-${n}`),void 0!==r&&x.push(`ms-${r}`),void 0!==l&&x.push(`me-${l}`),void 0!==s&&x.push(`mx-${s}`),void 0!==o&&x.push(`my-${o}`),void 0!==c&&x.push(`p-${c}`),void 0!==i&&x.push(`pt-${i}`),void 0!==d&&x.push(`pb-${d}`),void 0!==m&&x.push(`ps-${m}`),void 0!==u&&x.push(`pe-${u}`),void 0!==p&&x.push(`px-${p}`),void 0!==v&&x.push(`py-${v}`),f&&x.push(`d-${f}`),h&&x.push(`flex-${h}`),N&&x.push(`justify-content-${N}`),b&&x.push(`align-items-${b}`),E&&x.push(`gap-${E}`);const k=`${x.join(" ")} ${y}`.trim();return e.createElement(g,{className:k,...w},$)},exports.Breadcrumb=V,exports.Button=t,exports.ButtonGroup=function({vertical:a=!1,size:t,children:n,className:r="",...l}){const s=[a?"btn-group-vertical":"btn-group",t?`btn-group-${t}`:"",r].filter(Boolean).join(" ");return e.createElement("div",{className:s,role:"group",...l},n)},exports.Card=r,exports.Carousel=y,exports.Checkbox=function({id:a,label:t,checked:n,indeterminate:r=!1,disabled:l=!1,onChange:s,className:o="",...c}){const i=e.useRef(null);return e.useEffect(()=>{i.current&&(i.current.indeterminate=r)},[r]),e.createElement("div",{className:`form-check ${o}`},e.createElement("input",{ref:i,type:"checkbox",className:"form-check-input",id:a,checked:n,disabled:l,onChange:s,...c}),t&&e.createElement("label",{className:"form-check-label",htmlFor:a},t))},exports.Col=({xs:a,sm:t,md:n,lg:r,xl:l,className:s="",children:o,...c})=>{const i=[];a&&i.push("auto"===a?"col-auto":`col-${a}`),t&&i.push("auto"===t?"col-sm-auto":`col-sm-${t}`),n&&i.push("auto"===n?"col-md-auto":`col-md-${n}`),r&&i.push("auto"===r?"col-lg-auto":`col-lg-${r}`),l&&i.push("auto"===l?"col-xl-auto":`col-xl-${l}`),0===i.length&&i.push("col");const d=`${i.join(" ")} ${s}`.trim();return e.createElement("div",{className:d,...c},o)},exports.Collapse=u,exports.Container=({fluid:a=!1,className:t="",children:n,...r})=>{const l=`${a?"container-fluid":"container"} ${t}`.trim();return e.createElement("div",{className:l,...r},n)},exports.Dropdown=c,exports.FileUpload=C,exports.Input=function({type:a="text",size:t,isValid:n,isInvalid:r,plaintext:l=!1,readOnly:s=!1,disabled:o=!1,className:c="",...i}){const d=[l?"form-control-plaintext":"form-control",t?`form-control-${t}`:"",n?"is-valid":"",r?"is-invalid":"",c].filter(Boolean).join(" ");return e.createElement("input",{type:a,className:d,readOnly:s||l,disabled:o,...i})},exports.InputOTP=B,exports.ListGroup=H,exports.Modal=({isOpen:t,onClose:n,title:r,children:l,footer:s,backdrop:o=!0,keyboard:c=!0,size:i,centered:d=!1,className:m="",...u})=>{const[p,v]=e.useState(!1);if(e.useRef(null),e.useEffect(()=>(v(!0),()=>v(!1)),[]),e.useEffect(()=>(t?document.body.classList.add("modal-open"):document.body.classList.remove("modal-open"),()=>{document.body.classList.remove("modal-open")}),[t]),e.useEffect(()=>{const e=e=>{c&&"Escape"===e.key&&t&&n()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t,c,n]),!p)return null;const f=e.createElement(e.Fragment,null,t&&e.createElement("div",{className:"modal-backdrop fade show",onClick:o?n:void 0}),e.createElement("div",{className:"modal fade "+(t?"show":""),style:{display:t?"block":"none"},tabIndex:"-1",role:"dialog","aria-modal":"true","aria-hidden":!t,"aria-labelledby":r?"modal-title":void 0,...u},e.createElement("div",{className:`modal-dialog ${i?`modal-${i}`:""} ${d?"modal-dialog-centered":""} ${m}`},e.createElement("div",{className:"modal-content"},e.createElement("div",{className:"modal-header"},r&&e.createElement("h5",{className:"modal-title",id:"modal-title"},r),e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:n})),e.createElement("div",{className:"modal-body"},l),s&&e.createElement("div",{className:"modal-footer"},s)))));return a.createPortal(f,document.body)},exports.Navbar=M,exports.NumberInput=R,exports.Offcanvas=g,exports.Pagination=A,exports.Popover=w,exports.Progress=function({value:a=0,max:t=100,variant:n="primary",striped:r=!1,animated:l=!1,label:s,showValue:o=!1,className:c="",...i}){const d=Math.min(Math.max(a/t*100,0),100),m=["progress-bar",`bg-${n}`,r||l?"progress-bar-striped":"",l?"progress-bar-animated":""].filter(Boolean).join(" ");return e.createElement("div",{className:`progress ${c}`,...i},e.createElement("div",{className:m,role:"progressbar",style:{width:`${d}%`},"aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":t},s||o&&`${Math.round(d)}%`))},exports.Radio=function({id:a,name:t,label:n,value:r,checked:l,disabled:s=!1,onChange:o,className:c="",...i}){return e.createElement("div",{className:`form-check ${c}`},e.createElement("input",{type:"radio",className:"form-check-input",id:a,name:t,value:r,checked:l,disabled:s,onChange:o,...i}),n&&e.createElement("label",{className:"form-check-label",htmlFor:a},n))},exports.Row=({className:a="",children:t,...n})=>{const r=`row ${a}`.trim();return e.createElement("div",{className:r,...n},t)},exports.Scrollspy=x,exports.Select=k,exports.Slider=S,exports.Spinner=F,exports.Stat=O,exports.StatGroup=function({stats:a,columns:t=4,className:n="",...r}){const l=2===t?"col-md-6":3===t?"col-md-4":"col-md-3";return e.createElement("div",{className:`row g-3 ${n}`.trim(),...r},a.map((a,t)=>e.createElement("div",{key:t,className:l},e.createElement(O,{...a}))))},exports.Switch=L,exports.Tabs=p,exports.Text=({align:a,transform:t,color:n,size:r,weight:l,as:s="p",className:o="",children:c,...i})=>{const d=[];a&&d.push(`text-${a}`),t&&d.push(`text-${t}`),n&&d.push(`text-${n}`),r&&d.push(`fs-${r}`),l&&d.push(`fw-${l}`);const m=`${d.join(" ")} ${o}`.trim();return e.createElement(s,{className:m,...i},c)},exports.Textarea=function({rows:a=3,size:t,isValid:n,isInvalid:r,autoResize:l=!1,className:s="",...o}){const c=e.useRef(null),i=["form-control",t?`form-control-${t}`:"",n?"is-valid":"",r?"is-invalid":"",s].filter(Boolean).join(" ");return e.useEffect(()=>{if(l&&c.current){const e=()=>{const e=c.current;e&&(e.style.height="auto",e.style.height=`${e.scrollHeight}px`)};return e(),c.current.addEventListener("input",e),()=>{c.current?.removeEventListener("input",e)}}},[l]),e.createElement("textarea",{ref:c,rows:a,className:i,...o})},exports.Timeline=E,exports.Toaster=function({position:t="bottom-right",expand:n=!1,richColors:r=!0,closeButton:l=!1,...s}){const[o,c]=e.useState([]),i=e.useCallback(e=>{const a=h++,t={id:a,...e,createdAt:Date.now()};return c(e=>[...e,t]),e.duration!==1/0&&setTimeout(()=>{d(a)},e.duration||4e3),a},[]),d=e.useCallback(e=>{c(a=>a.filter(a=>a.id!==e))},[]);return e.createElement(f.Provider,{value:{addToast:i,removeToast:d}},s.children,a.createPortal(e.createElement("div",{className:`sonner-container ${{"top-left":"sonner-top-left","top-center":"sonner-top-center","top-right":"sonner-top-right","bottom-left":"sonner-bottom-left","bottom-center":"sonner-bottom-center","bottom-right":"sonner-bottom-right"}[t]}`},e.createElement("ol",{className:"sonner-list "+(n?"sonner-expanded":"")},o.map((a,t)=>e.createElement(N,{key:a.id,toast:a,index:t,onClose:()=>d(a.id),richColors:r,closeButton:l})))),document.body))},exports.Tooltip=m,exports.toast=b,exports.version="1.0.1";
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("react-dom"),a=e.forwardRef(({children:t,variant:a="primary",size:r,outline:n=!1,disabled:s=!1,loading:l=!1,type:o="button",className:c="",onClick:i,...d},m)=>{const u=["btn",n?`btn-outline-${a}`:`btn-${a}`,r?`btn-${r}`:"",c].filter(Boolean).join(" ");return e.createElement("button",{ref:m,type:o,className:u,disabled:s||l,onClick:i,...d},l&&e.createElement("span",{className:"spinner-border spinner-border-sm me-2",role:"status","aria-hidden":"true"}),t)});a.displayName="Button";const r=e.forwardRef(({children:t,variant:a="primary",dismissible:r=!1,show:n,onClose:s,autoClose:l=!1,className:o="",...c},i)=>{const[d,m]=e.useState(!0),u=void 0!==n?n:d,p=e.useCallback(()=>{void 0===n&&m(!1),s&&s()},[n,s]);return e.useEffect(()=>{let e;return u&&l&&(e=setTimeout(()=>{p()},"number"==typeof l?l:5e3)),()=>{e&&clearTimeout(e)}},[u,l,p]),u?e.createElement("div",{ref:i,className:`alert alert-${a} ${r?"alert-dismissible":""} ${o}`,role:"alert",...c},t,r&&e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:p})):null});r.displayName="Alert";const n=e.forwardRef(({children:t,hoverable:a=!1,className:r="",bodyClassName:n="",...s},l)=>e.createElement("div",{ref:l,className:`card ${a?"card-hoverable":""} ${r}`,...s},t));n.displayName="Card";const s=e.forwardRef(({className:t="",children:a,...r},n)=>e.createElement("div",{ref:n,className:`card-body ${t}`,...r},a));s.displayName="Card.Body";const l=e.forwardRef(({className:t="",children:a,...r},n)=>e.createElement("div",{ref:n,className:`card-header ${t}`,...r},a));l.displayName="Card.Header";const o=e.forwardRef(({className:t="",children:a,...r},n)=>e.createElement("div",{ref:n,className:`card-footer ${t}`,...r},a));o.displayName="Card.Footer",n.Body=s,n.Header=l,n.Footer=o;const c=e.forwardRef(({trigger:t,children:a,isOpen:r,onToggle:n,align:s="start",className:l="",...o},c)=>{const[i,d]=e.useState(!1),m=e.useRef(null),u=void 0!==r?r:i;e.useEffect(()=>{const e=e=>{m.current&&!m.current.contains(e.target)&&(void 0===r&&d(!1),n&&n(!1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const p=()=>{const e=!u;void 0===r&&d(e),n&&n(e)};return e.createElement("div",{ref:m,className:`dropdown ${u?"show":""} ${l}`,onKeyDown:e=>{"Escape"===e.key&&u&&(p(),t.ref&&t.ref.current&&t.ref.current.focus())},...o},e.createElement("div",{onClick:p,"aria-expanded":u,"aria-haspopup":"true",role:"button",tabIndex:0},t),u&&e.createElement("div",{className:`dropdown-menu show dropdown-menu-${s}`,role:"menu"},a))});c.displayName="Dropdown";const i=e.forwardRef(({children:t,onClick:a,className:r="",...n},s)=>e.createElement("button",{ref:s,className:`dropdown-item ${r}`,onClick:a,role:"menuitem",...n},t));i.displayName="Dropdown.Item";const d=()=>e.createElement("hr",{className:"dropdown-divider"});d.displayName="Dropdown.Divider",c.Item=i,c.Divider=d;const m=e.forwardRef(({children:t,content:a,placement:r="top",className:n="",...s},l)=>{const[o,c]=e.useState(!1),i=e.useRef(null),d=`tooltip-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:l,className:`tooltip-wrapper ${n}`,onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1),onFocus:()=>c(!0),onBlur:()=>c(!1),"aria-describedby":o?d:void 0,...s},t,o&&e.createElement("div",{id:d,ref:i,className:`tooltip bs-tooltip-${r} show`,role:"tooltip"},e.createElement("div",{className:"tooltip-arrow"}),e.createElement("div",{className:"tooltip-inner"},a)))});m.displayName="Tooltip";const u=e.forwardRef(({isOpen:t,defaultOpen:a=!1,children:r,className:n="",...s},l)=>{const[o,c]=e.useState(a),i=void 0!==t?t:o,d=s.id||`collapse-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:l,id:d,className:`collapse ${i?"show":""} ${n}`,...s},r)});u.displayName="Collapse";const p=e.forwardRef(({activeTab:t,defaultActiveTab:a=0,onTabChange:r,children:n,className:s="",...l},o)=>{const[c,i]=e.useState(a),d=void 0!==t?t:c,m=e.Children.toArray(n);return e.createElement("div",{ref:o,className:`tabs-container ${s}`,...l},e.createElement("ul",{className:"nav nav-tabs",role:"tablist"},m.map((a,n)=>{const s=d===n,l=`tab-${n}`,o=`pane-${n}`;return e.createElement("li",{key:n,className:"nav-item",role:"presentation"},e.createElement("button",{className:"nav-link "+(s?"active":""),onClick:()=>(e=>{void 0===t&&i(e),r&&r(e)})(n),role:"tab","aria-selected":s,"aria-controls":o,id:l,tabIndex:s?0:-1},a.props.title))})),e.createElement("div",{className:"tab-content"},m.map((t,a)=>{const r=d===a,n=`tab-${a}`,s=`pane-${a}`;return e.createElement("div",{key:a,className:"tab-pane "+(r?"active show":""),role:"tabpanel",id:s,"aria-labelledby":n,tabIndex:0,hidden:!r},r&&t.props.children)})))});p.displayName="Tabs";const v=({title:t,children:a})=>e.createElement(e.Fragment,null,a);v.displayName="Tabs.Pane",p.Pane=v;const f=e.createContext(null);let N=0;function h({toast:t,index:a,onClose:r,richColors:n,closeButton:s}){const l={success:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),error:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",clipRule:"evenodd"})),warning:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),info:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),loading:e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",className:"sonner-loading"},e.createElement("circle",{cx:"10",cy:"10",r:"8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeDasharray:"50.265",strokeDashoffset:"25"}))},o=t.type?`sonner-${t.type}`:"",c=n&&t.type?`sonner-rich-${t.type}`:"";return e.createElement("li",{className:`sonner-toast ${o} ${c}`,style:{"--index":a}},e.createElement("div",{className:"sonner-toast-content"},t.type&&l[t.type]&&e.createElement("div",{className:"sonner-toast-icon"},l[t.type]),e.createElement("div",{className:"sonner-toast-body"},t.title&&e.createElement("div",{className:"sonner-toast-title"},t.title),t.description&&e.createElement("div",{className:"sonner-toast-description"},t.description),!t.title&&!t.description&&e.createElement("div",{className:"sonner-toast-description"},t.message)),(s||t.closeButton)&&e.createElement("button",{className:"sonner-toast-close",onClick:r,"aria-label":"Close"},e.createElement("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},e.createElement("path",{d:"M13 1L1 13M1 1L13 13",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})))),t.action&&e.createElement("div",{className:"sonner-toast-action"},e.createElement("button",{className:"sonner-action-button",onClick:()=>{t.action.onClick?.(),r()}},t.action.label)))}const b=Object.assign((e,t={})=>{if("undefined"==typeof window)return;const a=new CustomEvent("sonner-toast",{detail:{message:e,...t}});window.dispatchEvent(a)},{success:(e,t={})=>{b(e,{...t,type:"success"})},error:(e,t={})=>{b(e,{...t,type:"error"})},warning:(e,t={})=>{b(e,{...t,type:"warning"})},info:(e,t={})=>{b(e,{...t,type:"info"})},loading:(e,t={})=>{b(e,{...t,type:"loading",duration:1/0})},promise:(e,t={})=>(b(t.loading||"Loading...",{type:"loading",duration:1/0}),e.then(e=>{const a="function"==typeof t.success?t.success(e):t.success||"Success";b(a,{type:"success"})}).catch(e=>{const a="function"==typeof t.error?t.error(e):t.error||"Error";b(a,{type:"error"})}),e)});"undefined"!=typeof window&&window.addEventListener("sonner-toast",e=>{const t=new CustomEvent("add-sonner-toast",{detail:e.detail});window.dispatchEvent(t)});const E=e.forwardRef(({show:a=!0,onClose:r,title:n,children:s,variant:l,autoHide:o=5e3,position:c="top-right",className:i="",...d},m)=>{const[u,p]=e.useState(a);e.useEffect(()=>{p(a)},[a]),e.useEffect(()=>{if(u&&o){const e=setTimeout(()=>{v()},o);return()=>clearTimeout(e)}},[u,o]);const v=()=>{p(!1),r&&r()};if(!u)return null;const f=l?`toast-${l}`:"",N=`toast-${c}`,h=e.createElement("div",{ref:m,className:`toast show ${f} ${N} ${i}`,role:"alert",...d},e.createElement("div",{className:"toast-header"},n&&e.createElement("strong",{className:"me-auto"},n),e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:v})),e.createElement("div",{className:"toast-body"},s));return t.createPortal(h,document.body)});E.displayName="Toast";const g=({children:t,className:a="",...r})=>e.createElement("ul",{className:`timeline ${a}`,...r},t);g.Item=({children:t,className:a="",active:r=!1,completed:n=!1,animated:s=!1,...l})=>e.createElement("li",{className:`timeline-item ${r?"active":""} ${n?"completed":""} ${s?"animated":""} ${a}`,...l},t),g.Date=({children:t,className:a="",...r})=>e.createElement("div",{className:`timeline-date ${a}`,...r},t),g.Title=({children:t,className:a="",...r})=>e.createElement("h5",{className:`timeline-title ${a}`,...r},t),g.Text=({children:t,className:a="",...r})=>e.createElement("p",{className:`timeline-text ${a}`,...r},t),g.Content=({children:t,className:a="",...r})=>e.createElement("div",{className:`timeline-content ${a}`,...r},t);const y=e.forwardRef(({isOpen:a,onClose:r,title:n,children:s,placement:l="end",backdrop:o=!0,className:c="",...i},d)=>{if(e.useEffect(()=>(a?document.body.classList.add("offcanvas-open"):document.body.classList.remove("offcanvas-open"),()=>{document.body.classList.remove("offcanvas-open")}),[a]),!a)return null;const m=e.createElement(e.Fragment,null,o&&e.createElement("div",{className:"offcanvas-backdrop fade show",onClick:r}),e.createElement("div",{ref:d,className:`offcanvas offcanvas-${l} show ${c}`,tabIndex:"-1",role:"dialog","aria-modal":"true","aria-labelledby":n?"offcanvas-label":void 0,...i},e.createElement("div",{className:"offcanvas-header"},n&&e.createElement("h5",{className:"offcanvas-title",id:"offcanvas-label"},n),e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:r})),e.createElement("div",{className:"offcanvas-body"},s)));return t.createPortal(m,document.body)});y.displayName="Offcanvas";const $=e.forwardRef(({children:t,activeIndex:a,onSlide:r,controls:n=!0,indicators:s=!0,interval:l=!1,className:o="",...c},i)=>{const d=e.Children.toArray(t),[m,u]=e.useState(0),p=void 0!==a?a:m;e.useEffect(()=>{if(l){const e=setInterval(()=>{f()},l);return()=>clearInterval(e)}},[p,l]);const v=e=>{void 0===a&&u(e),r&&r(e)},f=()=>{const e=p===d.length-1?0:p+1;v(e)};return e.createElement("div",{ref:i,className:`carousel slide ${o}`,...c},s&&e.createElement("div",{className:"carousel-indicators"},d.map((t,a)=>e.createElement("button",{key:a,type:"button",className:a===p?"active":"",onClick:()=>v(a),"aria-current":a===p?"true":"false","aria-label":`Slide ${a+1}`}))),e.createElement("div",{className:"carousel-inner"},d.map((t,a)=>e.createElement("div",{key:a,className:"carousel-item "+(a===p?"active":"")},t))),n&&e.createElement(e.Fragment,null,e.createElement("button",{className:"carousel-control-prev",type:"button",onClick:()=>{const e=0===p?d.length-1:p-1;v(e)},"aria-label":"Previous slide"},e.createElement("span",{className:"carousel-control-prev-icon","aria-hidden":"true"}),e.createElement("span",{className:"visually-hidden"},"Previous")),e.createElement("button",{className:"carousel-control-next",type:"button",onClick:f,"aria-label":"Next slide"},e.createElement("span",{className:"carousel-control-next-icon","aria-hidden":"true"}),e.createElement("span",{className:"visually-hidden"},"Next"))))});$.displayName="Carousel";const w=({children:t})=>e.createElement(e.Fragment,null,t);w.displayName="Carousel.Item",$.Item=w;const x=e.forwardRef(({children:t,title:a,content:r,placement:n="top",trigger:s="click",className:l="",...o},c)=>{const[i,d]=e.useState(!1),m=e.useRef(null);e.useEffect(()=>{const e=e=>{m.current&&!m.current.contains(e.target)&&d(!1)};if("click"===s)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s]);const u=()=>{"click"===s&&d(!i)},p=`popover-${Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:m,className:`popover-wrapper ${l}`,onClick:u,onMouseEnter:()=>{"hover"===s&&d(!0)},onMouseLeave:()=>{"hover"===s&&d(!1)},onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||u()},"aria-describedby":i?p:void 0,tabIndex:"0",role:"button",...o},t,i&&e.createElement("div",{id:p,className:`popover bs-popover-${n} show`,role:"tooltip"},e.createElement("div",{className:"popover-arrow"}),a&&e.createElement("h3",{className:"popover-header"},a),e.createElement("div",{className:"popover-body"},r)))});x.displayName="Popover";const C=e.forwardRef(({targets:t=[],onActiveChange:a,offset:r=0,children:n,className:s="",...l},o)=>{const[c,i]=e.useState("");return e.useEffect(()=>{const e=()=>{const e=window.scrollY+r;for(let r=t.length-1;r>=0;r--){const n=document.getElementById(t[r]);if(n){const{offsetTop:s}=n;if(e>=s){c!==t[r]&&(i(t[r]),a&&a(t[r]));break}}}};return window.addEventListener("scroll",e),e(),()=>window.removeEventListener("scroll",e)},[t,r,c,a]),e.createElement("nav",{ref:o,className:`scrollspy ${s}`,...l},e.Children.map(n,t=>e.isValidElement(t)?e.cloneElement(t,{activeId:c}):t))});C.displayName="Scrollspy";const k=e.forwardRef(({options:t=[],value:a,defaultValue:r,onChange:n,placeholder:s="Select...",searchable:l=!1,disabled:o=!1,className:c="",...i},d)=>{const[m,u]=e.useState(!1),[p,v]=e.useState(r),[f,N]=e.useState(""),h=e.useRef(null),b=void 0!==a?a:p,E=t.find(e=>e.value===b);e.useEffect(()=>{const e=e=>{h.current&&!h.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);const g=e=>{void 0===a&&v(e.value),n&&n(e.value),u(!1),N("")},y=l&&f?t.filter(e=>e.label.toLowerCase().includes(f.toLowerCase())):t;return e.createElement("div",{ref:h,className:`select-container ${m?"open":""} ${o?"disabled":""} ${c}`,...i},e.createElement("div",{className:"select-trigger",onClick:()=>!o&&u(!m)},e.createElement("span",null,E?E.label:s),e.createElement("span",{className:"select-arrow"},"▼")),m&&e.createElement("div",{className:"select-dropdown",role:"listbox",id:"select-dropdown"},l&&e.createElement("input",{type:"text",className:"select-search",placeholder:"Search...",value:f,onChange:e=>N(e.target.value),onClick:e=>e.stopPropagation(),role:"searchbox"}),e.createElement("div",{className:"select-options"},y.map(t=>e.createElement("div",{key:t.value,className:"select-option "+(t.value===b?"selected":""),onClick:()=>g(t),role:"option","aria-selected":t.value===b,tabIndex:"0",onKeyDown:e=>{"Enter"===e.key&&g(t)}},t.label)),0===y.length&&e.createElement("div",{className:"select-option disabled",role:"option","aria-disabled":"true"},"No options found"))))});k.displayName="Select";const R=e.forwardRef(({onFileSelect:t,multiple:a=!1,accept:r,maxSize:n,className:s="",...l},o)=>{const[c,i]=e.useState(!1),[d,m]=e.useState([]),u=e.useRef(null),p=e=>{const a=Array.from(e).filter(e=>!(n&&e.size>n));m(a),t&&t(a)},v=()=>{u.current?.click()};return e.createElement("div",{ref:o,className:`file-upload ${c?"dragging":""} ${s}`,onDragOver:e=>{e.preventDefault(),i(!0)},onDragLeave:()=>{i(!1)},onDrop:e=>{e.preventDefault(),i(!1),p(e.dataTransfer.files)},onClick:v,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||v()},tabIndex:"0",role:"button","aria-label":"File upload dropzone",...l},e.createElement("input",{ref:u,type:"file",multiple:a,accept:r,onChange:e=>{e.target.files&&p(e.target.files)},style:{display:"none"}}),e.createElement("div",{className:"file-upload-content"},d.length>0?e.createElement("div",{className:"file-list"},d.map((t,a)=>e.createElement("div",{key:a,className:"file-item"},t.name," (",(t.size/1024).toFixed(2)," KB)"))):e.createElement("div",{className:"file-upload-placeholder"},e.createElement("p",null,"Drag and drop files here or click to browse"))))});R.displayName="FileUpload";const S=e.forwardRef(({min:t,max:a,step:r=1,value:n,defaultValue:s=0,onChange:l,className:o="",...c},i)=>{const[d,m]=e.useState(s),u=void 0!==n?n:d,p=e=>{let r=e;void 0!==t&&(r=Math.max(t,r)),void 0!==a&&(r=Math.min(a,r)),void 0===n&&m(r),l&&l(r)};return e.createElement("div",{className:`number-input ${o}`},e.createElement("button",{type:"button",className:"btn btn-outline-secondary",onClick:()=>p(u-r),disabled:void 0!==t&&u<=t},"-"),e.createElement("input",{ref:i,type:"number",className:"form-control",value:u,min:t,max:a,step:r,onChange:e=>p(parseFloat(e.target.value)||0),...c}),e.createElement("button",{type:"button",className:"btn btn-outline-secondary",onClick:()=>p(u+r),disabled:void 0!==a&&u>=a},"+"))});S.displayName="NumberInput";const T=e.forwardRef(({min:t=0,max:a=100,step:r=1,value:n,defaultValue:s,onChange:l,showValue:o=!1,className:c="",...i},d)=>{const[m,u]=e.useState(s||t),p=void 0!==n?n:m;return e.createElement("div",{className:`slider-container ${c}`},e.createElement("input",{ref:d,type:"range",className:"form-range",min:t,max:a,step:r,value:p,onChange:e=>{const t=parseFloat(e.target.value);void 0===n&&u(t),l&&l(t)},"aria-label":i["aria-label"]||"Range slider","aria-valuemin":t,"aria-valuemax":a,"aria-valuenow":p,...i}),o&&e.createElement("div",{className:"slider-value"},p))});T.displayName="Slider";const L=e.forwardRef(({checked:t,defaultChecked:a,onChange:r,disabled:n=!1,label:s,className:l="",...o},c)=>e.createElement("div",{className:`form-switch ${l}`},e.createElement("input",{ref:c,type:"checkbox",className:"form-check-input",role:"switch",checked:t,defaultChecked:a,onChange:r,disabled:n,...o}),s&&e.createElement("label",{className:"form-check-label"},s)));L.displayName="Switch";const B=e.forwardRef(({length:t=6,onComplete:a,onChange:r,type:n="numeric",className:s="",...l},o)=>{const[c,i]=e.useState(Array(t).fill("")),d=e.useRef([]),m=e=>{e.preventDefault();const n=e.clipboardData.getData("text").slice(0,t).split("").concat(Array(t).fill("")).slice(0,t);i(n),r&&r(n.join("")),n.every(e=>""!==e)&&a&&a(n.join(""))};return e.createElement("div",{ref:o,className:`input-otp ${s}`,...l},c.map((s,l)=>e.createElement("input",{key:l,ref:e=>d.current[l]=e,type:"text",className:"otp-input",value:s,onChange:e=>((e,s)=>{if(!("numeric"===n?/^\d*$/.test(s):/^[a-zA-Z0-9]*$/.test(s)))return;const l=[...c];l[e]=s.slice(-1),i(l),r&&r(l.join("")),s&&e<t-1&&d.current[e+1]?.focus(),l.every(e=>""!==e)&&a&&a(l.join(""))})(l,e.target.value),onKeyDown:e=>((e,a)=>{"Backspace"===a.key&&!c[e]&&e>0&&d.current[e-1]?.focus(),"ArrowLeft"===a.key&&e>0&&d.current[e-1]?.focus(),"ArrowRight"===a.key&&e<t-1&&d.current[e+1]?.focus()})(l,e),onPaste:0===l?m:void 0,maxLength:1})))});B.displayName="InputOTP";const I=e.forwardRef(({children:t,className:a="",alwaysOpen:r=!1,...n},s)=>{const[l,o]=e.useState(new Set);return e.createElement("div",{ref:s,className:`accordion ${a}`,...n},e.Children.map(t,(t,a)=>e.isValidElement(t)?e.cloneElement(t,{isOpen:l.has(a),onToggle:()=>(e=>{o(t=>{const a=new Set(r?t:[]);return t.has(e)?a.delete(e):a.add(e),a})})(a)}):t))});I.displayName="Accordion";const M=e.forwardRef(({title:t,children:a,isOpen:r,onToggle:n,className:s="",...l},o)=>{const c=`accordion-header-${l.id||Math.random().toString(36).substr(2,9)}`,i=`accordion-collapse-${l.id||Math.random().toString(36).substr(2,9)}`;return e.createElement("div",{ref:o,className:`accordion-item ${s}`,...l},e.createElement("h2",{className:"accordion-header",id:c},e.createElement("button",{className:"accordion-button "+(r?"":"collapsed"),type:"button",onClick:n,"aria-expanded":r,"aria-controls":i},t)),e.createElement("div",{id:i,className:"accordion-collapse collapse "+(r?"show":""),"aria-labelledby":c},e.createElement("div",{className:"accordion-body"},a)))});M.displayName="Accordion.Item",I.Item=M;const z=e.forwardRef(({children:t,variant:a="light",bg:r,expand:n="lg",className:s="",...l},o)=>{const c=r?`bg-${r}`:"",i=n?`navbar-expand-${n}`:"";return e.createElement("nav",{ref:o,className:`navbar navbar-${a} ${c} ${i} ${s}`,...l},t)});z.displayName="Navbar";const D=e.forwardRef(({children:t,href:a="#",className:r="",...n},s)=>e.createElement("a",{ref:s,className:`navbar-brand ${r}`,href:a,...n},t));D.displayName="Navbar.Brand";const P=e.forwardRef(({onClick:t,className:a="",...r},n)=>e.createElement("button",{ref:n,className:`navbar-toggler ${a}`,type:"button",onClick:t,"aria-label":"Toggle navigation",...r},e.createElement("span",{className:"navbar-toggler-icon"})));P.displayName="Navbar.Toggle";const j=e.forwardRef(({children:t,isOpen:a,className:r="",...n},s)=>e.createElement("div",{ref:s,className:`collapse navbar-collapse ${a?"show":""} ${r}`,...n},t));j.displayName="Navbar.Collapse";const A=e.forwardRef(({children:t,className:a="",...r},n)=>e.createElement("ul",{ref:n,className:`navbar-nav ${a}`,...r},t));A.displayName="Navbar.Nav",z.Brand=D,z.Toggle=P,z.Collapse=j,z.Nav=A;const F=e.forwardRef(({currentPage:t,totalPages:a,onPageChange:r,maxVisible:n=5,size:s,className:l="",...o},c)=>{const i=s?`pagination-${s}`:"";return e.createElement("nav",{ref:c,"aria-label":"Page navigation",...o},e.createElement("ul",{className:`pagination ${i} ${l}`},e.createElement("li",{className:"page-item "+(1===t?"disabled":"")},e.createElement("button",{className:"page-link",onClick:()=>r(t-1),disabled:1===t},"Previous")),(()=>{const e=[];let r=Math.max(1,t-Math.floor(n/2)),s=Math.min(a,r+n-1);s-r<n-1&&(r=Math.max(1,s-n+1));for(let t=r;t<=s;t++)e.push(t);return e})().map(a=>e.createElement("li",{key:a,className:"page-item "+(a===t?"active":"")},e.createElement("button",{className:"page-link",onClick:()=>r(a),"aria-current":a===t?"page":void 0},a))),e.createElement("li",{className:"page-item "+(t===a?"disabled":"")},e.createElement("button",{className:"page-link",onClick:()=>r(t+1),disabled:t===a},"Next"))))});F.displayName="Pagination";const O=e.forwardRef(({size:t="md",variant:a="primary",className:r="",...n},s)=>e.createElement("div",{ref:s,className:`spinner spinner-${t} spinner-${a} ${r}`,role:"status",...n},e.createElement("div",{className:"spinner-circle"}),e.createElement("span",{className:"visually-hidden"},"Loading...")));function V({title:t,value:a,description:r,descClass:n="",icon:s,iconBg:l,compact:o=!1,progress:c,target:i,change:d,className:m="",...u}){const p=["stat"];return o&&p.push("stat-compact"),m&&p.push(m),e.createElement("div",{className:p.join(" "),...u},s&&e.createElement("div",{className:"stat-icon",style:{backgroundColor:l}},s),e.createElement("div",{className:"stat-title"},t),e.createElement("div",{className:"stat-value"},a),r&&e.createElement("div",{className:`stat-desc ${n}`.trim()},r),o&&void 0!==d&&e.createElement("span",{className:"stat-badge "+(d>0?"success":"danger")},d>0?"↗":"↘"," ",Math.abs(d),"%"),void 0!==c&&e.createElement(e.Fragment,null,i&&e.createElement("div",{className:"stat-desc"},"Target: ",i),e.createElement("div",{className:"stat-progress"},e.createElement("div",{className:"stat-progress-bar",style:{width:`${c}%`}}))))}function H({items:t=[],separator:a="/",className:r="",...n}){return e.createElement("nav",{"aria-label":"breadcrumb",className:r,...n},e.createElement("ol",{className:"breadcrumb"},t.map((a,r)=>e.createElement(H.Item,{key:r,active:r===t.length-1,href:a.href},a.label))))}function K({flush:t=!1,numbered:a=!1,horizontal:r=!1,children:n,className:s="",...l}){const o=a?"ol":"ul",c=["list-group",t?"list-group-flush":"",a?"list-group-numbered":"",r?"list-group-horizontal":"",s].filter(Boolean).join(" ");return e.createElement(o,{className:c,...l},n)}O.displayName="Spinner",H.Item=function({children:t,active:a=!1,href:r,className:n="",...s}){const l=["breadcrumb-item",a?"active":"",n].filter(Boolean).join(" ");return e.createElement("li",{className:l,"aria-current":a?"page":void 0,...s},a||!r?t:e.createElement("a",{href:r},t))},K.Item=function({active:t=!1,disabled:a=!1,variant:r,action:n=!1,href:s,children:l,className:o="",...c}){const i=s?"a":"li",d=["list-group-item",t?"active":"",a?"disabled":"",n||s?"list-group-item-action":"",r?`list-group-item-${r}`:"",o].filter(Boolean).join(" ");return e.createElement(i,{className:d,href:s,"aria-current":t?"true":void 0,"aria-disabled":a?"true":void 0,...c},l)};exports.Accordion=I,exports.AccordionItem=M,exports.Alert=r,exports.Avatar=function({src:t,alt:a="Avatar",size:r="md",shape:n="circle",fallback:s,status:l,className:o="",...c}){const[i,d]=e.useState(!1),m=["avatar",`avatar-${r}`,`avatar-${n}`,l?`avatar-status-${l}`:"",o].filter(Boolean).join(" "),u=!t||i;return e.createElement("div",{className:m,...c},u?e.createElement("span",{className:"avatar-fallback"},s||a?.charAt(0)?.toUpperCase()||"?"):e.createElement("img",{src:t,alt:a,onError:()=>d(!0),className:"avatar-img"}),l&&e.createElement("span",{className:"avatar-status"}))},exports.Badge=function({variant:t="primary",pill:a=!1,children:r,className:n="",...s}){const l=["badge",`bg-${t}`,a?"rounded-pill":"",n].filter(Boolean).join(" ");return e.createElement("span",{className:l,...s},r)},exports.Box=({m:t,mt:a,mb:r,ml:n,mr:s,mx:l,my:o,p:c,pt:i,pb:d,pl:m,pr:u,px:p,py:v,d:f,flex:N,justify:h,align:b,gap:E,as:g="div",className:y="",children:$,...w})=>{const x=[];void 0!==t&&x.push(`m-${t}`),void 0!==a&&x.push(`mt-${a}`),void 0!==r&&x.push(`mb-${r}`),void 0!==n&&x.push(`ms-${n}`),void 0!==s&&x.push(`me-${s}`),void 0!==l&&x.push(`mx-${l}`),void 0!==o&&x.push(`my-${o}`),void 0!==c&&x.push(`p-${c}`),void 0!==i&&x.push(`pt-${i}`),void 0!==d&&x.push(`pb-${d}`),void 0!==m&&x.push(`ps-${m}`),void 0!==u&&x.push(`pe-${u}`),void 0!==p&&x.push(`px-${p}`),void 0!==v&&x.push(`py-${v}`),f&&x.push(`d-${f}`),N&&x.push(`flex-${N}`),h&&x.push(`justify-content-${h}`),b&&x.push(`align-items-${b}`),E&&x.push(`gap-${E}`);const C=`${x.join(" ")} ${y}`.trim();return e.createElement(g,{className:C,...w},$)},exports.Breadcrumb=H,exports.Button=a,exports.ButtonGroup=function({vertical:t=!1,size:a,children:r,className:n="",...s}){const l=[t?"btn-group-vertical":"btn-group",a?`btn-group-${a}`:"",n].filter(Boolean).join(" ");return e.createElement("div",{className:l,role:"group",...s},r)},exports.Card=n,exports.CardBody=s,exports.CardFooter=o,exports.CardHeader=l,exports.Carousel=$,exports.CarouselItem=w,exports.Checkbox=function({id:t,label:a,checked:r,indeterminate:n=!1,disabled:s=!1,onChange:l,className:o="",...c}){const i=e.useRef(null);return e.useEffect(()=>{i.current&&(i.current.indeterminate=n)},[n]),e.createElement("div",{className:`form-check ${o}`},e.createElement("input",{ref:i,type:"checkbox",className:"form-check-input",id:t,checked:r,disabled:s,onChange:l,...c}),a&&e.createElement("label",{className:"form-check-label",htmlFor:t},a))},exports.Col=({xs:t,sm:a,md:r,lg:n,xl:s,className:l="",children:o,...c})=>{const i=[];t&&i.push("auto"===t?"col-auto":`col-${t}`),a&&i.push("auto"===a?"col-sm-auto":`col-sm-${a}`),r&&i.push("auto"===r?"col-md-auto":`col-md-${r}`),n&&i.push("auto"===n?"col-lg-auto":`col-lg-${n}`),s&&i.push("auto"===s?"col-xl-auto":`col-xl-${s}`),0===i.length&&i.push("col");const d=`${i.join(" ")} ${l}`.trim();return e.createElement("div",{className:d,...c},o)},exports.Collapse=u,exports.Container=({fluid:t=!1,className:a="",children:r,...n})=>{const s=`${t?"container-fluid":"container"} ${a}`.trim();return e.createElement("div",{className:s,...n},r)},exports.Dropdown=c,exports.DropdownDivider=d,exports.DropdownItem=i,exports.FileUpload=R,exports.Input=function({type:t="text",size:a,isValid:r,isInvalid:n,plaintext:s=!1,readOnly:l=!1,disabled:o=!1,className:c="",...i}){const d=[s?"form-control-plaintext":"form-control",a?`form-control-${a}`:"",r?"is-valid":"",n?"is-invalid":"",c].filter(Boolean).join(" ");return e.createElement("input",{type:t,className:d,readOnly:l||s,disabled:o,...i})},exports.InputOTP=B,exports.ListGroup=K,exports.Modal=({isOpen:a,onClose:r,title:n,children:s,footer:l,backdrop:o=!0,keyboard:c=!0,size:i,centered:d=!1,className:m="",...u})=>{const[p,v]=e.useState(!1);if(e.useRef(null),e.useEffect(()=>(v(!0),()=>v(!1)),[]),e.useEffect(()=>(a?document.body.classList.add("modal-open"):document.body.classList.remove("modal-open"),()=>{document.body.classList.remove("modal-open")}),[a]),e.useEffect(()=>{const e=e=>{c&&"Escape"===e.key&&a&&r()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[a,c,r]),!p)return null;const f=e.createElement(e.Fragment,null,a&&e.createElement("div",{className:"modal-backdrop fade show",onClick:o?r:void 0}),e.createElement("div",{className:"modal fade "+(a?"show":""),style:{display:a?"block":"none"},tabIndex:"-1",role:"dialog","aria-modal":"true","aria-hidden":!a,"aria-labelledby":n?"modal-title":void 0,...u},e.createElement("div",{className:`modal-dialog ${i?`modal-${i}`:""} ${d?"modal-dialog-centered":""} ${m}`},e.createElement("div",{className:"modal-content"},e.createElement("div",{className:"modal-header"},n&&e.createElement("h5",{className:"modal-title",id:"modal-title"},n),e.createElement("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:r})),e.createElement("div",{className:"modal-body"},s),l&&e.createElement("div",{className:"modal-footer"},l)))));return t.createPortal(f,document.body)},exports.Navbar=z,exports.NavbarBrand=D,exports.NavbarCollapse=j,exports.NavbarNav=A,exports.NavbarToggle=P,exports.NumberInput=S,exports.Offcanvas=y,exports.Pagination=F,exports.Popover=x,exports.Progress=function({value:t=0,max:a=100,variant:r="primary",striped:n=!1,animated:s=!1,label:l,showValue:o=!1,className:c="",...i}){const d=Math.min(Math.max(t/a*100,0),100),m=["progress-bar",`bg-${r}`,n||s?"progress-bar-striped":"",s?"progress-bar-animated":""].filter(Boolean).join(" ");return e.createElement("div",{className:`progress ${c}`,...i},e.createElement("div",{className:m,role:"progressbar",style:{width:`${d}%`},"aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":a},l||o&&`${Math.round(d)}%`))},exports.Radio=function({id:t,name:a,label:r,value:n,checked:s,disabled:l=!1,onChange:o,className:c="",...i}){return e.createElement("div",{className:`form-check ${c}`},e.createElement("input",{type:"radio",className:"form-check-input",id:t,name:a,value:n,checked:s,disabled:l,onChange:o,...i}),r&&e.createElement("label",{className:"form-check-label",htmlFor:t},r))},exports.Row=({className:t="",children:a,...r})=>{const n=`row ${t}`.trim();return e.createElement("div",{className:n,...r},a)},exports.Scrollspy=C,exports.Select=k,exports.Slider=T,exports.Spinner=O,exports.Stat=V,exports.StatGroup=function({stats:t,columns:a=4,className:r="",...n}){const s=2===a?"col-md-6":3===a?"col-md-4":"col-md-3";return e.createElement("div",{className:`row g-3 ${r}`.trim(),...n},t.map((t,a)=>e.createElement("div",{key:a,className:s},e.createElement(V,{...t}))))},exports.Switch=L,exports.TabPane=v,exports.Tabs=p,exports.Text=({align:t,transform:a,color:r,size:n,weight:s,as:l="p",className:o="",children:c,...i})=>{const d=[];t&&d.push(`text-${t}`),a&&d.push(`text-${a}`),r&&d.push(`text-${r}`),n&&d.push(`fs-${n}`),s&&d.push(`fw-${s}`);const m=`${d.join(" ")} ${o}`.trim();return e.createElement(l,{className:m,...i},c)},exports.Textarea=function({rows:t=3,size:a,isValid:r,isInvalid:n,autoResize:s=!1,className:l="",...o}){const c=e.useRef(null),i=["form-control",a?`form-control-${a}`:"",r?"is-valid":"",n?"is-invalid":"",l].filter(Boolean).join(" ");return e.useEffect(()=>{if(s&&c.current){const e=()=>{const e=c.current;e&&(e.style.height="auto",e.style.height=`${e.scrollHeight}px`)};return e(),c.current.addEventListener("input",e),()=>{c.current?.removeEventListener("input",e)}}},[s]),e.createElement("textarea",{ref:c,rows:t,className:i,...o})},exports.Timeline=g,exports.Toast=E,exports.Toaster=function({position:a="bottom-right",expand:r=!1,richColors:n=!0,closeButton:s=!1,...l}){const[o,c]=e.useState([]),i=e.useCallback(e=>{const t=N++,a={id:t,...e,createdAt:Date.now()};return c(e=>[...e,a]),e.duration!==1/0&&setTimeout(()=>{d(t)},e.duration||4e3),t},[]),d=e.useCallback(e=>{c(t=>t.filter(t=>t.id!==e))},[]);return e.createElement(f.Provider,{value:{addToast:i,removeToast:d}},l.children,t.createPortal(e.createElement("div",{className:`sonner-container ${{"top-left":"sonner-top-left","top-center":"sonner-top-center","top-right":"sonner-top-right","bottom-left":"sonner-bottom-left","bottom-center":"sonner-bottom-center","bottom-right":"sonner-bottom-right"}[a]}`},e.createElement("ol",{className:"sonner-list "+(r?"sonner-expanded":"")},o.map((t,a)=>e.createElement(h,{key:t.id,toast:t,index:a,onClose:()=>d(t.id),richColors:n,closeButton:s})))),document.body))},exports.Tooltip=m,exports.toast=b,exports.useToast=function(){const t=e.useContext(f);if(!t)throw new Error("useToast must be used within a Toaster");return t},exports.version="1.0.5";
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|