klip-components 0.7.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +226 -1
- package/dist/klip-components.cjs.js +1 -1
- package/dist/klip-components.css +1 -1
- package/dist/klip-components.es.js +240 -14
- package/dist/klip-components.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { ClassValue } from 'clsx';
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { default as default_2 } from 'react';
|
|
4
|
+
import { JSX } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
export declare interface BorderRadius {
|
|
7
|
+
sm: string;
|
|
8
|
+
base: string;
|
|
9
|
+
lg: string;
|
|
10
|
+
full: string;
|
|
11
|
+
}
|
|
4
12
|
|
|
5
13
|
/**
|
|
6
14
|
* A flexible and reusable Button component with multiple variants, sizes, and styling options.
|
|
@@ -10,6 +18,7 @@ import { default as default_2 } from 'react';
|
|
|
10
18
|
* @param {ButtonProps} props - The props for the Button component
|
|
11
19
|
* @param {('primary'|'secondary'|'success'|'danger')} [props.variant='primary'] - Visual style variant
|
|
12
20
|
* @param {('sm'|'md'|'lg')} [props.size='md'] - Button size
|
|
21
|
+
* @param {('rectangle'|'square'|'circle')} [props.shape='rectangle'] - Button shape
|
|
13
22
|
* @param {boolean} [props.block=false] - Whether button should be full width
|
|
14
23
|
* @param {string} [props.className=''] - Additional CSS classes to apply
|
|
15
24
|
* @param {React.ReactNode} props.children - Content to render inside the button
|
|
@@ -44,6 +53,32 @@ import { default as default_2 } from 'react';
|
|
|
44
53
|
* >
|
|
45
54
|
* Save Changes
|
|
46
55
|
* </Button>
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // Loading button
|
|
59
|
+
* <Button loading>
|
|
60
|
+
* Processing...
|
|
61
|
+
* </Button>
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* // Square button with icon
|
|
65
|
+
* <Button
|
|
66
|
+
* variant="primary"
|
|
67
|
+
* shape="square"
|
|
68
|
+
* startIcon={<Icon />}
|
|
69
|
+
* >
|
|
70
|
+
* S
|
|
71
|
+
* </Button>
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Circular button
|
|
75
|
+
* <Button
|
|
76
|
+
* variant="info"
|
|
77
|
+
* shape="circle"
|
|
78
|
+
* size="lg"
|
|
79
|
+
* >
|
|
80
|
+
* +
|
|
81
|
+
* </Button>
|
|
47
82
|
*/
|
|
48
83
|
export declare const Button: default_2.FC<ButtonProps>;
|
|
49
84
|
|
|
@@ -52,10 +87,14 @@ export declare interface ButtonProps extends default_2.ButtonHTMLAttributes<HTML
|
|
|
52
87
|
variant?: ButtonVariant;
|
|
53
88
|
/** Size of the button */
|
|
54
89
|
size?: ButtonSize;
|
|
90
|
+
/** Shape of the button */
|
|
91
|
+
shape?: ButtonShape;
|
|
55
92
|
/** Icon to display at the start of the button */
|
|
56
93
|
startIcon?: default_2.ReactNode;
|
|
57
94
|
/** Icon to display at the end of the button */
|
|
58
95
|
endIcon?: default_2.ReactNode;
|
|
96
|
+
/** Whether the button is in a loading state */
|
|
97
|
+
loading?: boolean;
|
|
59
98
|
/** Content to be rendered inside the button */
|
|
60
99
|
children: default_2.ReactNode;
|
|
61
100
|
}
|
|
@@ -77,14 +116,56 @@ export declare interface ButtonSelectProps {
|
|
|
77
116
|
|
|
78
117
|
export declare type ButtonSelectValue = string | string[];
|
|
79
118
|
|
|
119
|
+
declare type ButtonShape = 'rectangle' | 'pill' | 'square' | 'circle';
|
|
120
|
+
|
|
80
121
|
declare type ButtonSize = 'sm' | 'md' | 'lg';
|
|
81
122
|
|
|
82
123
|
/**
|
|
83
|
-
* Props interface for
|
|
124
|
+
* Props interface for theexport const Button: React.FC<ButtonProps> = ({
|
|
125
|
+
variant = 'primary',
|
|
126
|
+
size = 'md',
|
|
127
|
+
shape = 'rectangle',
|
|
128
|
+
startIcon,
|
|
129
|
+
endIcon,
|
|
130
|
+
loading = false,
|
|
131
|
+
className = '',
|
|
132
|
+
children,
|
|
133
|
+
disabled,
|
|
134
|
+
...props
|
|
135
|
+
}) => {
|
|
136
|
+
return (
|
|
137
|
+
<button
|
|
138
|
+
className={cn(
|
|
139
|
+
'btn',
|
|
140
|
+
`btn-${variant}`,
|
|
141
|
+
`btn-${size}`,
|
|
142
|
+
`btn-${shape}`,
|
|
143
|
+
{ 'btn-loading': loading },
|
|
144
|
+
className
|
|
145
|
+
)}
|
|
146
|
+
disabled={disabled || loading}
|
|
147
|
+
{...props}
|
|
148
|
+
>
|
|
149
|
+
{loading ? (
|
|
150
|
+
<Spinner />
|
|
151
|
+
) : (
|
|
152
|
+
<>
|
|
153
|
+
{startIcon && <span className="btn-icon-start">{startIcon}</span>}
|
|
154
|
+
{children}
|
|
155
|
+
{endIcon && <span className="btn-icon-end">{endIcon}</span>}
|
|
156
|
+
</>
|
|
157
|
+
)}
|
|
158
|
+
</button>
|
|
159
|
+
);
|
|
160
|
+
};
|
|
84
161
|
* Extends standard HTML button attributes with additional styling options.
|
|
85
162
|
*/
|
|
86
163
|
declare type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'link' | 'outline' | 'ghost' | 'icon';
|
|
87
164
|
|
|
165
|
+
export declare const ChevronLeft: React.FC<Props>;
|
|
166
|
+
|
|
167
|
+
export declare const ChevronRight: React.FC<Props_2>;
|
|
168
|
+
|
|
88
169
|
export { ClassValue }
|
|
89
170
|
|
|
90
171
|
export { clsx }
|
|
@@ -107,6 +188,35 @@ export { clsx }
|
|
|
107
188
|
*/
|
|
108
189
|
export declare function cn(...inputs: ClassValue[]): string;
|
|
109
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Theme system type definitions for klip-components
|
|
193
|
+
* Provides type safety for color palettes and design tokens
|
|
194
|
+
*/
|
|
195
|
+
export declare interface ColorPalette {
|
|
196
|
+
/** Primary color variants */
|
|
197
|
+
primary: {
|
|
198
|
+
main: string;
|
|
199
|
+
hover: string;
|
|
200
|
+
};
|
|
201
|
+
/** Secondary color variants */
|
|
202
|
+
secondary: {
|
|
203
|
+
main: string;
|
|
204
|
+
hover: string;
|
|
205
|
+
};
|
|
206
|
+
/** Semantic colors */
|
|
207
|
+
semantic: {
|
|
208
|
+
success: string;
|
|
209
|
+
danger: string;
|
|
210
|
+
warning: string;
|
|
211
|
+
info: string;
|
|
212
|
+
light: string;
|
|
213
|
+
dark: string;
|
|
214
|
+
link: string;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export declare const DOTS = "...";
|
|
219
|
+
|
|
110
220
|
export declare type HtmlInput = Omit<default_2.InputHTMLAttributes<HTMLInputElement>, 'prefix' | 'suffix' | 'type' | 'onChange'>;
|
|
111
221
|
|
|
112
222
|
/**
|
|
@@ -163,6 +273,17 @@ declare type HtmlToggle = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'typ
|
|
|
163
273
|
* />
|
|
164
274
|
* );
|
|
165
275
|
* };
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* // Loading input
|
|
279
|
+
* const LoadingExample = () => (
|
|
280
|
+
* <Input
|
|
281
|
+
* label="Processing"
|
|
282
|
+
* placeholder="Please wait..."
|
|
283
|
+
* loading={true}
|
|
284
|
+
* disabled={true}
|
|
285
|
+
* />
|
|
286
|
+
* );
|
|
166
287
|
*/
|
|
167
288
|
export declare const Input: default_2.FC<InputProps>;
|
|
168
289
|
|
|
@@ -187,6 +308,8 @@ export declare interface InputProps extends HtmlInput {
|
|
|
187
308
|
helperTextClass?: default_2.HTMLAttributes<HTMLInputElement>['className'];
|
|
188
309
|
/** Whether the input has an error */
|
|
189
310
|
hasError?: boolean;
|
|
311
|
+
/** Whether the input is in a loading state */
|
|
312
|
+
loading?: boolean;
|
|
190
313
|
}
|
|
191
314
|
|
|
192
315
|
export declare type InputVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';
|
|
@@ -209,6 +332,91 @@ export declare type InputVariant = 'primary' | 'secondary' | 'success' | 'danger
|
|
|
209
332
|
*/
|
|
210
333
|
export declare function mergeClasses(...classes: string[]): string;
|
|
211
334
|
|
|
335
|
+
export declare const Pagination: default_2.FC<PaginationProps>;
|
|
336
|
+
|
|
337
|
+
export declare interface PaginationProps {
|
|
338
|
+
/** Current active page (1-based) */
|
|
339
|
+
currentPage: number;
|
|
340
|
+
/** Total number of pages */
|
|
341
|
+
totalPages: number;
|
|
342
|
+
/** Callback function called when page changes */
|
|
343
|
+
onPageChange: (page: number) => void;
|
|
344
|
+
/** Number of pages to show before and after current page */
|
|
345
|
+
siblingCount?: number;
|
|
346
|
+
/** Whether to hide previous button */
|
|
347
|
+
hidePrevButton?: boolean;
|
|
348
|
+
/** Whether to hide next button */
|
|
349
|
+
hideNextButton?: boolean;
|
|
350
|
+
/** Size of the pagination buttons */
|
|
351
|
+
size?: 'sm' | 'md' | 'lg';
|
|
352
|
+
/** Variant of the pagination buttons */
|
|
353
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'ghost';
|
|
354
|
+
/** Additional CSS class */
|
|
355
|
+
className?: string;
|
|
356
|
+
/** Whether pagination buttons should be disabled */
|
|
357
|
+
disabled?: boolean;
|
|
358
|
+
/** Enable mobile view with only arrows and page indicator */
|
|
359
|
+
mobile?: boolean;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
declare interface Props {
|
|
363
|
+
width?: number;
|
|
364
|
+
height?: number;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
declare interface Props_2 {
|
|
368
|
+
width?: number;
|
|
369
|
+
height?: number;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
export declare interface Shadows {
|
|
373
|
+
sm: string;
|
|
374
|
+
md: string;
|
|
375
|
+
lg: string;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
export declare interface SpacingScale {
|
|
379
|
+
xs: string;
|
|
380
|
+
sm: string;
|
|
381
|
+
md: string;
|
|
382
|
+
lg: string;
|
|
383
|
+
xl: string;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export declare const Spinner: ({ color, size }: SpinnerProps) => JSX.Element;
|
|
387
|
+
|
|
388
|
+
declare interface SpinnerProps {
|
|
389
|
+
color?: string;
|
|
390
|
+
size?: number;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Complete theme configuration
|
|
395
|
+
*/
|
|
396
|
+
export declare interface Theme {
|
|
397
|
+
colors: ColorPalette;
|
|
398
|
+
spacing: SpacingScale;
|
|
399
|
+
borderRadius: BorderRadius;
|
|
400
|
+
typography: Typography;
|
|
401
|
+
shadows: Shadows;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Theme mode options
|
|
406
|
+
*/
|
|
407
|
+
export declare type ThemeMode = 'light' | 'dark' | 'auto';
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Partial theme for customization - allows users to override only specific parts
|
|
411
|
+
*/
|
|
412
|
+
export declare type ThemeOverride = {
|
|
413
|
+
colors?: Partial<ColorPalette>;
|
|
414
|
+
spacing?: Partial<SpacingScale>;
|
|
415
|
+
borderRadius?: Partial<BorderRadius>;
|
|
416
|
+
typography?: Partial<Typography>;
|
|
417
|
+
shadows?: Partial<Shadows>;
|
|
418
|
+
};
|
|
419
|
+
|
|
212
420
|
/**
|
|
213
421
|
* A customizable toggle component.
|
|
214
422
|
*
|
|
@@ -254,4 +462,21 @@ export declare interface ToggleProps extends HtmlToggle {
|
|
|
254
462
|
labelPosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
255
463
|
}
|
|
256
464
|
|
|
465
|
+
export declare interface Typography {
|
|
466
|
+
fontFamily: string;
|
|
467
|
+
fontSize: {
|
|
468
|
+
sm: string;
|
|
469
|
+
base: string;
|
|
470
|
+
lg: string;
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
export declare const usePagination: ({ currentPage, totalPages, siblingCount }: UsePaginationProps) => (string | number)[];
|
|
475
|
+
|
|
476
|
+
declare interface UsePaginationProps {
|
|
477
|
+
currentPage: number;
|
|
478
|
+
totalPages: number;
|
|
479
|
+
siblingCount?: number;
|
|
480
|
+
}
|
|
481
|
+
|
|
257
482
|
export { }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=Object.defineProperty,r=Object.defineProperties,
|
|
1
|
+
"use strict";var e=Object.defineProperty,r=Object.defineProperties,a=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,t=(r,a,n)=>a in r?e(r,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[a]=n,l=(e,r)=>{for(var a in r||(r={}))s.call(r,a)&&t(e,a,r[a]);if(n)for(var a of n(r))i.call(r,a)&&t(e,a,r[a]);return e},o=(e,r)=>{var a={};for(var t in e)s.call(e,t)&&r.indexOf(t)<0&&(a[t]=e[t]);if(null!=e&&n)for(var t of n(e))r.indexOf(t)<0&&i.call(e,t)&&(a[t]=e[t]);return a};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),d=require("react");function p(e){var r,a,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var s=e.length;for(r=0;r<s;r++)e[r]&&(a=p(e[r]))&&(n&&(n+=" "),n+=a)}else for(a in e)e[a]&&(n&&(n+=" "),n+=a);return n}function h(){for(var e,r,a=0,n="",s=arguments.length;a<s;a++)(e=arguments[a])&&(r=p(e))&&(n&&(n+=" "),n+=r);return n}function u(...e){const r=e.join(" ").split(" ").filter(Boolean);return[...new Set(r)].join(" ")}function g(...e){return u(h(...e))}const x=({width:e=24,height:r=24})=>c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:r,viewBox:"0 0 24 24",children:c.jsx("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"m15 6l-6 6l6 6"})}),f=({width:e=24,height:r=24})=>c.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:r,viewBox:"0 0 24 24",children:c.jsx("path",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"m9 6l6 6l-6 6"})}),m=({color:e="currentColor",size:r=24})=>c.jsxs("svg",{width:r,height:r,stroke:e,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[c.jsx("style",{children:"\n .spinner_V8m1{transform-origin:center;animation:spinner_zKoa 2s linear infinite}\n .spinner_V8m1 circle{stroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite}\n @keyframes spinner_zKoa{100%{transform:rotate(360deg)}}\n @keyframes spinner_YpZS{\n 0%{stroke-dasharray:0 150;stroke-dashoffset:0}\n 47.5%{stroke-dasharray:42 150;stroke-dashoffset:-16}\n 95%,100%{stroke-dasharray:42 150;stroke-dashoffset:-59}\n }\n "}),c.jsx("g",{className:"spinner_V8m1",children:c.jsx("circle",{cx:"12",cy:"12",r:"9.5",fill:"none",strokeWidth:"3"})})]}),b=e=>{var n,s,i=e,{variant:t="primary",size:d="md",shape:p="rectangle",startIcon:h,endIcon:u,className:x="",children:f,loading:b,disabled:j}=i,v=o(i,["variant","size","shape","startIcon","endIcon","className","children","loading","disabled"]);return c.jsx("button",(n=l({className:g("btn",`btn-${t}`,`btn-${d}`,`btn-${p}`,{"btn-loading":b},x),disabled:j||b},v),s={children:b?c.jsx(m,{}):c.jsxs(c.Fragment,{children:[h&&c.jsx("span",{className:"btn-icon-start",children:h}),f,u&&c.jsx("span",{className:"btn-icon-end",children:u})]})},r(n,a(s))))},j="...",v=({currentPage:e,totalPages:r,siblingCount:a=1})=>d.useMemo(()=>{if(r<=7)return Array.from({length:r},(e,r)=>r+1);const n=Math.max(e-a,1),s=Math.min(e+a,r),i=n>2,t=s<r-1;if(!i&&!t)return Array.from({length:r},(e,r)=>r+1);if(!i&&t){const e=3+2*a;return[...Array.from({length:e},(e,r)=>r+1),j,r]}if(i&&!t){const e=3+2*a;return[1,j,...Array.from({length:e},(a,n)=>r-e+n+1)]}return[1,j,...Array.from({length:s-n+1},(e,r)=>n+r),j,r]},[e,r,a]);exports.Button=b,exports.ButtonSelect=({options:e,value:r,onChange:a,disabled:n=!1,multiple:s=!1})=>{const i=e=>Array.isArray(r)?r.includes(e):e===r;return c.jsx("div",{className:"button-select "+(n?"disabled":""),children:e.map(({value:e,child:t})=>c.jsx("button",{className:"button-select-option "+(i(e)?"selected":""),onClick:()=>(e=>{if(n)return;if(!s)return void a(e);const i=Array.isArray(r)?r:[],t=i.includes(e)?i.filter(r=>r!==e):[...i,e];a(t)})(e),disabled:n,type:"button",children:t},e))})},exports.ChevronLeft=x,exports.ChevronRight=f,exports.DOTS=j,exports.Input=e=>{var r=e,{variant:a="primary",type:n="text",label:s,prefix:i,suffix:t,helperText:p,className:h,labelClass:u,helperTextClass:x,onChange:f,id:b,hasError:j,loading:v=!1,disabled:y}=r,w=o(r,["variant","type","label","prefix","suffix","helperText","className","labelClass","helperTextClass","onChange","id","hasError","loading","disabled"]);const k=d.useId(),N=b||`input-${k}`,C=g("form-field",{"has-prefix":!!i,"has-suffix":!!t},{[`variant-${a}`]:a},{loading:v},h);return c.jsxs("article",{className:"input-container",children:[s&&c.jsx("label",{htmlFor:N,className:g("input-label",u),children:s}),c.jsxs("section",{className:g("input-wrapper",{loading:v}),children:[i&&c.jsx("article",{className:"input-prefix",children:i}),c.jsx("input",l({id:N,type:n,className:C,onChange:e=>null==f?void 0:f(e.target.value),disabled:y||v},w)),v?c.jsx("article",{className:"input-suffix",children:c.jsx(m,{})}):t&&c.jsx("article",{className:"input-suffix",children:t})]}),p&&c.jsx("small",{className:g("input-helper-text",x),style:{color:j?"var(--color-danger)":"inherit"},children:p})]})},exports.Pagination=({currentPage:e,totalPages:r,onPageChange:a,siblingCount:n=1,hidePrevButton:s=!1,hideNextButton:i=!1,size:t="md",variant:l="secondary",className:o="",disabled:d=!1,mobile:p=!1})=>{const h=v({currentPage:e,totalPages:r,siblingCount:n});if(0===e||0===r)return null;const u=()=>{e<r&&!d&&a(e+1)},m=()=>{e>1&&!d&&a(e-1)},y=h[h.length-1];return p?c.jsxs("article",{className:g("pagination","pagination--mobile",o),"aria-label":"pagination navigation",children:[!s&&c.jsx(b,{variant:l,size:t,onClick:m,disabled:1===e||d,"aria-label":"Go to previous page",shape:"square",children:c.jsx(x,{})}),c.jsxs("span",{className:"pagination__page-indicator","aria-live":"polite",children:[e," / ",r," pages"]}),!i&&c.jsx(b,{variant:l,size:t,onClick:u,disabled:e===y||d,"aria-label":"Go to next page",shape:"square",children:c.jsx(f,{})})]}):c.jsxs("article",{className:g("pagination",o),"aria-label":"pagination navigation",children:[!s&&c.jsx(b,{variant:l,size:t,onClick:m,disabled:1===e||d,"aria-label":"Go to previous page",shape:"square",children:c.jsx(x,{})}),h.map((n,s)=>n===j?c.jsx(b,{variant:l,size:t,"aria-label":"More pages",shape:"square",disabled:d,children:"…"},s):c.jsx(b,{variant:n===e?"primary":l,size:t,onClick:()=>!d&&a(n),disabled:d||1===r,"aria-label":n===e?`Current page, page ${n}`:`Go to page ${n}`,"aria-current":n===e?"page":void 0,shape:"square",children:n},s)),!i&&c.jsx(b,{variant:l,size:t,onClick:u,disabled:e===y||d,"aria-label":"Go to next page",shape:"square",children:c.jsx(f,{})})]})},exports.Spinner=m,exports.Toggle=e=>{var r=e,{color:a="var(--color-primary)",size:n="3.75rem",checked:s=!1,onChange:i,label:t,labelPosition:d="right",className:p}=r,h=o(r,["color","size","checked","onChange","label","labelPosition","className"]);return c.jsxs("label",{className:g("switch-container",d,p),children:[c.jsxs("div",{className:"toggle-switch",style:{"--switch-size":n,"--switch-color":a},children:[c.jsx("input",l({type:"checkbox",role:"switch",checked:s,onChange:e=>null==i?void 0:i(e.target.checked)},h)),c.jsx("span",{className:"slider"})]}),t&&c.jsx("span",{className:"switch-label",children:t})]})},exports.clsx=h,exports.cn=g,exports.mergeClasses=u,exports.usePagination=v;
|