react-bootstrap-plugins 3.0.4 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,6 +20,7 @@
20
20
  | **ListGroup** | [LISTGROUP.md](./docs/LISTGROUP.md) | Bootstrap list-group with active-state highlighting, icons, badges, and descriptions |
21
21
  | **FormRow** | [FORMROW.md](./docs/FORMROW.md) | Form row wrapper — label, control, helper text, and required indicator |
22
22
  | **ConfirmDialog** | [CONFIRMDIALOG.md](./docs/CONFIRMDIALOG.md) | Bootstrap 5 confirmation dialog with async loading state |
23
+ | **Stepper** | [STEPPER.md](./docs/STEPPER.md) | Step indicator with built-in Prev / Next / Action wizard footer |
23
24
 
24
25
  Each component guide includes full prop tables, usage examples, import patterns, and dark mode behavior.
25
26
 
@@ -119,6 +120,8 @@ import { NavPills } from 'react-bootstrap-plugins/NavPills'
119
120
  import { InputCurrency } from 'react-bootstrap-plugins/InputCurrency'
120
121
  import { ListGroup } from 'react-bootstrap-plugins/ListGroup'
121
122
  import { FormRow } from 'react-bootstrap-plugins/FormRow'
123
+ import { ConfirmDialog } from 'react-bootstrap-plugins/ConfirmDialog'
124
+ import { Stepper } from 'react-bootstrap-plugins/Stepper'
122
125
 
123
126
  // Multiple named — barrel, tree-shaken
124
127
  import { DatePicker, SearchSelect, Label, TableLoading, AutoTextarea, NavPills, InputCurrency, ListGroup, FormRow } from 'react-bootstrap-plugins'
@@ -170,7 +173,8 @@ function App() {
170
173
  | `InputCurrency` | ~0.6 KB |
171
174
  | `ListGroup` | ~0.6 KB |
172
175
  | `FormRow` | ~0.3 KB |
173
- | All nine (barrel) | ~9.1 KB |
176
+ | `Stepper` | ~0.9 KB |
177
+ | All components (barrel) | ~10 KB |
174
178
 
175
179
  Measured with ESM, tree-shaken, minified, gzipped. Your actual size depends on your bundler configuration.
176
180
 
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkN5OCJE5J_cjs=require('./chunk-N5OCJE5J.cjs');require('./chunk-NPQQDBFB.cjs');Object.defineProperty(exports,"Stepper",{enumerable:true,get:function(){return chunkN5OCJE5J_cjs.a}});//# sourceMappingURL=Stepper.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJTdGVwcGVyLmNqcyJ9
@@ -0,0 +1,92 @@
1
+ import * as React from 'react';
2
+
3
+ interface StepperStep {
4
+ /** Unique step identifier — compared against `active` */
5
+ key: string | number;
6
+ /** Label text shown next to the circle (hidden on extra-small screens) */
7
+ label?: React.ReactNode;
8
+ /**
9
+ * Circle content when `type="icon"`. A string is rendered as
10
+ * `<i className={icon} />` (pass the full icon class, e.g. `"fas fa-user"`);
11
+ * a ReactNode (e.g. a Lucide element) is rendered as-is.
12
+ */
13
+ icon?: string | React.ReactNode;
14
+ /**
15
+ * Disable this step — set externally (e.g. form validation).
16
+ * Disabled steps render dimmed, are never clickable, and block the
17
+ * Next button when they are the following step.
18
+ */
19
+ disabled?: boolean;
20
+ }
21
+ interface StepperProps {
22
+ /** Steps to render */
23
+ steps: StepperStep[];
24
+ /** Key of the current step — defaults to the first step's key */
25
+ active?: string | number;
26
+ /**
27
+ * Circle content type:
28
+ * - `"number"` — positional number (1, 2, 3…)
29
+ * - `"icon"` — each step's `icon` (falls back to the number when absent)
30
+ * Completed circles always show a check icon in both modes.
31
+ */
32
+ type?: 'number' | 'icon';
33
+ /** Extra classes on the indicator wrapper */
34
+ className?: string;
35
+ /** Extra classes on the footer wrapper */
36
+ footerClassName?: string;
37
+ /** Fired when the Prev button is clicked */
38
+ onPrev?: () => void;
39
+ /** Fired when the Next button is clicked */
40
+ onNext?: () => void;
41
+ /**
42
+ * Fired when the Action button (last step) is clicked.
43
+ * Passing this renders the Action button in place of Next on the last step.
44
+ */
45
+ onAction?: () => void;
46
+ /**
47
+ * Fired when a completed step circle is clicked. Passing this makes
48
+ * completed, non-disabled steps clickable; without it circles are
49
+ * purely visual.
50
+ */
51
+ onStepClick?: (step: StepperStep, index: number) => void;
52
+ /** Prev button label */
53
+ prevLabel?: React.ReactNode;
54
+ /** Next button label */
55
+ nextLabel?: React.ReactNode;
56
+ /** Action button label (required when `onAction` is provided) */
57
+ actionLabel?: React.ReactNode;
58
+ /** Leading icon for the Action button */
59
+ actionIcon?: string | React.ReactNode;
60
+ /** Disable the Action button — e.g. while submitting or when validation fails */
61
+ actionDisabled?: boolean;
62
+ /**
63
+ * Force-disable the Next button. Also disabled automatically when the
64
+ * following step has `disabled: true`.
65
+ */
66
+ nextDisabled?: boolean;
67
+ /** Hide the Prev button on the first step */
68
+ hidePrevOnFirst?: boolean;
69
+ /** Step content rendered between the indicator and the footer */
70
+ children?: React.ReactNode;
71
+ /** Inline styles on the indicator wrapper */
72
+ style?: React.CSSProperties;
73
+ /** Inline styles on the footer wrapper */
74
+ footerStyle?: React.CSSProperties;
75
+ }
76
+ /**
77
+ * Horizontal Bootstrap 5 step indicator with built-in wizard footer
78
+ * (Prev / Next / Action buttons). Controlled component — the caller owns
79
+ * the current step key, per-step validation (`step.disabled`), and all
80
+ * button callbacks.
81
+ *
82
+ * The rendered structure mirrors a card wizard: indicator strip
83
+ * (`card-body`) → `children` step content → footer (`card-footer`).
84
+ * When no button handlers are passed, the footer is omitted and the
85
+ * component acts as a pure indicator.
86
+ *
87
+ * No custom CSS required — Bootstrap 5 utility classes only. Icons use
88
+ * Font Awesome classes (`fas fa-*`), which the host app must load.
89
+ */
90
+ declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<HTMLDivElement>>;
91
+
92
+ export { Stepper, type StepperProps, type StepperStep };
@@ -0,0 +1,92 @@
1
+ import * as React from 'react';
2
+
3
+ interface StepperStep {
4
+ /** Unique step identifier — compared against `active` */
5
+ key: string | number;
6
+ /** Label text shown next to the circle (hidden on extra-small screens) */
7
+ label?: React.ReactNode;
8
+ /**
9
+ * Circle content when `type="icon"`. A string is rendered as
10
+ * `<i className={icon} />` (pass the full icon class, e.g. `"fas fa-user"`);
11
+ * a ReactNode (e.g. a Lucide element) is rendered as-is.
12
+ */
13
+ icon?: string | React.ReactNode;
14
+ /**
15
+ * Disable this step — set externally (e.g. form validation).
16
+ * Disabled steps render dimmed, are never clickable, and block the
17
+ * Next button when they are the following step.
18
+ */
19
+ disabled?: boolean;
20
+ }
21
+ interface StepperProps {
22
+ /** Steps to render */
23
+ steps: StepperStep[];
24
+ /** Key of the current step — defaults to the first step's key */
25
+ active?: string | number;
26
+ /**
27
+ * Circle content type:
28
+ * - `"number"` — positional number (1, 2, 3…)
29
+ * - `"icon"` — each step's `icon` (falls back to the number when absent)
30
+ * Completed circles always show a check icon in both modes.
31
+ */
32
+ type?: 'number' | 'icon';
33
+ /** Extra classes on the indicator wrapper */
34
+ className?: string;
35
+ /** Extra classes on the footer wrapper */
36
+ footerClassName?: string;
37
+ /** Fired when the Prev button is clicked */
38
+ onPrev?: () => void;
39
+ /** Fired when the Next button is clicked */
40
+ onNext?: () => void;
41
+ /**
42
+ * Fired when the Action button (last step) is clicked.
43
+ * Passing this renders the Action button in place of Next on the last step.
44
+ */
45
+ onAction?: () => void;
46
+ /**
47
+ * Fired when a completed step circle is clicked. Passing this makes
48
+ * completed, non-disabled steps clickable; without it circles are
49
+ * purely visual.
50
+ */
51
+ onStepClick?: (step: StepperStep, index: number) => void;
52
+ /** Prev button label */
53
+ prevLabel?: React.ReactNode;
54
+ /** Next button label */
55
+ nextLabel?: React.ReactNode;
56
+ /** Action button label (required when `onAction` is provided) */
57
+ actionLabel?: React.ReactNode;
58
+ /** Leading icon for the Action button */
59
+ actionIcon?: string | React.ReactNode;
60
+ /** Disable the Action button — e.g. while submitting or when validation fails */
61
+ actionDisabled?: boolean;
62
+ /**
63
+ * Force-disable the Next button. Also disabled automatically when the
64
+ * following step has `disabled: true`.
65
+ */
66
+ nextDisabled?: boolean;
67
+ /** Hide the Prev button on the first step */
68
+ hidePrevOnFirst?: boolean;
69
+ /** Step content rendered between the indicator and the footer */
70
+ children?: React.ReactNode;
71
+ /** Inline styles on the indicator wrapper */
72
+ style?: React.CSSProperties;
73
+ /** Inline styles on the footer wrapper */
74
+ footerStyle?: React.CSSProperties;
75
+ }
76
+ /**
77
+ * Horizontal Bootstrap 5 step indicator with built-in wizard footer
78
+ * (Prev / Next / Action buttons). Controlled component — the caller owns
79
+ * the current step key, per-step validation (`step.disabled`), and all
80
+ * button callbacks.
81
+ *
82
+ * The rendered structure mirrors a card wizard: indicator strip
83
+ * (`card-body`) → `children` step content → footer (`card-footer`).
84
+ * When no button handlers are passed, the footer is omitted and the
85
+ * component acts as a pure indicator.
86
+ *
87
+ * No custom CSS required — Bootstrap 5 utility classes only. Icons use
88
+ * Font Awesome classes (`fas fa-*`), which the host app must load.
89
+ */
90
+ declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<HTMLDivElement>>;
91
+
92
+ export { Stepper, type StepperProps, type StepperStep };
@@ -0,0 +1,2 @@
1
+ export{a as Stepper}from'./chunk-X6TKH77W.js';import'./chunk-RR7TBRGI.js';//# sourceMappingURL=Stepper.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJTdGVwcGVyLmpzIn0=
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkNPQQDBFB_cjs=require('./chunk-NPQQDBFB.cjs'),k=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var k__namespace=/*#__PURE__*/_interopNamespace(k);var V=()=>jsxRuntime.jsx("i",{className:"fas fa-check","aria-hidden":"true"}),W=(t,b,m,p)=>m?V():p==="icon"&&t.icon?typeof t.icon=="string"?jsxRuntime.jsx("i",{className:t.icon}):jsxRuntime.jsx("span",{className:"d-inline-flex align-items-center",children:t.icon}):b+1,X=k__namespace.forwardRef(({steps:t=[],active:b,type:m="number",className:p,footerClassName:w,onPrev:u,onNext:f,onAction:y,onStepClick:g,prevLabel:B="Back",nextLabel:P="Next",actionLabel:D="Submit",actionIcon:l,actionDisabled:L=false,nextDisabled:j=false,hidePrevOnFirst:F=true,children:$,style:A,footerStyle:I},z)=>{if(t.length===0)return null;let h=t.findIndex(a=>a.key===b),c=h===-1?0:h,E=c===0,N=c===t.length-1,G=()=>l?typeof l=="string"?jsxRuntime.jsx("i",{className:chunkNPQQDBFB_cjs.a(l,"me-1"),"aria-hidden":"true"}):l:jsxRuntime.jsx("i",{className:"fas fa-paper-plane me-1","aria-hidden":"true"}),H=!!(u||f||y),S=!!u&&!(F&&E),M=!!y&&N,O=!!f&&!N,T=N?void 0:t[c+1],q=j||!!T?.disabled,J=t.map((a,o)=>{let i=o<c,d=o===c,n=!!a.disabled,R=!!g&&i&&!n,v=chunkNPQQDBFB_cjs.a("rounded-circle d-flex align-items-center justify-content-center fw-semibold",{"border-0":R,"bg-primary text-white":(i||d)&&!n,"bg-light border text-secondary":!i&&!d&&!n,"bg-light border text-muted opacity-50":n}),x={width:32,height:32,fontSize:"0.85rem"},C=W(a,o,i&&!n,m),K=R?jsxRuntime.jsx("button",{type:"button",className:v,style:x,"aria-label":`Go to step ${o+1}${a.label?`: ${a.label}`:""}`,onClick:()=>g?.(a,o),children:C}):jsxRuntime.jsx("div",{className:v,style:x,"aria-current":d?"step":void 0,"aria-disabled":n||void 0,children:C}),Q=a.label?jsxRuntime.jsx("small",{className:chunkNPQQDBFB_cjs.a("d-none d-sm-inline",n?"text-muted opacity-50":i||d?"text-primary fw-semibold":"text-secondary"),children:a.label}):null,U=o<t.length-1?jsxRuntime.jsx("div",{className:chunkNPQQDBFB_cjs.a("border-top border-2",i?"border-primary":"border-light"),style:{width:24},"aria-hidden":"true"}):null;return jsxRuntime.jsxs("div",{className:"d-flex align-items-center gap-2",children:[K,Q,U]},String(a.key))});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:z,className:chunkNPQQDBFB_cjs.a("card-body rounded-0 border-bottom py-4 bg-light",p),style:A,children:jsxRuntime.jsx("div",{className:"d-flex justify-content-center align-items-center gap-2",children:J})}),$,H&&jsxRuntime.jsxs("div",{className:chunkNPQQDBFB_cjs.a("card-footer bg-body-tertiary border-top d-flex",S?"justify-content-between":"justify-content-end",w),style:I,children:[S&&jsxRuntime.jsxs("button",{type:"button",className:"btn btn-outline-secondary",onClick:u,children:[jsxRuntime.jsx("i",{className:"fas fa-arrow-left me-1","aria-hidden":"true"}),B]}),O&&jsxRuntime.jsxs("button",{type:"button",className:"btn btn-primary",disabled:q,onClick:f,children:[P,jsxRuntime.jsx("i",{className:"fas fa-arrow-right ms-1","aria-hidden":"true"})]}),M&&jsxRuntime.jsxs("button",{type:"button",className:"btn btn-primary",disabled:L,onClick:y,children:[G(),D]})]})]})});X.displayName="Stepper";exports.a=X;//# sourceMappingURL=chunk-N5OCJE5J.cjs.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL1N0ZXBwZXIudHN4Il0sIm5hbWVzIjpbInJlbmRlckNoZWNrIiwianN4IiwicmVuZGVyQ2lyY2xlQ29udGVudCIsInN0ZXAiLCJpbmRleCIsImlzQ29tcGxldGVkIiwidHlwZSIsIlN0ZXBwZXIiLCJrIiwic3RlcHMiLCJhY3RpdmUiLCJjbGFzc05hbWUiLCJmb290ZXJDbGFzc05hbWUiLCJvblByZXYiLCJvbk5leHQiLCJvbkFjdGlvbiIsIm9uU3RlcENsaWNrIiwicHJldkxhYmVsIiwibmV4dExhYmVsIiwiYWN0aW9uTGFiZWwiLCJhY3Rpb25JY29uIiwiYWN0aW9uRGlzYWJsZWQiLCJuZXh0RGlzYWJsZWQiLCJoaWRlUHJldk9uRmlyc3QiLCJjaGlsZHJlbiIsInN0eWxlIiwiZm9vdGVyU3R5bGUiLCJyZWYiLCJhY3RpdmVJbmRleCIsInMiLCJjdXJyZW50SW5kZXgiLCJpc0ZpcnN0IiwiaXNMYXN0IiwicmVuZGVyQWN0aW9uSWNvbiIsImNuIiwiaGFzRm9vdGVyIiwic2hvd1ByZXYiLCJzaG93QWN0aW9uIiwic2hvd05leHQiLCJuZXh0U3RlcCIsImlzTmV4dERpc2FibGVkIiwiY2lyY2xlcyIsImlzQWN0aXZlIiwiaXNEaXNhYmxlZCIsImlzQ2xpY2thYmxlIiwiY2lyY2xlQ2xhc3NlcyIsImNpcmNsZVN0eWxlIiwiY2lyY2xlQ29udGVudCIsImNpcmNsZSIsImxhYmVsIiwiY29ubmVjdG9yIiwianN4cyIsIkZyYWdtZW50Il0sIm1hcHBpbmdzIjoib2VBc0ZBLElBQU1BLENBQUFBLENBQWMsSUFBTUMsY0FBQUEsQ0FBQyxHQUFBLENBQUEsQ0FBRSxTQUFBLENBQVUsY0FBQSxDQUFlLGFBQUEsQ0FBWSxNQUFBLENBQU8sQ0FBQSxDQUVuRUMsQ0FBQUEsQ0FBc0IsQ0FDMUJDLENBQUFBLENBQ0FDLENBQUFBLENBQ0FDLENBQUFBLENBQ0FDLENBQUFBLEdBRUlELENBQUFBLENBQW9CTCxHQUFZLENBQ2hDTSxDQUFBQSxH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QUFBLEVBQWlCLENBQ2pCZCxDQUFBQSxDQUFBQSxDQUNILENBQUEsQ0FBQSxDQUVKLENBQUEsQ0FBQSxDQUVKLENBRUosQ0FBQyxFQUVEWixDQUFBQSxDQUFRLFdBQUEsQ0FBYyxTQUFBIiwiZmlsZSI6ImNodW5rLU41T0NKRTVKLmNqcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi9saWIvY24uanMnXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcHBlclN0ZXAge1xuICAvKiogVW5pcXVlIHN0ZXAgaWRlbnRpZmllciDigJQgY29tcGFyZWQgYWdhaW5zdCBgYWN0aXZlYCAqL1xuICBrZXk6IHN0cmluZyB8IG51bWJlclxuICAvKiogTGFiZWwgdGV4dCBzaG93biBuZXh0IHRvIHRoZSBjaXJjbGUgKGhpZGRlbiBvbiBleHRyYS1zbWFsbCBzY3JlZW5zKSAqL1xuICBsYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICogQ2lyY2xlIGNvbnRlbnQgd2hlbiBgdHlwZT1cImljb25cImAuIEEgc3RyaW5nIGlzIHJlbmRlcmVkIGFzXG4gICAqIGA8aSBjbGFzc05hbWU9e2ljb259IC8+YCAocGFzcyB0aGUgZnVsbCBpY29uIGNsYXNzLCBlLmcuIGBcImZhcyBmYS11c2VyXCJgKTtcbiAgICogYSBSZWFjdE5vZGUgKGUuZy4gYSBMdWNpZGUgZWxlbWVudCkgaXMgcmVuZGVyZWQgYXMtaXMuXG4gICAqL1xuICBpY29uPzogc3RyaW5nIHwgUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoaXMgc3RlcCDigJQgc2V0IGV4dGVybmFsbHkgKGUuZy4gZm9ybSB2YWxpZGF0aW9uKS5cbiAgICogRGlzYWJsZWQgc3RlcHMgcmVuZGVyIGRpbW1lZCwgYXJlIG5ldmVyIGNsaWNrYWJsZSwgYW5kIGJsb2NrIHRoZVxuICAgKiBOZXh0IGJ1dHRvbiB3aGVuIHRoZXkgYXJlIHRoZSBmb2xsb3dpbmcgc3RlcC5cbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBwZXJQcm9wcyB7XG4gIC8qKiBTdGVwcyB0byByZW5kZXIgKi9cbiAgc3RlcHM6IFN0ZXBwZXJTdGVwW11cbiAgLyoqIEtleSBvZiB0aGUgY3VycmVudCBzdGVwIOKAlCBkZWZhdWx0cyB0byB0aGUgZmlyc3Qgc3RlcCdzIGtleSAqL1xuICBhY3RpdmU/OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqXG4gICAqIENpcmNsZSBjb250ZW50IHR5cGU6XG4gICAqIC0gYFwibnVtYmVyXCJgIOKAlCBwb3NpdGlvbmFsIG51bWJlciAoMSwgMiwgM+KApilcbiAgICogLSBgXCJpY29uXCJgIOKAlCBlYWNoIHN0ZXAncyBgaWNvbmAgKGZhbGxzIGJhY2sgdG8gdGhlIG51bWJlciB3aGVuIGFic2VudClcbiAgICogQ29tcGxldGVkIGNpcmNsZXMgYWx3YXlzIHNob3cgYSBjaGVjayBpY29uIGluIGJvdGggbW9kZXMuXG4gICAqL1xuICB0eXBlPzogJ251bWJlcicgfCAnaWNvbidcbiAgLyoqIEV4dHJhIGNsYXNzZXMgb24gdGhlIGluZGljYXRvciB3cmFwcGVyICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKiogRXh0cmEgY2xhc3NlcyBvbiB0aGUgZm9vdGVyIHdyYXBwZXIgKi9cbiAgZm9vdGVyQ2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBQcmV2IGJ1dHRvbiBpcyBjbGlja2VkICovXG4gIG9uUHJldj86ICgpID0+IHZvaWRcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIE5leHQgYnV0dG9uIGlzIGNsaWNrZWQgKi9cbiAgb25OZXh0PzogKCkgPT4gdm9pZFxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgQWN0aW9uIGJ1dHRvbiAobGFzdCBzdGVwKSBpcyBjbGlja2VkLlxuICAgKiBQYXNzaW5nIHRoaXMgcmVuZGVycyB0aGUgQWN0aW9uIGJ1dHRvbiBpbiBwbGFjZSBvZiBOZXh0IG9uIHRoZSBsYXN0IHN0ZXAuXG4gICAqL1xuICBvbkFjdGlvbj86ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gYSBjb21wbGV0ZWQgc3RlcCBjaXJjbGUgaXMgY2xpY2tlZC4gUGFzc2luZyB0aGlzIG1ha2VzXG4gICAqIGNvbXBsZXRlZCwgbm9uLWRpc2FibGVkIHN0ZXBzIGNsaWNrYWJsZTsgd2l0aG91dCBpdCBjaXJjbGVzIGFyZVxuICAgKiBwdXJlbHkgdmlzdWFsLlxuICAgKi9cbiAgb25TdGVwQ2xpY2s/OiAoc3RlcDogU3RlcHBlclN0ZXAsIGluZGV4OiBudW1iZXIpID0+IHZvaWRcbiAgLyoqIFByZXYgYnV0dG9uIGxhYmVsICovXG4gIHByZXZMYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogTmV4dCBidXR0b24gbGFiZWwgKi9cbiAgbmV4dExhYmVsPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKiBBY3Rpb24gYnV0dG9uIGxhYmVsIChyZXF1aXJlZCB3aGVuIGBvbkFjdGlvbmAgaXMgcHJvdmlkZWQpICovXG4gIGFjdGlvbkxhYmVsPzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKiBMZWFkaW5nIGljb24gZm9yIHRoZSBBY3Rpb24gYnV0dG9uICovXG4gIGFjdGlvbkljb24/OiBzdHJpbmcgfCBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIERpc2FibGUgdGhlIEFjdGlvbiBidXR0b24g4oCUIGUuZy4gd2hpbGUgc3VibWl0dGluZyBvciB3aGVuIHZhbGlkYXRpb24gZmFpbHMgKi9cbiAgYWN0aW9uRGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBGb3JjZS1kaXNhYmxlIHRoZSBOZXh0IGJ1dHRvbi4gQWxzbyBkaXNhYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlXG4gICAqIGZvbGxvd2luZyBzdGVwIGhhcyBgZGlzYWJsZWQ6IHRydWVgLlxuICAgKi9cbiAgbmV4dERpc2FibGVkPzogYm9vbGVhblxuICAvKiogSGlkZSB0aGUgUHJldiBidXR0b24gb24gdGhlIGZpcnN0IHN0ZXAgKi9cbiAgaGlkZVByZXZPbkZpcnN0PzogYm9vbGVhblxuICAvKiogU3RlcCBjb250ZW50IHJlbmRlcmVkIGJldHdlZW4gdGhlIGluZGljYXRvciBhbmQgdGhlIGZvb3RlciAqL1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogSW5saW5lIHN0eWxlcyBvbiB0aGUgaW5kaWNhdG9yIHdyYXBwZXIgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKiBJbmxpbmUgc3R5bGVzIG9uIHRoZSBmb290ZXIgd3JhcHBlciAqL1xuICBmb290ZXJTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgSGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuY29uc3QgcmVuZGVyQ2hlY2sgPSAoKSA9PiA8aSBjbGFzc05hbWU9XCJmYXMgZmEtY2hlY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuXG5jb25zdCByZW5kZXJDaXJjbGVDb250ZW50ID0gKFxuICBzdGVwOiBTdGVwcGVyU3RlcCxcbiAgaW5kZXg6IG51bWJlcixcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW4sXG4gIHR5cGU6IE5vbk51bGxhYmxlPFN0ZXBwZXJQcm9wc1sndHlwZSddPlxuKTogUmVhY3QuUmVhY3ROb2RlID0+IHtcbiAgaWYgKGlzQ29tcGxldGVkKSByZXR1cm4gcmVuZGVyQ2hlY2soKVxuICBpZiAodHlwZSA9PT0gJ2ljb24nICYmIHN0ZXAuaWNvbikge1xuICAgIHJldHVybiB0eXBlb2Ygc3RlcC5pY29uID09PSAnc3RyaW5nJ1xuICAgICAgPyA8aSBjbGFzc05hbWU9e3N0ZXAuaWNvbn0gLz5cbiAgICAgIDogPHNwYW4gY2xhc3NOYW1lPVwiZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj57c3RlcC5pY29ufTwvc3Bhbj5cbiAgfVxuICByZXR1cm4gaW5kZXggKyAxXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIFN0ZXBwZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSG9yaXpvbnRhbCBCb290c3RyYXAgNSBzdGVwIGluZGljYXRvciB3aXRoIGJ1aWx0LWluIHdpemFyZCBmb290ZXJcbiAqIChQcmV2IC8gTmV4dCAvIEFjdGlvbiBidXR0b25zKS4gQ29udHJvbGxlZCBjb21wb25lbnQg4oCUIHRoZSBjYWxsZXIgb3duc1xuICogdGhlIGN1cnJlbnQgc3RlcCBrZXksIHBlci1zdGVwIHZhbGlkYXRpb24gKGBzdGVwLmRpc2FibGVkYCksIGFuZCBhbGxcbiAqIGJ1dHRvbiBjYWxsYmFja3MuXG4gKlxuICogVGhlIHJlbmRlcmVkIHN0cnVjdHVyZSBtaXJyb3JzIGEgY2FyZCB3aXphcmQ6IGluZGljYXRvciBzdHJpcFxuICogKGBjYXJkLWJvZHlgKSDihpIgYGNoaWxkcmVuYCBzdGVwIGNvbnRlbnQg4oaSIGZvb3RlciAoYGNhcmQtZm9vdGVyYCkuXG4gKiBXaGVuIG5vIGJ1dHRvbiBoYW5kbGVycyBhcmUgcGFzc2VkLCB0aGUgZm9vdGVyIGlzIG9taXR0ZWQgYW5kIHRoZVxuICogY29tcG9uZW50IGFjdHMgYXMgYSBwdXJlIGluZGljYXRvci5cbiAqXG4gKiBObyBjdXN0b20gQ1NTIHJlcXVpcmVkIOKAlCBCb290c3RyYXAgNSB1dGlsaXR5IGNsYXNzZXMgb25seS4gSWNvbnMgdXNlXG4gKiBGb250IEF3ZXNvbWUgY2xhc3NlcyAoYGZhcyBmYS0qYCksIHdoaWNoIHRoZSBob3N0IGFwcCBtdXN0IGxvYWQuXG4gKi9cbmNvbnN0IFN0ZXBwZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTdGVwcGVyUHJvcHM+KCh7XG4gIHN0ZXBzID0gW10sXG4gIGFjdGl2ZSxcbiAgdHlwZSA9ICdudW1iZXInLFxuICBjbGFzc05hbWUsXG4gIGZvb3RlckNsYXNzTmFtZSxcbiAgb25QcmV2LFxuICBvbk5leHQsXG4gIG9uQWN0aW9uLFxuICBvblN0ZXBDbGljayxcbiAgcHJldkxhYmVsID0gJ0JhY2snLFxuICBuZXh0TGFiZWwgPSAnTmV4dCcsXG4gIGFjdGlvbkxhYmVsID0gJ1N1Ym1pdCcsXG4gIGFjdGlvbkljb24sXG4gIGFjdGlvbkRpc2FibGVkID0gZmFsc2UsXG4gIG5leHREaXNhYmxlZCA9IGZhbHNlLFxuICBoaWRlUHJldk9uRmlyc3QgPSB0cnVlLFxuICBjaGlsZHJlbixcbiAgc3R5bGUsXG4gIGZvb3RlclN0eWxlXG59LCByZWYpID0+IHtcbiAgaWYgKHN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcblxuICBjb25zdCBhY3RpdmVJbmRleCA9IHN0ZXBzLmZpbmRJbmRleCgocykgPT4gcy5rZXkgPT09IGFjdGl2ZSlcbiAgY29uc3QgY3VycmVudEluZGV4ID0gYWN0aXZlSW5kZXggPT09IC0xID8gMCA6IGFjdGl2ZUluZGV4XG4gIGNvbnN0IGlzRmlyc3QgPSBjdXJyZW50SW5kZXggPT09IDBcbiAgY29uc3QgaXNMYXN0ID0gY3VycmVudEluZGV4ID09PSBzdGVwcy5sZW5ndGggLSAxXG5cbiAgY29uc3QgcmVuZGVyQWN0aW9uSWNvbiA9ICgpOiBSZWFjdC5SZWFjdE5vZGUgPT4ge1xuICAgIGlmIChhY3Rpb25JY29uKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGFjdGlvbkljb24gPT09ICdzdHJpbmcnXG4gICAgICAgID8gPGkgY2xhc3NOYW1lPXtjbihhY3Rpb25JY29uLCAnbWUtMScpfSBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICA6IGFjdGlvbkljb25cbiAgICB9XG4gICAgcmV0dXJuIDxpIGNsYXNzTmFtZT1cImZhcyBmYS1wYXBlci1wbGFuZSBtZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgfVxuXG4gIGNvbnN0IGhhc0Zvb3RlciA9IEJvb2xlYW4ob25QcmV2IHx8IG9uTmV4dCB8fCBvbkFjdGlvbilcbiAgY29uc3Qgc2hvd1ByZXYgPSBCb29sZWFuKG9uUHJldikgJiYgIShoaWRlUHJldk9uRmlyc3QgJiYgaXNGaXJzdClcbiAgY29uc3Qgc2hvd0FjdGlvbiA9IEJvb2xlYW4ob25BY3Rpb24pICYmIGlzTGFzdFxuICBjb25zdCBzaG93TmV4dCA9IEJvb2xlYW4ob25OZXh0KSAmJiAhaXNMYXN0XG4gIGNvbnN0IG5leHRTdGVwID0gaXNMYXN0ID8gdW5kZWZpbmVkIDogc3RlcHNbY3VycmVudEluZGV4ICsgMV1cbiAgY29uc3QgaXNOZXh0RGlzYWJsZWQgPSBuZXh0RGlzYWJsZWQgfHwgQm9vbGVhbihuZXh0U3RlcD8uZGlzYWJsZWQpXG5cbiAgY29uc3QgY2lyY2xlcyA9IHN0ZXBzLm1hcCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpc0NvbXBsZXRlZCA9IGluZGV4IDwgY3VycmVudEluZGV4XG4gICAgY29uc3QgaXNBY3RpdmUgPSBpbmRleCA9PT0gY3VycmVudEluZGV4XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IEJvb2xlYW4oc3RlcC5kaXNhYmxlZClcbiAgICBjb25zdCBpc0NsaWNrYWJsZSA9IEJvb2xlYW4ob25TdGVwQ2xpY2spICYmIGlzQ29tcGxldGVkICYmICFpc0Rpc2FibGVkXG5cbiAgICBjb25zdCBjaXJjbGVDbGFzc2VzID0gY24oXG4gICAgICAncm91bmRlZC1jaXJjbGUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZ3LXNlbWlib2xkJyxcbiAgICAgIHtcbiAgICAgICAgJ2JvcmRlci0wJzogaXNDbGlja2FibGUsXG4gICAgICAgICdiZy1wcmltYXJ5IHRleHQtd2hpdGUnOiAoaXNDb21wbGV0ZWQgfHwgaXNBY3RpdmUpICYmICFpc0Rpc2FibGVkLFxuICAgICAgICAnYmctbGlnaHQgYm9yZGVyIHRleHQtc2Vjb25kYXJ5JzogIWlzQ29tcGxldGVkICYmICFpc0FjdGl2ZSAmJiAhaXNEaXNhYmxlZCxcbiAgICAgICAgJ2JnLWxpZ2h0IGJvcmRlciB0ZXh0LW11dGVkIG9wYWNpdHktNTAnOiBpc0Rpc2FibGVkXG4gICAgICB9XG4gICAgKVxuICAgIGNvbnN0IGNpcmNsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0geyB3aWR0aDogMzIsIGhlaWdodDogMzIsIGZvbnRTaXplOiAnMC44NXJlbScgfVxuICAgIGNvbnN0IGNpcmNsZUNvbnRlbnQgPSByZW5kZXJDaXJjbGVDb250ZW50KHN0ZXAsIGluZGV4LCBpc0NvbXBsZXRlZCAmJiAhaXNEaXNhYmxlZCwgdHlwZSlcblxuICAgIGNvbnN0IGNpcmNsZSA9IGlzQ2xpY2thYmxlID8gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjaXJjbGVDbGFzc2VzfVxuICAgICAgICBzdHlsZT17Y2lyY2xlU3R5bGV9XG4gICAgICAgIGFyaWEtbGFiZWw9e2BHbyB0byBzdGVwICR7aW5kZXggKyAxfSR7c3RlcC5sYWJlbCA/IGA6ICR7c3RlcC5sYWJlbH1gIDogJyd9YH1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25TdGVwQ2xpY2s/LihzdGVwLCBpbmRleCl9XG4gICAgICA+XG4gICAgICAgIHtjaXJjbGVDb250ZW50fVxuICAgICAgPC9idXR0b24+XG4gICAgKSA6IChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjaXJjbGVDbGFzc2VzfVxuICAgICAgICBzdHlsZT17Y2lyY2xlU3R5bGV9XG4gICAgICAgIGFyaWEtY3VycmVudD17aXNBY3RpdmUgPyAnc3RlcCcgOiB1bmRlZmluZWR9XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9e2lzRGlzYWJsZWQgfHwgdW5kZWZpbmVkfVxuICAgICAgPlxuICAgICAgICB7Y2lyY2xlQ29udGVudH1cbiAgICAgIDwvZGl2PlxuICAgIClcblxuICAgIGNvbnN0IGxhYmVsID0gc3RlcC5sYWJlbCA/IChcbiAgICAgIDxzbWFsbCBjbGFzc05hbWU9e2NuKFxuICAgICAgICAnZC1ub25lIGQtc20taW5saW5lJyxcbiAgICAgICAgaXNEaXNhYmxlZFxuICAgICAgICAgID8gJ3RleHQtbXV0ZWQgb3BhY2l0eS01MCdcbiAgICAgICAgICA6IGlzQ29tcGxldGVkIHx8IGlzQWN0aXZlXG4gICAgICAgICAgICA/ICd0ZXh0LXByaW1hcnkgZnctc2VtaWJvbGQnXG4gICAgICAgICAgICA6ICd0ZXh0LXNlY29uZGFyeSdcbiAgICAgICl9PlxuICAgICAgICB7c3RlcC5sYWJlbH1cbiAgICAgIDwvc21hbGw+XG4gICAgKSA6IG51bGxcblxuICAgIGNvbnN0IGNvbm5lY3RvciA9IGluZGV4IDwgc3RlcHMubGVuZ3RoIC0gMSA/IChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbignYm9yZGVyLXRvcCBib3JkZXItMicsIGlzQ29tcGxldGVkID8gJ2JvcmRlci1wcmltYXJ5JyA6ICdib3JkZXItbGlnaHQnKX1cbiAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDI0IH19XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAvPlxuICAgICkgOiBudWxsXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBrZXk9e1N0cmluZyhzdGVwLmtleSl9IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAge2NpcmNsZX1cbiAgICAgICAge2xhYmVsfVxuICAgICAgICB7Y29ubmVjdG9yfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oJ2NhcmQtYm9keSByb3VuZGVkLTAgYm9yZGVyLWJvdHRvbSBweS00IGJnLWxpZ2h0JywgY2xhc3NOYW1lKX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICB7Y2lyY2xlc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aGFzRm9vdGVyICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnY2FyZC1mb290ZXIgYmctYm9keS10ZXJ0aWFyeSBib3JkZXItdG9wIGQtZmxleCcsXG4gICAgICAgICAgICBzaG93UHJldiA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWVuZCcsXG4gICAgICAgICAgICBmb290ZXJDbGFzc05hbWVcbiAgICAgICAgICApfVxuICAgICAgICAgIHN0eWxlPXtmb290ZXJTdHlsZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzaG93UHJldiAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgb25DbGljaz17b25QcmV2fT5cbiAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmFzIGZhLWFycm93LWxlZnQgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIHtwcmV2TGFiZWx9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3Nob3dOZXh0ICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeVwiIGRpc2FibGVkPXtpc05leHREaXNhYmxlZH0gb25DbGljaz17b25OZXh0fT5cbiAgICAgICAgICAgICAge25leHRMYWJlbH1cbiAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmFzIGZhLWFycm93LXJpZ2h0IG1zLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzaG93QWN0aW9uICYmIChcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeVwiIGRpc2FibGVkPXthY3Rpb25EaXNhYmxlZH0gb25DbGljaz17b25BY3Rpb259PlxuICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uSWNvbigpfVxuICAgICAgICAgICAgICB7YWN0aW9uTGFiZWx9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcbn0pXG5cblN0ZXBwZXIuZGlzcGxheU5hbWUgPSAnU3RlcHBlcidcblxuZXhwb3J0IHsgU3RlcHBlciB9XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-RR7TBRGI.js';import*as k from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var V=()=>jsx("i",{className:"fas fa-check","aria-hidden":"true"}),W=(t,b,m,p)=>m?V():p==="icon"&&t.icon?typeof t.icon=="string"?jsx("i",{className:t.icon}):jsx("span",{className:"d-inline-flex align-items-center",children:t.icon}):b+1,X=k.forwardRef(({steps:t=[],active:b,type:m="number",className:p,footerClassName:w,onPrev:u,onNext:f,onAction:y,onStepClick:g,prevLabel:B="Back",nextLabel:P="Next",actionLabel:D="Submit",actionIcon:l,actionDisabled:L=false,nextDisabled:j=false,hidePrevOnFirst:F=true,children:$,style:A,footerStyle:I},z)=>{if(t.length===0)return null;let h=t.findIndex(a=>a.key===b),c=h===-1?0:h,E=c===0,N=c===t.length-1,G=()=>l?typeof l=="string"?jsx("i",{className:a(l,"me-1"),"aria-hidden":"true"}):l:jsx("i",{className:"fas fa-paper-plane me-1","aria-hidden":"true"}),H=!!(u||f||y),S=!!u&&!(F&&E),M=!!y&&N,O=!!f&&!N,T=N?void 0:t[c+1],q=j||!!T?.disabled,J=t.map((a$1,o)=>{let i=o<c,d=o===c,n=!!a$1.disabled,R=!!g&&i&&!n,v=a("rounded-circle d-flex align-items-center justify-content-center fw-semibold",{"border-0":R,"bg-primary text-white":(i||d)&&!n,"bg-light border text-secondary":!i&&!d&&!n,"bg-light border text-muted opacity-50":n}),x={width:32,height:32,fontSize:"0.85rem"},C=W(a$1,o,i&&!n,m),K=R?jsx("button",{type:"button",className:v,style:x,"aria-label":`Go to step ${o+1}${a$1.label?`: ${a$1.label}`:""}`,onClick:()=>g?.(a$1,o),children:C}):jsx("div",{className:v,style:x,"aria-current":d?"step":void 0,"aria-disabled":n||void 0,children:C}),Q=a$1.label?jsx("small",{className:a("d-none d-sm-inline",n?"text-muted opacity-50":i||d?"text-primary fw-semibold":"text-secondary"),children:a$1.label}):null,U=o<t.length-1?jsx("div",{className:a("border-top border-2",i?"border-primary":"border-light"),style:{width:24},"aria-hidden":"true"}):null;return jsxs("div",{className:"d-flex align-items-center gap-2",children:[K,Q,U]},String(a$1.key))});return jsxs(Fragment,{children:[jsx("div",{ref:z,className:a("card-body rounded-0 border-bottom py-4 bg-light",p),style:A,children:jsx("div",{className:"d-flex justify-content-center align-items-center gap-2",children:J})}),$,H&&jsxs("div",{className:a("card-footer bg-body-tertiary border-top d-flex",S?"justify-content-between":"justify-content-end",w),style:I,children:[S&&jsxs("button",{type:"button",className:"btn btn-outline-secondary",onClick:u,children:[jsx("i",{className:"fas fa-arrow-left me-1","aria-hidden":"true"}),B]}),O&&jsxs("button",{type:"button",className:"btn btn-primary",disabled:q,onClick:f,children:[P,jsx("i",{className:"fas fa-arrow-right ms-1","aria-hidden":"true"})]}),M&&jsxs("button",{type:"button",className:"btn btn-primary",disabled:L,onClick:y,children:[G(),D]})]})]})});X.displayName="Stepper";export{X as a};//# sourceMappingURL=chunk-X6TKH77W.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL1N0ZXBwZXIudHN4Il0sIm5hbWVzIjpbInJlbmRlckNoZWNrIiwianN4IiwicmVuZGVyQ2lyY2xlQ29udGVudCIsInN0ZXAiLCJpbmRleCIsImlzQ29tcGxldGVkIiwidHlwZSIsIlN0ZXBwZXIiLCJzdGVwcyIsImFjdGl2ZSIsImNsYXNzTmFtZSIsImZvb3RlckNsYXNzTmFtZSIsIm9uUHJldiIsIm9uTmV4dCIsIm9uQWN0aW9uIiwib25TdGVwQ2xpY2siLCJwcmV2TGFiZWwiLCJuZXh0TGFiZWwiLCJhY3Rpb25MYWJlbCIsImFjdGlvbkljb24iLCJhY3Rpb25EaXNhYmxlZCIsIm5leHREaXNhYmxlZCIsImhpZGVQcmV2T25GaXJzdCIsImNoaWxkcmVuIiwic3R5bGUiLCJmb290ZXJTdHlsZSIsInJlZiIsImFjdGl2ZUluZGV4IiwicyIsImN1cnJlbnRJbmRleCIsImlzRmlyc3QiLCJpc0xhc3QiLCJyZW5kZXJBY3Rpb25JY29uIiwiY24iLCJoYXNGb290ZXIiLCJzaG93UHJldiIsInNob3dBY3Rpb24iLCJzaG93TmV4dCIsIm5leHRTdGVwIiwiaXNOZXh0RGlzYWJsZWQiLCJjaXJjbGVzIiwiaXNBY3RpdmUiLCJpc0Rpc2FibGVkIiwiaXNDbGlja2FibGUiLCJjaXJjbGVDbGFzc2VzIiwiY2lyY2xlU3R5bGUiLCJjaXJjbGVDb250ZW50IiwiY2lyY2xlIiwibGFiZWwiLCJjb25uZWN0b3IiLCJqc3hzIiwiRnJhZ21lbnQiXSwibWFwcGluZ3MiOiI4R0FzRkEsSUFBTUEsQ0FBQUEsQ0FBYyxJQUFNQyxHQUFBQSxDQUFDLEdBQUEsQ0FBQSxDQUFFLFNBQUEsQ0FBVSxjQUFBLENBQWUsYUFBQSxDQUFZLE1BQUEsQ0FBTyxDQUFBLENBRW5FQyxDQUFBQSxDQUFzQixDQUMxQkMsQ0FBQUEsQ0FDQUMsQ0FBQUEsQ0FDQUMsQ0FBQUEsQ0FDQUMsQ0FBQUEsR0FFSUQsQ0FBQUEsQ0FBb0JMLEdBQVksQ0FDaENNLENBQUFBLEdBQVMs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akJkLENBQUFBLENBQUFBLENBQ0gsQ0FBQSxDQUFBLENBRUosQ0FBQSxDQUFBLENBRUosQ0FFSixDQUFDLEVBRURYLENBQUFBLENBQVEsV0FBQSxDQUFjLFNBQUEiLCJmaWxlIjoiY2h1bmstWDZUS0g3N1cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vbGliL2NuLmpzJ1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBwZXJTdGVwIHtcbiAgLyoqIFVuaXF1ZSBzdGVwIGlkZW50aWZpZXIg4oCUIGNvbXBhcmVkIGFnYWluc3QgYGFjdGl2ZWAgKi9cbiAga2V5OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqIExhYmVsIHRleHQgc2hvd24gbmV4dCB0byB0aGUgY2lyY2xlIChoaWRkZW4gb24gZXh0cmEtc21hbGwgc2NyZWVucykgKi9cbiAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIENpcmNsZSBjb250ZW50IHdoZW4gYHR5cGU9XCJpY29uXCJgLiBBIHN0cmluZyBpcyByZW5kZXJlZCBhc1xuICAgKiBgPGkgY2xhc3NOYW1lPXtpY29ufSAvPmAgKHBhc3MgdGhlIGZ1bGwgaWNvbiBjbGFzcywgZS5nLiBgXCJmYXMgZmEtdXNlclwiYCk7XG4gICAqIGEgUmVhY3ROb2RlIChlLmcuIGEgTHVjaWRlIGVsZW1lbnQpIGlzIHJlbmRlcmVkIGFzLWlzLlxuICAgKi9cbiAgaWNvbj86IHN0cmluZyB8IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICogRGlzYWJsZSB0aGlzIHN0ZXAg4oCUIHNldCBleHRlcm5hbGx5IChlLmcuIGZvcm0gdmFsaWRhdGlvbikuXG4gICAqIERpc2FibGVkIHN0ZXBzIHJlbmRlciBkaW1tZWQsIGFyZSBuZXZlciBjbGlja2FibGUsIGFuZCBibG9jayB0aGVcbiAgICogTmV4dCBidXR0b24gd2hlbiB0aGV5IGFyZSB0aGUgZm9sbG93aW5nIHN0ZXAuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGVwcGVyUHJvcHMge1xuICAvKiogU3RlcHMgdG8gcmVuZGVyICovXG4gIHN0ZXBzOiBTdGVwcGVyU3RlcFtdXG4gIC8qKiBLZXkgb2YgdGhlIGN1cnJlbnQgc3RlcCDigJQgZGVmYXVsdHMgdG8gdGhlIGZpcnN0IHN0ZXAncyBrZXkgKi9cbiAgYWN0aXZlPzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBDaXJjbGUgY29udGVudCB0eXBlOlxuICAgKiAtIGBcIm51bWJlclwiYCDigJQgcG9zaXRpb25hbCBudW1iZXIgKDEsIDIsIDPigKYpXG4gICAqIC0gYFwiaWNvblwiYCDigJQgZWFjaCBzdGVwJ3MgYGljb25gIChmYWxscyBiYWNrIHRvIHRoZSBudW1iZXIgd2hlbiBhYnNlbnQpXG4gICAqIENvbXBsZXRlZCBjaXJjbGVzIGFsd2F5cyBzaG93IGEgY2hlY2sgaWNvbiBpbiBib3RoIG1vZGVzLlxuICAgKi9cbiAgdHlwZT86ICdudW1iZXInIHwgJ2ljb24nXG4gIC8qKiBFeHRyYSBjbGFzc2VzIG9uIHRoZSBpbmRpY2F0b3Igd3JhcHBlciAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqIEV4dHJhIGNsYXNzZXMgb24gdGhlIGZvb3RlciB3cmFwcGVyICovXG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZ1xuICAvKiogRmlyZWQgd2hlbiB0aGUgUHJldiBidXR0b24gaXMgY2xpY2tlZCAqL1xuICBvblByZXY/OiAoKSA9PiB2b2lkXG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBOZXh0IGJ1dHRvbiBpcyBjbGlja2VkICovXG4gIG9uTmV4dD86ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIEFjdGlvbiBidXR0b24gKGxhc3Qgc3RlcCkgaXMgY2xpY2tlZC5cbiAgICogUGFzc2luZyB0aGlzIHJlbmRlcnMgdGhlIEFjdGlvbiBidXR0b24gaW4gcGxhY2Ugb2YgTmV4dCBvbiB0aGUgbGFzdCBzdGVwLlxuICAgKi9cbiAgb25BY3Rpb24/OiAoKSA9PiB2b2lkXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIGEgY29tcGxldGVkIHN0ZXAgY2lyY2xlIGlzIGNsaWNrZWQuIFBhc3NpbmcgdGhpcyBtYWtlc1xuICAgKiBjb21wbGV0ZWQsIG5vbi1kaXNhYmxlZCBzdGVwcyBjbGlja2FibGU7IHdpdGhvdXQgaXQgY2lyY2xlcyBhcmVcbiAgICogcHVyZWx5IHZpc3VhbC5cbiAgICovXG4gIG9uU3RlcENsaWNrPzogKHN0ZXA6IFN0ZXBwZXJTdGVwLCBpbmRleDogbnVtYmVyKSA9PiB2b2lkXG4gIC8qKiBQcmV2IGJ1dHRvbiBsYWJlbCAqL1xuICBwcmV2TGFiZWw/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIE5leHQgYnV0dG9uIGxhYmVsICovXG4gIG5leHRMYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogQWN0aW9uIGJ1dHRvbiBsYWJlbCAocmVxdWlyZWQgd2hlbiBgb25BY3Rpb25gIGlzIHByb3ZpZGVkKSAqL1xuICBhY3Rpb25MYWJlbD86IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogTGVhZGluZyBpY29uIGZvciB0aGUgQWN0aW9uIGJ1dHRvbiAqL1xuICBhY3Rpb25JY29uPzogc3RyaW5nIHwgUmVhY3QuUmVhY3ROb2RlXG4gIC8qKiBEaXNhYmxlIHRoZSBBY3Rpb24gYnV0dG9uIOKAlCBlLmcuIHdoaWxlIHN1Ym1pdHRpbmcgb3Igd2hlbiB2YWxpZGF0aW9uIGZhaWxzICovXG4gIGFjdGlvbkRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICogRm9yY2UtZGlzYWJsZSB0aGUgTmV4dCBidXR0b24uIEFsc28gZGlzYWJsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZVxuICAgKiBmb2xsb3dpbmcgc3RlcCBoYXMgYGRpc2FibGVkOiB0cnVlYC5cbiAgICovXG4gIG5leHREaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqIEhpZGUgdGhlIFByZXYgYnV0dG9uIG9uIHRoZSBmaXJzdCBzdGVwICovXG4gIGhpZGVQcmV2T25GaXJzdD86IGJvb2xlYW5cbiAgLyoqIFN0ZXAgY29udGVudCByZW5kZXJlZCBiZXR3ZWVuIHRoZSBpbmRpY2F0b3IgYW5kIHRoZSBmb290ZXIgKi9cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIElubGluZSBzdHlsZXMgb24gdGhlIGluZGljYXRvciB3cmFwcGVyICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuICAvKiogSW5saW5lIHN0eWxlcyBvbiB0aGUgZm9vdGVyIHdyYXBwZXIgKi9cbiAgZm9vdGVyU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogIEhlbHBlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmNvbnN0IHJlbmRlckNoZWNrID0gKCkgPT4gPGkgY2xhc3NOYW1lPVwiZmFzIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cblxuY29uc3QgcmVuZGVyQ2lyY2xlQ29udGVudCA9IChcbiAgc3RlcDogU3RlcHBlclN0ZXAsXG4gIGluZGV4OiBudW1iZXIsXG4gIGlzQ29tcGxldGVkOiBib29sZWFuLFxuICB0eXBlOiBOb25OdWxsYWJsZTxTdGVwcGVyUHJvcHNbJ3R5cGUnXT5cbik6IFJlYWN0LlJlYWN0Tm9kZSA9PiB7XG4gIGlmIChpc0NvbXBsZXRlZCkgcmV0dXJuIHJlbmRlckNoZWNrKClcbiAgaWYgKHR5cGUgPT09ICdpY29uJyAmJiBzdGVwLmljb24pIHtcbiAgICByZXR1cm4gdHlwZW9mIHN0ZXAuaWNvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gPGkgY2xhc3NOYW1lPXtzdGVwLmljb259IC8+XG4gICAgICA6IDxzcGFuIGNsYXNzTmFtZT1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+e3N0ZXAuaWNvbn08L3NwYW4+XG4gIH1cbiAgcmV0dXJuIGluZGV4ICsgMVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qICBTdGVwcGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEhvcml6b250YWwgQm9vdHN0cmFwIDUgc3RlcCBpbmRpY2F0b3Igd2l0aCBidWlsdC1pbiB3aXphcmQgZm9vdGVyXG4gKiAoUHJldiAvIE5leHQgLyBBY3Rpb24gYnV0dG9ucykuIENvbnRyb2xsZWQgY29tcG9uZW50IOKAlCB0aGUgY2FsbGVyIG93bnNcbiAqIHRoZSBjdXJyZW50IHN0ZXAga2V5LCBwZXItc3RlcCB2YWxpZGF0aW9uIChgc3RlcC5kaXNhYmxlZGApLCBhbmQgYWxsXG4gKiBidXR0b24gY2FsbGJhY2tzLlxuICpcbiAqIFRoZSByZW5kZXJlZCBzdHJ1Y3R1cmUgbWlycm9ycyBhIGNhcmQgd2l6YXJkOiBpbmRpY2F0b3Igc3RyaXBcbiAqIChgY2FyZC1ib2R5YCkg4oaSIGBjaGlsZHJlbmAgc3RlcCBjb250ZW50IOKGkiBmb290ZXIgKGBjYXJkLWZvb3RlcmApLlxuICogV2hlbiBubyBidXR0b24gaGFuZGxlcnMgYXJlIHBhc3NlZCwgdGhlIGZvb3RlciBpcyBvbWl0dGVkIGFuZCB0aGVcbiAqIGNvbXBvbmVudCBhY3RzIGFzIGEgcHVyZSBpbmRpY2F0b3IuXG4gKlxuICogTm8gY3VzdG9tIENTUyByZXF1aXJlZCDigJQgQm9vdHN0cmFwIDUgdXRpbGl0eSBjbGFzc2VzIG9ubHkuIEljb25zIHVzZVxuICogRm9udCBBd2Vzb21lIGNsYXNzZXMgKGBmYXMgZmEtKmApLCB3aGljaCB0aGUgaG9zdCBhcHAgbXVzdCBsb2FkLlxuICovXG5jb25zdCBTdGVwcGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU3RlcHBlclByb3BzPigoe1xuICBzdGVwcyA9IFtdLFxuICBhY3RpdmUsXG4gIHR5cGUgPSAnbnVtYmVyJyxcbiAgY2xhc3NOYW1lLFxuICBmb290ZXJDbGFzc05hbWUsXG4gIG9uUHJldixcbiAgb25OZXh0LFxuICBvbkFjdGlvbixcbiAgb25TdGVwQ2xpY2ssXG4gIHByZXZMYWJlbCA9ICdCYWNrJyxcbiAgbmV4dExhYmVsID0gJ05leHQnLFxuICBhY3Rpb25MYWJlbCA9ICdTdWJtaXQnLFxuICBhY3Rpb25JY29uLFxuICBhY3Rpb25EaXNhYmxlZCA9IGZhbHNlLFxuICBuZXh0RGlzYWJsZWQgPSBmYWxzZSxcbiAgaGlkZVByZXZPbkZpcnN0ID0gdHJ1ZSxcbiAgY2hpbGRyZW4sXG4gIHN0eWxlLFxuICBmb290ZXJTdHlsZVxufSwgcmVmKSA9PiB7XG4gIGlmIChzdGVwcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG5cbiAgY29uc3QgYWN0aXZlSW5kZXggPSBzdGVwcy5maW5kSW5kZXgoKHMpID0+IHMua2V5ID09PSBhY3RpdmUpXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGFjdGl2ZUluZGV4ID09PSAtMSA/IDAgOiBhY3RpdmVJbmRleFxuICBjb25zdCBpc0ZpcnN0ID0gY3VycmVudEluZGV4ID09PSAwXG4gIGNvbnN0IGlzTGFzdCA9IGN1cnJlbnRJbmRleCA9PT0gc3RlcHMubGVuZ3RoIC0gMVxuXG4gIGNvbnN0IHJlbmRlckFjdGlvbkljb24gPSAoKTogUmVhY3QuUmVhY3ROb2RlID0+IHtcbiAgICBpZiAoYWN0aW9uSWNvbikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBhY3Rpb25JY29uID09PSAnc3RyaW5nJ1xuICAgICAgICA/IDxpIGNsYXNzTmFtZT17Y24oYWN0aW9uSWNvbiwgJ21lLTEnKX0gYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgOiBhY3Rpb25JY29uXG4gICAgfVxuICAgIHJldHVybiA8aSBjbGFzc05hbWU9XCJmYXMgZmEtcGFwZXItcGxhbmUgbWUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gIH1cblxuICBjb25zdCBoYXNGb290ZXIgPSBCb29sZWFuKG9uUHJldiB8fCBvbk5leHQgfHwgb25BY3Rpb24pXG4gIGNvbnN0IHNob3dQcmV2ID0gQm9vbGVhbihvblByZXYpICYmICEoaGlkZVByZXZPbkZpcnN0ICYmIGlzRmlyc3QpXG4gIGNvbnN0IHNob3dBY3Rpb24gPSBCb29sZWFuKG9uQWN0aW9uKSAmJiBpc0xhc3RcbiAgY29uc3Qgc2hvd05leHQgPSBCb29sZWFuKG9uTmV4dCkgJiYgIWlzTGFzdFxuICBjb25zdCBuZXh0U3RlcCA9IGlzTGFzdCA/IHVuZGVmaW5lZCA6IHN0ZXBzW2N1cnJlbnRJbmRleCArIDFdXG4gIGNvbnN0IGlzTmV4dERpc2FibGVkID0gbmV4dERpc2FibGVkIHx8IEJvb2xlYW4obmV4dFN0ZXA/LmRpc2FibGVkKVxuXG4gIGNvbnN0IGNpcmNsZXMgPSBzdGVwcy5tYXAoKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaXNDb21wbGV0ZWQgPSBpbmRleCA8IGN1cnJlbnRJbmRleFxuICAgIGNvbnN0IGlzQWN0aXZlID0gaW5kZXggPT09IGN1cnJlbnRJbmRleFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBCb29sZWFuKHN0ZXAuZGlzYWJsZWQpXG4gICAgY29uc3QgaXNDbGlja2FibGUgPSBCb29sZWFuKG9uU3RlcENsaWNrKSAmJiBpc0NvbXBsZXRlZCAmJiAhaXNEaXNhYmxlZFxuXG4gICAgY29uc3QgY2lyY2xlQ2xhc3NlcyA9IGNuKFxuICAgICAgJ3JvdW5kZWQtY2lyY2xlIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmdy1zZW1pYm9sZCcsXG4gICAgICB7XG4gICAgICAgICdib3JkZXItMCc6IGlzQ2xpY2thYmxlLFxuICAgICAgICAnYmctcHJpbWFyeSB0ZXh0LXdoaXRlJzogKGlzQ29tcGxldGVkIHx8IGlzQWN0aXZlKSAmJiAhaXNEaXNhYmxlZCxcbiAgICAgICAgJ2JnLWxpZ2h0IGJvcmRlciB0ZXh0LXNlY29uZGFyeSc6ICFpc0NvbXBsZXRlZCAmJiAhaXNBY3RpdmUgJiYgIWlzRGlzYWJsZWQsXG4gICAgICAgICdiZy1saWdodCBib3JkZXIgdGV4dC1tdXRlZCBvcGFjaXR5LTUwJzogaXNEaXNhYmxlZFxuICAgICAgfVxuICAgIClcbiAgICBjb25zdCBjaXJjbGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHsgd2lkdGg6IDMyLCBoZWlnaHQ6IDMyLCBmb250U2l6ZTogJzAuODVyZW0nIH1cbiAgICBjb25zdCBjaXJjbGVDb250ZW50ID0gcmVuZGVyQ2lyY2xlQ29udGVudChzdGVwLCBpbmRleCwgaXNDb21wbGV0ZWQgJiYgIWlzRGlzYWJsZWQsIHR5cGUpXG5cbiAgICBjb25zdCBjaXJjbGUgPSBpc0NsaWNrYWJsZSA/IChcbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17Y2lyY2xlQ2xhc3Nlc31cbiAgICAgICAgc3R5bGU9e2NpcmNsZVN0eWxlfVxuICAgICAgICBhcmlhLWxhYmVsPXtgR28gdG8gc3RlcCAke2luZGV4ICsgMX0ke3N0ZXAubGFiZWwgPyBgOiAke3N0ZXAubGFiZWx9YCA6ICcnfWB9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU3RlcENsaWNrPy4oc3RlcCwgaW5kZXgpfVxuICAgICAgPlxuICAgICAgICB7Y2lyY2xlQ29udGVudH1cbiAgICAgIDwvYnV0dG9uPlxuICAgICkgOiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2lyY2xlQ2xhc3Nlc31cbiAgICAgICAgc3R5bGU9e2NpcmNsZVN0eWxlfVxuICAgICAgICBhcmlhLWN1cnJlbnQ9e2lzQWN0aXZlID8gJ3N0ZXAnIDogdW5kZWZpbmVkfVxuICAgICAgICBhcmlhLWRpc2FibGVkPXtpc0Rpc2FibGVkIHx8IHVuZGVmaW5lZH1cbiAgICAgID5cbiAgICAgICAge2NpcmNsZUNvbnRlbnR9XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICBjb25zdCBsYWJlbCA9IHN0ZXAubGFiZWwgPyAoXG4gICAgICA8c21hbGwgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2Qtbm9uZSBkLXNtLWlubGluZScsXG4gICAgICAgIGlzRGlzYWJsZWRcbiAgICAgICAgICA/ICd0ZXh0LW11dGVkIG9wYWNpdHktNTAnXG4gICAgICAgICAgOiBpc0NvbXBsZXRlZCB8fCBpc0FjdGl2ZVxuICAgICAgICAgICAgPyAndGV4dC1wcmltYXJ5IGZ3LXNlbWlib2xkJ1xuICAgICAgICAgICAgOiAndGV4dC1zZWNvbmRhcnknXG4gICAgICApfT5cbiAgICAgICAge3N0ZXAubGFiZWx9XG4gICAgICA8L3NtYWxsPlxuICAgICkgOiBudWxsXG5cbiAgICBjb25zdCBjb25uZWN0b3IgPSBpbmRleCA8IHN0ZXBzLmxlbmd0aCAtIDEgPyAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y24oJ2JvcmRlci10b3AgYm9yZGVyLTInLCBpc0NvbXBsZXRlZCA/ICdib3JkZXItcHJpbWFyeScgOiAnYm9yZGVyLWxpZ2h0Jyl9XG4gICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyNCB9fVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgLz5cbiAgICApIDogbnVsbFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYga2V5PXtTdHJpbmcoc3RlcC5rZXkpfSBjbGFzc05hbWU9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIHtjaXJjbGV9XG4gICAgICAgIHtsYWJlbH1cbiAgICAgICAge2Nvbm5lY3Rvcn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKCdjYXJkLWJvZHkgcm91bmRlZC0wIGJvcmRlci1ib3R0b20gcHktNCBiZy1saWdodCcsIGNsYXNzTmFtZSl9IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAge2NpcmNsZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjaGlsZHJlbn1cblxuICAgICAge2hhc0Zvb3RlciAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2NhcmQtZm9vdGVyIGJnLWJvZHktdGVydGlhcnkgYm9yZGVyLXRvcCBkLWZsZXgnLFxuICAgICAgICAgICAgc2hvd1ByZXYgPyAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nIDogJ2p1c3RpZnktY29udGVudC1lbmQnLFxuICAgICAgICAgICAgZm9vdGVyQ2xhc3NOYW1lXG4gICAgICAgICAgKX1cbiAgICAgICAgICBzdHlsZT17Zm9vdGVyU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7c2hvd1ByZXYgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIG9uQ2xpY2s9e29uUHJldn0+XG4gICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhcyBmYS1hcnJvdy1sZWZ0IG1lLTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICB7cHJldkxhYmVsfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzaG93TmV4dCAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBkaXNhYmxlZD17aXNOZXh0RGlzYWJsZWR9IG9uQ2xpY2s9e29uTmV4dH0+XG4gICAgICAgICAgICAgIHtuZXh0TGFiZWx9XG4gICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhcyBmYS1hcnJvdy1yaWdodCBtcy0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7c2hvd0FjdGlvbiAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBkaXNhYmxlZD17YWN0aW9uRGlzYWJsZWR9IG9uQ2xpY2s9e29uQWN0aW9ufT5cbiAgICAgICAgICAgICAge3JlbmRlckFjdGlvbkljb24oKX1cbiAgICAgICAgICAgICAge2FjdGlvbkxhYmVsfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApXG59KVxuXG5TdGVwcGVyLmRpc3BsYXlOYW1lID0gJ1N0ZXBwZXInXG5cbmV4cG9ydCB7IFN0ZXBwZXIgfVxuIl19
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkKHECBLQX_cjs=require('./chunk-KHECBLQX.cjs'),chunkI2HKEXOJ_cjs=require('./chunk-I2HKEXOJ.cjs'),chunkDLTHOI35_cjs=require('./chunk-DLTHOI35.cjs'),chunkJAD36SSE_cjs=require('./chunk-JAD36SSE.cjs'),chunkVHL6HDDM_cjs=require('./chunk-VHL6HDDM.cjs'),chunk42N74TNX_cjs=require('./chunk-42N74TNX.cjs'),chunk675RXADI_cjs=require('./chunk-675RXADI.cjs'),chunk52FOSLLU_cjs=require('./chunk-52FOSLLU.cjs'),chunkRSLRCVQR_cjs=require('./chunk-RSLRCVQR.cjs'),chunkIIQAPOHX_cjs=require('./chunk-IIQAPOHX.cjs');require('./chunk-NPQQDBFB.cjs');var chunk5ARKG2CR_cjs=require('./chunk-5ARKG2CR.cjs');Object.defineProperty(exports,"InputCurrency",{enumerable:true,get:function(){return chunkKHECBLQX_cjs.a}});Object.defineProperty(exports,"ListGroup",{enumerable:true,get:function(){return chunkI2HKEXOJ_cjs.a}});Object.defineProperty(exports,"FormRow",{enumerable:true,get:function(){return chunkDLTHOI35_cjs.a}});Object.defineProperty(exports,"ConfirmDialog",{enumerable:true,get:function(){return chunkJAD36SSE_cjs.a}});Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkVHL6HDDM_cjs.a}});Object.defineProperty(exports,"SearchSelect",{enumerable:true,get:function(){return chunk42N74TNX_cjs.a}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunk675RXADI_cjs.a}});Object.defineProperty(exports,"TableLoading",{enumerable:true,get:function(){return chunk52FOSLLU_cjs.a}});Object.defineProperty(exports,"AutoTextarea",{enumerable:true,get:function(){return chunkRSLRCVQR_cjs.a}});Object.defineProperty(exports,"NavPills",{enumerable:true,get:function(){return chunkIIQAPOHX_cjs.a}});Object.defineProperty(exports,"AutoDisplay",{enumerable:true,get:function(){return chunk5ARKG2CR_cjs.a}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkKHECBLQX_cjs=require('./chunk-KHECBLQX.cjs'),chunkI2HKEXOJ_cjs=require('./chunk-I2HKEXOJ.cjs'),chunkDLTHOI35_cjs=require('./chunk-DLTHOI35.cjs'),chunkJAD36SSE_cjs=require('./chunk-JAD36SSE.cjs'),chunkN5OCJE5J_cjs=require('./chunk-N5OCJE5J.cjs'),chunkVHL6HDDM_cjs=require('./chunk-VHL6HDDM.cjs'),chunk42N74TNX_cjs=require('./chunk-42N74TNX.cjs'),chunk675RXADI_cjs=require('./chunk-675RXADI.cjs'),chunk52FOSLLU_cjs=require('./chunk-52FOSLLU.cjs'),chunkRSLRCVQR_cjs=require('./chunk-RSLRCVQR.cjs'),chunkIIQAPOHX_cjs=require('./chunk-IIQAPOHX.cjs');require('./chunk-NPQQDBFB.cjs');var chunk5ARKG2CR_cjs=require('./chunk-5ARKG2CR.cjs');Object.defineProperty(exports,"InputCurrency",{enumerable:true,get:function(){return chunkKHECBLQX_cjs.a}});Object.defineProperty(exports,"ListGroup",{enumerable:true,get:function(){return chunkI2HKEXOJ_cjs.a}});Object.defineProperty(exports,"FormRow",{enumerable:true,get:function(){return chunkDLTHOI35_cjs.a}});Object.defineProperty(exports,"ConfirmDialog",{enumerable:true,get:function(){return chunkJAD36SSE_cjs.a}});Object.defineProperty(exports,"Stepper",{enumerable:true,get:function(){return chunkN5OCJE5J_cjs.a}});Object.defineProperty(exports,"DatePicker",{enumerable:true,get:function(){return chunkVHL6HDDM_cjs.a}});Object.defineProperty(exports,"SearchSelect",{enumerable:true,get:function(){return chunk42N74TNX_cjs.a}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunk675RXADI_cjs.a}});Object.defineProperty(exports,"TableLoading",{enumerable:true,get:function(){return chunk52FOSLLU_cjs.a}});Object.defineProperty(exports,"AutoTextarea",{enumerable:true,get:function(){return chunkRSLRCVQR_cjs.a}});Object.defineProperty(exports,"NavPills",{enumerable:true,get:function(){return chunkIIQAPOHX_cjs.a}});Object.defineProperty(exports,"AutoDisplay",{enumerable:true,get:function(){return chunk5ARKG2CR_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmRleC5janMifQ==
package/dist/index.d.cts CHANGED
@@ -9,4 +9,5 @@ export { InputCurrency, InputCurrencyProps } from './InputCurrency.cjs';
9
9
  export { ListGroup, ListGroupItem, ListGroupProps } from './ListGroup.cjs';
10
10
  export { FormRow, FormRowProps } from './FormRow.cjs';
11
11
  export { ConfirmDialog, ConfirmDialogProps, ConfirmDialogVariant } from './ConfirmDialog.cjs';
12
+ export { Stepper, StepperProps, StepperStep } from './Stepper.cjs';
12
13
  import 'react';
package/dist/index.d.ts CHANGED
@@ -9,4 +9,5 @@ export { InputCurrency, InputCurrencyProps } from './InputCurrency.js';
9
9
  export { ListGroup, ListGroupItem, ListGroupProps } from './ListGroup.js';
10
10
  export { FormRow, FormRowProps } from './FormRow.js';
11
11
  export { ConfirmDialog, ConfirmDialogProps, ConfirmDialogVariant } from './ConfirmDialog.js';
12
+ export { Stepper, StepperProps, StepperStep } from './Stepper.js';
12
13
  import 'react';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{a as InputCurrency}from'./chunk-6SOXX6RU.js';export{a as ListGroup}from'./chunk-FZ4KI5ZP.js';export{a as FormRow}from'./chunk-3ADGRA2S.js';export{a as ConfirmDialog}from'./chunk-YED54A5N.js';export{a as DatePicker}from'./chunk-CXMV4Q5F.js';export{a as SearchSelect}from'./chunk-XMOYELJE.js';export{a as Label}from'./chunk-VN3NDALJ.js';export{a as TableLoading}from'./chunk-2JHXYFQ6.js';export{a as AutoTextarea}from'./chunk-723CRTRY.js';export{a as NavPills}from'./chunk-DJZ3USAO.js';import'./chunk-RR7TBRGI.js';export{a as AutoDisplay}from'./chunk-5CHRUXRG.js';//# sourceMappingURL=index.js.map
1
+ export{a as InputCurrency}from'./chunk-6SOXX6RU.js';export{a as ListGroup}from'./chunk-FZ4KI5ZP.js';export{a as FormRow}from'./chunk-3ADGRA2S.js';export{a as ConfirmDialog}from'./chunk-YED54A5N.js';export{a as Stepper}from'./chunk-X6TKH77W.js';export{a as DatePicker}from'./chunk-CXMV4Q5F.js';export{a as SearchSelect}from'./chunk-XMOYELJE.js';export{a as Label}from'./chunk-VN3NDALJ.js';export{a as TableLoading}from'./chunk-2JHXYFQ6.js';export{a as AutoTextarea}from'./chunk-723CRTRY.js';export{a as NavPills}from'./chunk-DJZ3USAO.js';import'./chunk-RR7TBRGI.js';export{a as AutoDisplay}from'./chunk-5CHRUXRG.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJpbmRleC5qcyJ9
@@ -0,0 +1,111 @@
1
+ # Stepper
2
+
3
+ Zero-dependency Bootstrap 5 step indicator with a built-in wizard footer (Prev / Next / Action buttons). Controlled component — you own the current step, per-step validation, and every callback. Pure Bootstrap utility classes: no plugin CSS required.
4
+
5
+ ## Import
6
+
7
+ ```js
8
+ import { Stepper } from 'react-bootstrap-plugins/Stepper'
9
+ // or
10
+ import { Stepper } from 'react-bootstrap-plugins'
11
+ ```
12
+
13
+ Requires Bootstrap 5 CSS and Font Awesome icons (`fas fa-*`) loaded in your app.
14
+
15
+ ## Usage
16
+
17
+ ```jsx
18
+ const [step, setStep] = useState(1)
19
+
20
+ <Stepper
21
+ steps={[
22
+ { key: 1, label: 'Guide' },
23
+ { key: 2, label: 'Accounts', disabled: validateStep2 }, // validated externally
24
+ { key: 3, label: 'Details' },
25
+ ]}
26
+ active={step}
27
+ onPrev={() => setStep((s) => s - 1)}
28
+ onNext={() => setStep((s) => s + 1)}
29
+ onAction={submitTransfer}
30
+ actionLabel="Transfer Funds"
31
+ actionDisabled={validateStep3 || loading}
32
+ >
33
+ {step === 1 && <StepOneContent />}
34
+ {step === 2 && <StepTwoContent />}
35
+ {step === 3 && <StepThreeContent />}
36
+ </Stepper>
37
+ ```
38
+
39
+ The component renders the indicator strip, your `children` (step content), then the footer — designed to sit inside a Bootstrap `.card`.
40
+
41
+ **Icon mode** — circles show each step's icon instead of a number:
42
+
43
+ ```jsx
44
+ <Stepper
45
+ type="icon"
46
+ steps={[
47
+ { key: 'info', label: 'Info', icon: 'fas fa-info' },
48
+ { key: 'accounts', label: 'Accounts', icon: 'fas fa-university' },
49
+ ]}
50
+ active="info"
51
+ />
52
+ ```
53
+
54
+ **Pure indicator** — omit all button handlers and the footer disappears:
55
+
56
+ ```jsx
57
+ <Stepper steps={steps} active={current} />
58
+ ```
59
+
60
+ **Clickable history** — pass `onStepClick` to let users jump back to completed steps:
61
+
62
+ ```jsx
63
+ <Stepper
64
+ steps={steps}
65
+ active={current}
66
+ onStepClick={(_, index) => setCurrent(steps[index].key)}
67
+ />
68
+ ```
69
+
70
+ ## Props
71
+
72
+ | Prop | Type | Default | Description |
73
+ |------|------|---------|-------------|
74
+ | `steps` | `StepperStep[]` | required | Steps to render |
75
+ | `active` | `string \| number` | first step's key | Key of the current step |
76
+ | `type` | `"number" \| "icon"` | `"number"` | Circle content; completed circles always show a check |
77
+ | `className` | `string` | — | Extra classes on the indicator wrapper |
78
+ | `footerClassName` | `string` | — | Extra classes on the footer wrapper |
79
+ | `style` / `footerStyle` | `CSSProperties` | — | Inline styles |
80
+ | `onPrev` | `() => void` | — | Prev button click |
81
+ | `onNext` | `() => void` | — | Next button click |
82
+ | `onAction` | `() => void` | — | Action button click (shown on the last step in place of Next) |
83
+ | `onStepClick` | `(step, index) => void` | — | Makes completed, non-disabled circles clickable |
84
+ | `prevLabel` | `ReactNode` | `"Back"` | Prev button label |
85
+ | `nextLabel` | `ReactNode` | `"Next"` | Next button label |
86
+ | `actionLabel` | `ReactNode` | `"Submit"` | Action button label |
87
+ | `actionIcon` | `string \| ReactNode` | paper-plane icon | Leading icon; string = `<i className>` |
88
+ | `actionDisabled` | `boolean` | `false` | Disable the Action button (e.g. while submitting) |
89
+ | `nextDisabled` | `boolean` | `false` | Force-disable Next (also auto-disabled when the next step has `disabled: true`) |
90
+ | `hidePrevOnFirst` | `boolean` | `true` | Hide Prev on the first step; footer right-aligns when hidden |
91
+ | `children` | `ReactNode` | — | Step content rendered between indicator and footer |
92
+
93
+ ### `StepperStep`
94
+
95
+ | Prop | Type | Description |
96
+ |------|------|-------------|
97
+ | `key` | `string \| number` | Unique identifier, compared against `active` |
98
+ | `label` | `ReactNode` | Text next to the circle (hidden on extra-small screens) |
99
+ | `icon` | `string \| ReactNode` | Circle content in `"icon"` mode |
100
+ | `disabled` | `boolean` | Disabled steps render dimmed, are never clickable, and block Next |
101
+
102
+ ## Behavior
103
+
104
+ - **Completed circles** show a check icon; active circle is `bg-primary`; pending circles are light with a border.
105
+ - **Connector lines** between circles turn primary once the left step is completed.
106
+ - **Footer layout:** Prev hidden on the first step (footer right-aligns). Next hidden on the last step, replaced by the Action button when `onAction` is passed.
107
+ - **Accessibility:** native buttons, `aria-current="step"` on the active circle, `aria-disabled` on disabled steps, `aria-label` on clickable circles, icon-only elements hidden from screen readers.
108
+
109
+ ## Dark Mode
110
+
111
+ All colors use Bootstrap CSS variables — adapts automatically via `[data-bs-theme="dark"]`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-bootstrap-plugins",
3
- "version": "3.0.4",
3
+ "version": "3.1.0",
4
4
  "description": "Production-grade Bootstrap 5 UI plugins for React — DatePicker, SearchSelect, Label, TableLoading, InputCurrency, and more. Zero runtime dependencies beyond React.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -79,7 +79,12 @@
79
79
  "currency-input",
80
80
  "currency-formatter",
81
81
  "number-input",
82
- "financial-input"
82
+ "financial-input",
83
+ "stepper",
84
+ "wizard",
85
+ "steps",
86
+ "step-indicator",
87
+ "multi-step-form"
83
88
  ],
84
89
  "repository": {
85
90
  "type": "git",
@@ -109,7 +114,7 @@
109
114
  "typescript": "^5.6.0"
110
115
  },
111
116
  "engines": {
112
- "node": ">=18.0.0"
117
+ "node": ">=22.0.0"
113
118
  },
114
119
  "publishConfig": {
115
120
  "access": "public"