rich-react-component 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,171 @@
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ /**
3
+ * @deprecated Use the recursive `SidebarItem` model (`SidebarLinkItem` /
4
+ * `SidebarActionItem`) via `Sidebar.items`. Still accepted by
5
+ * `Sidebar.sections` and normalized internally — see `toSidebarItems`.
6
+ */
7
+ export interface SidebarLeafItem {
8
+ key: string;
9
+ label: ReactNode;
10
+ icon?: ReactNode;
11
+ href?: string;
12
+ onClick?: () => void;
13
+ active?: boolean;
14
+ disabled?: boolean;
15
+ }
16
+ /**
17
+ * @deprecated Use `SidebarGroupItem` (`type: "group"`, `collapsible: true`)
18
+ * via `Sidebar.items`. Still accepted by `Sidebar.sections`.
19
+ */
20
+ export interface SidebarGroup {
21
+ key: string;
22
+ label: string;
23
+ items: SidebarLeafItem[];
24
+ defaultOpen?: boolean;
25
+ }
26
+ /** @deprecated Use `SidebarItem`. */
27
+ export type SidebarSection = SidebarLeafItem | SidebarGroup;
28
+ /**
29
+ * Fired for the two item kinds that represent a destination or a command.
30
+ * The original React event is passed through so the consuming app can decide
31
+ * for itself whether to take over navigation (`event.preventDefault()` plus a
32
+ * router push). The Base layer never calls `preventDefault()` for an enabled
33
+ * real link, so modified clicks (ctrl/cmd/middle-click, "open in new tab")
34
+ * keep working (doc section 22: Base must not know routing).
35
+ */
36
+ export type SidebarSelectHandler = (item: SidebarLinkItem | SidebarActionItem, event: MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => void;
37
+ interface SidebarItemBase {
38
+ /** Stable identity. Never derived from an array index; must be unique in the tree. */
39
+ key: string;
40
+ label: ReactNode;
41
+ /** Any React node — an `<Icon />`, an `<img>`, an emoji. Icon-set agnostic (doc section 15). */
42
+ icon?: ReactNode;
43
+ badge?: ReactNode;
44
+ disabled?: boolean;
45
+ className?: string;
46
+ /**
47
+ * Accessible name, required whenever `label` is not plain readable text.
48
+ * Also used as the accessible name and the tooltip text while the Sidebar
49
+ * is collapsed to icons only.
50
+ */
51
+ ariaLabel?: string;
52
+ }
53
+ /** A real destination. Renders an anchor, or the consumer's `renderLink`. */
54
+ export interface SidebarLinkItem extends SidebarItemBase {
55
+ type: "link";
56
+ /** Required — an item without a destination is an `action`, not a `link`. */
57
+ href: string;
58
+ target?: string;
59
+ rel?: string;
60
+ onSelect?: SidebarSelectHandler;
61
+ }
62
+ /** A command with no destination. Renders a native button, never an empty-fragment anchor. */
63
+ export interface SidebarActionItem extends SidebarItemBase {
64
+ type: "action";
65
+ onSelect?: SidebarSelectHandler;
66
+ }
67
+ /** A parent whose children open and close. Renders an explicit toggle button. */
68
+ export interface SidebarCollapsibleItem extends SidebarItemBase {
69
+ type: "collapsible";
70
+ children: SidebarItem[];
71
+ }
72
+ /**
73
+ * A visual section. Presentation only: never navigable, and only participates
74
+ * in expansion when `collapsible` is explicitly set — which is what the legacy
75
+ * `SidebarGroup` normalizes to.
76
+ */
77
+ export interface SidebarGroupItem extends SidebarItemBase {
78
+ type: "group";
79
+ children: SidebarItem[];
80
+ collapsible?: boolean;
81
+ }
82
+ export interface SidebarDividerItem {
83
+ type: "divider";
84
+ key: string;
85
+ className?: string;
86
+ }
87
+ export type SidebarItem = SidebarLinkItem | SidebarActionItem | SidebarCollapsibleItem | SidebarGroupItem | SidebarDividerItem;
88
+ /** Items that own a `children` array and therefore can contain a branch. */
89
+ export type SidebarParentItem = SidebarCollapsibleItem | SidebarGroupItem;
90
+ export declare function isSidebarParent(item: SidebarItem): item is SidebarParentItem;
91
+ /**
92
+ * A `group` is expandable only when the consumer asked for it; a `collapsible`
93
+ * always is. Deliberately a plain boolean and not a type predicate: this is a
94
+ * runtime capability question, not a narrowing one — a non-expandable group is
95
+ * still a `SidebarParentItem`.
96
+ */
97
+ export declare function isSidebarExpandable(item: SidebarItem): boolean;
98
+ /**
99
+ * Additive adapter: turns the legacy `sections` shape into the recursive
100
+ * model so there is exactly one rendering path (doc section 20 — the Sidebar
101
+ * must not grow a second independent implementation for legacy input).
102
+ *
103
+ * A legacy leaf carrying a real `href` becomes a `link`; one without a
104
+ * destination becomes an `action` and renders as a button rather than the
105
+ * previous placeholder anchor (defect 8 — see the README migration notes).
106
+ */
107
+ export declare function toSidebarItems(sections: readonly SidebarSection[]): SidebarItem[];
108
+ /** Legacy `defaultOpen` groups, in declaration order, as Sidebar-level expanded keys. */
109
+ export declare function legacyDefaultExpandedKeys(sections: readonly SidebarSection[]): string[];
110
+ /**
111
+ * Legacy per-item `active` flags collapse into the single authoritative
112
+ * `activeKey`. Deliberately deterministic: the first flagged item in
113
+ * declaration order wins, so inconsistent caller-supplied flags degrade
114
+ * predictably instead of producing two simultaneously "active" rows.
115
+ */
116
+ export declare function legacyActiveKey(sections: readonly SidebarSection[]): string | undefined;
117
+ export interface SidebarNode {
118
+ item: SidebarItem;
119
+ key: string;
120
+ depth: number;
121
+ /** Ancestor keys, outermost first. */
122
+ ancestors: string[];
123
+ children: SidebarNode[];
124
+ }
125
+ export interface SidebarTree {
126
+ roots: SidebarNode[];
127
+ byKey: Map<string, SidebarNode>;
128
+ /** Every key in pre-order — the single source of deterministic key ordering. */
129
+ order: string[];
130
+ duplicateKeys: string[];
131
+ }
132
+ export declare function buildSidebarTree(items: readonly SidebarItem[]): SidebarTree;
133
+ /** Orders arbitrary keys by their position in the tree, so callbacks are reproducible. */
134
+ export declare function sortKeysByTreeOrder(order: readonly string[], keys: Iterable<string>): string[];
135
+ export type SidebarExpandMode = "single" | "multiple";
136
+ /**
137
+ * Authoritative expansion transition for the whole tree.
138
+ *
139
+ * - `multiple`: independent branches, which is exactly what the legacy
140
+ * one-Accordion-per-group layout produced, so it stays the default.
141
+ * - `single`: opening a branch keeps only that branch's own ancestor chain,
142
+ * closing every competing sibling at every level.
143
+ *
144
+ * Collapsing a branch also drops its descendants, so `expandedKeys` never
145
+ * reports a branch as open while that branch is not visible.
146
+ */
147
+ export declare function toggleExpandedKey(tree: SidebarTree, current: readonly string[], key: string, mode: SidebarExpandMode): string[];
148
+ /**
149
+ * Opens an ancestor chain without toggling anything.
150
+ *
151
+ * Used for route-driven expansion, which is a one-way "make this visible"
152
+ * request rather than a user toggle: it must never close the branch it was
153
+ * asked to open. `single` keeps only the requested chain, matching what
154
+ * `toggleExpandedKey` does when a branch is opened by hand, so a route change
155
+ * and a click leave the tree in the same shape.
156
+ */
157
+ export declare function expandPath(tree: SidebarTree, current: readonly string[], path: readonly string[], mode: SidebarExpandMode): string[];
158
+ /** True when two key lists describe the same expansion, order included. */
159
+ export declare function sameExpandedKeys(a: readonly string[], b: readonly string[]): boolean;
160
+ /** Ancestor keys of the active item — the "active branch" the UI highlights. */
161
+ export declare function activeAncestorKeys(tree: SidebarTree, activeKey: string | undefined): string[];
162
+ /**
163
+ * The subset of the active branch that can actually be opened.
164
+ *
165
+ * A non-interactive visual group is a caption, not a level of expansion: it has
166
+ * no toggle, no `aria-expanded` and no place in `expandedKeys`. Route-driven
167
+ * expansion therefore asks for this list, while highlighting still uses the
168
+ * full ancestor list above.
169
+ */
170
+ export declare function activeExpandablePath(tree: SidebarTree, activeKey: string | undefined): string[];
171
+ export {};
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),f=require("react");function m(...e){return e.filter(Boolean).join(" ")}function oe({htmlFor:e,required:n,className:t,children:r}){return s.jsxs("label",{htmlFor:e,className:m("form-label",t),children:[r,n&&s.jsx("span",{className:"text-danger",children:" *"})]})}function Q({error:e,helpText:n,className:t}){return e?s.jsx("div",{className:m("invalid-feedback d-block",t),children:e}):n?s.jsx("div",{className:m("form-text",t),children:n}):null}function P({id:e,label:n,required:t,error:r,helpText:a,className:l,children:c}){return s.jsxs("div",{className:m("mb-3",l),children:[n&&s.jsx(oe,{htmlFor:e,required:t,children:n}),c,s.jsx(Q,{error:r,helpText:a})]})}function D({value:e,defaultValue:n,onChange:t}){const r=e!==void 0,a=f.useRef(r);process.env.NODE_ENV!=="production"&&a.current!==r&&console.error("[react-components] A component switched between controlled and uncontrolled `value`. Decide between passing `value` (controlled) or `defaultValue` (uncontrolled) for the lifetime of the component, per the library's controlled/uncontrolled policy.");const[l,c]=f.useState(n),o=r?e:l,i=f.useCallback(d=>{r||c(d),t==null||t(d)},[r,t]);return[o,i]}function B(e){const{id:n,name:t,disabled:r,readOnly:a,required:l,className:c,label:o,placeholder:i,helpText:d,error:u,value:b,defaultValue:h,onChange:x,onBlur:v,type:N="text",maxLength:j,autoFocus:p,inputProps:y,endAdornment:g}=e,[S,k]=D({value:b,defaultValue:h??"",onChange:x}),w=f.useId(),I=n??w,V=s.jsx("input",{id:I,name:t,className:m("form-control",u&&"is-invalid"),disabled:r,readOnly:a,required:l,placeholder:i,maxLength:j,autoFocus:p,value:S,onChange:A=>k(A.target.value),onBlur:v,type:N,...y});return s.jsx(P,{id:I,label:o,required:l,error:u,helpText:d,className:c,children:g?s.jsxs("div",{className:"input-group",children:[V,g]}):V})}function Ke(e){const{id:n,name:t,disabled:r,readOnly:a,required:l,className:c,label:o,placeholder:i,helpText:d,error:u,value:b,defaultValue:h,onChange:x,onBlur:v,rows:N=3,maxLength:j}=e,[p,y]=D({value:b,defaultValue:h??"",onChange:x}),g=f.useId(),S=n??g;return s.jsx(P,{id:S,label:o,required:l,error:u,helpText:d,className:c,children:s.jsx("textarea",{id:S,name:t,className:m("form-control",u&&"is-invalid"),disabled:r,readOnly:a,required:l,placeholder:i,rows:N,maxLength:j,value:p,onChange:k=>y(k.target.value),onBlur:v})})}function Be({value:e,defaultValue:n,onChange:t,min:r,max:a,step:l,...c}){const[o,i]=D({value:e,defaultValue:n??null,onChange:t});return s.jsx(B,{...c,value:o===null?"":String(o),onChange:d=>{if(d.trim()===""){i(null);return}const u=Number(d);Number.isNaN(u)||i(u)},inputProps:{inputMode:"decimal",min:r,max:a,step:l}})}function He(e){const[n,t]=f.useState(!1);return s.jsx(B,{...e,inputProps:{type:n?"text":"password",autoComplete:"current-password"},endAdornment:s.jsx("button",{type:"button",className:"btn btn-outline-secondary","aria-label":n?"Hide password":"Show password","aria-pressed":n,onClick:()=>t(r=>!r),children:n?"Hide":"Show"})})}function qe({id:e,name:n,disabled:t,required:r,className:a,label:l,helpText:c,error:o,accept:i,multiple:d,onChange:u}){const b=f.useId(),h=e??b;return s.jsx(P,{id:h,label:l,required:r,error:o,helpText:c,className:a,children:s.jsx("input",{id:h,name:n,type:"file",className:m("form-control",o&&"is-invalid"),disabled:t,required:r,accept:i,multiple:d,onChange:x=>u==null?void 0:u(x.target.files)})})}function ce({id:e,name:n,disabled:t,required:r,wrapperClassName:a,role:l,label:c,helpText:o,error:i,checked:d,onChange:u,className:b}){const h=f.useId(),x=e??h;return s.jsxs("div",{className:m(a,b),children:[s.jsx("input",{id:x,name:n,type:"checkbox",role:l,className:m("form-check-input",i&&"is-invalid"),disabled:t,required:r,checked:d,onChange:v=>u(v.target.checked)}),c&&s.jsx("label",{htmlFor:x,className:"form-check-label",children:c}),s.jsx(Q,{error:i,helpText:o})]})}function Ge(e){const[n,t]=D({value:e.checked,defaultValue:e.defaultChecked??!1,onChange:e.onChange});return s.jsx(ce,{id:e.id,name:e.name,disabled:e.disabled,required:e.required,className:e.className,wrapperClassName:"form-check mb-3",label:e.label,helpText:e.helpText,error:e.error,checked:n,onChange:t})}function Ue(e){const[n,t]=D({value:e.checked,defaultValue:e.defaultChecked??!1,onChange:e.onChange});return s.jsx(ce,{id:e.id,name:e.name,disabled:e.disabled,required:e.required,className:e.className,wrapperClassName:"form-check form-switch mb-3",role:"switch",label:e.label,helpText:e.helpText,error:e.error,checked:n,onChange:t})}function de({id:e,name:n,value:t,label:r,checked:a,disabled:l,className:c,onChange:o}){const i=f.useId(),d=e??i;return s.jsxs("div",{className:m("form-check",c),children:[s.jsx("input",{id:d,name:n,type:"radio",className:"form-check-input",value:String(t),checked:a,disabled:l,onChange:()=>o==null?void 0:o(t)}),r&&s.jsx("label",{htmlFor:d,className:"form-check-label",children:r})]})}function _e({options:e,value:n,defaultValue:t,onChange:r,inline:a,id:l,name:c,disabled:o,required:i,className:d,label:u,helpText:b,error:h}){const[x,v]=D({value:n,defaultValue:t??null,onChange:p=>{p!==null&&(r==null||r(p))}}),N=f.useId(),j=c??l??N;return s.jsx(P,{label:u,required:i,error:h,helpText:b,className:d,children:s.jsx("div",{role:"radiogroup","aria-label":u,"aria-required":i,className:m(a&&"d-flex gap-3"),children:e.map(p=>s.jsx(de,{name:j,value:p.value,label:p.label,checked:p.value===x,disabled:o||p.disabled,onChange:y=>v(y)},String(p.value)))})})}function ue({options:e,value:n,defaultValue:t,onChange:r,placeholder:a,loading:l,id:c,name:o,disabled:i,readOnly:d,required:u,className:b,label:h,helpText:x,error:v}){const[N,j]=D({value:n,defaultValue:t??null,onChange:r}),p=f.useId(),y=c??p;return s.jsx(P,{id:y,label:h,required:u,error:v,helpText:x,className:b,children:s.jsxs("select",{id:y,name:o,className:m("form-select",v&&"is-invalid"),disabled:i||d||l,required:u,value:N===null?"":String(N),onChange:g=>{const S=g.target.value;if(S===""){j(null);return}const k=e.find(w=>String(w.value)===S);j(k?k.value:null)},children:[l&&s.jsx("option",{value:"",children:"Loading…"}),!l&&a&&s.jsx("option",{value:"",children:a}),e.map(g=>s.jsx("option",{value:String(g.value),disabled:g.disabled,children:g.label},String(g.value)))]})})}function W(e,n){f.useEffect(()=>{if(!e)return;function t(r){r.key==="Escape"&&n()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,n])}function $({open:e,onClose:n,anchorRef:t,className:r,role:a,children:l}){const c=f.useRef(null);return W(e,n),f.useEffect(()=>{if(!e)return;function o(i){var u,b;const d=i.target;(u=c.current)!=null&&u.contains(d)||(b=t.current)!=null&&b.contains(d)||n()}return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[e,n,t]),e?s.jsx("div",{ref:c,className:m("show",r),role:a,children:l}):null}function Y({itemCount:e,isOpen:n,onSelect:t,onClose:r}){const[a,l]=f.useState(-1);f.useEffect(()=>{n||l(-1)},[n]),W(n,r);const c=f.useCallback(o=>{if(!n){(o.key==="ArrowDown"||o.key==="Enter")&&o.preventDefault();return}switch(o.key){case"ArrowDown":o.preventDefault(),l(i=>e===0?-1:(i+1)%e);break;case"ArrowUp":o.preventDefault(),l(i=>e===0?-1:(i-1+e)%e);break;case"Home":o.preventDefault(),l(e===0?-1:0);break;case"End":o.preventDefault(),l(e===0?-1:e-1);break;case"Enter":a>=0&&(o.preventDefault(),t(a));break}},[n,e,a,t]);return{activeIndex:a,setActiveIndex:l,handleKeyDown:c}}function fe({options:e,values:n,defaultValues:t,onChange:r,loading:a,emptyText:l="No options",id:c,name:o,disabled:i,readOnly:d,required:u,className:b,label:h,placeholder:x="Select...",helpText:v,error:N}){const[j,p]=D({value:n,defaultValue:t??[],onChange:r}),[y,g]=f.useState(!1),S=f.useRef(null),k=f.useId(),w=c??k,I=new Set(j),V=f.useCallback(()=>g(!1),[]),A=f.useCallback(C=>{const E=e[C];if(!E||E.disabled)return;const _=I.has(E.value)?j.filter(Z=>Z!==E.value):[...j,E.value];p(_)},[e,j,I,p]),{activeIndex:L,setActiveIndex:U,handleKeyDown:K}=Y({itemCount:e.length,isOpen:y,onSelect:A,onClose:V}),R=e.filter(C=>I.has(C.value)).map(C=>C.label).join(", ");return s.jsx(P,{id:w,label:h,required:u,error:N,helpText:v,className:b,children:s.jsxs("div",{className:"position-relative",children:[s.jsx("button",{ref:S,id:w,type:"button",name:o,className:m("form-select text-start",N&&"is-invalid"),disabled:i||d,"aria-haspopup":"listbox","aria-expanded":y,onClick:()=>g(C=>!C),onKeyDown:K,children:R||s.jsx("span",{className:"text-body-secondary",children:x})}),s.jsx($,{open:y,onClose:V,anchorRef:S,className:"dropdown-menu w-100",role:"listbox",children:a?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):e.length===0?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:l}):e.map((C,E)=>s.jsxs("div",{role:"option","aria-selected":I.has(C.value),className:m("dropdown-item d-flex align-items-center gap-2",E===L&&"active",C.disabled&&"disabled"),onMouseEnter:()=>U(E),onMouseDown:_=>{_.preventDefault(),C.disabled||A(E)},children:[s.jsx("input",{type:"checkbox",className:"form-check-input m-0",checked:I.has(C.value),readOnly:!0,tabIndex:-1}),C.label]},String(C.value)))})]})})}function O(e){if(!e)return"";const n=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${n}-${t}-${r}`}function X(e){if(!e)return null;const n=e.split("-").map(Number),[t,r,a]=n;return!t||!r||!a?null:new Date(t,r-1,a)}function me({value:e,defaultValue:n,onChange:t,min:r,max:a,...l}){const[c,o]=D({value:e,defaultValue:n??null,onChange:t});return s.jsx(B,{...l,value:O(c),onChange:i=>o(X(i)),inputProps:{type:"date",min:r?O(r):void 0,max:a?O(a):void 0}})}function ee(e){if(!e)return"";const n=String(e.getHours()).padStart(2,"0"),t=String(e.getMinutes()).padStart(2,"0");return`${n}:${t}`}function ne(e){if(!e)return null;const[n,t]=e.split(":").map(Number);return n===void 0||t===void 0||Number.isNaN(n)||Number.isNaN(t)?null:new Date(1970,0,1,n,t,0,0)}function Je({value:e,defaultValue:n,onChange:t,step:r,...a}){const[l,c]=D({value:e,defaultValue:n??null,onChange:t});return s.jsx(B,{...a,value:ee(l),onChange:o=>c(ne(o)),inputProps:{type:"time",step:r}})}function re(e,n){const t=X(e);if(!t)return null;const r=ne(n||"00:00");return r&&t.setHours(r.getHours(),r.getMinutes(),0,0),t}function ze({value:e,defaultValue:n,onChange:t,min:r,max:a,id:l,name:c,disabled:o,readOnly:i,required:d,className:u,label:b,helpText:h,error:x}){const[v,N]=D({value:e,defaultValue:n??null,onChange:t}),j=f.useId(),p=l??j,y=O(v),g=ee(v);return s.jsx(P,{id:p,label:b,required:d,error:x,helpText:h,className:u,children:s.jsxs("div",{className:"d-flex gap-2",children:[s.jsx("input",{id:p,name:c?`${c}-date`:void 0,type:"date",className:m("form-control",x&&"is-invalid"),disabled:o,readOnly:i,required:d,min:r?O(r):void 0,max:a?O(a):void 0,value:y,onChange:S=>N(re(S.target.value,g))}),s.jsx("input",{name:c?`${c}-time`:void 0,type:"time",className:m("form-control",x&&"is-invalid"),disabled:o,readOnly:i,required:d,value:g,onChange:S=>N(re(y||O(new Date),S.target.value))})]})})}function he({options:e,value:n,defaultValue:t,onChange:r,loading:a,emptyText:l="No options",id:c,name:o,disabled:i,readOnly:d,required:u,className:b,label:h,placeholder:x="Select...",helpText:v,error:N}){const[j,p]=D({value:n,defaultValue:t??null,onChange:r}),[y,g]=f.useState(!1),S=f.useRef(null),k=f.useId(),w=c??k,I=e.find(T=>T.value===j)??null,V=f.useCallback(()=>g(!1),[]),A=f.useCallback(T=>{const R=e[T];!R||R.disabled||(p(R.value),V())},[e,p,V]),{activeIndex:L,setActiveIndex:U,handleKeyDown:K}=Y({itemCount:e.length,isOpen:y,onSelect:A,onClose:V});return s.jsx(P,{id:w,label:h,required:u,error:N,helpText:v,className:b,children:s.jsxs("div",{className:"position-relative",children:[s.jsx("button",{ref:S,id:w,type:"button",name:o,className:m("form-select text-start",N&&"is-invalid"),disabled:i||d,"aria-haspopup":"listbox","aria-expanded":y,onClick:()=>g(T=>!T),onKeyDown:K,children:I?I.label:s.jsx("span",{className:"text-body-secondary",children:x})}),s.jsx($,{open:y,onClose:V,anchorRef:S,className:"dropdown-menu w-100",role:"listbox",children:a?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):e.length===0?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:l}):e.map((T,R)=>s.jsx("div",{role:"option","aria-selected":T.value===j,className:m("dropdown-item",R===L&&"active",T.disabled&&"disabled"),onMouseEnter:()=>U(R),onMouseDown:C=>{C.preventDefault(),T.disabled||A(R)},children:T.label},String(T.value)))})]})})}function Ye(e,n){return n?e.label.toLowerCase().includes(n.toLowerCase()):!0}function be({options:e,value:n,defaultValue:t,onChange:r,inputValue:a,onInputValueChange:l,loading:c,emptyText:o="No results",filter:i,id:d,name:u,disabled:b,readOnly:h,required:x,className:v,label:N,placeholder:j,helpText:p,error:y}){const[g,S]=D({value:n,defaultValue:t??null,onChange:r}),k=e.find(M=>M.value===g)??null,[w,I]=D({value:a,defaultValue:(k==null?void 0:k.label)??"",onChange:l}),[V,A]=f.useState(!1),L=f.useRef(null),U=f.useId(),K=d??U,T=i??Ye,R=e.filter(M=>T(M,w)),C=f.useCallback(()=>A(!1),[]),E=f.useCallback(M=>{const F=R[M];!F||F.disabled||(S(F.value),I(F.label),C())},[R,S,I,C]),{activeIndex:_,setActiveIndex:Z,handleKeyDown:$e}=Y({itemCount:R.length,isOpen:V,onSelect:E,onClose:C});return s.jsx(P,{id:K,label:N,required:x,error:y,helpText:p,className:v,children:s.jsxs("div",{className:"position-relative",children:[s.jsx("input",{ref:L,id:K,name:u,type:"text",className:m("form-control",y&&"is-invalid"),disabled:b,readOnly:h,required:x,placeholder:j,autoComplete:"off",role:"combobox","aria-expanded":V,"aria-haspopup":"listbox",value:w,onFocus:()=>A(!0),onChange:M=>{const F=M.target.value;I(F),A(!0),g!==null&&S(null)},onKeyDown:$e}),s.jsx($,{open:V,onClose:C,anchorRef:L,className:"dropdown-menu w-100",role:"listbox",children:c?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):R.length===0?s.jsx("div",{className:"px-3 py-2 text-body-secondary",children:o}):R.map((M,F)=>s.jsx("div",{role:"option","aria-selected":M.value===g,className:m("dropdown-item",F===_&&"active",M.disabled&&"disabled"),onMouseEnter:()=>Z(F),onMouseDown:Le=>{Le.preventDefault(),M.disabled||E(F)},children:M.label},String(M.value)))})]})})}function Ze(e){return s.jsx(P,{...e})}function xe({open:e,onClose:n,title:t,children:r,footer:a,className:l}){return W(e,n),e?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"modal d-block",tabIndex:-1,role:"dialog","aria-modal":"true",children:s.jsx("div",{className:m("modal-dialog",l),role:"document",children:s.jsxs("div",{className:"modal-content",children:[s.jsxs("div",{className:"modal-header",children:[t&&s.jsx("h5",{className:"modal-title",children:t}),s.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:n})]}),s.jsx("div",{className:"modal-body",children:r}),a&&s.jsx("div",{className:"modal-footer",children:a})]})})}),s.jsx("div",{className:"modal-backdrop show",onClick:n})]}):null}function Qe(e,n,t){const r=[],a=Math.max(1,e-t),l=Math.min(n,e+t);a>1&&(r.push(1),a>2&&r.push("ellipsis"));for(let c=a;c<=l;c++)r.push(c);return l<n&&(l<n-1&&r.push("ellipsis"),r.push(n)),r}function ve({currentPage:e,pageSize:n,totalItems:t,onPageChange:r,siblingCount:a=1,className:l}){const c=Math.max(1,Math.ceil(t/n)),o=Qe(e,c,a);return s.jsx("nav",{"aria-label":"Pagination",className:l,children:s.jsxs("ul",{className:"pagination mb-0",children:[s.jsx("li",{className:m("page-item",e<=1&&"disabled"),children:s.jsx("button",{type:"button",className:"page-link",disabled:e<=1,onClick:()=>r(e-1),children:"Previous"})}),o.map((i,d)=>i==="ellipsis"?s.jsx("li",{className:"page-item disabled",children:s.jsx("span",{className:"page-link",children:"…"})},`ellipsis-${d}`):s.jsx("li",{className:m("page-item",i===e&&"active"),children:s.jsx("button",{type:"button",className:"page-link","aria-current":i===e?"page":void 0,onClick:()=>r(i),children:i})},i)),s.jsx("li",{className:m("page-item",e>=c&&"disabled"),children:s.jsx("button",{type:"button",className:"page-link",disabled:e>=c,onClick:()=>r(e+1),children:"Next"})})]})})}function We(e,n){return!e||e.key!==n?{key:n,direction:"asc"}:e.direction==="asc"?{key:n,direction:"desc"}:null}function pe({columns:e,rows:n,rowKey:t,loading:r,error:a,emptyText:l="No data",className:c,selectedRowKeys:o,onSelectionChange:i,sort:d,onSortChange:u,page:b,pageSize:h,totalCount:x,onPageChange:v}){const N=!!i,j=new Set(o??[]),p=b!==void 0&&h!==void 0&&x!==void 0,y=p?Math.max(1,Math.ceil(x/h)):1;function g(){i&&(j.size===n.length?i([]):i(n.map(t)))}function S(k){if(!i)return;const w=new Set(j);w.has(k)?w.delete(k):w.add(k),i(Array.from(w))}return s.jsxs("div",{className:m("table-responsive",c),children:[s.jsxs("table",{className:"table table-hover align-middle",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[N&&s.jsx("th",{style:{width:"2.5rem"},children:s.jsx("input",{type:"checkbox",className:"form-check-input",checked:n.length>0&&j.size===n.length,onChange:g,"aria-label":"Select all rows"})}),e.map(k=>s.jsxs("th",{style:{width:k.width},role:k.sortable?"button":void 0,onClick:k.sortable&&u?()=>u(We(d,k.key)):void 0,children:[k.header,k.sortable&&(d==null?void 0:d.key)===k.key&&s.jsxs("span",{"aria-hidden":"true",children:[" ",d.direction==="asc"?"▲":"▼"]})]},k.key))]})}),s.jsx("tbody",{children:r?s.jsx("tr",{children:s.jsx("td",{colSpan:e.length+(N?1:0),className:"text-center text-body-secondary py-4",children:"Loading…"})}):a?s.jsx("tr",{children:s.jsx("td",{colSpan:e.length+(N?1:0),className:"text-center text-danger py-4",children:a})}):n.length===0?s.jsx("tr",{children:s.jsx("td",{colSpan:e.length+(N?1:0),className:"text-center text-body-secondary py-4",children:l})}):n.map(k=>{const w=t(k);return s.jsxs("tr",{children:[N&&s.jsx("td",{children:s.jsx("input",{type:"checkbox",className:"form-check-input",checked:j.has(w),onChange:()=>S(w),"aria-label":"Select row"})}),e.map(I=>s.jsx("td",{children:I.render?I.render(k):String(k[I.key]??"")},I.key))]},w)})})]}),p&&s.jsxs("div",{className:"d-flex justify-content-between align-items-center mt-2",children:[s.jsxs("span",{className:"text-body-secondary small",children:["Page ",b," of ",y," (",x," rows)"]}),s.jsx(ve,{currentPage:b,pageSize:h,totalItems:x,onPageChange:v})]})]})}function ge({size:e="md",variant:n,className:t,label:r="Loading..."}){return s.jsx("span",{className:m("spinner-border",e==="sm"&&"spinner-border-sm",n&&`text-${n}`,t),role:"status",children:s.jsx("span",{className:"visually-hidden",children:r})})}function z({variant:e="primary",size:n,disabled:t,loading:r,type:a="button",className:l,children:c,onClick:o,...i}){const d=t||r;return s.jsxs("button",{type:a,className:m("btn",`btn-${e}`,n&&`btn-${n}`,l),disabled:d,"aria-busy":r||void 0,onClick:d?void 0:o,...i,children:[r&&s.jsx(ge,{size:"sm",className:"me-2",label:""}),c]})}function te({variant:e="info",dismissible:n,onDismiss:t,className:r,children:a}){return s.jsxs("div",{className:m("alert",`alert-${e}`,n&&"alert-dismissible",r),role:"alert",children:[a,n&&s.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:t})]})}const je=f.createContext(null),Xe=4e3;function en({children:e}){const[n,t]=f.useState([]),r=f.useRef(0),a=f.useRef(new Map);f.useEffect(()=>{const i=a.current;return()=>{i.forEach(clearTimeout),i.clear()}},[]);const l=f.useCallback(i=>{const d=a.current.get(i);d&&(clearTimeout(d),a.current.delete(i)),t(u=>u.filter(b=>b.id!==i))},[]),c=f.useCallback((i,d)=>{const u=r.current++,b=(d==null?void 0:d.variant)??"info",h=(d==null?void 0:d.duration)??Xe;return t(x=>[...x,{id:u,message:i,variant:b}]),h>0&&a.current.set(u,setTimeout(()=>l(u),h)),u},[l]),o=f.useMemo(()=>({show:c,dismiss:l,success:(i,d)=>c(i,{...d,variant:"success"}),error:(i,d)=>c(i,{...d,variant:"danger"}),info:(i,d)=>c(i,{...d,variant:"info"}),warning:(i,d)=>c(i,{...d,variant:"warning"})}),[c,l]);return s.jsxs(je.Provider,{value:o,children:[e,s.jsx("div",{className:"toast-container position-fixed bottom-0 end-0 p-3",style:{zIndex:1090},children:n.map(i=>s.jsx(te,{variant:i.variant,dismissible:!0,onDismiss:()=>l(i.id),className:"shadow-sm",children:i.message},i.id))})]})}function nn(){const e=f.useContext(je);if(!e)throw new Error("useToast must be used within a ToastProvider");return e}const ye=f.createContext(null);function tn({children:e}){const[n,t]=f.useState(null),r=f.useCallback(l=>new Promise(c=>{t({...l,resolve:c})}),[]),a=f.useCallback(l=>{n==null||n.resolve(l),t(null)},[n]);return s.jsxs(ye.Provider,{value:r,children:[e,s.jsx(xe,{open:n!==null,onClose:()=>a(!1),title:(n==null?void 0:n.title)??"Confirm",footer:s.jsxs(s.Fragment,{children:[s.jsx(z,{variant:"outline-secondary",onClick:()=>a(!1),children:(n==null?void 0:n.cancelLabel)??"Cancel"}),s.jsx(z,{variant:(n==null?void 0:n.confirmVariant)??"danger",onClick:()=>a(!0),children:(n==null?void 0:n.confirmLabel)??"Confirm"})]}),children:n==null?void 0:n.message})]})}function sn(){const e=f.useContext(ye);if(!e)throw new Error("useConfirm must be used within a ConfirmProvider");return e}function rn({variant:e="primary",pill:n,className:t,children:r}){return s.jsx("span",{className:m("badge",`bg-${e}`,n&&"rounded-pill",t),children:r})}function an({items:e,activeKey:n,defaultActiveKey:t,onChange:r,className:a}){var i;const[l,c]=D({value:n,defaultValue:t??((i=e[0])==null?void 0:i.key)??"",onChange:r}),o=e.find(d=>d.key===l);return s.jsxs("div",{className:a,children:[s.jsx("ul",{className:"nav nav-tabs",role:"tablist",children:e.map(d=>s.jsx("li",{className:"nav-item",role:"presentation",children:s.jsx("button",{type:"button",className:m("nav-link",d.key===l&&"active"),role:"tab","aria-selected":d.key===l,disabled:d.disabled,onClick:()=>c(d.key),children:d.label})},d.key))}),s.jsx("div",{className:"tab-content pt-3",role:"tabpanel",children:o==null?void 0:o.content})]})}function Ne({items:e,multiple:n=!1,openKeys:t,defaultOpenKeys:r,onChange:a,className:l}){const[c,o]=D({value:t,defaultValue:r??[],onChange:a}),i=new Set(c);function d(u){i.has(u)?o(c.filter(b=>b!==u)):o(n?[...c,u]:[u])}return s.jsx("div",{className:m("accordion",l),children:e.map(u=>{const b=i.has(u.key);return s.jsxs("div",{className:"accordion-item",children:[s.jsx("h2",{className:"accordion-header",children:s.jsx("button",{type:"button",className:m("accordion-button",!b&&"collapsed"),"aria-expanded":b,disabled:u.disabled,onClick:()=>d(u.key),children:u.header})}),b&&s.jsx("div",{className:"accordion-collapse",children:s.jsx("div",{className:"accordion-body",children:u.content})})]},u.key)})})}function ln({content:e,children:n,placement:t="top",className:r}){const[a,l]=f.useState(!1),c=f.useRef(null),o=f.useId();return s.jsxs("span",{ref:c,className:"position-relative d-inline-block",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),onFocus:()=>l(!0),onBlur:()=>l(!1),"aria-describedby":a?o:void 0,children:[n,s.jsx($,{open:a,onClose:()=>l(!1),anchorRef:c,className:m("tooltip show",`bs-tooltip-${t}`,"position-absolute","w-auto",r),children:s.jsx("span",{id:o,role:"tooltip",className:"tooltip-inner",children:e})})]})}function on({title:e,content:n,children:t,placement:r="bottom",className:a}){const[l,c]=f.useState(!1),o=f.useRef(null);return s.jsxs("span",{ref:o,className:"position-relative d-inline-block",onClick:()=>c(i=>!i),children:[t,s.jsxs($,{open:l,onClose:()=>c(!1),anchorRef:o,className:m("popover show",`bs-popover-${r}`,"position-absolute","w-auto",a),children:[e&&s.jsx("h3",{className:"popover-header",children:e}),s.jsx("div",{className:"popover-body",children:n})]})]})}function cn({header:e,footer:n,className:t,children:r}){return s.jsxs("div",{className:m("card",t),children:[e&&s.jsx("div",{className:"card-header",children:e}),s.jsx("div",{className:"card-body",children:r}),n&&s.jsx("div",{className:"card-footer",children:n})]})}function dn({className:e,vertical:n,label:t}){return n?s.jsx("div",{className:m("vr",e),role:"separator","aria-orientation":"vertical"}):t?s.jsxs("div",{className:m("d-flex align-items-center gap-2 my-3",e),role:"separator",children:[s.jsx("hr",{className:"flex-grow-1 m-0"}),s.jsx("span",{className:"text-body-secondary small",children:t}),s.jsx("hr",{className:"flex-grow-1 m-0"})]}):s.jsx("hr",{className:m("my-3",e),role:"separator"})}function un({direction:e="column",gap:n=2,align:t,justify:r,wrap:a,className:l,children:c}){return s.jsx("div",{className:m("d-flex",e==="row"?"flex-row":"flex-column",`gap-${n}`,t&&`align-items-${t}`,r&&`justify-content-${r}`,a&&"flex-wrap",l),children:c})}function fn({fluid:e,className:n,children:t}){return s.jsx("div",{className:m(e?"container-fluid":"container",n),children:t})}function mn({className:e,children:n}){return s.jsx("div",{className:m("row",e),children:n})}function hn({span:e,sm:n,md:t,lg:r,xl:a,className:l,children:c}){return s.jsx("div",{className:m(e?`col-${e}`:"col",n?`col-sm-${n}`:void 0,t?`col-md-${t}`:void 0,r?`col-lg-${r}`:void 0,a?`col-xl-${a}`:void 0,l),children:c})}function ke({items:e,className:n}){return s.jsx("nav",{"aria-label":"breadcrumb",className:n,children:s.jsx("ol",{className:"breadcrumb mb-0",children:e.map((t,r)=>{const a=r===e.length-1,l=!a&&(t.href||t.onClick);return s.jsx("li",{className:m("breadcrumb-item",a&&"active"),"aria-current":a?"page":void 0,children:l?s.jsx("a",{href:t.href??"#",onClick:c=>{var o;t.href||c.preventDefault(),(o=t.onClick)==null||o.call(t)},children:t.label}):t.label},r)})})})}function bn({items:e,children:n,placement:t="start",className:r}){const[a,l]=f.useState(!1),c=f.useRef(null),o=f.useCallback(()=>l(!1),[]),i=f.useCallback(h=>{var v;const x=e[h];!x||x.disabled||((v=x.onSelect)==null||v.call(x),o())},[e,o]),{activeIndex:d,setActiveIndex:u,handleKeyDown:b}=Y({itemCount:e.length,isOpen:a,onSelect:i,onClose:o});return s.jsxs("span",{ref:c,className:"position-relative d-inline-block",onClick:()=>l(h=>!h),onKeyDown:b,children:[n,s.jsx($,{open:a,onClose:o,anchorRef:c,role:"menu",className:m("dropdown-menu show",t==="end"&&"dropdown-menu-end",r),children:e.map((h,x)=>s.jsx("button",{type:"button",role:"menuitem",className:m("dropdown-item",x===d&&"active",h.disabled&&"disabled",h.danger&&"text-danger"),disabled:h.disabled,onMouseEnter:()=>u(x),onMouseDown:v=>v.preventDefault(),onClick:v=>{v.stopPropagation(),i(x)},children:h.label},h.key))})]})}function xn({steps:e,currentStep:n,className:t}){return s.jsx("ol",{className:m("d-flex list-unstyled align-items-center",t),children:e.map((r,a)=>{const l=a<n?"complete":a===n?"active":"upcoming",c=a===e.length-1;return s.jsxs("li",{className:m("d-flex align-items-center",!c&&"flex-grow-1"),children:[s.jsxs("div",{className:"d-flex align-items-center gap-2",children:[s.jsx("span",{className:m("d-flex align-items-center justify-content-center rounded-circle flex-shrink-0",l==="complete"?"bg-primary text-white":l==="active"?"border border-primary text-primary":"border text-body-secondary"),style:{width:"2rem",height:"2rem"},"aria-current":l==="active"?"step":void 0,children:l==="complete"?"✓":a+1}),s.jsxs("div",{children:[s.jsx("div",{className:m("small fw-semibold",l==="upcoming"&&"text-body-secondary"),children:r.label}),r.description&&s.jsx("div",{className:"small text-body-secondary",children:r.description})]})]}),!c&&s.jsx("hr",{className:"flex-grow-1 mx-2"})]},r.key)})})}function vn(e){var a,l;const n=e.trim().split(/\s+/),t=((a=n[0])==null?void 0:a[0])??"",r=n.length>1?((l=n[n.length-1])==null?void 0:l[0])??"":"";return(t+r).toUpperCase()}const pn={sm:"1.75rem",md:"2.5rem",lg:"3.5rem"};function gn({src:e,name:n,size:t="md",className:r}){const a=pn[t];return e?s.jsx("img",{src:e,alt:n??"",className:m("rounded-circle",r),style:{width:a,height:a,objectFit:"cover"}}):s.jsx("span",{className:m("d-inline-flex align-items-center justify-content-center rounded-circle bg-secondary text-white",r),style:{width:a,height:a,fontSize:`calc(${a} * 0.4)`},role:n?"img":void 0,"aria-label":n,children:n?vn(n):null})}function jn({variant:e="secondary",onRemove:n,className:t,children:r}){return s.jsxs("span",{className:m("badge d-inline-flex align-items-center gap-1",`bg-${e}`,t),children:[r,n&&s.jsx("button",{type:"button",className:"btn-close btn-close-white",style:{fontSize:"0.55rem"},"aria-label":"Remove",onClick:n})]})}function yn({width:e="100%",height:n="1rem",circle:t,className:r}){return s.jsx("span",{className:m("placeholder-glow d-inline-block",r),style:{width:e,height:n},"aria-hidden":"true",children:s.jsx("span",{className:m("placeholder w-100 h-100 d-block",t&&"rounded-circle")})})}function Nn({value:e,defaultValue:n,onChange:t,min:r=0,max:a=100,step:l=1,id:c,name:o,disabled:i,required:d,className:u,label:b,helpText:h,error:x}){const[v,N]=D({value:e,defaultValue:n??r,onChange:t}),j=f.useId(),p=c??j;return s.jsxs(P,{id:p,label:b,required:d,error:x,helpText:h,className:u,children:[s.jsx("input",{id:p,name:o,type:"range",className:"form-range",disabled:i,required:d,min:r,max:a,step:l,value:v,onChange:y=>N(Number(y.target.value))}),s.jsx("div",{className:"small text-body-secondary",children:v})]})}function kn({value:e,defaultValue:n,onChange:t,max:r=5,disabled:a,className:l}){const[c,o]=D({value:e,defaultValue:n??0,onChange:t});return s.jsx("div",{className:m("d-inline-flex gap-1",l),role:"radiogroup","aria-label":"Rating",children:Array.from({length:r},(i,d)=>d+1).map(i=>s.jsx("button",{type:"button",className:"btn btn-link p-0 border-0",disabled:a,role:"radio","aria-checked":i===c,"aria-label":`${i} star${i>1?"s":""}`,onClick:()=>o(i),children:s.jsx("span",{"aria-hidden":"true",style:{fontSize:"1.25rem",color:i<=c?"#f5b301":"#ced4da"},children:"★"})},i))})}function Sn({value:e,variant:n="primary",label:t,className:r}){const a=Math.max(0,Math.min(100,e));return s.jsx("div",{className:m("progress",r),role:"progressbar","aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,children:s.jsx("div",{className:m("progress-bar",`bg-${n}`),style:{width:`${a}%`},children:t?`${Math.round(a)}%`:null})})}const wn={sm:"0.875em",lg:"1.5em",xl:"2em"};function Cn({name:e,size:n,className:t,label:r}){return s.jsx("i",{className:m(e,t),style:n?{fontSize:wn[n]}:void 0,role:r?"img":void 0,"aria-label":r,"aria-hidden":r?void 0:!0})}function In({brand:e,start:n,end:t,variant:r="light",className:a}){return s.jsx("nav",{className:m("navbar navbar-expand-lg border-bottom",r==="dark"?"navbar-dark bg-dark":"navbar-light bg-light",a),children:s.jsxs("div",{className:"container-fluid",children:[e&&s.jsx("span",{className:"navbar-brand mb-0",children:e}),n&&s.jsx("div",{className:"d-flex align-items-center gap-3",children:n}),t&&s.jsx("div",{className:"d-flex align-items-center gap-3 ms-auto",children:t})]})})}function Dn(e){return"items"in e}function ae({item:e}){return s.jsxs("a",{href:e.href??"#",className:m("nav-link d-flex align-items-center gap-2",e.active&&"active",e.disabled&&"disabled"),"aria-current":e.active?"page":void 0,"aria-disabled":e.disabled,onClick:n=>{var t;e.href||n.preventDefault(),!e.disabled&&((t=e.onClick)==null||t.call(e))},children:[e.icon,e.label]})}function Rn({sections:e,header:n,footer:t,className:r}){return s.jsxs("div",{className:m("d-flex flex-column h-100",r),children:[n&&s.jsx("div",{className:"p-3 border-bottom",children:n}),s.jsx("nav",{className:"nav flex-column flex-grow-1 p-2 gap-1",children:e.map(a=>Dn(a)?s.jsx(Ne,{className:"border-0",defaultOpenKeys:a.defaultOpen?[a.key]:[],items:[{key:a.key,header:a.label,content:s.jsx("div",{className:"nav flex-column ps-2 gap-1",children:a.items.map(l=>s.jsx(ae,{item:l},l.key))})}]},a.key):s.jsx(ae,{item:a},a.key))}),t&&s.jsx("div",{className:"p-3 border-top",children:t})]})}function Vn({title:e,description:n,breadcrumbItems:t,actions:r,className:a}){return s.jsxs("div",{className:m("mb-4",a),children:[t&&t.length>0&&s.jsx(ke,{items:t,className:"mb-2"}),s.jsxs("div",{className:"d-flex align-items-start justify-content-between gap-3 flex-wrap",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"h3 mb-1",children:e}),n&&s.jsx("p",{className:"text-body-secondary mb-0",children:n})]}),r&&s.jsx("div",{className:"d-flex align-items-center gap-2",children:r})]})]})}class Se extends Error{constructor(n,t,r){super(`HTTP ${n} ${t} for ${r}`),this.name="HttpError",this.status=n,this.statusText=t,this.url=r}}function Tn(e){if(!e)return"";const n=new URLSearchParams;for(const[r,a]of Object.entries(e))a!=null&&n.set(r,String(a));const t=n.toString();return t?`?${t}`:""}function we(e={}){const{baseUrl:n="",fetcher:t=fetch,buildRequestInit:r}=e;return{async get(a,l={}){const c=`${n}${a}${Tn(l.params)}`;let o={method:"GET",signal:l.signal};r&&(o=r(c,o));const i=await t(c,o);if(!i.ok)throw new Se(i.status,i.statusText,c);return await i.json()}}}const Ce=we();function Mn(e){return Object.keys(e).sort().reduce((n,t)=>(n[t]=e[t],n),{})}function H({client:e=Ce,url:n,params:t,mapResponse:r,enabled:a=!0}){const[l,c]=f.useState("idle"),[o,i]=f.useState([]),[d,u]=f.useState(null),[b,h]=f.useState(0),x=f.useMemo(()=>t?JSON.stringify(Mn(t)):"",[t]),v=f.useRef(0),N=f.useRef(r);N.current=r,f.useEffect(()=>{if(!a||!n){c("idle"),i([]),u(null);return}const p=++v.current,y=new AbortController;return c("loading"),u(null),e.get(n,{params:t,signal:y.signal}).then(g=>{if(p!==v.current)return;const S=N.current(g);i(S),c(S.length===0?"empty":"success")}).catch(g=>{p===v.current&&(g instanceof DOMException&&g.name==="AbortError"||(u(g instanceof Error?g:new Error(String(g))),c("error")))}),()=>{y.abort()}},[e,n,x,a,b]);const j=f.useCallback(()=>h(p=>p+1),[]);return{state:l,items:o,error:d,reload:j}}function Ie(e,n){const[t,r]=f.useState(e);return f.useEffect(()=>{const a=setTimeout(()=>r(e),n);return()=>clearTimeout(a)},[e,n]),t}function q(e){if(Array.isArray(e))return e;if(e&&typeof e=="object"&&Array.isArray(e.items))return e.items;throw new Error("Unable to normalize remote response into an array. Provide an explicit `mapResponse` for this endpoint's response shape.")}function J(e,n,t){if(e===null||typeof e!="object")throw new Error("Remote item is not an object; cannot read valueMember/displayMember from it.");const r=e;return{value:r[n],label:String(r[t]??"")}}function De({url:e,params:n,valueMember:t,displayMember:r,mapResponse:a,client:l,enabled:c,...o}){const{state:i,items:d,error:u}=H({client:l,url:e,params:n,enabled:c,mapResponse:h=>(a?a(h):q(h)).map(v=>J(v,t,r))}),b=o.error??(i==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return s.jsx(he,{...o,options:d,loading:i==="loading",error:b})}function En({url:e,params:n,searchParam:t,valueMember:r,displayMember:a,mapResponse:l,minSearchLength:c=1,debounceMs:o=300,client:i,inputValue:d,onInputValueChange:u,...b}){const[h,x]=D({value:d,defaultValue:"",onChange:u}),v=Ie(h,o),N=v.length>=c,{state:j,items:p,error:y}=H({client:i,url:e,enabled:N,params:{...n,[t]:v},mapResponse:S=>(l?l(S):q(S)).map(w=>J(w,r,a))}),g=b.error??(j==="error"?(y==null?void 0:y.message)??"Failed to load suggestions":void 0);return s.jsx(be,{...b,options:p,loading:j==="loading",error:g,inputValue:h,onInputValueChange:x,filter:()=>!0})}function Re({url:e,params:n,mapResponse:t,getTotalCount:r,pageSize:a=20,client:l,...c}){const[o,i]=f.useState(1),[d,u]=f.useState(null),b=f.useMemo(()=>JSON.stringify(n??{}),[n]),h=f.useRef(!0);f.useEffect(()=>{if(h.current){h.current=!1;return}i(1)},[b]);const x=f.useMemo(()=>({...n,page:o,pageSize:a,...d?{sortKey:d.key,sortDirection:d.direction}:{}}),[n,o,a,d]),v=f.useRef(void 0),{state:N,items:j,error:p}=H({client:l,url:e,params:x,mapResponse:w=>(v.current=w,t?t(w):q(w))}),y=v.current!==void 0?r==null?void 0:r(v.current):void 0,S=j.length>=a&&a>0?o*a+1:(o-1)*a+j.length,k=y??S;return s.jsx(pe,{...c,rows:j,loading:N==="loading",error:p==null?void 0:p.message,page:o,pageSize:a,totalCount:k,onPageChange:i,sort:d,onSortChange:w=>{u(w),i(1)}})}function An({url:e,params:n,valueMember:t,displayMember:r,mapResponse:a,client:l,enabled:c,...o}){const{state:i,items:d,error:u}=H({client:l,url:e,params:n,enabled:c,mapResponse:h=>(a?a(h):q(h)).map(v=>J(v,t,r))}),b=o.error??(i==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return s.jsx(ue,{...o,options:d,loading:i==="loading",error:b})}function Pn({url:e,params:n,valueMember:t,displayMember:r,mapResponse:a,client:l,enabled:c,...o}){const{state:i,items:d,error:u}=H({client:l,url:e,params:n,enabled:c,mapResponse:h=>(a?a(h):q(h)).map(v=>J(v,t,r))}),b=o.error??(i==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return s.jsx(fe,{...o,options:d,loading:i==="loading",error:b})}function Fn(){const e=new Map,n=new Set;return{register(t,r){e.set(t,r)},resolve(t,r){const a=e.get(t.component);return a?a(t,r):(n.has(t.component)||(n.add(t.component),console.warn(`Smart: no resolver registered for component "${t.component}" (field "${t.name}"). Skipping.`)),null)},has(t){return e.has(t)}}}function On(e){const n=new Map(Object.entries(e??{}));return{register(t,r){n.set(t,r)},resolve(t){return n.get(t)}}}function $n(){const e=new Map;return{register(n,t){e.set(n,t)},resolve(n){return e.get(n)}}}function Ln(e){return"dataSource"in e}function Kn(e,n){if(!e)return;const t={};for(const[r,a]of Object.entries(e))t[r]=a.kind==="static"?a.value:n[a.field];return t}function le(e,n,t){return n&&t?t(n):e}function G(e,n){const{values:t,translate:r}=n;return{metadata:e,visible:e.visible??!0,readOnly:e.readOnly??!1,disabled:e.disabled??!1,required:e.required??!1,label:le(e.label,e.labelKey,r),placeholder:e.placeholder,helpText:e.helpText,validationMessage:le(e.validationMessage,e.validationMessageKey,r),params:Ln(e)?Kn(e.dataSource.params,t):void 0}}function Bn(e,n,t){const r=n==null?void 0:n.fields.find(a=>a.name===e);if(r)return G(r,t)}const Hn=[];function qn(e,n){const t={};for(const r of n)t[r]=e[r];return t}function Ve(e,n,t){const r=e??Hn,a=qn(n,r),l=r.length===0?"":JSON.stringify(a),c=f.useRef(null),o=f.useRef(t);o.current=t,f.useEffect(()=>{var d;if(r.length===0)return;const i=c.current;if(i&&i.key!==l)for(const u of r)Object.is(i.snapshot[u],a[u])||(d=o.current)==null||d.call(o,u);c.current={key:l,snapshot:a}},[l])}function se(e,n){const{actions:t,translate:r}=n,a=t.resolve(e.id);return{metadata:e,visible:e.visible??!0,enabled:(e.enabled??!0)&&!!a,label:e.labelKey&&r?r(e.labelKey):e.label,handler:a}}function Gn(e,n,t){var a;const r=(a=n==null?void 0:n.actions)==null?void 0:a.find(l=>l.id===e);if(r)return se(r,t)}const Te=(e,n)=>{const t=G(e,{values:n.values,translate:n.translate});if(!t.visible)return null;const r=n.dataSources.resolve(e.dataSource.id);return r?s.jsx(De,{label:t.label,url:r.url,client:r.client,params:t.params,valueMember:e.valueMember,displayMember:e.displayMember,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,error:t.validationMessage,value:n.values[e.name]??null,onChange:a=>n.onFieldChange(e.name,a)}):(console.warn(`Smart: no data source registered for id "${e.dataSource.id}" (field "${e.name}"). Skipping.`),null)},Un={text:e=>e==null?"":String(e),boolean:(e,n)=>n?n(e?"smart.boolean.true":"smart.boolean.false"):e?"Yes":"No",date:e=>{if(e==null||e==="")return"";const n=e instanceof Date?e:new Date(String(e));return Number.isNaN(n.getTime())?String(e):n.toLocaleDateString()},currency:e=>{const n=Number(e);return Number.isFinite(n)?n.toLocaleString(void 0,{style:"currency",currency:"USD"}):String(e??"")}};function _n(e,n){if(e.visible===!1)return null;const t=e.headerKey&&n?n(e.headerKey):e.header??e.key,r=e.format?Un[e.format]:void 0;return{key:e.key,header:t,sortable:e.sortable,render:r?a=>r(a[e.key],n):void 0}}const Me=(e,n)=>{const t=G(e,{values:n.values,translate:n.translate});if(!t.visible)return null;const r=n.dataSources.resolve(e.dataSource.id);if(!r)return console.warn(`Smart: no data source registered for id "${e.dataSource.id}" (field "${e.name}"). Skipping.`),null;const a=e.columns.map(o=>_n(o,n.translate)).filter(o=>o!==null),l=e.totalCountField,c=l?o=>{const i=o==null?void 0:o[l];return typeof i=="number"?i:void 0}:void 0;return s.jsx(Re,{url:r.url,client:r.client,params:t.params,columns:a,rowKey:o=>o[e.rowKey],getTotalCount:c})};function ie(e){if(!e)return;const n=new Date(e);return Number.isNaN(n.getTime())?void 0:n}const Ee=(e,n)=>{const t=G(e,{values:n.values,translate:n.translate});return t.visible?s.jsx(me,{label:t.label,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,error:t.validationMessage,min:ie(e.minDate),max:ie(e.maxDate),value:n.values[e.name]??null,onChange:r=>n.onFieldChange(e.name,r)}):null},Ae=(e,n)=>{const t=G(e,{values:n.values,translate:n.translate});return t.visible?s.jsx(B,{label:t.label,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,placeholder:t.placeholder,error:t.validationMessage,maxLength:e.maxLength,value:n.values[e.name]??"",onChange:r=>n.onFieldChange(e.name,r)}):null};function Jn(e){e.register("Input",Ae),e.register("ComboBox",Te),e.register("DatePicker",Ee),e.register("DataGrid",Me)}function Pe({metadata:e,ctx:n}){const t=n.onMetadataRefreshNeeded;return Ve(e.dependsOn,n.values,t?r=>t(e.name,r):void 0),e.visible===!1?null:n.registry.resolve(e,n)}const Fe=1;function zn(e){const n=Number(e.split(".")[0]);return Number.isFinite(n)&&n===Fe}function Yn({metadata:e,ctx:n}){return zn(e.schemaVersion)?s.jsx(s.Fragment,{children:e.fields.map(t=>s.jsx(Pe,{metadata:t,ctx:n},t.name))}):s.jsxs(te,{variant:"danger",children:['Unsupported form schema version "',e.schemaVersion,'" — this app understands schema version ',Fe,".x."]})}function Oe({metadata:e,ctx:n}){const t=se(e,n);return t.visible?s.jsx(z,{disabled:!t.enabled,onClick:()=>{var r;return(r=t.handler)==null?void 0:r.call(t)},children:t.label??e.id}):null}function Zn({metadata:e,ctx:n}){return!e.actions||e.actions.length===0?null:s.jsx(s.Fragment,{children:e.actions.map(t=>s.jsx(Oe,{metadata:t,ctx:n},t.id))})}exports.Accordion=Ne;exports.Alert=te;exports.AutoComplete=be;exports.Avatar=gn;exports.Badge=rn;exports.Breadcrumb=ke;exports.Button=z;exports.Card=cn;exports.CheckBox=Ge;exports.Col=hn;exports.ComboBox=he;exports.ConfirmProvider=tn;exports.Container=fn;exports.DataGrid=pe;exports.DatePicker=me;exports.DateTimePicker=ze;exports.Divider=dn;exports.FileInput=qe;exports.FormField=Ze;exports.HttpError=Se;exports.Icon=Cn;exports.Input=B;exports.Label=oe;exports.Menu=bn;exports.Modal=xe;exports.MultiSelect=fe;exports.Navbar=In;exports.NumberInput=Be;exports.PageHeader=Vn;exports.Pagination=ve;exports.PasswordInput=He;exports.Popover=on;exports.Popup=$;exports.ProgressBar=Sn;exports.RadioButton=de;exports.RadioGroup=_e;exports.Rating=kn;exports.RemoteAutoComplete=En;exports.RemoteComboBox=De;exports.RemoteDataGrid=Re;exports.RemoteMultiSelect=Pn;exports.RemoteSelect=An;exports.Row=mn;exports.Select=ue;exports.Sidebar=Rn;exports.Skeleton=yn;exports.Slider=Nn;exports.SmartAction=Oe;exports.SmartActions=Zn;exports.SmartField=Pe;exports.SmartForm=Yn;exports.Spinner=ge;exports.Stack=un;exports.Stepper=xn;exports.Switch=Ue;exports.Tabs=an;exports.Tag=jn;exports.TextArea=Ke;exports.TimePicker=Je;exports.ToastProvider=en;exports.Tooltip=ln;exports.ValidationMessage=Q;exports.comboBoxResolver=Te;exports.createHttpClient=we;exports.createSmartActionRegistry=$n;exports.createSmartComponentRegistry=Fn;exports.createSmartDataSourceRegistry=On;exports.dataGridResolver=Me;exports.datePickerResolver=Ee;exports.defaultArrayNormalization=q;exports.defaultHttpClient=Ce;exports.fromDateInputValue=X;exports.fromTimeInputValue=ne;exports.inputResolver=Ae;exports.registerBuiltInResolvers=Jn;exports.resolveSmartActionMetadata=se;exports.resolveSmartFieldMetadata=G;exports.toDateInputValue=O;exports.toSelectOption=J;exports.toTimeInputValue=ee;exports.useConfirm=sn;exports.useDebouncedValue=Ie;exports.useRemoteData=H;exports.useSmartAction=Gn;exports.useSmartDependencies=Ve;exports.useSmartField=Bn;exports.useToast=nn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),m=require("react");function h(...e){return e.filter(Boolean).join(" ")}function sr({htmlFor:e,required:r,className:t,children:s}){return n.jsxs("label",{htmlFor:e,className:h("form-label","rrc-label",t),children:[s,r&&n.jsx("span",{className:"text-danger",children:" *"})]})}function _e({error:e,helpText:r,className:t}){return e?n.jsx("div",{className:h("invalid-feedback d-block","rrc-field__error",t),children:e}):r?n.jsx("div",{className:h("form-text","rrc-field__help",t),children:r}):null}function U({id:e,label:r,required:t,error:s,helpText:a,className:o,children:i}){return n.jsxs("div",{className:h("mb-3","rrc-field",o),children:[r&&n.jsx(sr,{htmlFor:e,required:t,children:r}),i,n.jsx(_e,{error:s,helpText:a})]})}function A({value:e,defaultValue:r,onChange:t}){const s=e!==void 0,a=m.useRef(s);process.env.NODE_ENV!=="production"&&a.current!==s&&console.error("[react-components] A component switched between controlled and uncontrolled `value`. Decide between passing `value` (controlled) or `defaultValue` (uncontrolled) for the lifetime of the component, per the library's controlled/uncontrolled policy.");const[o,i]=m.useState(r),c=s?e:o,l=m.useCallback(d=>{s||i(d),t==null||t(d)},[s,t]);return[c,l]}function re(e){const{id:r,name:t,disabled:s,readOnly:a,required:o,className:i,label:c,placeholder:l,helpText:d,error:u,value:p,defaultValue:f,onChange:b,onBlur:j,type:w="text",maxLength:S,autoFocus:k,inputProps:_,endAdornment:x}=e,[y,v]=A({value:p,defaultValue:f??"",onChange:b}),N=m.useId(),g=r??N,C=n.jsx("input",{id:g,name:t,className:h("form-control","rrc-input",u&&"is-invalid"),disabled:s,readOnly:a,required:o,placeholder:l,maxLength:S,autoFocus:k,value:y,onChange:R=>v(R.target.value),onBlur:j,type:w,..._});return n.jsx(U,{id:g,label:c,required:o,error:u,helpText:d,className:i,children:x?n.jsxs("div",{className:"input-group rrc-input-group",children:[C,x]}):C})}function Zr(e){const{id:r,name:t,disabled:s,readOnly:a,required:o,className:i,label:c,placeholder:l,helpText:d,error:u,value:p,defaultValue:f,onChange:b,onBlur:j,rows:w=3,maxLength:S}=e,[k,_]=A({value:p,defaultValue:f??"",onChange:b}),x=m.useId(),y=r??x;return n.jsx(U,{id:y,label:c,required:o,error:u,helpText:d,className:i,children:n.jsx("textarea",{id:y,name:t,className:h("form-control","rrc-input",u&&"is-invalid"),disabled:s,readOnly:a,required:o,placeholder:l,rows:w,maxLength:S,value:k,onChange:v=>_(v.target.value),onBlur:j})})}function Qr({value:e,defaultValue:r,onChange:t,min:s,max:a,step:o,...i}){const[c,l]=A({value:e,defaultValue:r??null,onChange:t});return n.jsx(re,{...i,value:c===null?"":String(c),onChange:d=>{if(d.trim()===""){l(null);return}const u=Number(d);Number.isNaN(u)||l(u)},inputProps:{inputMode:"decimal",min:s,max:a,step:o}})}function Xr(e){const[r,t]=m.useState(!1);return n.jsx(re,{...e,inputProps:{type:r?"text":"password",autoComplete:"current-password"},endAdornment:n.jsx("button",{type:"button",className:"btn btn-outline-secondary rrc-btn rrc-input-group__action","aria-label":r?"Hide password":"Show password","aria-pressed":r,onClick:()=>t(s=>!s),children:r?"Hide":"Show"})})}function et({id:e,name:r,disabled:t,required:s,className:a,label:o,helpText:i,error:c,accept:l,multiple:d,onChange:u}){const p=m.useId(),f=e??p;return n.jsx(U,{id:f,label:o,required:s,error:c,helpText:i,className:a,children:n.jsx("input",{id:f,name:r,type:"file",className:h("form-control","rrc-input",c&&"is-invalid"),disabled:t,required:s,accept:l,multiple:d,onChange:b=>u==null?void 0:u(b.target.files)})})}function ar({id:e,name:r,disabled:t,required:s,wrapperClassName:a,role:o,label:i,helpText:c,error:l,checked:d,onChange:u,className:p}){const f=m.useId(),b=e??f;return n.jsxs("div",{className:h(a,p),children:[n.jsx("input",{id:b,name:r,type:"checkbox",role:o,className:h("form-check-input","rrc-check",l&&"is-invalid"),disabled:t,required:s,checked:d,onChange:j=>u(j.target.checked)}),i&&n.jsx("label",{htmlFor:b,className:"form-check-label rrc-check__label",children:i}),n.jsx(_e,{error:l,helpText:c})]})}function rt(e){const[r,t]=A({value:e.checked,defaultValue:e.defaultChecked??!1,onChange:e.onChange});return n.jsx(ar,{id:e.id,name:e.name,disabled:e.disabled,required:e.required,className:e.className,wrapperClassName:"form-check mb-3",label:e.label,helpText:e.helpText,error:e.error,checked:r,onChange:t})}function tt(e){const[r,t]=A({value:e.checked,defaultValue:e.defaultChecked??!1,onChange:e.onChange});return n.jsx(ar,{id:e.id,name:e.name,disabled:e.disabled,required:e.required,className:e.className,wrapperClassName:"form-check form-switch mb-3",role:"switch",label:e.label,helpText:e.helpText,error:e.error,checked:r,onChange:t})}function or({id:e,name:r,value:t,label:s,checked:a,disabled:o,className:i,onChange:c}){const l=m.useId(),d=e??l;return n.jsxs("div",{className:h("form-check","rrc-check-row",i),children:[n.jsx("input",{id:d,name:r,type:"radio",className:"form-check-input rrc-check",value:String(t),checked:a,disabled:o,onChange:()=>c==null?void 0:c(t)}),s&&n.jsx("label",{htmlFor:d,className:"form-check-label rrc-check__label",children:s})]})}function nt({options:e,value:r,defaultValue:t,onChange:s,inline:a,id:o,name:i,disabled:c,required:l,className:d,label:u,helpText:p,error:f}){const[b,j]=A({value:r,defaultValue:t??null,onChange:k=>{k!==null&&(s==null||s(k))}}),w=m.useId(),S=i??o??w;return n.jsx(U,{label:u,required:l,error:f,helpText:p,className:d,children:n.jsx("div",{role:"radiogroup","aria-label":u,"aria-required":l,className:h("rrc-radio-group",a&&"d-flex gap-3 rrc-radio-group--inline"),children:e.map(k=>n.jsx(or,{name:S,value:k.value,label:k.label,checked:k.value===b,disabled:c||k.disabled,onChange:_=>j(_)},String(k.value)))})})}function ir({options:e,value:r,defaultValue:t,onChange:s,placeholder:a,loading:o,id:i,name:c,disabled:l,readOnly:d,required:u,className:p,label:f,helpText:b,error:j}){const[w,S]=A({value:r,defaultValue:t??null,onChange:s}),k=m.useId(),_=i??k;return n.jsx(U,{id:_,label:f,required:u,error:j,helpText:b,className:p,children:n.jsxs("select",{id:_,name:c,className:h("form-select","rrc-select",j&&"is-invalid"),disabled:l||d||o,required:u,value:w===null?"":String(w),onChange:x=>{const y=x.target.value;if(y===""){S(null);return}const v=e.find(N=>String(N.value)===y);S(v?v.value:null)},children:[o&&n.jsx("option",{value:"",children:"Loading…"}),!o&&a&&n.jsx("option",{value:"",children:a}),e.map(x=>n.jsx("option",{value:String(x.value),disabled:x.disabled,children:x.label},String(x.value)))]})})}function be(e,r){m.useEffect(()=>{if(!e)return;function t(s){s.key==="Escape"&&r()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,r])}function Z({open:e,onClose:r,anchorRef:t,className:s,role:a,children:o}){const i=m.useRef(null);return be(e,r),m.useEffect(()=>{if(!e)return;function c(l){var u,p;const d=l.target;(u=i.current)!=null&&u.contains(d)||(p=t.current)!=null&&p.contains(d)||r()}return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[e,r,t]),e?n.jsx("div",{ref:i,className:h("show","rrc-popup",s),role:a,children:o}):null}function ve({itemCount:e,isOpen:r,onSelect:t,onClose:s}){const[a,o]=m.useState(-1);m.useEffect(()=>{r||o(-1)},[r]),be(r,s);const i=m.useCallback(c=>{if(!r){(c.key==="ArrowDown"||c.key==="Enter")&&c.preventDefault();return}switch(c.key){case"ArrowDown":c.preventDefault(),o(l=>e===0?-1:(l+1)%e);break;case"ArrowUp":c.preventDefault(),o(l=>e===0?-1:(l-1+e)%e);break;case"Home":c.preventDefault(),o(e===0?-1:0);break;case"End":c.preventDefault(),o(e===0?-1:e-1);break;case"Enter":a>=0&&(c.preventDefault(),t(a));break}},[r,e,a,t]);return{activeIndex:a,setActiveIndex:o,handleKeyDown:i}}function lr({options:e,values:r,defaultValues:t,onChange:s,loading:a,emptyText:o="No options",id:i,name:c,disabled:l,readOnly:d,required:u,className:p,label:f,placeholder:b="Select...",helpText:j,error:w}){const[S,k]=A({value:r,defaultValue:t??[],onChange:s}),[_,x]=m.useState(!1),y=m.useRef(null),v=m.useId(),N=i??v,g=new Set(S),C=m.useCallback(()=>x(!1),[]),R=m.useCallback(E=>{const $=e[E];if(!$||$.disabled)return;const T=g.has($.value)?S.filter(G=>G!==$.value):[...S,$.value];k(T)},[e,S,g,k]),{activeIndex:V,setActiveIndex:B,handleKeyDown:H}=ve({itemCount:e.length,isOpen:_,onSelect:R,onClose:C}),D=e.filter(E=>g.has(E.value)).map(E=>E.label).join(", ");return n.jsx(U,{id:N,label:f,required:u,error:w,helpText:j,className:p,children:n.jsxs("div",{className:"position-relative",children:[n.jsx("button",{ref:y,id:N,type:"button",name:c,className:h("form-select text-start","rrc-select","rrc-select__trigger",w&&"is-invalid"),disabled:l||d,"aria-haspopup":"listbox","aria-expanded":_,onClick:()=>x(E=>!E),onKeyDown:H,children:D||n.jsx("span",{className:"text-body-secondary",children:b})}),n.jsx(Z,{open:_,onClose:C,anchorRef:y,className:"dropdown-menu w-100 rrc-menu rrc-select__menu",role:"listbox",children:a?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):e.length===0?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:o}):e.map((E,$)=>n.jsxs("div",{role:"option","aria-selected":g.has(E.value),className:h("dropdown-item d-flex align-items-center gap-2",$===V&&"active",E.disabled&&"disabled"),onMouseEnter:()=>B($),onMouseDown:T=>{T.preventDefault(),E.disabled||R($)},children:[n.jsx("input",{type:"checkbox",className:"form-check-input m-0",checked:g.has(E.value),readOnly:!0,tabIndex:-1}),E.label]},String(E.value)))})]})})}function Y(e){if(!e)return"";const r=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${r}-${t}-${s}`}function Ce(e){if(!e)return null;const r=e.split("-").map(Number),[t,s,a]=r;return!t||!s||!a?null:new Date(t,s-1,a)}function cr({value:e,defaultValue:r,onChange:t,min:s,max:a,...o}){const[i,c]=A({value:e,defaultValue:r??null,onChange:t});return n.jsx(re,{...o,value:Y(i),onChange:l=>c(Ce(l)),inputProps:{type:"date",min:s?Y(s):void 0,max:a?Y(a):void 0}})}function Ie(e){if(!e)return"";const r=String(e.getHours()).padStart(2,"0"),t=String(e.getMinutes()).padStart(2,"0");return`${r}:${t}`}function Ee(e){if(!e)return null;const[r,t]=e.split(":").map(Number);return r===void 0||t===void 0||Number.isNaN(r)||Number.isNaN(t)?null:new Date(1970,0,1,r,t,0,0)}function st({value:e,defaultValue:r,onChange:t,step:s,...a}){const[o,i]=A({value:e,defaultValue:r??null,onChange:t});return n.jsx(re,{...a,value:Ie(o),onChange:c=>i(Ee(c)),inputProps:{type:"time",step:s}})}function Ze(e,r){const t=Ce(e);if(!t)return null;const s=Ee(r||"00:00");return s&&t.setHours(s.getHours(),s.getMinutes(),0,0),t}function at({value:e,defaultValue:r,onChange:t,min:s,max:a,id:o,name:i,disabled:c,readOnly:l,required:d,className:u,label:p,helpText:f,error:b}){const[j,w]=A({value:e,defaultValue:r??null,onChange:t}),S=m.useId(),k=o??S,_=Y(j),x=Ie(j);return n.jsx(U,{id:k,label:p,required:d,error:b,helpText:f,className:u,children:n.jsxs("div",{className:"d-flex gap-2",children:[n.jsx("input",{id:k,name:i?`${i}-date`:void 0,type:"date",className:h("form-control","rrc-input",b&&"is-invalid"),disabled:c,readOnly:l,required:d,min:s?Y(s):void 0,max:a?Y(a):void 0,value:_,onChange:y=>w(Ze(y.target.value,x))}),n.jsx("input",{name:i?`${i}-time`:void 0,type:"time",className:h("form-control","rrc-input",b&&"is-invalid"),disabled:c,readOnly:l,required:d,value:x,onChange:y=>w(Ze(_||Y(new Date),y.target.value))})]})})}function dr({options:e,value:r,defaultValue:t,onChange:s,loading:a,emptyText:o="No options",id:i,name:c,disabled:l,readOnly:d,required:u,className:p,label:f,placeholder:b="Select...",helpText:j,error:w}){const[S,k]=A({value:r,defaultValue:t??null,onChange:s}),[_,x]=m.useState(!1),y=m.useRef(null),v=m.useId(),N=i??v,g=e.find(L=>L.value===S)??null,C=m.useCallback(()=>x(!1),[]),R=m.useCallback(L=>{const D=e[L];!D||D.disabled||(k(D.value),C())},[e,k,C]),{activeIndex:V,setActiveIndex:B,handleKeyDown:H}=ve({itemCount:e.length,isOpen:_,onSelect:R,onClose:C});return n.jsx(U,{id:N,label:f,required:u,error:w,helpText:j,className:p,children:n.jsxs("div",{className:"position-relative",children:[n.jsx("button",{ref:y,id:N,type:"button",name:c,className:h("form-select text-start","rrc-select","rrc-select__trigger",w&&"is-invalid"),disabled:l||d,"aria-haspopup":"listbox","aria-expanded":_,onClick:()=>x(L=>!L),onKeyDown:H,children:g?g.label:n.jsx("span",{className:"text-body-secondary",children:b})}),n.jsx(Z,{open:_,onClose:C,anchorRef:y,className:"dropdown-menu w-100 rrc-menu rrc-select__menu",role:"listbox",children:a?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):e.length===0?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:o}):e.map((L,D)=>n.jsx("div",{role:"option","aria-selected":L.value===S,className:h("dropdown-item","rrc-menu__item",D===V&&"active",L.disabled&&"disabled"),onMouseEnter:()=>B(D),onMouseDown:E=>{E.preventDefault(),L.disabled||R(D)},children:L.label},String(L.value)))})]})})}function ot(e,r){return r?e.label.toLowerCase().includes(r.toLowerCase()):!0}function ur({options:e,value:r,defaultValue:t,onChange:s,inputValue:a,onInputValueChange:o,loading:i,emptyText:c="No results",filter:l,id:d,name:u,disabled:p,readOnly:f,required:b,className:j,label:w,placeholder:S,helpText:k,error:_}){const[x,y]=A({value:r,defaultValue:t??null,onChange:s}),v=e.find(P=>P.value===x)??null,[N,g]=A({value:a,defaultValue:(v==null?void 0:v.label)??"",onChange:o}),[C,R]=m.useState(!1),V=m.useRef(null),B=m.useId(),H=d??B,L=l??ot,D=e.filter(P=>L(P,N)),E=m.useCallback(()=>R(!1),[]),$=m.useCallback(P=>{const F=D[P];!F||F.disabled||(y(F.value),g(F.label),E())},[D,y,g,E]),{activeIndex:T,setActiveIndex:G,handleKeyDown:q}=ve({itemCount:D.length,isOpen:C,onSelect:$,onClose:E});return n.jsx(U,{id:H,label:w,required:b,error:_,helpText:k,className:j,children:n.jsxs("div",{className:"position-relative",children:[n.jsx("input",{ref:V,id:H,name:u,type:"text",className:h("form-control","rrc-input",_&&"is-invalid"),disabled:p,readOnly:f,required:b,placeholder:S,autoComplete:"off",role:"combobox","aria-expanded":C,"aria-haspopup":"listbox",value:N,onFocus:()=>R(!0),onChange:P=>{const F=P.target.value;g(F),R(!0),x!==null&&y(null)},onKeyDown:q}),n.jsx(Z,{open:C,onClose:E,anchorRef:V,className:"dropdown-menu w-100 rrc-menu rrc-select__menu",role:"listbox",children:i?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:"Loading…"}):D.length===0?n.jsx("div",{className:"px-3 py-2 text-body-secondary",children:c}):D.map((P,F)=>n.jsx("div",{role:"option","aria-selected":P.value===x,className:h("dropdown-item","rrc-menu__item",F===T&&"active",P.disabled&&"disabled"),onMouseEnter:()=>G(F),onMouseDown:I=>{I.preventDefault(),P.disabled||$(F)},children:P.label},String(P.value)))})]})})}function it(e){return n.jsx(U,{...e})}function mr({open:e,onClose:r,title:t,children:s,footer:a,className:o}){return be(e,r),e?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"modal d-block rrc-modal",tabIndex:-1,role:"dialog","aria-modal":"true",children:n.jsx("div",{className:h("modal-dialog","rrc-modal__dialog",o),role:"document",children:n.jsxs("div",{className:"modal-content rrc-modal__content",children:[n.jsxs("div",{className:"modal-header rrc-modal__header",children:[t&&n.jsx("h5",{className:"modal-title",children:t}),n.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:r})]}),n.jsx("div",{className:"modal-body rrc-modal__body",children:s}),a&&n.jsx("div",{className:"modal-footer rrc-modal__footer",children:a})]})})}),n.jsx("div",{className:"modal-backdrop show rrc-modal__backdrop",onClick:r})]}):null}function lt(e,r,t){const s=[],a=Math.max(1,e-t),o=Math.min(r,e+t);a>1&&(s.push(1),a>2&&s.push("ellipsis"));for(let i=a;i<=o;i++)s.push(i);return o<r&&(o<r-1&&s.push("ellipsis"),s.push(r)),s}function fr({currentPage:e,pageSize:r,totalItems:t,onPageChange:s,siblingCount:a=1,className:o}){const i=Math.max(1,Math.ceil(t/r)),c=lt(e,i,a);return n.jsx("nav",{"aria-label":"Pagination",className:o,children:n.jsxs("ul",{className:"pagination mb-0 rrc-pagination",children:[n.jsx("li",{className:h("page-item",e<=1&&"disabled"),children:n.jsx("button",{type:"button",className:"page-link",disabled:e<=1,onClick:()=>s(e-1),children:"Previous"})}),c.map((l,d)=>l==="ellipsis"?n.jsx("li",{className:"page-item disabled",children:n.jsx("span",{className:"page-link",children:"…"})},`ellipsis-${d}`):n.jsx("li",{className:h("page-item",l===e&&"active"),children:n.jsx("button",{type:"button",className:"page-link","aria-current":l===e?"page":void 0,onClick:()=>s(l),children:l})},l)),n.jsx("li",{className:h("page-item",e>=i&&"disabled"),children:n.jsx("button",{type:"button",className:"page-link",disabled:e>=i,onClick:()=>s(e+1),children:"Next"})})]})})}const pr={text:e=>e==null?"":String(e),boolean:e=>e?"Yes":"No",date:e=>{if(e==null||e==="")return"";const r=e instanceof Date?e:new Date(String(e));return Number.isNaN(r.getTime())?String(e):r.toLocaleDateString()},currency:e=>{const r=Number(e);return Number.isFinite(r)?r.toLocaleString(void 0,{style:"currency",currency:"USD"}):String(e??"")}};function ct(e,r){return!e||e.key!==r?{key:r,direction:"asc"}:e.direction==="asc"?{key:r,direction:"desc"}:null}function Qe(e){return e.key??e.field??e.header}function dt(e,r){const t=e.field??e.key;return t?r[t]:void 0}function ut(e,r){if(e.render)return e.render(r);const t=dt(e,r);return e.formatter?e.formatter(t,r):e.format?pr[e.format](t):t==null?"":String(t)}function Xe(e){return e&&`text-${e}`}function hr({columns:e,rows:r,rowKey:t,loading:s,error:a,emptyText:o="No data",className:i,selectedRowKeys:c,onSelectionChange:l,sort:d,onSortChange:u,page:p,pageSize:f,totalCount:b,onPageChange:j}){const w=!!l,S=new Set(c??[]),k=p!==void 0&&f!==void 0&&b!==void 0,_=k?Math.max(1,Math.ceil(b/f)):1;function x(){l&&(S.size===r.length?l([]):l(r.map(t)))}function y(v){if(!l)return;const N=new Set(S);N.has(v)?N.delete(v):N.add(v),l(Array.from(N))}return n.jsxs("div",{className:h("table-responsive","rrc-data-grid",i),children:[n.jsxs("table",{className:"table table-hover align-middle rrc-data-grid__table",children:[n.jsx("thead",{children:n.jsxs("tr",{children:[w&&n.jsx("th",{style:{width:"2.5rem"},children:n.jsx("input",{type:"checkbox",className:"form-check-input",checked:r.length>0&&S.size===r.length,onChange:x,"aria-label":"Select all rows"})}),e.map(v=>{const N=Qe(v);return n.jsxs("th",{className:Xe(v.headerAlign??v.align),style:{width:v.width,minWidth:v.minWidth,maxWidth:v.maxWidth},role:v.sortable?"button":void 0,onClick:v.sortable&&u?()=>u(ct(d,N)):void 0,children:[v.header,v.sortable&&(d==null?void 0:d.key)===N&&n.jsxs("span",{"aria-hidden":"true",children:[" ",d.direction==="asc"?"▲":"▼"]})]},N)})]})}),n.jsx("tbody",{children:s?n.jsx("tr",{children:n.jsx("td",{colSpan:e.length+(w?1:0),className:"text-center text-body-secondary py-4",children:"Loading…"})}):a?n.jsx("tr",{children:n.jsx("td",{colSpan:e.length+(w?1:0),className:"text-center text-danger py-4",children:a})}):r.length===0?n.jsx("tr",{children:n.jsx("td",{colSpan:e.length+(w?1:0),className:"text-center text-body-secondary py-4",children:o})}):r.map(v=>{const N=t(v);return n.jsxs("tr",{children:[w&&n.jsx("td",{children:n.jsx("input",{type:"checkbox",className:"form-check-input",checked:S.has(N),onChange:()=>y(N),"aria-label":"Select row"})}),e.map(g=>n.jsx("td",{className:Xe(g.align),children:ut(g,v)},Qe(g)))]},N)})})]}),k&&n.jsxs("div",{className:"d-flex justify-content-between align-items-center mt-2 rrc-data-grid__footer",children:[n.jsxs("span",{className:"text-body-secondary small",children:["Page ",p," of ",_," (",b," rows)"]}),n.jsx(fr,{currentPage:p,pageSize:f,totalItems:b,onPageChange:j})]})]})}function br({size:e="md",variant:r,className:t,label:s="Loading..."}){return n.jsx("span",{className:h("spinner-border","rrc-spinner",e==="sm"&&"spinner-border-sm",r&&`text-${r}`,t),role:"status",children:n.jsx("span",{className:"visually-hidden",children:s})})}function le({variant:e="primary",size:r,disabled:t,loading:s,type:a="button",className:o,children:i,onClick:c,...l}){const d=t||s;return n.jsxs("button",{type:a,className:h("btn",`btn-${e}`,r&&`btn-${r}`,"rrc-btn",`rrc-btn--${e}`,o),disabled:d,"aria-busy":s||void 0,onClick:d?void 0:c,...l,children:[s&&n.jsx(br,{size:"sm",className:"me-2",label:""}),i]})}function Re({variant:e="info",dismissible:r,onDismiss:t,className:s,children:a}){return n.jsxs("div",{className:h("alert",`alert-${e}`,r&&"alert-dismissible","rrc-alert",`rrc-alert--${e}`,s),role:"alert",children:[a,r&&n.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:t})]})}const vr=m.createContext(null),mt=4e3;function ft({children:e}){const[r,t]=m.useState([]),s=m.useRef(0),a=m.useRef(new Map);m.useEffect(()=>{const l=a.current;return()=>{l.forEach(clearTimeout),l.clear()}},[]);const o=m.useCallback(l=>{const d=a.current.get(l);d&&(clearTimeout(d),a.current.delete(l)),t(u=>u.filter(p=>p.id!==l))},[]),i=m.useCallback((l,d)=>{const u=s.current++,p=(d==null?void 0:d.variant)??"info",f=(d==null?void 0:d.duration)??mt;return t(b=>[...b,{id:u,message:l,variant:p}]),f>0&&a.current.set(u,setTimeout(()=>o(u),f)),u},[o]),c=m.useMemo(()=>({show:i,dismiss:o,success:(l,d)=>i(l,{...d,variant:"success"}),error:(l,d)=>i(l,{...d,variant:"danger"}),info:(l,d)=>i(l,{...d,variant:"info"}),warning:(l,d)=>i(l,{...d,variant:"warning"})}),[i,o]);return n.jsxs(vr.Provider,{value:c,children:[e,n.jsx("div",{className:"toast-container position-fixed bottom-0 end-0 p-3 rrc-toast-container",style:{zIndex:1090},children:r.map(l=>n.jsx(Re,{variant:l.variant,dismissible:!0,onDismiss:()=>o(l.id),className:"shadow-sm",children:l.message},l.id))})]})}function pt(){const e=m.useContext(vr);if(!e)throw new Error("useToast must be used within a ToastProvider");return e}const xr=m.createContext(null);function ht({children:e}){const[r,t]=m.useState(null),s=m.useCallback(o=>new Promise(i=>{t({...o,resolve:i})}),[]),a=m.useCallback(o=>{r==null||r.resolve(o),t(null)},[r]);return n.jsxs(xr.Provider,{value:s,children:[e,n.jsx(mr,{open:r!==null,onClose:()=>a(!1),title:(r==null?void 0:r.title)??"Confirm",footer:n.jsxs(n.Fragment,{children:[n.jsx(le,{variant:"outline-secondary",onClick:()=>a(!1),children:(r==null?void 0:r.cancelLabel)??"Cancel"}),n.jsx(le,{variant:(r==null?void 0:r.confirmVariant)??"danger",onClick:()=>a(!0),children:(r==null?void 0:r.confirmLabel)??"Confirm"})]}),children:r==null?void 0:r.message})]})}function bt(){const e=m.useContext(xr);if(!e)throw new Error("useConfirm must be used within a ConfirmProvider");return e}function gr({variant:e="primary",appearance:r="solid",pill:t,className:s,children:a}){return n.jsx("span",{className:h("badge",r==="solid"&&`bg-${e}`,t&&"rounded-pill","rrc-badge",`rrc-badge--${e}`,`rrc-badge--${r}`,s),children:a})}const vt={sm:"0.875em",lg:"1.5em",xl:"2em"};function xe({name:e,size:r,className:t,label:s}){return n.jsx("i",{className:h(e,"rrc-icon",t),style:r?{fontSize:vt[r]}:void 0,role:s?"img":void 0,"aria-label":s,"aria-hidden":s?void 0:!0})}function xt(e){switch(e){case"pill":return"nav-pills";case"underline":return"nav-underline";case"card":return"nav-tabs card-header-tabs";default:return"nav-tabs"}}const gt={sm:"small",lg:"fs-5"};function yt({items:e,activeKey:r,defaultActiveKey:t,onChange:s,variant:a="default",orientation:o="horizontal",size:i,stretch:c,className:l}){var y;const[d,u]=A({value:r,defaultValue:t??((y=e[0])==null?void 0:y.key)??"",onChange:s}),p=e.find(v=>v.key===d),f=a==="button",b=o==="vertical",j=m.useRef([]);function w(v,N){var C;const g=e[v];g&&(u(g.key),N&&((C=j.current[v])==null||C.focus()))}function S(v,N){var C;if(e.length===0)return v;let g=v;for(let R=0;R<e.length;R++)if(g=(g+N+e.length)%e.length,!((C=e[g])!=null&&C.disabled))return g;return v}function k(v){var R;const N=e.findIndex(V=>V.key===d),g=b?"ArrowDown":"ArrowRight",C=b?"ArrowUp":"ArrowLeft";if(v.key===g)v.preventDefault(),w(S(N,1),!0);else if(v.key===C)v.preventDefault(),w(S(N,-1),!0);else if(v.key==="Home"){v.preventDefault();const V=e.findIndex(B=>!B.disabled);V>=0&&w(V,!0)}else if(v.key==="End"){v.preventDefault();for(let V=e.length-1;V>=0;V--)if(!((R=e[V])!=null&&R.disabled)){w(V,!0);break}}}const _=n.jsx("div",{className:h(f?"btn-group":"nav","rrc-tabs__list",`rrc-tabs__list--${a}`,!f&&xt(a),!f&&b&&"flex-column",!f&&c&&"nav-fill",!f&&i&&gt[i]),role:"tablist","aria-orientation":o,onKeyDown:k,children:e.map((v,N)=>{const g=v.key===d,C=n.jsxs(n.Fragment,{children:[v.icon&&n.jsx(xe,{name:v.icon,size:"sm",className:"me-1"}),v.label,v.badge!=null&&n.jsx(gr,{variant:g&&!f?"primary":"secondary",appearance:"light",pill:!0,className:"ms-2",children:v.badge})]}),R=n.jsx("button",{ref:V=>{j.current[N]=V},type:"button",id:`tab-${v.key}`,className:h(f?h("btn",i?`btn-${i}`:"btn-sm",g?"btn-primary":"btn-outline-primary"):h("nav-link","rrc-tabs__link",g&&"active")),role:"tab","aria-selected":g,"aria-controls":`tabpanel-${v.key}`,tabIndex:g?0:-1,disabled:v.disabled,onClick:()=>w(N,!1),children:C},v.key);return f?R:n.jsx("div",{className:"nav-item",role:"presentation",children:R},v.key)})}),x=(p==null?void 0:p.content)!=null&&n.jsx("div",{id:`tabpanel-${p.key}`,className:h("tab-content","rrc-tabs__panel",!b&&"pt-3"),role:"tabpanel","aria-labelledby":`tab-${p.key}`,children:p.content});return b?n.jsxs("div",{className:h("d-flex align-items-start gap-3","rrc-tabs","rrc-tabs--vertical",l),children:[_,x&&n.jsx("div",{className:"flex-grow-1",children:x})]}):n.jsxs("div",{className:h("rrc-tabs",l),children:[_,x]})}function jt({items:e,multiple:r=!1,openKeys:t,defaultOpenKeys:s,onChange:a,className:o}){const[i,c]=A({value:t,defaultValue:s??[],onChange:a}),l=new Set(i);function d(u){l.has(u)?c(i.filter(p=>p!==u)):c(r?[...i,u]:[u])}return n.jsx("div",{className:h("accordion","rrc-accordion",o),children:e.map(u=>{const p=l.has(u.key);return n.jsxs("div",{className:"accordion-item rrc-accordion__item",children:[n.jsx("h2",{className:"accordion-header",children:n.jsx("button",{type:"button",className:h("accordion-button","rrc-accordion__button",!p&&"collapsed"),"aria-expanded":p,disabled:u.disabled,onClick:()=>d(u.key),children:u.header})}),p&&n.jsx("div",{className:"accordion-collapse",children:n.jsx("div",{className:"accordion-body rrc-accordion__body",children:u.content})})]},u.key)})})}function Ae({content:e,children:r,placement:t="top",className:s,wrapperClassName:a}){const[o,i]=m.useState(!1),c=m.useRef(null),l=m.useId();return n.jsxs("span",{ref:c,className:h("position-relative",a??"d-inline-block"),onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onFocus:()=>i(!0),onBlur:()=>i(!1),"aria-describedby":o?l:void 0,children:[r,n.jsx(Z,{open:o,onClose:()=>i(!1),anchorRef:c,className:h("tooltip show",`bs-tooltip-${t}`,"position-absolute","w-auto","rrc-tooltip",s),children:n.jsx("span",{id:l,role:"tooltip",className:"tooltip-inner",children:e})})]})}function Nt({title:e,content:r,children:t,placement:s="bottom",className:a}){const[o,i]=m.useState(!1),c=m.useRef(null);return n.jsxs("span",{ref:c,className:"position-relative d-inline-block",onClick:()=>i(l=>!l),children:[t,n.jsxs(Z,{open:o,onClose:()=>i(!1),anchorRef:c,className:h("popover show",`bs-popover-${s}`,"position-absolute","w-auto","rrc-popover",a),children:[e&&n.jsx("h3",{className:"popover-header rrc-popover__header",children:e}),n.jsx("div",{className:"popover-body rrc-popover__body",children:r})]})]})}function ie({width:e="100%",height:r="1rem",circle:t,className:s}){return n.jsx("span",{className:h("placeholder-glow d-inline-block","rrc-skeleton",s),style:{width:e,height:r},"aria-hidden":"true",children:n.jsx("span",{className:h("placeholder w-100 h-100 d-block",t&&"rounded-circle")})})}function De({direction:e="column",gap:r=2,align:t,justify:s,wrap:a,className:o,children:i}){return n.jsx("div",{className:h("d-flex","rrc-stack",e==="row"?"flex-row":"flex-column",`gap-${r}`,t&&`align-items-${t}`,s&&`justify-content-${s}`,a&&"flex-wrap",o),children:i})}const kt={xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},St={normal:"fw-normal",medium:"fw-medium",semibold:"fw-semibold",bold:"fw-bold"},wt={default:void 0,muted:"text-body-secondary",primary:"text-primary",success:"text-success",danger:"text-danger",warning:"text-warning",info:"text-info"};function J({as:e,size:r="md",weight:t,tone:s="default",align:a,truncate:o,wrap:i=!0,className:c,children:l}){const d=e??"span";return n.jsx(d,{className:h("rrc-text",t&&St[t],wt[s],a&&`text-${a}`,o&&"text-truncate",!i&&!o&&"text-nowrap",c),style:{fontSize:kt[r]},children:l})}function _t({title:e,subtitle:r,icon:t,avatar:s,actions:a}){return n.jsxs("div",{className:"d-flex align-items-center justify-content-between gap-3 rrc-card__header-row",children:[n.jsxs("div",{className:"d-flex align-items-center gap-3",style:{minWidth:0},children:[s||t&&n.jsx("span",{className:"fs-2 lh-1",children:t}),(e||r)&&n.jsxs("div",{style:{minWidth:0},children:[e&&n.jsx(J,{as:"div",size:"lg",weight:"semibold",truncate:!0,children:e}),r&&n.jsx(J,{as:"div",size:"sm",tone:"muted",truncate:!0,children:r})]})]}),a&&n.jsx("div",{className:"d-flex align-items-center gap-2 flex-shrink-0",children:a})]})}function Ct({title:e,subtitle:r,icon:t,avatar:s,actions:a,header:o,footer:i,loading:c,className:l,children:d}){const p=o??(!!(e||r||t||s||a)?n.jsx(_t,{title:e,subtitle:r,icon:t,avatar:s,actions:a}):void 0);return n.jsxs("div",{className:h("card","rrc-card",l),children:[p&&n.jsx("div",{className:"card-header rrc-card__header",children:p}),n.jsx("div",{className:"card-body rrc-card__body",children:c?n.jsxs(De,{gap:2,children:[n.jsx(ie,{height:"1rem",width:"60%"}),n.jsx(ie,{height:"1rem"}),n.jsx(ie,{height:"1rem",width:"80%"})]}):d}),i&&n.jsx("div",{className:"card-footer rrc-card__footer",children:i})]})}function yr({className:e,vertical:r,label:t}){return r?n.jsx("div",{className:h("vr","rrc-divider",e),role:"separator","aria-orientation":"vertical"}):t?n.jsxs("div",{className:h("d-flex align-items-center gap-2 my-3","rrc-divider","rrc-divider--labelled",e),role:"separator",children:[n.jsx("hr",{className:"flex-grow-1 m-0"}),n.jsx("span",{className:"text-body-secondary small",children:t}),n.jsx("hr",{className:"flex-grow-1 m-0"})]}):n.jsx("hr",{className:h("my-3","rrc-divider",e),role:"separator"})}function It({fluid:e,className:r,children:t}){return n.jsx("div",{className:h(e?"container-fluid":"container","rrc-container",r),children:t})}function Et({className:e,children:r}){return n.jsx("div",{className:h("row","rrc-row",e),children:r})}function Rt({span:e,sm:r,md:t,lg:s,xl:a,className:o,children:i}){return n.jsx("div",{className:h(e?`col-${e}`:"col","rrc-col",r?`col-sm-${r}`:void 0,t?`col-md-${t}`:void 0,s?`col-lg-${s}`:void 0,a?`col-xl-${a}`:void 0,o),children:i})}function jr({items:e,className:r}){return n.jsx("nav",{"aria-label":"breadcrumb",className:h("rrc-breadcrumb",r),children:n.jsx("ol",{className:"breadcrumb mb-0 rrc-breadcrumb__list",children:e.map((t,s)=>{const a=s===e.length-1,o=!a&&(t.href||t.onClick);return n.jsx("li",{className:h("breadcrumb-item",a&&"active"),"aria-current":a?"page":void 0,children:o?n.jsx("a",{href:t.href??"#",onClick:i=>{var c;t.href||i.preventDefault(),(c=t.onClick)==null||c.call(t)},children:t.label}):t.label},s)})})})}function At({items:e,children:r,placement:t="start",className:s}){const[a,o]=m.useState(!1),i=m.useRef(null),c=m.useCallback(()=>o(!1),[]),l=m.useCallback(f=>{var j;const b=e[f];!b||b.disabled||((j=b.onSelect)==null||j.call(b),c())},[e,c]),{activeIndex:d,setActiveIndex:u,handleKeyDown:p}=ve({itemCount:e.length,isOpen:a,onSelect:l,onClose:c});return n.jsxs("span",{ref:i,className:"position-relative d-inline-block",onClick:()=>o(f=>!f),onKeyDown:p,children:[r,n.jsx(Z,{open:a,onClose:c,anchorRef:i,role:"menu",className:h("dropdown-menu show",t==="end"&&"dropdown-menu-end","rrc-menu",s),children:e.map((f,b)=>n.jsx("button",{type:"button",role:"menuitem",className:h("dropdown-item","rrc-menu__item",b===d&&"active",f.disabled&&"disabled",f.danger&&"text-danger"),disabled:f.disabled,onMouseEnter:()=>u(b),onMouseDown:j=>j.preventDefault(),onClick:j=>{j.stopPropagation(),l(b)},children:f.label},f.key))})]})}function Dt({steps:e,currentStep:r,className:t}){return n.jsx("ol",{className:h("d-flex list-unstyled align-items-center","rrc-stepper",t),children:e.map((s,a)=>{const o=a<r?"complete":a===r?"active":"upcoming",i=a===e.length-1;return n.jsxs("li",{className:h("d-flex align-items-center",!i&&"flex-grow-1"),children:[n.jsxs("div",{className:"d-flex align-items-center gap-2",children:[n.jsx("span",{className:h("d-flex align-items-center justify-content-center rounded-circle flex-shrink-0",o==="complete"?"bg-primary text-white":o==="active"?"border border-primary text-primary":"border text-body-secondary"),style:{width:"2rem",height:"2rem"},"aria-current":o==="active"?"step":void 0,children:o==="complete"?"✓":a+1}),n.jsxs("div",{children:[n.jsx("div",{className:h("small fw-semibold",o==="upcoming"&&"text-body-secondary"),children:s.label}),s.description&&n.jsx("div",{className:"small text-body-secondary",children:s.description})]})]}),!i&&n.jsx("hr",{className:"flex-grow-1 mx-2"})]},s.key)})})}function Tt(e){var a,o;const r=e.trim().split(/\s+/),t=((a=r[0])==null?void 0:a[0])??"",s=r.length>1?((o=r[r.length-1])==null?void 0:o[0])??"":"";return(t+s).toUpperCase()}const Mt={sm:"1.75rem",md:"2.5rem",lg:"3.5rem"};function Vt({src:e,name:r,size:t="md",className:s}){const a=Mt[t];return e?n.jsx("img",{src:e,alt:r??"",className:h("rounded-circle","rrc-avatar",s),style:{width:a,height:a,objectFit:"cover"}}):n.jsx("span",{className:h("d-inline-flex align-items-center justify-content-center rounded-circle bg-secondary text-white","rrc-avatar","rrc-avatar--initials",s),style:{width:a,height:a,fontSize:`calc(${a} * 0.4)`},role:r?"img":void 0,"aria-label":r,children:r?Tt(r):null})}function Lt({variant:e="secondary",appearance:r="solid",onRemove:t,className:s,children:a}){return n.jsxs("span",{className:h("badge d-inline-flex align-items-center gap-1",r==="solid"&&`bg-${e}`,"rrc-tag",`rrc-tag--${e}`,`rrc-tag--${r}`,s),children:[a,t&&n.jsx("button",{type:"button",className:"btn-close btn-close-white",style:{fontSize:"0.55rem"},"aria-label":"Remove",onClick:t})]})}function Pt({value:e,defaultValue:r,onChange:t,min:s=0,max:a=100,step:o=1,id:i,name:c,disabled:l,required:d,className:u,label:p,helpText:f,error:b}){const[j,w]=A({value:e,defaultValue:r??s,onChange:t}),S=m.useId(),k=i??S;return n.jsxs(U,{id:k,label:p,required:d,error:b,helpText:f,className:u,children:[n.jsx("input",{id:k,name:c,type:"range",className:"form-range rrc-range",disabled:l,required:d,min:s,max:a,step:o,value:j,onChange:_=>w(Number(_.target.value))}),n.jsx("div",{className:"small text-body-secondary",children:j})]})}function Ot({value:e,defaultValue:r,onChange:t,max:s=5,disabled:a,className:o}){const[i,c]=A({value:e,defaultValue:r??0,onChange:t});return n.jsx("div",{className:h("d-inline-flex gap-1","rrc-rating",o),role:"radiogroup","aria-label":"Rating",children:Array.from({length:s},(l,d)=>d+1).map(l=>n.jsx("button",{type:"button",className:"btn btn-link p-0 border-0 rrc-rating__star",disabled:a,role:"radio","aria-checked":l===i,"aria-label":`${l} star${l>1?"s":""}`,onClick:()=>c(l),children:n.jsx("span",{"aria-hidden":"true",style:{fontSize:"1.25rem",color:l<=i?"#f5b301":"#ced4da"},children:"★"})},l))})}function $t({value:e,variant:r="primary",label:t,className:s}){const a=Math.max(0,Math.min(100,e));return n.jsx("div",{className:h("progress","rrc-progress",s),role:"progressbar","aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,children:n.jsx("div",{className:h("progress-bar","rrc-progress__bar",`bg-${r}`),style:{width:`${a}%`},children:t?`${Math.round(a)}%`:null})})}function Ft({brand:e,start:r,end:t,variant:s="light",className:a}){return n.jsx("nav",{className:h("navbar navbar-expand-lg border-bottom","rrc-navbar",s==="dark"?"navbar-dark bg-dark":"navbar-light bg-light",a),children:n.jsxs("div",{className:"container-fluid",children:[e&&n.jsx("span",{className:"navbar-brand mb-0",children:e}),r&&n.jsx("div",{className:"d-flex align-items-center gap-3",children:r}),t&&n.jsx("div",{className:"d-flex align-items-center gap-3 ms-auto",children:t})]})})}const Te=["primary","primaryActive","primaryLight","primaryInverse","primaryRgb","componentActiveColor","componentActiveBg","componentHoverColor","componentHoverBg","componentCheckedColor","componentCheckedBg","menuLinkColorHover","menuLinkColorShow","menuLinkColorHere","menuLinkColorActive"];function Nr(e){if(typeof e!="object"||e===null)return!1;const r=e;if(typeof r.id!="string"||r.id.length===0||typeof r.tokens!="object"||r.tokens===null)return!1;const t=r.tokens;return Te.every(s=>typeof t[s]=="string"&&t[s].length>0)}function oe(e){const{id:r,primary:t,primaryActive:s,primaryLight:a,primaryInverse:o,primaryRgb:i,swatch:c}=e;return{id:r,...c!==void 0?{swatch:c}:{},tokens:{primary:t,primaryActive:s,primaryLight:a,primaryInverse:o,primaryRgb:i,componentActiveColor:o,componentActiveBg:t,componentHoverColor:s,componentHoverBg:a,componentCheckedColor:o,componentCheckedBg:t,menuLinkColorHover:s,menuLinkColorShow:s,menuLinkColorHere:s,menuLinkColorActive:t}}}const Bt=[oe({id:"blue",primary:"#0d6efd",primaryActive:"#0a58ca",primaryLight:"#cfe2ff",primaryInverse:"#ffffff",primaryRgb:"13, 110, 253"}),oe({id:"indigo",primary:"#6610f2",primaryActive:"#520dc2",primaryLight:"#e0cffc",primaryInverse:"#ffffff",primaryRgb:"102, 16, 242"}),oe({id:"teal",primary:"#13795b",primaryActive:"#0d503c",primaryLight:"#d2f4ea",primaryInverse:"#ffffff",primaryRgb:"19, 121, 91",swatch:"#20c997"}),oe({id:"green",primary:"#198754",primaryActive:"#146c43",primaryLight:"#d1e7dd",primaryInverse:"#ffffff",primaryRgb:"25, 135, 84"})],ge="blue",ce=new Map(Bt.map(e=>[e.id,e]));function Kt(e){if(!Nr(e))throw new Error("[react-components] registerColorScheme() requires a complete token family: "+Te.join(", ")+".");ce.set(e.id,e)}function kr(e){return ce.get(e)}function Sr(){return[...ce.values()]}function wr(e){const r=e!==void 0?ce.get(e):void 0;return r||ce.get(ge)}function _r(e){const r=e.tokens;return{"--bs-primary":r.primary,"--bs-primary-rgb":r.primaryRgb,"--bs-primary-active":r.primaryActive,"--bs-primary-light":r.primaryLight,"--bs-primary-inverse":r.primaryInverse,"--bs-component-active-color":r.componentActiveColor,"--bs-component-active-bg":r.componentActiveBg,"--bs-component-hover-color":r.componentHoverColor,"--bs-component-hover-bg":r.componentHoverBg,"--bs-component-checked-color":r.componentCheckedColor,"--bs-component-checked-bg":r.componentCheckedBg,"--bs-menu-link-color-hover":r.menuLinkColorHover,"--bs-menu-link-color-show":r.menuLinkColorShow,"--bs-menu-link-color-here":r.menuLinkColorHere,"--bs-menu-link-color-active":r.menuLinkColorActive,"--rrc-primary":r.primary,"--rrc-primary-rgb":r.primaryRgb,"--rrc-primary-active":r.primaryActive,"--rrc-primary-inverse":r.primaryInverse,"--rrc-component-active-color":r.componentActiveColor,"--rrc-component-active-bg":r.componentActiveBg,"--rrc-component-hover-bg":r.componentHoverBg,"--rrc-component-checked-color":r.componentCheckedColor,"--rrc-component-checked-bg":r.componentCheckedBg}}const Me=["light","dark","system"],Ve=["compact","grouped"],Le=["light","dark","auto"],Pe=m.createContext(void 0);function Ht(e){return typeof e=="string"&&Me.includes(e)}function Gt(e){return typeof e=="string"&&Ve.includes(e)}function Ut(e){return typeof e=="string"&&Le.includes(e)}function qt(e,r){let t;try{t=e.getItem(r)}catch{return{}}if(!t)return{};let s;try{s=JSON.parse(t)}catch{return{}}if(typeof s!="object"||s===null)return{};const a=s,o={};return Ht(a.mode)&&(o.mode=a.mode),Gt(a.sidebarPresentation)&&(o.sidebarPresentation=a.sidebarPresentation),Ut(a.sidebarTone)&&(o.sidebarTone=a.sidebarTone),typeof a.colorSchemeId=="string"&&kr(a.colorSchemeId)&&(o.colorSchemeId=a.colorSchemeId),o}function zt({children:e,mode:r,defaultMode:t,onModeChange:s,sidebarPresentation:a,defaultSidebarPresentation:o,onSidebarPresentationChange:i,sidebarTone:c,defaultSidebarTone:l,onSidebarToneChange:d,colorSchemeId:u,defaultColorSchemeId:p,onColorSchemeIdChange:f,storage:b,storageKey:j,applyTo:w="none",themeAttribute:S="data-bs-theme"}){const[k,_]=A({value:r,defaultValue:t??"system",onChange:s}),[x,y]=A({value:a,defaultValue:o??"grouped",onChange:i}),[v,N]=A({value:c,defaultValue:l??"auto",onChange:d}),[g,C]=A({value:u,defaultValue:p??ge,onChange:f}),[R,V]=m.useState("light");m.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const I=window.matchMedia("(prefers-color-scheme: dark)");V(I.matches?"dark":"light");const O=K=>V(K.matches?"dark":"light");if(typeof I.addEventListener=="function")return I.addEventListener("change",O),()=>I.removeEventListener("change",O);if(typeof I.addListener=="function")return I.addListener(O),()=>I.removeListener(O)},[]);const B=b!==void 0&&j!==void 0,[H,L]=m.useState(!1),D={mode:r!==void 0,sidebarPresentation:a!==void 0,sidebarTone:c!==void 0,colorSchemeId:u!==void 0},E=m.useRef(D);E.current=D;const $=m.useRef({setMode:_,setSidebarPresentation:y,setSidebarTone:N,setColorSchemeId:C});$.current={setMode:_,setSidebarPresentation:y,setSidebarTone:N,setColorSchemeId:C},m.useEffect(()=>{if(!B)return;const I=qt(b,j),O=E.current,K=$.current;I.mode!==void 0&&!O.mode&&K.setMode(I.mode),I.sidebarPresentation!==void 0&&!O.sidebarPresentation&&K.setSidebarPresentation(I.sidebarPresentation),I.sidebarTone!==void 0&&!O.sidebarTone&&K.setSidebarTone(I.sidebarTone),I.colorSchemeId!==void 0&&!O.colorSchemeId&&K.setColorSchemeId(I.colorSchemeId),L(!0)},[B,b,j]),m.useEffect(()=>{if(!(!B||!H))try{b.setItem(j,JSON.stringify({mode:k,sidebarPresentation:x,sidebarTone:v,colorSchemeId:g}))}catch{}},[B,H,b,j,k,x,v,g]);const T=k==="system"?R:k,G=wr(g),q=m.useMemo(()=>_r(G),[G]);m.useEffect(()=>{if(w==="none"||typeof document>"u")return;const I=w==="body"?document.body:document.documentElement;if(!I)return;const O=I.getAttribute(S);I.setAttribute(S,T);for(const[K,X]of Object.entries(q))I.style.setProperty(K,X);return()=>{O===null?I.removeAttribute(S):I.setAttribute(S,O);for(const K of Object.keys(q))I.style.removeProperty(K)}},[w,S,T,q]);const P=m.useMemo(()=>({"data-bs-theme":T,style:q}),[T,q]),F=m.useMemo(()=>({mode:k,sidebarPresentation:x,sidebarTone:v,colorSchemeId:g,resolvedTheme:T,systemTheme:R,colorScheme:G,setMode:_,setSidebarPresentation:y,setSidebarTone:N,setColorSchemeId:C,appearanceProps:P}),[k,x,v,g,T,R,G,_,y,N,C,P]);return n.jsx(Pe.Provider,{value:F,children:e})}function Wt(){const e=m.useContext(Pe);if(!e)throw new Error("[react-components] useAppearance() must be used inside an <AppearanceProvider>.");return e}function Cr(){return m.useContext(Pe)}function Jt({storageKey:e,themeAttribute:r="data-bs-theme",target:t="documentElement",defaultMode:s="system"}){const a=d=>JSON.stringify(d).replace(/</g,"\\u003C"),o=a(e),i=a(r),c=a(s),l=t==="body"?"document.body":"document.documentElement";return"(function(){try{var raw=window.localStorage.getItem("+o+");var mode="+c+";if(raw){var parsed=JSON.parse(raw);if(parsed&&typeof parsed.mode==='string'){mode=parsed.mode;}}var dark=mode==='dark'||(mode==='system'&&window.matchMedia('(prefers-color-scheme: dark)').matches);"+l+".setAttribute("+i+",dark?'dark':'light');}catch(e){}})();"}function Ir(e){return e.type==="collapsible"||e.type==="group"}function Oe(e){return e.type==="collapsible"||e.type==="group"&&e.collapsible===!0}function $e(e){return"items"in e}function Er(e){return e.map(r=>$e(r)?Yt(r):Rr(r))}function Yt(e){return{type:"group",key:e.key,label:e.label,collapsible:!0,children:e.items.map(Rr)}}function Rr(e){const r={key:e.key,label:e.label,...e.icon!==void 0?{icon:e.icon}:{},...e.disabled!==void 0?{disabled:e.disabled}:{}},t=e.onClick?()=>{var s;return(s=e.onClick)==null?void 0:s.call(e)}:void 0;return e.href!==void 0?{...r,type:"link",href:e.href,...t?{onSelect:t}:{}}:{...r,type:"action",...t?{onSelect:t}:{}}}function Ar(e){return e.filter($e).filter(r=>r.defaultOpen).map(r=>r.key)}function Dr(e){for(const r of e)if($e(r)){const t=r.items.find(s=>s.active);if(t)return t.key}else if(r.active)return r.key}function Zt(e){const r=new Map,t=[],s=[];function a(i,c,l){const d=[];for(const u of i){const p={item:u,key:u.key,depth:c,ancestors:l,children:[]};r.has(u.key)?s.push(u.key):(r.set(u.key,p),t.push(u.key)),Ir(u)&&(p.children=a(u.children,c+1,[...l,u.key])),d.push(p)}return d}return{roots:a(e,0,[]),byKey:r,order:t,duplicateKeys:s}}function ee(e,r){const t=new Set(r),s=e.filter(o=>t.has(o)),a=new Set(s);for(const o of t)a.has(o)||s.push(o);return s}function Qt(e,r,t,s){const a=e.byKey.get(t),o=new Set(r);if(o.has(t)){if(o.delete(t),a)for(const i of Tr(a))o.delete(i);return ee(e.order,o)}if(s==="single"){const i=new Set(a?a.ancestors:[]);return i.add(t),ee(e.order,i)}if(o.add(t),a)for(const i of a.ancestors)o.add(i);return ee(e.order,o)}function er(e,r,t,s){if(t.length===0)return ee(e.order,new Set(r));if(s==="single")return ee(e.order,new Set(t));const a=new Set(r);for(const o of t)a.add(o);return ee(e.order,a)}function Xt(e,r){return e.length===r.length&&e.every((t,s)=>t===r[s])}function Tr(e){const r=[];for(const t of e.children)r.push(t.key),r.push(...Tr(t));return r}function Mr(e,r){var t;return r===void 0?[]:((t=e.byKey.get(r))==null?void 0:t.ancestors)??[]}function rr(e,r){return Mr(e,r).filter(t=>{const s=e.byKey.get(t);return s!==void 0&&Oe(s.item)})}const en=typeof document<"u"?m.useLayoutEffect:m.useEffect,rn=Symbol("unresolved-active-key");function tn(e){if(e.type!=="divider")return e.ariaLabel!==void 0?e.ariaLabel:typeof e.label=="string"?e.label:void 0}function nn(e,r){return`${e}-${r.replace(/[^A-Za-z0-9_-]/g,"_")}`}function ke({node:e,expandable:r}){const t=e.item;return t.type==="divider"?null:n.jsxs(n.Fragment,{children:[t.icon!==void 0&&n.jsx("span",{className:"rrc-sidebar__icon","aria-hidden":"true",children:t.icon}),n.jsx("span",{className:"rrc-sidebar__label",children:t.label}),t.badge!==void 0&&n.jsx("span",{className:"rrc-sidebar__badge",children:t.badge}),r&&n.jsx("span",{className:"rrc-sidebar__arrow","aria-hidden":"true"})]})}function Se({name:e,children:r}){return e===void 0?n.jsx(n.Fragment,{children:r}):n.jsx(Ae,{content:e,placement:"bottom",wrapperClassName:"rrc-sidebar__tooltip",children:r})}function sn(e){if(!e)return;const r=e.getBoundingClientRect(),t=(e.closest(".rrc-sidebar")??e).getBoundingClientRect(),s=getComputedStyle(e).direction==="rtl",a=document.documentElement.clientWidth;e.style.setProperty("--rrc-rail-tip-block-start",`${Math.round(r.top+r.height/2)}px`),e.style.setProperty("--rrc-rail-tip-inline-start",`${Math.round(s?a-t.left:t.right)}px`)}function we(e){if(!e)return{};const r=t=>sn(t.currentTarget);return{onPointerEnter:r,onFocusCapture:r}}function he({node:e,ctx:r}){const t=e.item,s=m.useRef(null),[a,o]=m.useState(!1),i=m.useCallback(()=>o(!1),[]);if(en(()=>{const x=s.current;if(!a||!x)return;const y=()=>{const v=x.getBoundingClientRect(),N=(x.closest(".rrc-sidebar")??x).getBoundingClientRect(),g=getComputedStyle(x).direction==="rtl",C=document.documentElement.clientWidth;x.style.setProperty("--rrc-flyout-block-start",`${Math.round(v.top)}px`),x.style.setProperty("--rrc-flyout-inline-start",`${Math.round(g?C-N.left:N.right)}px`)};return y(),window.addEventListener("scroll",y,!0),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y)}},[a]),t.type==="divider")return n.jsx("li",{role:"none",className:h("rrc-sidebar__divider",t.className),children:n.jsx(yr,{className:"my-1"})});const c={"--rrc-sidebar-depth":String(Math.max(0,e.depth-r.depthOffset))},l=tn(t),d=r.activeKey===t.key,u=r.activeAncestors.has(t.key),p=Oe(t),f=p&&r.expanded.has(t.key),b=nn(r.idPrefix,t.key),j=h("rrc-sidebar__row",d&&"rrc-sidebar__row--active",u&&"rrc-sidebar__row--active-ancestor",t.disabled&&"rrc-sidebar__row--disabled",t.className);if(t.type==="link"){const x=N=>{if(t.disabled){N.preventDefault();return}r.select(t,N)},y={item:t,href:t.href,className:h(j,"rrc-sidebar__row--link"),style:c,children:n.jsx(ke,{node:e,expandable:!1}),onClick:x,"aria-current":d?"page":void 0,"aria-disabled":t.disabled?!0:void 0,"aria-label":r.collapsed?l:void 0,"data-active-ancestor":u?"true":void 0,target:t.target,rel:t.rel},v=r.renderLink?r.renderLink(y):n.jsx("a",{href:y.href,className:y.className,style:y.style,onClick:y.onClick,"aria-current":y["aria-current"],"aria-disabled":y["aria-disabled"],"aria-label":y["aria-label"],"data-active-ancestor":y["data-active-ancestor"],target:y.target,rel:y.rel,children:y.children});return n.jsx("li",{className:"rrc-sidebar__item",...we(r.collapsed),children:r.collapsed?n.jsx(Se,{name:l,children:v}):v})}if(t.type==="action"){const x=n.jsx("button",{type:"button",className:h(j,"rrc-sidebar__row--action"),style:c,disabled:t.disabled,"aria-label":r.collapsed?l:void 0,"data-active-ancestor":u?"true":void 0,"data-active":d?"true":void 0,onClick:y=>r.select(t,y),children:n.jsx(ke,{node:e,expandable:!1})});return n.jsx("li",{className:"rrc-sidebar__item",...we(r.collapsed),children:r.collapsed?n.jsx(Se,{name:l,children:x}):x})}if(!p){const x=`${b}-title`;return n.jsxs("li",{className:h("rrc-sidebar__item","rrc-sidebar__group",t.className),children:[n.jsxs("div",{className:"rrc-sidebar__group-title",id:x,style:c,children:[t.icon!==void 0&&n.jsx("span",{className:"rrc-sidebar__icon","aria-hidden":"true",children:t.icon}),n.jsx("span",{className:"rrc-sidebar__label",children:t.label}),t.badge!==void 0&&n.jsx("span",{className:"rrc-sidebar__badge",children:t.badge})]}),n.jsx("ul",{className:"rrc-sidebar__menu rrc-sidebar__submenu","aria-labelledby":x,children:e.children.map(y=>n.jsx(he,{node:y,ctx:{...r,depthOffset:r.depthOffset+1}},y.key))})]})}const w=n.jsx("ul",{className:"rrc-sidebar__menu rrc-sidebar__submenu",id:b,children:e.children.map(x=>n.jsx(he,{node:x,ctx:r},x.key))}),S=r.collapsed,k=()=>{t.disabled||(S?o(x=>!x):r.toggle(t.key))},_=n.jsx("button",{type:"button",className:h(j,"rrc-sidebar__row--toggle",t.type==="group"&&"rrc-sidebar__row--group-toggle"),style:c,disabled:t.disabled,"aria-expanded":S?a:f,"aria-controls":b,"aria-label":r.collapsed?l:void 0,"data-active-ancestor":u?"true":void 0,onClick:k,children:n.jsx(ke,{node:e,expandable:!0})});return n.jsxs("li",{ref:s,className:h("rrc-sidebar__item",S&&"rrc-sidebar__item--flyout-anchor"),...we(r.collapsed),children:[S?n.jsx(Se,{name:l,children:_}):_,S?n.jsx(Z,{open:a,onClose:i,anchorRef:s,className:"rrc-sidebar__flyout",children:n.jsx("ul",{className:"rrc-sidebar__menu rrc-sidebar__submenu",id:b,children:e.children.map(x=>n.jsx(he,{node:x,ctx:{...r,collapsed:!1,depthOffset:e.depth+1}},x.key))})}):f&&w]})}function an({collapsed:e,toggle:r,label:t}){return n.jsx("button",{type:"button",className:"rrc-sidebar__collapse-btn","aria-label":t,onClick:r,children:n.jsx("svg",{className:h("rrc-sidebar__collapse-icon",e&&"rrc-sidebar__collapse-icon--collapsed"),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",children:n.jsx("path",{d:"M14.5 6.5 9 12l5.5 5.5"})})})}function on({items:e,sections:r,variant:t,tone:s,activeKey:a,expandActivePath:o=!1,activePathExpansion:i,expandedKeys:c,defaultExpandedKeys:l,onExpandedKeysChange:d,expandMode:u="multiple",collapsed:p,defaultCollapsed:f,onCollapsedChange:b,collapsible:j=!1,renderCollapseControl:w,collapseLabel:S="Collapse sidebar",expandLabel:k="Expand sidebar",mobileOpen:_,defaultMobileOpen:x,onMobileOpenChange:y,mobileLabel:v,closeMobileOnSelect:N=!0,header:g,footer:C,collapsedFooter:R,className:V,navLabel:B,onSelect:H,renderLink:L}){const D=Cr(),E=r??[],$=m.useMemo(()=>e!==void 0?e:Er(E),[e,r]),T=m.useMemo(()=>Zt($),[$]),G=T.duplicateKeys.join(", ");m.useEffect(()=>{process.env.NODE_ENV!=="production"&&G.length>0&&console.error("[react-components] Sidebar received duplicate item keys: "+G+". Keys must be unique and stable: expansion and active state are keyed by them, so every duplicate shares one identity and the first occurrence in tree order defines it.")},[G]);const q=m.useMemo(()=>Ar(E),[r]),P=a??(e===void 0?Dr(E):void 0),F=i??(o?"on-active-change":"never"),I=m.useRef(null);if(I.current===null){const M=l??q;I.current=F==="never"?M:er(T,M,rr(T,P),u)}const[O,K]=A({value:c,defaultValue:I.current,onChange:d}),[X,Jr]=A({value:p,defaultValue:f??!1,onChange:b}),[z,ue]=A({value:_,defaultValue:x??!1,onChange:y}),W=P,me=m.useMemo(()=>new Set(Mr(T,W)),[T,W]),Be=m.useMemo(()=>{const M=new Set(O);if(F==="always")for(const Q of me)M.add(Q);return M},[O,F,me]),ye=m.useRef(O);ye.current=O;const je=m.useRef(rn);m.useEffect(()=>{if(F!=="on-active-change"){je.current=W;return}if(je.current===W)return;je.current=W;const M=rr(T,W);if(M.length===0)return;const Q=er(T,ye.current,M,u);Xt(Q,ye.current)||K(Q)},[F,W,T,u,K]);const Ke=m.useCallback(M=>K(Qt(T,O,M,u)),[T,O,u,K]),He=m.useCallback(()=>ue(!1),[ue]);be(z,He);const Ne=m.useRef(null);m.useEffect(()=>{if(typeof document>"u")return;if(z){Ne.current=document.activeElement;return}const M=Ne.current;Ne.current=null,M instanceof HTMLElement&&M.isConnected&&M.focus()},[z]);const Ge=m.useCallback((M,Q)=>{var Ye;M.disabled||((Ye=M.onSelect)==null||Ye.call(M,M,Q),H==null||H(M,Q),N&&z&&ue(!1))},[H,N,z,ue]),Ue=m.useId(),fe=t??(D==null?void 0:D.sidebarPresentation)??"grouped",qe=s??(D==null?void 0:D.sidebarTone)??"auto",ae=X&&!z,Yr=m.useMemo(()=>({variant:fe,collapsed:ae,expanded:Be,activeKey:W,activeAncestors:me,toggle:Ke,select:Ge,renderLink:L,idPrefix:Ue,depthOffset:0}),[fe,ae,Be,W,me,Ke,Ge,L,Ue]),ze={collapsed:X,toggle:()=>Jr(!X),label:X?k:S},We=ae?R:C,Je=n.jsxs("aside",{className:h("rrc-sidebar",`rrc-sidebar--${fe}`,ae?"rrc-sidebar--collapsed":"rrc-sidebar--expanded",z&&"rrc-sidebar--mobile-open",V),"data-variant":fe,"data-collapsed":ae?"true":"false","data-bs-theme":qe==="auto"?void 0:qe,...z?{role:"dialog","aria-modal":!0,"aria-label":v??B}:{},children:[n.jsxs("div",{className:"rrc-sidebar__panel",children:[(g!==void 0||j)&&n.jsx("div",{className:"rrc-sidebar__header",children:g!==void 0&&n.jsx("div",{className:"rrc-sidebar__brand",children:g})}),n.jsx("nav",{className:"rrc-sidebar__body","aria-label":B,children:n.jsx("ul",{className:"rrc-sidebar__menu rrc-sidebar__menu--root",children:T.roots.map(M=>n.jsx(he,{node:M,ctx:Yr},M.key))})}),We!==void 0&&n.jsx("div",{className:"rrc-sidebar__footer",children:We})]}),j&&n.jsx("div",{className:"rrc-sidebar__collapse",children:w?w(ze):n.jsx(an,{...ze})})]});return z?n.jsxs("div",{className:"rrc-sidebar-drawer",children:[n.jsx("div",{className:"rrc-sidebar-drawer__backdrop",onClick:He,"data-testid":"rrc-sidebar-backdrop"}),Je]}):Je}function ln({title:e,description:r,breadcrumbItems:t,actions:s,className:a}){return n.jsxs("div",{className:h("mb-4","rrc-page-header",a),children:[t&&t.length>0&&n.jsx(jr,{items:t,className:"mb-2 rrc-page-header__breadcrumb"}),n.jsxs("div",{className:"d-flex align-items-start justify-content-between gap-3 flex-wrap rrc-page-header__row",children:[n.jsxs("div",{children:[n.jsx("h1",{className:"h3 mb-1 rrc-page-header__title",children:e}),r&&n.jsx("p",{className:"text-body-secondary mb-0 rrc-page-header__description",children:r})]}),s&&n.jsx("div",{className:"d-flex align-items-center gap-2 rrc-page-header__actions",children:s})]})]})}const cn={xs:1,sm:2,md:3,lg:4,xl:5};function dn(e){return typeof e=="number"?e:cn[e]}function un({direction:e="row",gap:r="sm",grow:t,shrink:s,fullWidth:a,className:o,...i}){return n.jsx(De,{direction:e,gap:dn(r),className:h("rrc-flex",t&&"flex-grow-1",s&&"flex-shrink-0",a&&"w-100",o),...i})}function mn({icon:e,"aria-label":r,iconSize:t,tooltip:s,variant:a="light",loading:o,className:i,...c}){const l=n.jsx(le,{variant:a,loading:o,className:h("btn-icon","rrc-btn-icon",i),"aria-label":r,...c,children:!o&&n.jsx(xe,{name:e,size:t})});return s?n.jsx(Ae,{content:s,children:l}):l}function fn({leading:e,title:r,description:t,trailing:s,onClick:a,disabled:o,dense:i,className:c}){const l=n.jsxs(n.Fragment,{children:[e&&n.jsx("span",{className:"flex-shrink-0 d-inline-flex align-items-center rrc-list-item__leading",children:e}),n.jsxs("span",{className:"flex-grow-1",style:{minWidth:0},children:[n.jsx("span",{className:"d-block text-truncate rrc-list-item__title",children:r}),t&&n.jsx("span",{className:"d-block text-truncate small text-body-secondary rrc-list-item__description",children:t})]}),s&&n.jsx("span",{className:"flex-shrink-0 d-inline-flex align-items-center rrc-list-item__trailing",children:s})]}),d=h("d-flex align-items-center text-start","rrc-list-item",a&&"rrc-list-item--interactive",i?"gap-2 py-1":"gap-3 py-2",a&&"w-100 border-0 bg-transparent",o&&"opacity-50",c);return a?n.jsx("button",{type:"button",className:d,onClick:a,disabled:o,children:l}):n.jsx("div",{className:d,"aria-disabled":o||void 0,children:l})}function pn(e,r,t,s){if(e.length===0)return[];const a=Math.min(...e),i=Math.max(...e)-a||1,c=r-s*2,l=t-s*2,d=e.length>1?c/(e.length-1):0;return e.map((u,p)=>{const f=s+d*p,b=s+l-(u-a)/i*l;return[f,b]})}function hn({type:e,data:r,width:t,height:s,strokeWidth:a}){const o=a,i=pn(r,t,s,o);if(i.length===0)return null;const c=i.map(([l,d])=>`${l},${d}`).join(" ");return n.jsxs(n.Fragment,{children:[e==="area"&&n.jsx("polygon",{points:`${o},${s-o} ${c} ${t-o},${s-o}`,fill:"currentColor",opacity:.2,stroke:"none"}),n.jsx("polyline",{points:c,fill:"none",stroke:"currentColor",strokeWidth:a,strokeLinecap:"round",strokeLinejoin:"round"})]})}function bn({data:e,width:r,height:t}){if(e.length===0)return null;const s=Math.min(0,...e),o=Math.max(0,...e)-s||1,i=2,c=Math.max((r-i*(e.length-1))/e.length,1);return n.jsx(n.Fragment,{children:e.map((l,d)=>{const u=Math.max((l-s)/o*t,1),p=d*(c+i),f=t-u;return n.jsx("rect",{x:p,y:f,width:c,height:u,rx:1,fill:"currentColor"},d)})})}function vn({type:e="line",data:r,tone:t="primary",width:s=80,height:a=28,strokeWidth:o=2,className:i,label:c}){return n.jsx("svg",{width:s,height:a,viewBox:`0 0 ${s} ${a}`,className:h(`text-${t}`,"rrc-sparkline",i),role:c?"img":void 0,"aria-label":c,"aria-hidden":c?void 0:!0,children:e==="bar"?n.jsx(bn,{data:r,width:s,height:a}):n.jsx(hn,{type:e,data:r,width:s,height:a,strokeWidth:o})})}const xn={up:"success",down:"danger",neutral:"muted"},gn={up:"bi bi-arrow-up-short",down:"bi bi-arrow-down-short",neutral:"bi bi-dash"};function yn(e,r){return typeof e=="number"&&r!=null?e.toFixed(r):String(e)}function jn({label:e,value:r,prefix:t,suffix:s,precision:a,trend:o,delta:i,loading:c,className:l}){return n.jsxs("div",{className:h("d-flex flex-column gap-1","rrc-statistic",l),children:[n.jsx(J,{size:"sm",tone:"muted",children:e}),c?n.jsx(ie,{height:"1.75rem",width:"60%"}):n.jsxs("div",{className:"d-flex align-items-baseline gap-1",children:[t&&n.jsx(J,{size:"lg",weight:"semibold",children:t}),n.jsx(J,{size:"xl",weight:"bold",children:yn(r,a)}),s&&n.jsx(J,{size:"lg",weight:"semibold",children:s})]}),!c&&(o||i!=null)&&n.jsxs(J,{size:"sm",tone:o?xn[o]:"muted",className:"d-inline-flex align-items-center gap-1",children:[o&&n.jsx(xe,{name:gn[o],size:"sm"}),i]})]})}function pe({title:e,options:r,value:t,onChange:s,className:a}){const o=m.useId(),i=m.useRef([]);function c(d,u){var b;if(r.length===0)return;const p=(d+u+r.length)%r.length,f=r[p];f&&(s(f.value),(b=i.current[p])==null||b.focus())}function l(d){const u=r.findIndex(p=>p.value===t);d.key==="ArrowDown"||d.key==="ArrowRight"?(d.preventDefault(),c(u,1)):(d.key==="ArrowUp"||d.key==="ArrowLeft")&&(d.preventDefault(),c(u,-1))}return n.jsxs("div",{className:h("rrc-appearance__section",a),children:[n.jsx("div",{className:"rrc-appearance__title",id:o,children:e}),n.jsx("div",{className:"rrc-appearance__options",role:"radiogroup","aria-labelledby":o,onKeyDown:l,children:r.map((d,u)=>{const p=d.value===t;return n.jsxs("button",{ref:f=>{i.current[u]=f},type:"button",role:"radio","aria-checked":p,tabIndex:p?0:-1,className:h("rrc-appearance__option",p&&"rrc-appearance__option--selected"),onClick:()=>s(d.value),children:[d.adornment,n.jsx("span",{className:"rrc-appearance__option-label",children:d.label}),n.jsx("span",{className:"rrc-appearance__check","aria-hidden":"true"})]},d.value)})})]})}function Nn({labels:e,sections:r,className:t,mode:s,onModeChange:a,sidebarPresentation:o,onSidebarPresentationChange:i,sidebarTone:c,onSidebarToneChange:l,colorSchemeId:d,onColorSchemeIdChange:u,colorSchemes:p}){const f=Cr(),b={presentation:(r==null?void 0:r.presentation)??!0,mode:(r==null?void 0:r.mode)??!0,tone:(r==null?void 0:r.tone)??!0,colorScheme:(r==null?void 0:r.colorScheme)??!0},j=s??(f==null?void 0:f.mode)??"system",w=o??(f==null?void 0:f.sidebarPresentation)??"grouped",S=c??(f==null?void 0:f.sidebarTone)??"auto",k=d??(f==null?void 0:f.colorSchemeId)??ge,_=g=>{a==null||a(g),s===void 0&&(f==null||f.setMode(g))},x=g=>{i==null||i(g),o===void 0&&(f==null||f.setSidebarPresentation(g))},y=g=>{l==null||l(g),c===void 0&&(f==null||f.setSidebarTone(g))},v=g=>{u==null||u(g),d===void 0&&(f==null||f.setColorSchemeId(g))},N=p??Sr();return n.jsxs("div",{className:h("rrc-appearance",t),children:[b.presentation&&n.jsx(pe,{title:e.presentation.title,value:w,onChange:x,options:Ve.map(g=>({value:g,label:e.presentation[g]}))}),b.mode&&n.jsx(pe,{title:e.mode.title,value:j,onChange:_,options:Me.map(g=>({value:g,label:e.mode[g]}))}),b.tone&&n.jsx(pe,{title:e.tone.title,value:S,onChange:y,options:Le.map(g=>({value:g,label:e.tone[g]}))}),b.colorScheme&&n.jsx(pe,{title:e.colorScheme.title,value:k,onChange:v,className:"rrc-appearance__section--schemes",options:N.map(g=>({value:g.id,label:e.colorScheme.options[g.id]??g.id,adornment:n.jsx("span",{className:"rrc-appearance__swatch",style:{backgroundColor:g.swatch??g.tokens.primary},"aria-hidden":"true"})}))})]})}class Vr extends Error{constructor(r,t,s){super(`HTTP ${r} ${t} for ${s}`),this.name="HttpError",this.status=r,this.statusText=t,this.url=s}}function kn(e){if(!e)return"";const r=new URLSearchParams;for(const[s,a]of Object.entries(e))a!=null&&r.set(s,String(a));const t=r.toString();return t?`?${t}`:""}function Lr(e={}){const{baseUrl:r="",fetcher:t=fetch,buildRequestInit:s}=e;return{async get(a,o={}){const i=`${r}${a}${kn(o.params)}`;let c={method:"GET",signal:o.signal};s&&(c=s(i,c));const l=await t(i,c);if(!l.ok)throw new Vr(l.status,l.statusText,i);return await l.json()}}}const Pr=Lr();function Sn(e){return Object.keys(e).sort().reduce((r,t)=>(r[t]=e[t],r),{})}function te({client:e=Pr,url:r,params:t,mapResponse:s,enabled:a=!0}){const[o,i]=m.useState("idle"),[c,l]=m.useState([]),[d,u]=m.useState(null),[p,f]=m.useState(0),b=m.useMemo(()=>t?JSON.stringify(Sn(t)):"",[t]),j=m.useRef(0),w=m.useRef(s);w.current=s,m.useEffect(()=>{if(!a||!r){i("idle"),l([]),u(null);return}const k=++j.current,_=new AbortController;return i("loading"),u(null),e.get(r,{params:t,signal:_.signal}).then(x=>{if(k!==j.current)return;const y=w.current(x);l(y),i(y.length===0?"empty":"success")}).catch(x=>{k===j.current&&(x instanceof DOMException&&x.name==="AbortError"||(u(x instanceof Error?x:new Error(String(x))),i("error")))}),()=>{_.abort()}},[e,r,b,a,p]);const S=m.useCallback(()=>f(k=>k+1),[]);return{state:o,items:c,error:d,reload:S}}function Or(e,r){const[t,s]=m.useState(e);return m.useEffect(()=>{const a=setTimeout(()=>s(e),r);return()=>clearTimeout(a)},[e,r]),t}function ne(e){if(Array.isArray(e))return e;if(e&&typeof e=="object"&&Array.isArray(e.items))return e.items;throw new Error("Unable to normalize remote response into an array. Provide an explicit `mapResponse` for this endpoint's response shape.")}function de(e,r,t){if(e===null||typeof e!="object")throw new Error("Remote item is not an object; cannot read valueMember/displayMember from it.");const s=e;return{value:s[r],label:String(s[t]??"")}}function $r({url:e,params:r,valueMember:t,displayMember:s,mapResponse:a,client:o,enabled:i,...c}){const{state:l,items:d,error:u}=te({client:o,url:e,params:r,enabled:i,mapResponse:f=>(a?a(f):ne(f)).map(j=>de(j,t,s))}),p=c.error??(l==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return n.jsx(dr,{...c,options:d,loading:l==="loading",error:p})}function wn({url:e,params:r,searchParam:t,valueMember:s,displayMember:a,mapResponse:o,minSearchLength:i=1,debounceMs:c=300,client:l,inputValue:d,onInputValueChange:u,...p}){const[f,b]=A({value:d,defaultValue:"",onChange:u}),j=Or(f,c),w=j.length>=i,{state:S,items:k,error:_}=te({client:l,url:e,enabled:w,params:{...r,[t]:j},mapResponse:y=>(o?o(y):ne(y)).map(N=>de(N,s,a))}),x=p.error??(S==="error"?(_==null?void 0:_.message)??"Failed to load suggestions":void 0);return n.jsx(ur,{...p,options:k,loading:S==="loading",error:x,inputValue:f,onInputValueChange:b,filter:()=>!0})}function Fr({url:e,params:r,mapResponse:t,getTotalCount:s,pageSize:a=20,client:o,...i}){const[c,l]=m.useState(1),[d,u]=m.useState(null),p=m.useMemo(()=>JSON.stringify(r??{}),[r]),f=m.useRef(!0);m.useEffect(()=>{if(f.current){f.current=!1;return}l(1)},[p]);const b=m.useMemo(()=>({...r,page:c,pageSize:a,...d?{sortKey:d.key,sortDirection:d.direction}:{}}),[r,c,a,d]),j=m.useRef(void 0),{state:w,items:S,error:k}=te({client:o,url:e,params:b,mapResponse:N=>(j.current=N,t?t(N):ne(N))}),_=j.current!==void 0?s==null?void 0:s(j.current):void 0,y=S.length>=a&&a>0?c*a+1:(c-1)*a+S.length,v=_??y;return n.jsx(hr,{...i,rows:S,loading:w==="loading",error:k==null?void 0:k.message,page:c,pageSize:a,totalCount:v,onPageChange:l,sort:d,onSortChange:N=>{u(N),l(1)}})}function _n({url:e,params:r,valueMember:t,displayMember:s,mapResponse:a,client:o,enabled:i,...c}){const{state:l,items:d,error:u}=te({client:o,url:e,params:r,enabled:i,mapResponse:f=>(a?a(f):ne(f)).map(j=>de(j,t,s))}),p=c.error??(l==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return n.jsx(ir,{...c,options:d,loading:l==="loading",error:p})}function Cn({url:e,params:r,valueMember:t,displayMember:s,mapResponse:a,client:o,enabled:i,...c}){const{state:l,items:d,error:u}=te({client:o,url:e,params:r,enabled:i,mapResponse:f=>(a?a(f):ne(f)).map(j=>de(j,t,s))}),p=c.error??(l==="error"?(u==null?void 0:u.message)??"Failed to load options":void 0);return n.jsx(lr,{...c,options:d,loading:l==="loading",error:p})}function In(){const e=new Map,r=new Set;return{register(t,s){e.set(t,s)},resolve(t,s){const a=e.get(t.component);return a?a(t,s):(r.has(t.component)||(r.add(t.component),console.warn(`Smart: no resolver registered for component "${t.component}" (field "${t.name}"). Skipping.`)),null)},has(t){return e.has(t)}}}function En(e){const r=new Map(Object.entries(e??{}));return{register(t,s){r.set(t,s)},resolve(t){return r.get(t)}}}function Rn(){const e=new Map;return{register(r,t){e.set(r,t)},resolve(r){return e.get(r)}}}function An(e){return"dataSource"in e}function Dn(e,r){if(!e)return;const t={};for(const[s,a]of Object.entries(e))t[s]=a.kind==="static"?a.value:r[a.field];return t}function tr(e,r,t){return r&&t?t(r):e}function se(e,r){const{values:t,translate:s}=r;return{metadata:e,visible:e.visible??!0,readOnly:e.readOnly??!1,disabled:e.disabled??!1,required:e.required??!1,label:tr(e.label,e.labelKey,s),placeholder:e.placeholder,helpText:e.helpText,validationMessage:tr(e.validationMessage,e.validationMessageKey,s),params:An(e)?Dn(e.dataSource.params,t):void 0}}function Tn(e,r,t){const s=r==null?void 0:r.fields.find(a=>a.name===e);if(s)return se(s,t)}const Mn=[];function Vn(e,r){const t={};for(const s of r)t[s]=e[s];return t}function Br(e,r,t){const s=e??Mn,a=Vn(r,s),o=s.length===0?"":JSON.stringify(a),i=m.useRef(null),c=m.useRef(t);c.current=t,m.useEffect(()=>{var d;if(s.length===0)return;const l=i.current;if(l&&l.key!==o)for(const u of s)Object.is(l.snapshot[u],a[u])||(d=c.current)==null||d.call(c,u);i.current={key:o,snapshot:a}},[o])}function Fe(e,r){const{actions:t,translate:s}=r,a=t.resolve(e.id);return{metadata:e,visible:e.visible??!0,enabled:(e.enabled??!0)&&!!a,label:e.labelKey&&s?s(e.labelKey):e.label,handler:a}}function Ln(e,r,t){var a;const s=(a=r==null?void 0:r.actions)==null?void 0:a.find(o=>o.id===e);if(s)return Fe(s,t)}const Kr=(e,r)=>{const t=se(e,{values:r.values,translate:r.translate});if(!t.visible)return null;const s=r.dataSources.resolve(e.dataSource.id);return s?n.jsx($r,{label:t.label,url:s.url,client:s.client,params:t.params,valueMember:e.valueMember,displayMember:e.displayMember,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,error:t.validationMessage,value:r.values[e.name]??null,onChange:a=>r.onFieldChange(e.name,a)}):(console.warn(`Smart: no data source registered for id "${e.dataSource.id}" (field "${e.name}"). Skipping.`),null)};function Pn(e,r){if(e.visible===!1)return null;const t=e.headerKey&&r?r(e.headerKey):e.header??e.key,s=e.format==="boolean"&&!!r;return{key:e.key,header:t,sortable:e.sortable,format:s?void 0:e.format,formatter:s?a=>r(a?"smart.boolean.true":"smart.boolean.false"):void 0}}const Hr=(e,r)=>{const t=se(e,{values:r.values,translate:r.translate});if(!t.visible)return null;const s=r.dataSources.resolve(e.dataSource.id);if(!s)return console.warn(`Smart: no data source registered for id "${e.dataSource.id}" (field "${e.name}"). Skipping.`),null;const a=e.columns.map(c=>Pn(c,r.translate)).filter(c=>c!==null),o=e.totalCountField,i=o?c=>{const l=c==null?void 0:c[o];return typeof l=="number"?l:void 0}:void 0;return n.jsx(Fr,{url:s.url,client:s.client,params:t.params,columns:a,rowKey:c=>c[e.rowKey],getTotalCount:i})};function nr(e){if(!e)return;const r=new Date(e);return Number.isNaN(r.getTime())?void 0:r}const Gr=(e,r)=>{const t=se(e,{values:r.values,translate:r.translate});return t.visible?n.jsx(cr,{label:t.label,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,error:t.validationMessage,min:nr(e.minDate),max:nr(e.maxDate),value:r.values[e.name]??null,onChange:s=>r.onFieldChange(e.name,s)}):null},Ur=(e,r)=>{const t=se(e,{values:r.values,translate:r.translate});return t.visible?n.jsx(re,{label:t.label,required:t.required,readOnly:t.readOnly,disabled:t.disabled,helpText:t.helpText,placeholder:t.placeholder,error:t.validationMessage,maxLength:e.maxLength,value:r.values[e.name]??"",onChange:s=>r.onFieldChange(e.name,s)}):null};function On(e){e.register("Input",Ur),e.register("ComboBox",Kr),e.register("DatePicker",Gr),e.register("DataGrid",Hr)}function qr({metadata:e,ctx:r}){const t=r.onMetadataRefreshNeeded;return Br(e.dependsOn,r.values,t?s=>t(e.name,s):void 0),e.visible===!1?null:r.registry.resolve(e,r)}const zr=1;function $n(e){const r=Number(e.split(".")[0]);return Number.isFinite(r)&&r===zr}function Fn({metadata:e,ctx:r}){return $n(e.schemaVersion)?n.jsx(n.Fragment,{children:e.fields.map(t=>n.jsx(qr,{metadata:t,ctx:r},t.name))}):n.jsxs(Re,{variant:"danger",children:['Unsupported form schema version "',e.schemaVersion,'" — this app understands schema version ',zr,".x."]})}function Wr({metadata:e,ctx:r}){const t=Fe(e,r);return t.visible?n.jsx(le,{disabled:!t.enabled,onClick:()=>{var s;return(s=t.handler)==null?void 0:s.call(t)},children:t.label??e.id}):null}function Bn({metadata:e,ctx:r}){return!e.actions||e.actions.length===0?null:n.jsx(n.Fragment,{children:e.actions.map(t=>n.jsx(Wr,{metadata:t,ctx:r},t.id))})}exports.Accordion=jt;exports.Alert=Re;exports.AppearanceMenu=Nn;exports.AppearanceProvider=zt;exports.AutoComplete=ur;exports.Avatar=Vt;exports.Badge=gr;exports.Breadcrumb=jr;exports.Button=le;exports.COLOR_SCHEME_TOKEN_KEYS=Te;exports.Card=Ct;exports.CheckBox=rt;exports.Col=Rt;exports.ComboBox=dr;exports.ConfirmProvider=ht;exports.Container=It;exports.DEFAULT_COLOR_SCHEME_ID=ge;exports.DataGrid=hr;exports.DatePicker=cr;exports.DateTimePicker=at;exports.Divider=yr;exports.FileInput=et;exports.Flex=un;exports.FormField=it;exports.HttpError=Vr;exports.Icon=xe;exports.IconButton=mn;exports.Input=re;exports.Label=sr;exports.ListItem=fn;exports.Menu=At;exports.Modal=mr;exports.MultiSelect=lr;exports.Navbar=Ft;exports.NumberInput=Qr;exports.PageHeader=ln;exports.Pagination=fr;exports.PasswordInput=Xr;exports.Popover=Nt;exports.Popup=Z;exports.ProgressBar=$t;exports.RadioButton=or;exports.RadioGroup=nt;exports.Rating=Ot;exports.RemoteAutoComplete=wn;exports.RemoteComboBox=$r;exports.RemoteDataGrid=Fr;exports.RemoteMultiSelect=Cn;exports.RemoteSelect=_n;exports.Row=Et;exports.SIDEBAR_PRESENTATIONS=Ve;exports.SIDEBAR_TONES=Le;exports.Select=ir;exports.Sidebar=on;exports.Skeleton=ie;exports.Slider=Pt;exports.SmartAction=Wr;exports.SmartActions=Bn;exports.SmartField=qr;exports.SmartForm=Fn;exports.Sparkline=vn;exports.Spinner=br;exports.Stack=De;exports.Statistic=jn;exports.Stepper=Dt;exports.Switch=tt;exports.THEME_MODES=Me;exports.Tabs=yt;exports.Tag=Lt;exports.Text=J;exports.TextArea=Zr;exports.TimePicker=st;exports.ToastProvider=ft;exports.Tooltip=Ae;exports.ValidationMessage=_e;exports.colorSchemeCssVariables=_r;exports.comboBoxResolver=Kr;exports.createAppearanceInitScript=Jt;exports.createColorScheme=oe;exports.createHttpClient=Lr;exports.createSmartActionRegistry=Rn;exports.createSmartComponentRegistry=In;exports.createSmartDataSourceRegistry=En;exports.dataGridFormatters=pr;exports.dataGridResolver=Hr;exports.datePickerResolver=Gr;exports.defaultArrayNormalization=ne;exports.defaultHttpClient=Pr;exports.fromDateInputValue=Ce;exports.fromTimeInputValue=Ee;exports.getColorScheme=kr;exports.inputResolver=Ur;exports.isSidebarExpandable=Oe;exports.isSidebarParent=Ir;exports.isValidColorScheme=Nr;exports.legacyActiveKey=Dr;exports.legacyDefaultExpandedKeys=Ar;exports.listColorSchemes=Sr;exports.registerBuiltInResolvers=On;exports.registerColorScheme=Kt;exports.resolveColorScheme=wr;exports.resolveSmartActionMetadata=Fe;exports.resolveSmartFieldMetadata=se;exports.toDateInputValue=Y;exports.toSelectOption=de;exports.toSidebarItems=Er;exports.toTimeInputValue=Ie;exports.useAppearance=Wt;exports.useConfirm=bt;exports.useDebouncedValue=Or;exports.useRemoteData=te;exports.useSmartAction=Ln;exports.useSmartDependencies=Br;exports.useSmartField=Tn;exports.useToast=pt;
2
2
  //# sourceMappingURL=index.cjs.map