@eml-payments/ui-kit 1.0.0 → 1.1.2

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.css CHANGED
@@ -1,2 +1,2 @@
1
- /*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
2
  @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--counter-value:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-yellow-600:oklch(68.1% .162 75.834);--color-green-600:oklch(62.7% .194 149.214);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-purple-600:oklch(55.8% .288 302.321);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentcolor)}::file-selector-button{border-color:var(--color-gray-200,currentcolor)}:root{--background:0 0% 100%;--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--primary:0 0% 9%;--primary-foreground:0 0% 98%;--secondary:0 0% 96.1%;--secondary-foreground:0 0% 9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:0 0% 89.8%;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:.5rem}.dark{--background:0 0% 3.9%;--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:0 0% 9%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:0 0% 14.9%;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.left-\[50\%\]{left:50%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-96{margin-top:calc(var(--spacing)*96)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.size-full{width:100%;height:100%}.\!h-3{height:calc(var(--spacing)*3)!important}.h-\(--radix-select-trigger-height\){height:var(--radix-select-trigger-height)}.h-2{height:calc(var(--spacing)*2)}.h-3\!{height:calc(var(--spacing)*3)!important}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-24{height:calc(var(--spacing)*24)}.h-\[12px\]{height:12px}.h-\[20px\]{height:20px}.h-\[22px\]{height:22px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[600px\]{max-height:600px}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-\[300px\]{min-height:300px}.min-h-screen{min-height:100vh}.\!w-3{width:calc(var(--spacing)*3)!important}.w-2{width:calc(var(--spacing)*2)}.w-3\!{width:calc(var(--spacing)*3)!important}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-9{width:calc(var(--spacing)*9)}.w-56{width:calc(var(--spacing)*56)}.w-\[12px\]{width:12px}.w-\[20px\]{width:20px}.w-\[40px\]{width:40px}.w-\[200px\]{width:200px}.w-\[300px\]{width:300px}.w-\[320px\]{width:320px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[skeleton-wave_1\.6s_ease-in-out_infinite\]{animation:1.6s ease-in-out infinite skeleton-wave}.animate-pulse{animation:var(--animate-pulse)}.animate-slide-from-top{animation:.3s ease-out forwards slide-from-top}.animate-slide-to-top{animation:.3s ease-in forwards slide-to-top}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing)*4)}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:var(--uikit-radius,.5rem)}.rounded-\(--uikit-radius\){border-radius:var(--uikit-radius)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-\(--uikit-radius\){border-top-left-radius:var(--uikit-radius);border-top-right-radius:var(--uikit-radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\(--uikit-error\){border-color:var(--uikit-error)}.border-\(--uikit-info\){border-color:var(--uikit-info)}.border-\(--uikit-inputEnabledBorder\){border-color:var(--uikit-inputEnabledBorder)}.border-\(--uikit-primary\){border-color:var(--uikit-primary)}.border-\(--uikit-secondary\){border-color:var(--uikit-secondary)}.border-\(--uikit-success\){border-color:var(--uikit-success)}.border-\(--uikit-warning\){border-color:var(--uikit-warning)}.border-black{border-color:var(--color-black)}.border-error{border-color:var(--uikit-error,#d7263d)}.border-gray-300{border-color:var(--color-gray-300)}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:#0000}.\!bg-transparent{background-color:#0000!important}.bg-\(--uikit-actionDisabledBackground\){background-color:var(--uikit-actionDisabledBackground)}.bg-\(--uikit-error\),.bg-\(--uikit-error\)\/10{background-color:var(--uikit-error)}@supports (color:color-mix(in lab, red, red)){.bg-\(--uikit-error\)\/10{background-color:color-mix(in oklab,var(--uikit-error)10%,transparent)}}.bg-\(--uikit-info\){background-color:var(--uikit-info)}.bg-\(--uikit-primary\){background-color:var(--uikit-primary)}.bg-\(--uikit-primary-10\){background-color:var(--uikit-primary-10)}.bg-\(--uikit-secondary\){background-color:var(--uikit-secondary)}.bg-\(--uikit-success\),.bg-\(--uikit-success\)\/10{background-color:var(--uikit-success)}@supports (color:color-mix(in lab, red, red)){.bg-\(--uikit-success\)\/10{background-color:color-mix(in oklab,var(--uikit-success)10%,transparent)}}.bg-\(--uikit-tertiary\){background-color:var(--uikit-tertiary)}.bg-\(--uikit-warning\),.bg-\(--uikit-warning\)\/10{background-color:var(--uikit-warning)}@supports (color:color-mix(in lab, red, red)){.bg-\(--uikit-warning\)\/10{background-color:color-mix(in oklab,var(--uikit-warning)10%,transparent)}}.bg-\[\#ffffff\]{background-color:#fff}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-gray-50\/80{--tw-gradient-via:#f9fafbcc}@supports (color:color-mix(in lab, red, red)){.via-gray-50\/80{--tw-gradient-via:color-mix(in oklab,var(--color-gray-50)80%,transparent)}}.via-gray-50\/80{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.fill-\(--uikit-primary\){fill:var(--uikit-primary)}.fill-current{fill:currentColor}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-\[4px\]{padding-inline:4px}.px-\[6px\]{padding-inline:6px}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-\[3px\]{padding-block:3px}.py-\[4px\]{padding-block:4px}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-12{padding-right:calc(var(--spacing)*12)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[14px\]{font-size:14px}.text-\[24px\]{font-size:24px}.leading-none{--tw-leading:1;line-height:1}.font-\(--uikit-font-family\){--tw-font-weight:var(--uikit-font-family);font-weight:var(--uikit-font-family)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-\(--uikit-actionActive\){color:var(--uikit-actionActive)}.text-\(--uikit-actionDisabled\){color:var(--uikit-actionDisabled)}.text-\(--uikit-error\){color:var(--uikit-error)}.text-\(--uikit-info\){color:var(--uikit-info)}.text-\(--uikit-primary\){color:var(--uikit-primary)}.text-\(--uikit-secondary\){color:var(--uikit-secondary)}.text-\(--uikit-success\){color:var(--uikit-success)}.text-\(--uikit-text-primary\){color:var(--uikit-text-primary)}.text-\(--uikit-textPrimary\){color:var(--uikit-textPrimary)}.text-\(--uikit-textSecondary\){color:var(--uikit-textSecondary)}.text-\(--uikit-warning\){color:var(--uikit-warning)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-error{color:var(--uikit-error,#d7263d)}.text-foreground{color:hsl(var(--foreground))}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-600{color:var(--color-green-600)}.text-inherit{color:inherit}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-purple-600{color:var(--color-purple-600)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.underline{text-decoration-line:underline}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_5px_0_rgba\(0\,0\,0\,0\.12\)\,0_2px_2px_0_rgba\(0\,0\,0\,0\.14\)\,0_3px_1px_-2px_rgba\(0\,0\,0\,0\.20\)\]{--tw-shadow:0 1px 5px 0 var(--tw-shadow-color,#0000001f),0 2px 2px 0 var(--tw-shadow-color,#00000024),0 3px 1px -2px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\(--uikit-error\){--tw-ring-color:var(--uikit-error)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-200{animation-duration:.2s}.duration-700{animation-duration:.7s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing)*0)}.after\:bottom-\[-3px\]:after{content:var(--tw-content);bottom:-3px}.after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.after\:h-\[2px\]:after{content:var(--tw-content);height:2px}.after\:h-\[3px\]:after{content:var(--tw-content);height:3px}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:bg-\(--uikit-primary\):after{content:var(--tw-content);background-color:var(--uikit-primary)}.after\:bg-transparent:after{content:var(--tw-content);background-color:#0000}.after\:content-\[\"\"\]:after,.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}@media (hover:hover){.hover\:cursor-pointer:hover{cursor:pointer}.hover\:rounded-\(--uikit-radius\):hover{border-radius:var(--uikit-radius)}.hover\:border:hover{border-style:var(--tw-border-style);border-width:1px}.hover\:border-none:hover{--tw-border-style:none;border-style:none}.hover\:border-\(--uikit-primary\):hover{border-color:var(--uikit-primary)}.hover\:bg-\(--uikit-error\)\/90:hover{background-color:var(--uikit-error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\(--uikit-error\)\/90:hover{background-color:color-mix(in oklab,var(--uikit-error)90%,transparent)}}.hover\:bg-\(--uikit-primary\)\/10:hover{background-color:var(--uikit-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\(--uikit-primary\)\/10:hover{background-color:color-mix(in oklab,var(--uikit-primary)10%,transparent)}}.hover\:bg-\(--uikit-primary\)\/90:hover{background-color:var(--uikit-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\(--uikit-primary\)\/90:hover{background-color:color-mix(in oklab,var(--uikit-primary)90%,transparent)}}.hover\:bg-\(--uikit-secondary\):hover{background-color:var(--uikit-secondary)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-\(--uikit-primary\):focus{border-color:var(--uikit-primary)}.focus\:border-\(--uikit-secondary\):focus{border-color:var(--uikit-secondary)}.focus\:bg-\(--uikit-error\):focus{background-color:var(--uikit-error)}.focus\:bg-\(--uikit-primary\):focus{background-color:var(--uikit-primary)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-muted:focus{background-color:hsl(var(--muted))}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-\(--uikit-secondary\):focus{color:var(--uikit-secondary)}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-error:focus-visible{--tw-ring-color:var(--uikit-error,#d7263d)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-muted-foreground:disabled{color:hsl(var(--muted-foreground))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:after\:bg-transparent:disabled:after{content:var(--tw-content);background-color:#0000}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-inset\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-placeholder\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[state\=active\]\:bg-\(--uikit-primary\)\/20[data-state=active]{background-color:var(--uikit-primary)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=active\]\:bg-\(--uikit-primary\)\/20[data-state=active]{background-color:color-mix(in oklab,var(--uikit-primary)20%,transparent)}}.data-\[state\=active\]\:bg-transparent[data-state=active]{background-color:#0000}.data-\[state\=active\]\:text-\(--uikit-primary\)[data-state=active]{color:var(--uikit-primary)}.data-\[state\=active\]\:after\:bg-\(--uikit-primary\)[data-state=active]:after{content:var(--tw-content);background-color:var(--uikit-primary)}@media (hover:hover){.data-\[state\=active\]\:hover\:rounded-none[data-state=active]:hover{border-radius:0}}.data-\[state\=checked\]\:translate-x-\[21px\][data-state=checked]{--tw-translate-x:21px;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-\(--uikit-primary\)[data-state=checked]{background-color:var(--uikit-primary)}.data-\[state\=checked\]\:text-\(--uikit-primary\)[data-state=checked]{color:var(--uikit-primary)}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}@media (hover:hover){.data-\[state\=inactive\]\:hover\:rounded-\(--uikit-radius\)[data-state=inactive]:hover{border-radius:var(--uikit-radius)}}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=unchecked\]\:translate-x-\[2px\][data-state=unchecked]{--tw-translate-x:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-black[data-state=unchecked]{background-color:var(--color-black)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:hsl(var(--destructive))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,hsl(var(--destructive))10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:hsl(var(--destructive))}@media (min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:max-w-md{max-width:var(--container-md)}.md\:max-w-xl{max-width:var(--container-xl)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:max-w-2xl{max-width:var(--container-2xl)}}.dark\:bg-gray-700:is(.dark *){background-color:var(--color-gray-700)}.dark\:via-gray-600\/80:is(.dark *){--tw-gradient-via:#4a5565cc}@supports (color:color-mix(in lab, red, red)){.dark\:via-gray-600\/80:is(.dark *){--tw-gradient-via:color-mix(in oklab,var(--color-gray-600)80%,transparent)}}.dark\:via-gray-600\/80:is(.dark *){--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:h-3 svg{height:calc(var(--spacing)*3)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing)*4)}.\[\&_svg\]\:w-3 svg{width:calc(var(--spacing)*3)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.data-\[variant\=destructive\]\:\[\&_svg\]\:\!text-destructive[data-variant=destructive] svg{color:hsl(var(--destructive))!important}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-\(--uikit-error\)>svg{color:var(--uikit-error)}.\[\&\>svg\]\:text-\(--uikit-success\)>svg{color:var(--uikit-success)}.\[\&\>svg\]\:text-\(--uikit-warning\)>svg{color:var(--uikit-warning)}.\[\&\>svg\]\:text-current>svg{color:currentColor}:root{--uikit-primary:#0a5fff;--uikit-primary-10:var(--uikit-primary)}@supports (color:color-mix(in lab, red, red)){:root{--uikit-primary-10:color-mix(in srgb,var(--uikit-primary)10%,transparent)}}:root{--uikit-secondary:#71717b;--uikit-tertiary:#f3f5fb;--uikit-accent:#e3ecff;--uikit-success:#16c784;--uikit-warning:#f4b740;--uikit-error:#d7263d;--uikit-info:#fef9bf;--uikit-radius:8px;--uikit-font-family:Inter,system-ui,sans-serif;--uikit-text-primary:#27272a}}@keyframes mui-bar1{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes mui-bar2{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}.mui-loader{background-color:var(--uikit-primary-10);z-index:10;height:4px;position:absolute;top:37px;left:0;right:0;overflow:hidden}.mui-loader:before,.mui-loader:after{content:"";background-color:var(--uikit-primary);height:100%;position:absolute}.mui-loader:before{animation:2.5s cubic-bezier(.65,.815,.735,.395) infinite mui-bar1}.mui-loader:after{animation:2.5s cubic-bezier(.165,.84,.44,1) infinite mui-bar2}@property --counter-value{syntax:"<integer>";inherits:false;initial-value:0}.counter-animated{--counter-value:var(--counter-from,0);counter-reset:counter-num var(--counter-value)}.counter-animated.counter-active{animation:counter-animate var(--counter-duration,2s)ease-out forwards}.counter-animated .counter-number:after{content:counter(counter-num)}@keyframes counter-animate{to{--counter-value:var(--counter-to,100)}}@keyframes skeleton-wave{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes slide-from-top{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes slide-to-top{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}
@@ -28,18 +28,24 @@ function AlertOverlay({ variant = 'default' }) {
28
28
  function Alert({ className, variant, onClose, isVisible = false, disableAnimation = false, position = 'top-right', ...props }) {
29
29
  const [rendered, setRendered] = useState(isVisible);
30
30
  useEffect(() => {
31
- if (isVisible) {
31
+ let timer = null;
32
+ if (isVisible && !rendered) {
32
33
  setRendered(true);
33
34
  }
34
- else {
35
+ else if (!isVisible && rendered) {
35
36
  if (disableAnimation) {
36
37
  setRendered(false);
37
38
  }
38
39
  else {
39
- setTimeout(() => setRendered(false), 300);
40
+ timer = setTimeout(() => setRendered(false), 300);
40
41
  }
41
42
  }
42
- }, [isVisible, disableAnimation]);
43
+ return () => {
44
+ if (timer) {
45
+ clearTimeout(timer);
46
+ }
47
+ };
48
+ }, [isVisible, disableAnimation, rendered]);
43
49
  if (!rendered) {
44
50
  return null;
45
51
  }
@@ -1,4 +1,4 @@
1
1
  export declare const alertVariants: (props?: ({
2
2
  variant?: "success" | "warning" | "error" | "default" | null | undefined;
3
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
3
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
4
4
  export declare const colorMap: Record<string, string>;
@@ -1,4 +1,4 @@
1
1
  export declare const buttonVariants: (props?: ({
2
2
  variant?: "primary" | "secondary" | "outlined" | "ghost" | "destructive" | null | undefined;
3
3
  size?: "default" | "sm" | "lg" | "icon" | null | undefined;
4
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
4
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import * as LabelPrimitive from '@radix-ui/react-label';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
- declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
4
+ declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import("class-variance-authority/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
5
5
  export { Label };
@@ -1,6 +1,14 @@
1
1
  import { Table } from './Table';
2
+ import type { TableProps } from './Table.types';
2
3
  import type { Meta, StoryObj } from '@storybook/react';
3
- declare const meta: Meta<typeof Table>;
4
+ interface ExtraArgs {
5
+ initialPageNo?: number;
6
+ initialPageSize?: number;
7
+ }
8
+ type TableStoryArgs = TableProps<{
9
+ id: string;
10
+ }> & ExtraArgs;
11
+ declare const meta: Meta<TableStoryArgs>;
4
12
  export default meta;
5
13
  type Story = StoryObj<typeof Table>;
6
14
  export declare const Basic: Story;
@@ -22,3 +30,4 @@ export declare const WithHiddenHeader: Story;
22
30
  export declare const GroupedByDate: Story;
23
31
  export declare const WithSearch: Story;
24
32
  export declare const ServerSideSearch: Story;
33
+ export declare const WithQueryParams: StoryObj<TableStoryArgs>;
@@ -1,7 +1,12 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useState } from 'react';
3
3
  import { Table } from './Table';
4
4
  import { SearchInput } from '../SearchInput';
5
+ import { useLocation } from 'react-router-dom';
6
+ const CurrentUrl = () => {
7
+ const location = useLocation();
8
+ return _jsxs("div", { children: ["Current URL: ", location.search] });
9
+ };
5
10
  const data = Array.from({ length: 10 }).map((_, i) => ({
6
11
  id: `user-${i + 1}`,
7
12
  name: `User ${i + 1}`,
@@ -39,6 +44,18 @@ const columns = [
39
44
  const meta = {
40
45
  title: 'UIKit/Table',
41
46
  component: Table,
47
+ args: {
48
+ initialPageNo: 1,
49
+ initialPageSize: 10,
50
+ },
51
+ decorators: [
52
+ (Story, context) => {
53
+ const { initialPageNo, initialPageSize } = context.args;
54
+ const query = `?pageNo=${initialPageNo}&pageSize=${initialPageSize}`;
55
+ window.history.replaceState({}, '', query);
56
+ return _jsx(Story, {});
57
+ },
58
+ ],
42
59
  tags: ['autodocs'],
43
60
  render: () => _jsx(Table, { id: "example-table", data: data, columns: columns }),
44
61
  };
@@ -257,8 +274,17 @@ export const ServerSideSearch = {
257
274
  setIsLoading(false);
258
275
  }, [query]);
259
276
  useEffect(() => {
260
- fetchData(0, 5);
277
+ fetchData(0, 10);
261
278
  }, [fetchData]);
262
279
  return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { style: { width: '300px' }, children: _jsx(SearchInput, { onSearch: (q) => setQuery(q), onClear: () => setQuery(''), placeholder: "Search users..." }) }), _jsx(Table, { id: "server-search-table", data: data, columns: columns, paginationMode: "server", totalServerRows: 100, onRefetch: fetchData, isLoading: isLoading, isSearchActive: query.trim().length >= 3 })] }));
263
280
  },
264
281
  };
282
+ export const WithQueryParams = {
283
+ args: {
284
+ initialPageNo: 2,
285
+ initialPageSize: 5,
286
+ },
287
+ render: () => {
288
+ return (_jsxs(_Fragment, { children: [_jsx(CurrentUrl, {}), _jsx(Table, { id: "url-sync-table", data: data, columns: columns, paginationMode: "client", showHeader: true })] }));
289
+ },
290
+ };
@@ -37,4 +37,8 @@ export interface TableProps<T> {
37
37
  grouping?: string[];
38
38
  isSearchActive?: boolean;
39
39
  noSearchResultsMessage?: string;
40
+ queryParamKeys?: {
41
+ pageSize?: string;
42
+ pageNo?: string;
43
+ };
40
44
  }
@@ -2,14 +2,14 @@ import { type SortingState } from '@tanstack/react-table';
2
2
  import type { TableProps } from '../Table.types';
3
3
  export declare function useTableController<T extends {
4
4
  id: string;
5
- }>({ data, columns, checkboxSelection, checkboxPosition, paginationMode, sorting, onSortingChange, onSelectionChange, enableRowSelection, rowsPerPage, isMultiRowSelection, selectedRowIds, rowIdKey, totalServerRows, onRefetch, showHeader, grouping, }: TableProps<T>): {
5
+ }>({ data, columns, checkboxSelection, checkboxPosition, paginationMode, sorting, onSortingChange, onSelectionChange, enableRowSelection, rowsPerPage, isMultiRowSelection, selectedRowIds, rowIdKey, totalServerRows, onRefetch, showHeader, grouping, queryParamKeys, }: TableProps<T>): {
6
6
  pageIndex: number;
7
7
  pageSize: number;
8
8
  canNextPage: boolean;
9
9
  canPrevPage: boolean;
10
10
  onNextPage: () => void;
11
11
  onPrevPage: () => void;
12
- table: import("@tanstack/react-table").Table<T>;
12
+ table: import("@tanstack/table-core").Table<T>;
13
13
  setPageSize: import("react").Dispatch<import("react").SetStateAction<number>>;
14
14
  setPageIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
15
15
  sorting: SortingState;
@@ -2,7 +2,9 @@ import { useEffect, useMemo, useState } from 'react';
2
2
  import { useReactTable, getCoreRowModel, getSortedRowModel, getPaginationRowModel, getGroupedRowModel, getExpandedRowModel, } from '@tanstack/react-table';
3
3
  import { applyFlexSizes, getCheckboxSelectionColumn } from '../table.helpers';
4
4
  import { usePaginationController } from './usePaginationController';
5
- export function useTableController({ data, columns, checkboxSelection, checkboxPosition = 'start', paginationMode = 'client', sorting, onSortingChange, onSelectionChange, enableRowSelection, rowsPerPage = 10, isMultiRowSelection = true, selectedRowIds, rowIdKey = 'id', totalServerRows, onRefetch, showHeader = true, grouping, }) {
5
+ import { useUrlPaginationSync } from './useUrlPaginationSync';
6
+ export function useTableController({ data, columns, checkboxSelection, checkboxPosition = 'start', paginationMode = 'client', sorting, onSortingChange, onSelectionChange, enableRowSelection, rowsPerPage = 10, isMultiRowSelection = true, selectedRowIds, rowIdKey = 'id', totalServerRows, onRefetch, showHeader = true, grouping, queryParamKeys, }) {
7
+ var _a;
6
8
  const safeData = Array.isArray(data) ? data : [];
7
9
  const stableGrouping = useMemo(() => grouping !== null && grouping !== void 0 ? grouping : [], [grouping]);
8
10
  const columnVisibility = useMemo(() => {
@@ -19,10 +21,17 @@ export function useTableController({ data, columns, checkboxSelection, checkboxP
19
21
  }
20
22
  return {};
21
23
  });
22
- const [pageIndex, setPageIndex] = useState(0);
23
- const [pageSize, setPageSize] = useState(rowsPerPage !== null && rowsPerPage !== void 0 ? rowsPerPage : 10);
24
+ const { pageIndex, setPageIndex, pageSize, setPageSize } = useUrlPaginationSync(rowsPerPage, queryParamKeys);
25
+ const paginatedData = useMemo(() => {
26
+ if (paginationMode === 'server') {
27
+ return safeData;
28
+ }
29
+ const start = pageIndex * pageSize;
30
+ const end = start + pageSize;
31
+ return safeData.slice(start, end);
32
+ }, [safeData, pageIndex, pageSize, paginationMode]);
24
33
  const table = useReactTable({
25
- data: safeData,
34
+ data: paginatedData,
26
35
  columns: tableColumns,
27
36
  getRowId: (row) => String(row[rowIdKey]),
28
37
  state: {
@@ -34,9 +43,12 @@ export function useTableController({ data, columns, checkboxSelection, checkboxP
34
43
  },
35
44
  getSortedRowModel: getSortedRowModel(),
36
45
  getCoreRowModel: getCoreRowModel(),
37
- getPaginationRowModel: getPaginationRowModel(),
38
- manualPagination: paginationMode === 'server',
39
- pageCount: paginationMode === 'server' ? Math.ceil((totalServerRows !== null && totalServerRows !== void 0 ? totalServerRows : 0) / pageSize) : undefined,
46
+ getPaginationRowModel: paginationMode !== 'server' ? getPaginationRowModel() : undefined,
47
+ manualPagination: true,
48
+ autoResetPageIndex: false,
49
+ pageCount: paginationMode === 'server'
50
+ ? Math.ceil((totalServerRows !== null && totalServerRows !== void 0 ? totalServerRows : 0) / pageSize)
51
+ : Math.ceil(((_a = safeData === null || safeData === void 0 ? void 0 : safeData.length) !== null && _a !== void 0 ? _a : 0) / pageSize),
40
52
  onPaginationChange: (updater) => {
41
53
  const next = typeof updater === 'function' ? updater({ pageIndex, pageSize }) : updater;
42
54
  setPageIndex(next.pageIndex);
@@ -0,0 +1,11 @@
1
+ interface QueryParamKeys {
2
+ pageSize?: string;
3
+ pageNo?: string;
4
+ }
5
+ export declare function useUrlPaginationSync(rowsPerPage: number, queryParamKeys?: QueryParamKeys): {
6
+ pageIndex: number;
7
+ setPageIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
8
+ pageSize: number;
9
+ setPageSize: import("react").Dispatch<import("react").SetStateAction<number>>;
10
+ };
11
+ export {};
@@ -0,0 +1,18 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { useSearchParams } from 'react-router-dom';
3
+ export function useUrlPaginationSync(rowsPerPage, queryParamKeys = {}) {
4
+ const [searchParams, setSearchParams] = useSearchParams();
5
+ const pageSizeKey = queryParamKeys.pageSize || 'pageSize';
6
+ const pageNoKey = queryParamKeys.pageNo || 'pageNo';
7
+ const initialPageIndex = Math.max(parseInt(searchParams.get(pageNoKey) || '1') - 1, 0);
8
+ const initialPageSize = Math.max(parseInt(searchParams.get(pageSizeKey) || String(rowsPerPage !== null && rowsPerPage !== void 0 ? rowsPerPage : 10)), 1);
9
+ const [pageIndex, setPageIndex] = useState(initialPageIndex);
10
+ const [pageSize, setPageSize] = useState(initialPageSize);
11
+ useEffect(() => {
12
+ const newParams = new URLSearchParams(searchParams);
13
+ newParams.set(pageNoKey, String(pageIndex + 1));
14
+ newParams.set(pageSizeKey, String(pageSize));
15
+ setSearchParams(newParams, { replace: true });
16
+ }, [pageIndex, pageSize]);
17
+ return { pageIndex, setPageIndex, pageSize, setPageSize };
18
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eml-payments/ui-kit",
3
- "version": "1.0.0",
3
+ "version": "1.1.2",
4
4
  "private": false,
5
5
  "description": "ARLO UIKit",
6
6
  "homepage": "https://github.com/EML-Payments/arlo.npm.uikit#readme",
@@ -68,6 +68,7 @@
68
68
  "react": ">=18.0.0",
69
69
  "react-dom": ">=18.0.0",
70
70
  "react-icons": "^5.5.0",
71
+ "react-router-dom": "^7.9.5",
71
72
  "tailwind-merge": "^3.3.1",
72
73
  "tailwindcss": "^4.1.11",
73
74
  "tailwindcss-animate": "^1.0.7",
@@ -77,8 +78,6 @@
77
78
  "@eslint/js": "^9.30.1",
78
79
  "@storybook/addon-a11y": "^10.0.6",
79
80
  "@storybook/addon-docs": "^10.0.2",
80
- "@storybook/addon-onboarding": "^10.0.6",
81
- "@storybook/addon-styling-webpack": "^2.0.0",
82
81
  "@storybook/addon-themes": "^10.0.2",
83
82
  "@storybook/react-vite": "^10.0.6",
84
83
  "@tailwindcss/cli": "^4.1.12",