@kode4/react-foundation 0.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/DESIGN-SYSTEM.md +190 -0
- package/INSTRUCTIONS.md +694 -0
- package/LICENSE +21 -0
- package/README.md +53 -0
- package/errors.d.ts +24 -0
- package/forms/Form/Form.d.ts +30 -0
- package/forms/Form/index.d.ts +1 -0
- package/forms/index.d.ts +1 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/useMediaQuery.d.ts +8 -0
- package/index.d.ts +24 -0
- package/index.js +1679 -0
- package/index.js.map +1 -0
- package/internal/env.d.ts +1 -0
- package/internal/registry.d.ts +3 -0
- package/internal/type-utils.d.ts +6 -0
- package/layout/AppLayout/AppLayout.d.ts +18 -0
- package/layout/AppLayout/index.d.ts +1 -0
- package/layout/CenteredLayout/CenteredLayout.d.ts +12 -0
- package/layout/CenteredLayout/index.d.ts +1 -0
- package/layout/Columns/Columns.d.ts +35 -0
- package/layout/Columns/index.d.ts +1 -0
- package/layout/Container/Container.d.ts +5 -0
- package/layout/Container/index.d.ts +1 -0
- package/layout/DashboardGrid/DashboardGrid.d.ts +37 -0
- package/layout/DashboardGrid/index.d.ts +1 -0
- package/layout/FillHeight/FillHeight.d.ts +16 -0
- package/layout/FillHeight/index.d.ts +1 -0
- package/layout/Footer/Footer.d.ts +5 -0
- package/layout/Footer/index.d.ts +1 -0
- package/layout/Header/Header.d.ts +13 -0
- package/layout/Header/index.d.ts +1 -0
- package/layout/SideBar/SideBar.d.ts +6 -0
- package/layout/SideBar/index.d.ts +1 -0
- package/layout/SiteLayout/SiteLayout.d.ts +27 -0
- package/layout/SiteLayout/index.d.ts +1 -0
- package/layout/SkipLink/SkipLink.d.ts +9 -0
- package/layout/SkipLink/index.d.ts +1 -0
- package/layout/TopBar/TopBar.d.ts +32 -0
- package/layout/TopBar/index.d.ts +1 -0
- package/layout/index.d.ts +12 -0
- package/package.json +52 -0
- package/query/index.d.ts +1 -0
- package/query/sort.d.ts +19 -0
- package/router/DefaultErrorBoundary.d.ts +5 -0
- package/router/TypedLink/TypedLink.d.ts +22 -0
- package/router/TypedLink/index.d.ts +1 -0
- package/router/adapter.d.ts +27 -0
- package/router/chain.d.ts +17 -0
- package/router/context.d.ts +24 -0
- package/router/createAppRouter.d.ts +15 -0
- package/router/defineRoute.d.ts +11 -0
- package/router/index.d.ts +11 -0
- package/router/menu.d.ts +51 -0
- package/router/pathTo.d.ts +21 -0
- package/router/types.d.ts +72 -0
- package/router/useRoute.d.ts +22 -0
- package/style.css +3 -0
- package/theme/ModeToggle/ModeToggle.d.ts +6 -0
- package/theme/ModeToggle/index.d.ts +1 -0
- package/theme/ThemeProvider/ThemeProvider.d.ts +25 -0
- package/theme/ThemeProvider/index.d.ts +1 -0
- package/theme/Toaster/Toaster.d.ts +9 -0
- package/theme/Toaster/index.d.ts +2 -0
- package/theme/Toaster/toast.d.ts +38 -0
- package/theme/index.d.ts +3 -0
- package/ui/Accordion/Accordion.d.ts +7 -0
- package/ui/Accordion/index.d.ts +1 -0
- package/ui/Alert/Alert.d.ts +11 -0
- package/ui/Alert/index.d.ts +1 -0
- package/ui/AlertDialog/AlertDialog.d.ts +19 -0
- package/ui/AlertDialog/index.d.ts +1 -0
- package/ui/Avatar/Avatar.d.ts +7 -0
- package/ui/Avatar/index.d.ts +1 -0
- package/ui/AwaitErrorBlock/AwaitErrorBlock.d.ts +11 -0
- package/ui/AwaitErrorBlock/index.d.ts +1 -0
- package/ui/Badge/Badge.d.ts +10 -0
- package/ui/Badge/index.d.ts +1 -0
- package/ui/Button/Button.d.ts +13 -0
- package/ui/Button/index.d.ts +1 -0
- package/ui/Card/Card.d.ts +11 -0
- package/ui/Card/index.d.ts +1 -0
- package/ui/Checkbox/Checkbox.d.ts +5 -0
- package/ui/Checkbox/index.d.ts +1 -0
- package/ui/Command/Command.d.ts +19 -0
- package/ui/Command/index.d.ts +1 -0
- package/ui/Dialog/Dialog.d.ts +17 -0
- package/ui/Dialog/index.d.ts +1 -0
- package/ui/DropdownMenu/DropdownMenu.d.ts +28 -0
- package/ui/DropdownMenu/index.d.ts +1 -0
- package/ui/ErrorBlock/ErrorBlock.d.ts +21 -0
- package/ui/ErrorBlock/index.d.ts +1 -0
- package/ui/Input/Input.d.ts +4 -0
- package/ui/Input/index.d.ts +1 -0
- package/ui/Label/Label.d.ts +5 -0
- package/ui/Label/index.d.ts +1 -0
- package/ui/Pagination/Pagination.d.ts +17 -0
- package/ui/Pagination/index.d.ts +1 -0
- package/ui/Popover/Popover.d.ts +7 -0
- package/ui/Popover/index.d.ts +1 -0
- package/ui/Progress/Progress.d.ts +16 -0
- package/ui/Progress/index.d.ts +1 -0
- package/ui/RadioGroup/RadioGroup.d.ts +7 -0
- package/ui/RadioGroup/index.d.ts +1 -0
- package/ui/Select/Select.d.ts +16 -0
- package/ui/Select/index.d.ts +1 -0
- package/ui/Separator/Separator.d.ts +5 -0
- package/ui/Separator/index.d.ts +1 -0
- package/ui/Sheet/Sheet.d.ts +17 -0
- package/ui/Sheet/index.d.ts +1 -0
- package/ui/Skeleton/Skeleton.d.ts +4 -0
- package/ui/Skeleton/index.d.ts +1 -0
- package/ui/Spinner/Spinner.d.ts +35 -0
- package/ui/Spinner/index.d.ts +1 -0
- package/ui/Switch/Switch.d.ts +5 -0
- package/ui/Switch/index.d.ts +1 -0
- package/ui/Table/Table.d.ts +11 -0
- package/ui/Table/index.d.ts +1 -0
- package/ui/Tabs/Tabs.d.ts +8 -0
- package/ui/Tabs/index.d.ts +1 -0
- package/ui/Textarea/Textarea.d.ts +4 -0
- package/ui/Textarea/index.d.ts +1 -0
- package/ui/Tooltip/Tooltip.d.ts +7 -0
- package/ui/Tooltip/index.d.ts +1 -0
- package/ui/index.d.ts +29 -0
- package/utils.d.ts +8 -0
package/style.css
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--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-ease:initial;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Open Sans Variable", "Open Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--color-blue-500:oklch(62.3% .214 259.815);--spacing:.25rem;--radius-sm:calc(var(--radius) - 4px);--default-font-family:"Open Sans Variable", "Open Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}}@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;-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}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background:var(--background);color:var(--foreground);font-family:var(--font-sans), sans-serif}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.flex-1{flex:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-blue-500{background-color:var(--color-blue-500)}.bg-primary{background-color:var(--primary)}.font-sans{font-family:Open Sans Variable,Open Sans,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.paused{animation-play-state:paused}.running{animation-play-state:running}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(100% 0 0);--foreground:oklch(37% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(37% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(37% 0 0);--primary:oklch(45% .16 258);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(80% .15 66);--secondary-foreground:oklch(30% .05 66);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.5% 0 0);--success:oklch(54.8% .13 152);--success-foreground:oklch(98.5% 0 0);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(45% .16 258);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--spacing:.25rem;--radius:.5rem;--k4-control-height-sm:calc(var(--spacing) * 8);--k4-control-height-md:calc(var(--spacing) * 9);--k4-control-height-lg:calc(var(--spacing) * 10);--k4-button-padding-x:calc(var(--spacing) * 4);--k4-card-padding:calc(var(--spacing) * 6);--k4-site-width:72rem;--k4-header-height:calc(var(--spacing) * 16)}.dark{--background:oklch(23% .008 258);--foreground:oklch(90% 0 0);--card:oklch(27% .008 258);--card-foreground:oklch(90% 0 0);--popover:oklch(27% .008 258);--popover-foreground:oklch(90% 0 0);--primary:oklch(68% .14 258);--primary-foreground:oklch(22% .03 258);--secondary:oklch(78% .15 66);--secondary-foreground:oklch(28% .05 66);--muted:oklch(30% .006 258);--muted-foreground:oklch(72% 0 0);--accent:oklch(36% .01 258);--accent-foreground:oklch(90% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.5% 0 0);--success:oklch(72% .17 152);--success-foreground:oklch(20.5% 0 0);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(68% .14 258);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439)}@keyframes k4-spinner-bounce{to{opacity:.25;transform:translateY(-4px)}}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.k4-text{color:var(--foreground)}.k4-text--primary{color:var(--primary)}.k4-text--secondary{color:var(--secondary)}.k4-text--destructive{color:var(--destructive)}.k4-text--success{color:var(--success)}.k4-text--muted{color:var(--muted-foreground)}.k4-surface{border-radius:var(--radius);background:var(--card);color:var(--card-foreground);padding:1rem 1.25rem}.k4-surface--primary{background:var(--primary);color:var(--primary-foreground)}.k4-surface--secondary{background:var(--secondary);color:var(--secondary-foreground)}.k4-surface--destructive{background:var(--destructive);color:var(--destructive-foreground)}.k4-surface--success{background:var(--success);color:var(--success-foreground)}.k4-surface--muted{background:var(--muted);color:var(--muted-foreground)}.k4-surface__muted{opacity:.8}.k4-label{align-items:center;gap:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-leading:1;--tw-font-weight:var(--font-weight-medium,500);line-height:1;font-weight:var(--font-weight-medium,500);-webkit-user-select:none;user-select:none;display:flex}fieldset:disabled .k4-label{pointer-events:none;opacity:.5}.k4-label:has(+:disabled){pointer-events:none;opacity:.5}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}.k4-form__item{gap:calc(var(--spacing,.25rem) * 2);display:grid}.k4-form__label--error{color:var(--destructive)}.k4-form__description{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}.k4-form__message{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--destructive)}.k4-app-layout{flex-direction:column;height:100dvh;display:flex}.k4-app-layout__header,.k4-app-layout__footer{flex-shrink:0}.k4-app-layout__content{min-height:calc(var(--spacing,.25rem) * 0);--tw-outline-style:none;scroll-padding-top:calc(var(--spacing) * 4);--k4-content-height:100%;outline-style:none;flex:1;overflow:auto}.k4-centered-layout{flex-direction:column;min-height:100dvh;display:flex}.k4-centered-layout__content{padding:calc(var(--spacing,.25rem) * 6);flex:1;place-items:center;display:grid}.k4-columns{--k4-columns-left:16rem;--k4-columns-right:16rem;grid-template-columns:1fr;display:grid}.k4-columns--has-left{grid-template-columns:var(--k4-columns-left) 1fr}.k4-columns--has-right{grid-template-columns:1fr var(--k4-columns-right)}.k4-columns--has-left.k4-columns--has-right{grid-template-columns:var(--k4-columns-left) 1fr var(--k4-columns-right)}.k4-columns--gap{gap:calc(var(--spacing) * 8)}.k4-columns--fill{min-height:var(--k4-content-height,100svh)}.k4-columns--scroll{height:var(--k4-content-height,100svh)}.k4-columns--scroll>.k4-columns__cell{overscroll-behavior:contain;min-height:0;overflow:auto}.k4-columns__content{min-width:0}@media (width<=768px){.k4-columns--has-left,.k4-columns--has-right,.k4-columns--has-left.k4-columns--has-right{grid-template-columns:1fr}}.k4-container{width:100%;max-width:1100px;padding-inline:calc(var(--spacing,.25rem) * 6);margin-inline:auto}.k4-dashboard-grid{grid-template-columns:repeat(var(--k4-grid-columns,4), minmax(0, 1fr));grid-auto-rows:minmax(var(--k4-grid-row-height,7rem), auto);gap:calc(var(--spacing) * 4);display:grid}.k4-dashboard-grid__item{grid-column:span var(--k4-grid-col-span,1);grid-row:span var(--k4-grid-row-span,1);flex-direction:column;min-width:0;display:flex}.k4-dashboard-grid__item>*{flex:auto;min-height:0}@media (width<=640px){.k4-dashboard-grid{grid-template-columns:1fr}.k4-dashboard-grid__item{grid-area:auto}}.k4-fill-height{min-height:var(--k4-content-height,100svh)}.k4-footer{align-items:center;column-gap:calc(var(--spacing,.25rem) * 6);row-gap:calc(var(--spacing,.25rem) * 2);border-top-style:var(--tw-border-style);background-color:var(--background);padding-inline:calc(var(--spacing,.25rem) * 6);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground);padding-block:calc(var(--spacing) * 4);border-top-width:1px;flex-wrap:wrap;display:flex}.k4-header{align-items:center;gap:calc(var(--spacing,.25rem) * 4);border-bottom-style:var(--tw-border-style);background-color:var(--background);padding-inline:calc(var(--spacing,.25rem) * 6);height:var(--k4-header-height);border-bottom-width:1px;display:flex}.k4-header__start{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}.k4-header__center{min-width:calc(var(--spacing,.25rem) * 0);align-items:center;gap:calc(var(--spacing,.25rem) * 1);flex:1;display:flex}.k4-header__end{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.k4-header--condense{animation:linear both k4-header-condense;animation-timeline:scroll(root);animation-range:0 calc(var(--spacing) * 40);will-change:height}}}@keyframes k4-header-condense{to{height:calc(var(--k4-header-height) - var(--spacing) * 4)}}.k4-sidebar{border-right-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 5);padding-block:calc(var(--spacing,.25rem) * 7);border-right-width:1px}.k4-sidebar nav>ul,.k4-sidebar__children,.k4-sidebar__group>ul{margin:calc(var(--spacing,.25rem) * 0);padding:calc(var(--spacing,.25rem) * 0);list-style-type:none}.k4-sidebar__children{margin-top:calc(var(--spacing,.25rem) * 1);margin-left:calc(var(--spacing,.25rem) * 3.5);border-left-style:var(--tw-border-style);padding-left:calc(var(--spacing,.25rem) * 3);border-left-width:1px}.k4-sidebar__link{border-radius:calc(var(--radius) - 2px);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground);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,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));display:block}.k4-sidebar__link:hover{background-color:var(--accent);color:var(--accent-foreground);text-decoration-line:none}.k4-sidebar__link--active{background-color:var(--accent);--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--accent-foreground)}.k4-sidebar__group{margin-top:calc(var(--spacing,.25rem) * 3)}.k4-sidebar__group:first-child{margin-top:calc(var(--spacing,.25rem) * 0)}.k4-sidebar__group-label{margin-bottom:calc(var(--spacing,.25rem) * 1);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);--tw-tracking:var(--tracking-wider,.05em);letter-spacing:var(--tracking-wider,.05em);color:var(--muted-foreground);text-transform:uppercase;display:block}.k4-sidebar__separator{margin-inline:calc(var(--spacing,.25rem) * 2);margin-block:calc(var(--spacing,.25rem) * 2.5);background-color:var(--border);height:1px}.k4-sidebar__content{padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-leading:var(--leading-snug,1.375);line-height:var(--leading-snug,1.375);color:var(--muted-foreground)}@property --tw-tracking{syntax:"*";inherits:false}.k4-site-layout{flex-direction:column;min-height:100dvh;display:flex}.k4-site-layout__header{top:calc(var(--spacing,.25rem) * 0);z-index:20;position:sticky}.k4-site-layout__content{--k4-content-height:100svh;flex:1}.k4-site-layout:has(>.k4-site-layout__header)>.k4-site-layout__content{--k4-content-height:calc(100svh - var(--k4-header-height))}.k4-site-layout__content--constrained{width:100%;max-width:var(--k4-site-width);padding-inline:calc(var(--spacing) * 6);margin-inline:auto}.k4-skip-link{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.k4-skip-link:focus-visible{clip-path:none;white-space:normal;width:auto;height:auto;top:calc(var(--spacing,.25rem) * 2);left:calc(var(--spacing,.25rem) * 2);z-index:50;border-radius:calc(var(--radius) - 2px);background-color:var(--primary);padding:0;padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--primary-foreground);--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);--tw-outline-style:none;outline-style:none;margin:0;position:fixed;overflow:visible}@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}.k4-button{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:calc(var(--radius) - 2px);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none;flex-shrink:0;display:inline-flex}.k4-button:disabled{pointer-events:none;opacity:.5}.k4-button:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-button:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-button svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);flex-shrink:0}.k4-button--default{background-color:var(--foreground);color:var(--background);--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)}.k4-button--default:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.k4-button--default:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.k4-button--primary{background-color:var(--primary);color:var(--primary-foreground);--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)}.k4-button--primary:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.k4-button--primary:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.k4-button--secondary{background-color:var(--secondary);color:var(--secondary-foreground);--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)}.k4-button--secondary:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.k4-button--secondary:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.k4-button--destructive{background-color:var(--destructive);color:var(--destructive-foreground);--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)}.k4-button--destructive:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-button--destructive:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.k4-button--destructive:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-button--destructive:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-button--success{background-color:var(--success);color:var(--success-foreground);--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)}.k4-button--success:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.k4-button--success:hover{background-color:color-mix(in oklab, var(--success) 90%, transparent)}}.k4-button--success:focus-visible{--tw-ring-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.k4-button--success:focus-visible{--tw-ring-color:color-mix(in oklab, var(--success) 20%, transparent)}}.k4-button--ghost:hover{background-color:var(--accent);color:var(--accent-foreground)}.k4-button--link{color:var(--primary);text-underline-offset:4px}.k4-button--link:hover{text-decoration-line:underline}.k4-button--outline{border-style:var(--tw-border-style);background-color:var(--background);color:var(--foreground);--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);border-width:1px}.k4-button--outline:hover{background-color:var(--accent);color:var(--accent-foreground)}.k4-button--outline.k4-button--primary{border-color:var(--primary);background-color:var(--background);color:var(--primary)}.k4-button--outline.k4-button--primary:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.k4-button--outline.k4-button--primary:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.k4-button--outline.k4-button--primary:hover{color:var(--primary)}.k4-button--outline.k4-button--secondary{border-color:var(--secondary);background-color:var(--background);color:var(--secondary)}.k4-button--outline.k4-button--secondary:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.k4-button--outline.k4-button--secondary:hover{background-color:color-mix(in oklab, var(--secondary) 15%, transparent)}}.k4-button--outline.k4-button--secondary:hover{color:var(--secondary)}.k4-button--outline.k4-button--destructive{border-color:var(--destructive);background-color:var(--background);color:var(--destructive)}.k4-button--outline.k4-button--destructive:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-button--outline.k4-button--destructive:hover{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.k4-button--outline.k4-button--destructive:hover{color:var(--destructive)}.k4-button--outline.k4-button--success{border-color:var(--success);background-color:var(--background);color:var(--success)}.k4-button--outline.k4-button--success:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.k4-button--outline.k4-button--success:hover{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.k4-button--outline.k4-button--success:hover{color:var(--success)}.k4-button--size-default{height:var(--k4-control-height-md);padding-inline:var(--k4-button-padding-x);padding-block:calc(var(--spacing,.25rem) * 2)}.k4-button--size-sm{height:var(--k4-control-height-sm);gap:calc(var(--spacing,.25rem) * 1.5);border-radius:calc(var(--radius) - 2px);padding-inline:calc(var(--spacing,.25rem) * 3)}.k4-button--size-lg{height:var(--k4-control-height-lg);border-radius:calc(var(--radius) - 2px);padding-inline:calc(var(--spacing,.25rem) * 6)}.k4-button--size-icon{width:var(--k4-control-height-md);height:var(--k4-control-height-md)}.k4-sheet__overlay{inset:calc(var(--spacing,.25rem) * 0);z-index:50;background-color:#00000080;position:fixed}@supports (color:color-mix(in lab, red, red)){.k4-sheet__overlay{background-color:color-mix(in oklab, var(--color-black,#000) 50%, transparent)}}.k4-sheet__overlay[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0}.k4-sheet__overlay[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0}.k4-sheet__content{z-index:50;gap:calc(var(--spacing,.25rem) * 4);background-color:var(--background);--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);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,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-ease:var(--ease-in-out,cubic-bezier(.4, 0, .2, 1));transition-timing-function:var(--ease-in-out,cubic-bezier(.4, 0, .2, 1));flex-direction:column;display:flex;position:fixed}.k4-sheet__content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:.5s;transition-duration:.5s}.k4-sheet__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:.3s;transition-duration:.3s}.k4-sheet__content--right{top:calc(var(--spacing,.25rem) * 0);right:calc(var(--spacing,.25rem) * 0);border-left-style:var(--tw-border-style);border-left-width:1px;width:75%;height:100dvh}@media (width>=40rem){.k4-sheet__content--right{max-width:var(--container-sm,24rem)}}.k4-sheet__content--right[data-state=open]{--tw-enter-translate-x:100%}.k4-sheet__content--right[data-state=closed]{--tw-exit-translate-x:100%}.k4-sheet__content--left{top:calc(var(--spacing,.25rem) * 0);left:calc(var(--spacing,.25rem) * 0);border-right-style:var(--tw-border-style);border-right-width:1px;width:75%;height:100dvh}@media (width>=40rem){.k4-sheet__content--left{max-width:var(--container-sm,24rem)}}.k4-sheet__content--left[data-state=open]{--tw-enter-translate-x:-100%}.k4-sheet__content--left[data-state=closed]{--tw-exit-translate-x:-100%}.k4-sheet__content--top{inset-inline:calc(var(--spacing,.25rem) * 0);top:calc(var(--spacing,.25rem) * 0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;height:auto}.k4-sheet__content--top[data-state=open]{--tw-enter-translate-y:-100%}.k4-sheet__content--top[data-state=closed]{--tw-exit-translate-y:-100%}.k4-sheet__content--bottom{inset-inline:calc(var(--spacing,.25rem) * 0);bottom:calc(var(--spacing,.25rem) * 0);border-top-style:var(--tw-border-style);border-top-width:1px;height:auto}.k4-sheet__content--bottom[data-state=open]{--tw-enter-translate-y:100%}.k4-sheet__content--bottom[data-state=closed]{--tw-exit-translate-y:100%}.k4-sheet__close{top:calc(var(--spacing,.25rem) * 4);right:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius-xs,.125rem);opacity:.7;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none;position:absolute}.k4-sheet__close:hover{opacity:1}.k4-sheet__close:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-sheet__close:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-sheet__close svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);flex-shrink:0}.k4-sheet__header{gap:calc(var(--spacing,.25rem) * 1.5);padding:calc(var(--spacing,.25rem) * 4);flex-direction:column;display:flex}.k4-sheet__footer{gap:calc(var(--spacing,.25rem) * 2);padding:calc(var(--spacing,.25rem) * 4);flex-direction:column;margin-top:auto;display:flex}.k4-sheet__title{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--foreground)}.k4-sheet__description{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}@property --tw-ease{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@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));filter:blur(var(--tw-enter-blur,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));filter:blur(var(--tw-exit-blur,0))}}.k4-topbar{align-items:center;gap:calc(var(--spacing,.25rem) * 10);border-bottom-style:var(--tw-border-style);background-color:var(--background);padding-inline:calc(var(--spacing,.25rem) * 6);padding-block:calc(var(--spacing,.25rem) * 3.5);border-bottom-width:1px;display:flex}@media (width<=768px){.k4-topbar{gap:calc(var(--spacing,.25rem) * 3);padding-inline:calc(var(--spacing,.25rem) * 4)}}.k4-topbar__nav{min-width:calc(var(--spacing,.25rem) * 0);gap:calc(var(--spacing,.25rem) * 6);flex:1;display:flex;overflow:hidden}.k4-topbar__nav--collapsed{visibility:hidden}.k4-topbar__burger{flex-shrink:0}.k4-topbar__drawer-nav{min-height:calc(var(--spacing,.25rem) * 0);padding-inline:calc(var(--spacing,.25rem) * 4);padding-bottom:calc(var(--spacing,.25rem) * 4);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;overflow-y:auto}.k4-topbar__drawer .k4-sidebar{--tw-border-style:none;width:100%;padding:calc(var(--spacing,.25rem) * 0);border-style:none}.k4-topbar__link{border-bottom-style:var(--tw-border-style);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground);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,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-color:#0000;border-bottom-width:2px}.k4-topbar__link:hover{color:var(--foreground);text-decoration-line:none}.k4-topbar__link--active{border-color:var(--foreground);color:var(--foreground)}.k4-topbar__end{align-items:center;gap:calc(var(--spacing,.25rem) * 3.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));display:flex}.k4-alert{align-items:flex-start;row-gap:calc(var(--spacing,.25rem) * .5);border-radius:var(--radius);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing,.25rem) * 4);padding-block:calc(var(--spacing,.25rem) * 3);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));border-width:1px;grid-template-columns:0 1fr;display:grid;position:relative}.k4-alert:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr;column-gap:calc(var(--spacing,.25rem) * 3)}.k4-alert>svg{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);--tw-translate-y:calc(var(--spacing,.25rem) * .5);translate:var(--tw-translate-x) var(--tw-translate-y);color:currentColor}.k4-alert--default{background-color:var(--card);color:var(--card-foreground)}.k4-alert--primary{background-color:var(--primary);color:var(--primary-foreground);border-color:#0000}.k4-alert--primary .k4-alert__description{color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.k4-alert--primary .k4-alert__description{color:color-mix(in oklab, var(--primary-foreground) 90%, transparent)}}.k4-alert--secondary{background-color:var(--secondary);color:var(--secondary-foreground);border-color:#0000}.k4-alert--secondary .k4-alert__description{color:var(--secondary-foreground)}@supports (color:color-mix(in lab, red, red)){.k4-alert--secondary .k4-alert__description{color:color-mix(in oklab, var(--secondary-foreground) 90%, transparent)}}.k4-alert--outline.k4-alert--primary{border-color:var(--primary);background-color:var(--card);color:var(--primary)}.k4-alert--outline.k4-alert--secondary{border-color:var(--secondary);background-color:var(--card);color:var(--secondary)}.k4-alert--outline.k4-alert--primary .k4-alert__description,.k4-alert--outline.k4-alert--secondary .k4-alert__description{color:var(--muted-foreground)}.k4-alert--destructive{background-color:var(--card);color:var(--destructive)}.k4-alert--destructive .k4-alert__description{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-alert--destructive .k4-alert__description{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.k4-alert--success{background-color:var(--card);color:var(--success)}.k4-alert--success .k4-alert__description{color:var(--success)}@supports (color:color-mix(in lab, red, red)){.k4-alert--success .k4-alert__description{color:color-mix(in oklab, var(--success) 90%, transparent)}}.k4-alert__title{-webkit-line-clamp:1;min-height:calc(var(--spacing,.25rem) * 4);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);--tw-tracking:var(--tracking-tight,-.025em);letter-spacing:var(--tracking-tight,-.025em);-webkit-box-orient:vertical;grid-column-start:2;display:-webkit-box;overflow:hidden}.k4-alert__description{justify-items:start;gap:calc(var(--spacing,.25rem) * 1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground);grid-column-start:2;display:grid}.k4-alert__description p{--tw-leading:var(--leading-relaxed,1.625);line-height:var(--leading-relaxed,1.625)}@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}.k4-error-inline{align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--destructive);padding-inline:calc(var(--spacing,.25rem) * 1.5);padding-block:calc(var(--spacing,.25rem) * .5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--destructive);display:inline-flex}.k4-error-inline__message strong{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}.k4-error-inline__retry{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 0);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--primary);background-color:#0000;border-width:0;text-decoration-line:underline}.k4-error-block{margin-block:calc(var(--spacing,.25rem) * 4);width:100%;max-width:600px}.k4-error-block__details{margin-top:calc(var(--spacing,.25rem) * 1);border-radius:calc(var(--radius) - 2px);background-color:var(--muted);width:100%;padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--foreground);display:block;overflow:auto}.k4-error-block__retry{margin-top:calc(var(--spacing,.25rem) * 2)}.k4-spinner{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);animation:var(--animate-spin,spin 1s linear infinite)}.k4-dots-spinner{align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground);display:inline-flex}.k4-dots-spinner--vertical{gap:calc(var(--spacing,.25rem) * 3);flex-direction:column}.k4-dots-spinner__dots{align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);display:inline-flex}.k4-spinner-block{flex:1;justify-content:center;align-items:center;min-height:200px;display:flex}.k4-dots-spinner__dot{width:calc(var(--spacing,.25rem) * 1.5);height:calc(var(--spacing,.25rem) * 1.5);background-color:currentColor;border-radius:3.40282e38px;animation:.6s infinite alternate k4-spinner-bounce}.k4-dots-spinner__dot:nth-child(2){animation-delay:.15s}.k4-dots-spinner__dot:nth-child(3){animation-delay:.3s}.k4-dots-spinner__label{margin-left:calc(var(--spacing,.25rem) * 1.5)}.k4-dots-spinner--vertical .k4-dots-spinner__label{margin-left:calc(var(--spacing,.25rem) * 0);text-align:center;text-wrap:balance;max-width:20ch}@keyframes spin{to{transform:rotate(360deg)}}.k4-dropdown-menu__content,.k4-dropdown-menu__sub-content{z-index:50;border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);background-color:var(--popover);min-width:8rem;padding:calc(var(--spacing,.25rem) * 1);color:var(--popover-foreground);--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);max-height:var(--radix-dropdown-menu-content-available-height);transform-origin:var(--radix-dropdown-menu-content-transform-origin);border-width:1px;overflow:hidden auto}.k4-dropdown-menu__content[data-state=open],.k4-dropdown-menu__sub-content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-dropdown-menu__content[data-state=closed],.k4-dropdown-menu__sub-content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-dropdown-menu__content[data-side=bottom],.k4-dropdown-menu__sub-content[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.k4-dropdown-menu__content[data-side=top],.k4-dropdown-menu__sub-content[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.k4-dropdown-menu__content[data-side=left],.k4-dropdown-menu__sub-content[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.k4-dropdown-menu__content[data-side=right],.k4-dropdown-menu__sub-content[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.k4-dropdown-menu__item,.k4-dropdown-menu__checkbox-item,.k4-dropdown-menu__radio-item,.k4-dropdown-menu__sub-trigger{cursor:default;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:calc(var(--radius) - 4px);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-outline-style:none;-webkit-user-select:none;user-select:none;outline-style:none;display:flex;position:relative}.k4-dropdown-menu__checkbox-item,.k4-dropdown-menu__radio-item{padding-left:calc(var(--spacing,.25rem) * 8)}.k4-dropdown-menu__item[data-highlighted],.k4-dropdown-menu__checkbox-item[data-highlighted],.k4-dropdown-menu__radio-item[data-highlighted],.k4-dropdown-menu__sub-trigger[data-highlighted],.k4-dropdown-menu__sub-trigger[data-state=open]{background-color:var(--accent);color:var(--accent-foreground)}.k4-dropdown-menu__item[data-disabled],.k4-dropdown-menu__checkbox-item[data-disabled],.k4-dropdown-menu__radio-item[data-disabled]{pointer-events:none;opacity:.5}.k4-dropdown-menu__item svg,.k4-dropdown-menu__checkbox-item svg,.k4-dropdown-menu__radio-item svg,.k4-dropdown-menu__sub-trigger svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);color:var(--muted-foreground);flex-shrink:0}.k4-dropdown-menu__item--inset,.k4-dropdown-menu__label--inset,.k4-dropdown-menu__sub-trigger--inset{padding-left:calc(var(--spacing,.25rem) * 8)}.k4-dropdown-menu__item--destructive{color:var(--destructive)}.k4-dropdown-menu__item--destructive[data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-dropdown-menu__item--destructive[data-highlighted]{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.k4-dropdown-menu__item--destructive[data-highlighted],.k4-dropdown-menu__item--destructive svg{color:var(--destructive)}.k4-dropdown-menu__indicator{pointer-events:none;left:calc(var(--spacing,.25rem) * 2);width:calc(var(--spacing,.25rem) * 3.5);height:calc(var(--spacing,.25rem) * 3.5);justify-content:center;align-items:center;display:flex;position:absolute}.k4-dropdown-menu__radio-dot{fill:currentColor}.k4-dropdown-menu__radio-item .k4-dropdown-menu__radio-dot{width:calc(var(--spacing,.25rem) * 2);height:calc(var(--spacing,.25rem) * 2)}.k4-dropdown-menu__label{padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.k4-dropdown-menu__separator{margin-inline:calc(var(--spacing,.25rem) * -1);margin-block:calc(var(--spacing,.25rem) * 1);background-color:var(--border);height:1px}.k4-dropdown-menu__shortcut{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-tracking:var(--tracking-widest,.1em);letter-spacing:var(--tracking-widest,.1em);color:var(--muted-foreground);margin-left:auto}.k4-dropdown-menu__sub-chevron{margin-left:auto}.k4-dropdown-menu__sub-content{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);min-width:8rem;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.k4-mode-toggle{position:relative}.k4-mode-toggle__sun{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));rotate:0deg}.k4-mode-toggle__moon{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));position:absolute;rotate:90deg}.dark .k4-mode-toggle__sun{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y);rotate:-90deg}.dark .k4-mode-toggle__moon{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);rotate:0deg}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}.k4-toaster{--normal-bg:var(--popover);--normal-text:var(--popover-foreground);--normal-border:var(--border);--success-bg:var(--card);--success-text:var(--success);--success-border:var(--border);--error-bg:var(--card);--error-text:var(--destructive);--error-border:var(--border)}.k4-toast--primary{--normal-bg:var(--primary);--normal-text:var(--primary-foreground);--normal-border:transparent}.k4-toast--secondary{--normal-bg:var(--secondary);--normal-text:var(--secondary-foreground);--normal-border:transparent}.k4-toast--outline.k4-toast--primary{--normal-bg:var(--popover);--normal-text:var(--primary);--normal-border:var(--primary)}.k4-toast--outline.k4-toast--secondary{--normal-bg:var(--popover);--normal-text:var(--secondary);--normal-border:var(--secondary)}.k4-toast--outline.k4-toast--primary[data-sonner-toast][data-styled=true] [data-description],.k4-toast--outline.k4-toast--secondary[data-sonner-toast][data-styled=true] [data-description]{color:var(--muted-foreground)}.k4-accordion__item{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.k4-accordion__item:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.k4-accordion__header{display:flex}.k4-accordion__trigger{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing,.25rem) * 4);border-radius:calc(var(--radius) - 2px);padding-block:calc(var(--spacing,.25rem) * 4);text-align:left;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none;flex:1;display:flex}.k4-accordion__trigger:hover{text-decoration-line:underline}.k4-accordion__trigger:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-accordion__trigger:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-accordion__trigger:disabled{pointer-events:none;opacity:.5}.k4-accordion__chevron{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);--tw-translate-y:calc(var(--spacing,.25rem) * .5);translate:var(--tw-translate-x) var(--tw-translate-y);color:var(--muted-foreground);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.2s;flex-shrink:0;transition-duration:.2s}.k4-accordion__trigger[data-state=open] .k4-accordion__chevron{rotate:180deg}.k4-accordion__content{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));overflow:hidden}.k4-accordion__content[data-state=open]{animation:.2s ease-out k4-accordion-down}.k4-accordion__content[data-state=closed]{animation:.2s ease-out k4-accordion-up}.k4-accordion__content-inner{padding-top:calc(var(--spacing,.25rem) * 0);padding-bottom:calc(var(--spacing,.25rem) * 4)}@keyframes k4-accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes k4-accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.k4-alert-dialog__overlay{inset:calc(var(--spacing,.25rem) * 0);z-index:50;background-color:#00000080;position:fixed}@supports (color:color-mix(in lab, red, red)){.k4-alert-dialog__overlay{background-color:color-mix(in oklab, var(--color-black,#000) 50%, transparent)}}.k4-alert-dialog__overlay[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0}.k4-alert-dialog__overlay[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0}.k4-alert-dialog__content{z-index:50;--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);width:100%;max-width:calc(100% - 2rem);translate:var(--tw-translate-x) var(--tw-translate-y);gap:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius);border-style:var(--tw-border-style);background-color:var(--background);padding:calc(var(--spacing,.25rem) * 6);--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);--tw-duration:.2s;border-width:1px;transition-duration:.2s;display:grid;position:fixed;top:50%;left:50%}@media (width>=40rem){.k4-alert-dialog__content{max-width:var(--container-lg,32rem)}}.k4-alert-dialog__content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-alert-dialog__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-alert-dialog__header{gap:calc(var(--spacing,.25rem) * 2);text-align:center;flex-direction:column;display:flex}@media (width>=40rem){.k4-alert-dialog__header{text-align:left}}.k4-alert-dialog__footer{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column-reverse;display:flex}@media (width>=40rem){.k4-alert-dialog__footer{flex-direction:row;justify-content:flex-end}}.k4-alert-dialog__title{font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)));--tw-leading:1;--tw-font-weight:var(--font-weight-semibold,600);line-height:1;font-weight:var(--font-weight-semibold,600)}.k4-alert-dialog__description{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}.k4-avatar{width:calc(var(--spacing,.25rem) * 8);height:calc(var(--spacing,.25rem) * 8);border-radius:3.40282e38px;flex-shrink:0;display:flex;position:relative;overflow:hidden}.k4-avatar__image{aspect-ratio:1;width:100%;height:100%}.k4-avatar__fallback{background-color:var(--muted);width:100%;height:100%;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.k4-badge{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 1);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);width:fit-content;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * .5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;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,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-width:1px;flex-shrink:0;display:inline-flex;overflow:hidden}.k4-badge svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 3);height:calc(var(--spacing,.25rem) * 3)}.k4-badge--default{background-color:var(--primary);color:var(--primary-foreground);border-color:#0000}.k4-badge--secondary{background-color:var(--secondary);color:var(--secondary-foreground);border-color:#0000}.k4-badge--destructive{background-color:var(--destructive);color:var(--destructive-foreground);border-color:#0000}.k4-badge--success{background-color:var(--success);color:var(--success-foreground);border-color:#0000}.k4-badge--outline{color:var(--foreground)}.k4-card{padding-block:var(--k4-card-padding);gap:calc(var(--spacing,.25rem) * 6);border-radius:calc(var(--radius) + 4px);border-style:var(--tw-border-style);background-color:var(--card);color:var(--card-foreground);--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);border-width:1px;flex-direction:column;display:flex}.k4-card__header{padding-inline:var(--k4-card-padding);align-items:flex-start;gap:calc(var(--spacing,.25rem) * 1.5);grid-template-rows:auto auto;grid-auto-rows:min-content;display:grid}.k4-card__header:has(.k4-card__action){grid-template-columns:1fr auto}.k4-card__title{--tw-leading:1;--tw-font-weight:var(--font-weight-semibold,600);line-height:1;font-weight:var(--font-weight-semibold,600)}.k4-card__description{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}.k4-card__action{grid-row:1/span 2;grid-column-start:2;place-self:flex-start flex-end}.k4-card__content{padding-inline:var(--k4-card-padding)}.k4-card__footer{padding-inline:var(--k4-card-padding);align-items:center;display:flex}.k4-checkbox{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--input);--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);transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;border-radius:4px;outline-style:none;flex-shrink:0}.k4-checkbox:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-checkbox:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-checkbox:disabled{cursor:not-allowed;opacity:.5}.k4-checkbox[data-state=checked]{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}.k4-checkbox[aria-invalid=true]{border-color:var(--destructive);--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-checkbox[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-checkbox__indicator{color:currentColor;justify-content:center;align-items:center;transition-property:none;display:flex}.k4-checkbox__indicator svg{width:calc(var(--spacing,.25rem) * 3.5);height:calc(var(--spacing,.25rem) * 3.5)}.k4-dialog__overlay{inset:calc(var(--spacing,.25rem) * 0);z-index:50;background-color:#00000080;position:fixed}@supports (color:color-mix(in lab, red, red)){.k4-dialog__overlay{background-color:color-mix(in oklab, var(--color-black,#000) 50%, transparent)}}.k4-dialog__overlay[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0}.k4-dialog__overlay[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0}.k4-dialog__content{z-index:50;--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);width:100%;max-width:calc(100% - 2rem);translate:var(--tw-translate-x) var(--tw-translate-y);gap:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius);border-style:var(--tw-border-style);background-color:var(--background);padding:calc(var(--spacing,.25rem) * 6);--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);--tw-duration:.2s;border-width:1px;transition-duration:.2s;display:grid;position:fixed;top:50%;left:50%}@media (width>=40rem){.k4-dialog__content{max-width:var(--container-lg,32rem)}}.k4-dialog__content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-dialog__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-dialog__close{top:calc(var(--spacing,.25rem) * 4);right:calc(var(--spacing,.25rem) * 4);border-radius:var(--radius-xs,.125rem);opacity:.7;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;outline-style:none;position:absolute}.k4-dialog__close:hover{opacity:1}.k4-dialog__close:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-dialog__close:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-dialog__close svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);flex-shrink:0}.k4-dialog__header{gap:calc(var(--spacing,.25rem) * 2);text-align:center;flex-direction:column;display:flex}@media (width>=40rem){.k4-dialog__header{text-align:left}}.k4-dialog__footer{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column-reverse;display:flex}@media (width>=40rem){.k4-dialog__footer{flex-direction:row;justify-content:flex-end}}.k4-dialog__title{font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75 / 1.125)));--tw-leading:1;--tw-font-weight:var(--font-weight-semibold,600);line-height:1;font-weight:var(--font-weight-semibold,600)}.k4-dialog__description{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}.k4-sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.k4-command{border-radius:calc(var(--radius) - 2px);background-color:var(--popover);width:100%;height:100%;color:var(--popover-foreground);flex-direction:column;display:flex;overflow:hidden}.k4-command__dialog-content{padding:calc(var(--spacing,.25rem) * 0);overflow:hidden}.k4-command__input-wrapper{height:calc(var(--spacing,.25rem) * 9);align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-bottom-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem) * 3);border-bottom-width:1px;display:flex}.k4-command__search-icon{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);opacity:.5;flex-shrink:0}.k4-command__input{height:calc(var(--spacing,.25rem) * 10);border-radius:calc(var(--radius) - 2px);width:100%;padding-block:calc(var(--spacing,.25rem) * 3);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-outline-style:none;background-color:#0000;outline-style:none;display:flex}.k4-command__input::placeholder{color:var(--muted-foreground)}.k4-command__input:disabled{cursor:not-allowed;opacity:.5}.k4-command__list{max-height:300px;scroll-padding-block:calc(var(--spacing,.25rem) * 1);overflow:hidden auto}.k4-command__empty{padding-block:calc(var(--spacing,.25rem) * 6);text-align:center;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.k4-command__group{padding:calc(var(--spacing,.25rem) * 1);color:var(--foreground);overflow:hidden}.k4-command__group [cmdk-group-heading]{padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--muted-foreground)}.k4-command__separator{margin-inline:calc(var(--spacing,.25rem) * -1);background-color:var(--border);height:1px}.k4-command__item{cursor:default;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:calc(var(--radius) - 4px);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-outline-style:none;-webkit-user-select:none;user-select:none;outline-style:none;display:flex;position:relative}.k4-command__item[data-selected=true]{background-color:var(--accent);color:var(--accent-foreground)}.k4-command__item[data-disabled=true]{pointer-events:none;opacity:.5}.k4-command__item svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);flex-shrink:0}.k4-command__item:not([data-disabled=true]) svg{color:var(--muted-foreground)}.k4-command__shortcut{font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));--tw-tracking:var(--tracking-widest,.1em);letter-spacing:var(--tracking-widest,.1em);color:var(--muted-foreground);margin-left:auto}.k4-input{height:var(--k4-control-height-md);width:100%;min-width:calc(var(--spacing,.25rem) * 0);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--input);padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,calc(1.5 / 1)));--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);transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;background-color:#0000;outline-style:none;display:flex}@media (width>=48rem){.k4-input{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}}.k4-input::placeholder{color:var(--muted-foreground)}.k4-input::selection{background-color:var(--primary);color:var(--primary-foreground)}.k4-input:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-input:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-input:disabled{pointer-events:none;cursor:not-allowed;opacity:.5}.k4-input[type=file]{padding-top:calc(var(--spacing,.25rem) * 1.5)}.k4-input::file-selector-button{height:calc(var(--spacing,.25rem) * 6);border-style:var(--tw-border-style);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--foreground);background-color:#0000;border-width:0;display:inline-flex}.k4-input[aria-invalid=true]{border-color:var(--destructive);--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-input[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-pagination{justify-content:center;width:100%;margin-inline:auto;display:flex}.k4-pagination__content{align-items:center;gap:calc(var(--spacing,.25rem) * 1);flex-direction:row;display:flex}.k4-pagination__nav{gap:calc(var(--spacing,.25rem) * 1)}.k4-pagination__ellipsis{width:calc(var(--spacing,.25rem) * 9);height:calc(var(--spacing,.25rem) * 9);justify-content:center;align-items:center;display:flex}.k4-pagination__ellipsis svg{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4)}.k4-popover__content{z-index:50;width:calc(var(--spacing,.25rem) * 72);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);background-color:var(--popover);padding:calc(var(--spacing,.25rem) * 4);color:var(--popover-foreground);--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);--tw-outline-style:none;transform-origin:var(--radix-popover-content-transform-origin);border-width:1px;outline-style:none}.k4-popover__content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-popover__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-popover__content[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.k4-popover__content[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.k4-popover__content[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.k4-popover__content[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.k4-progress{height:calc(var(--spacing,.25rem) * 2);border-radius:3.40282e38px;width:100%;position:relative;overflow:hidden}.k4-progress__indicator{width:100%;height:100%;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));flex:1}.k4-progress__indicator[data-state=indeterminate]{width:50%;animation:1.2s ease-in-out infinite k4-progress-indeterminate}@keyframes k4-progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(200%)}}.k4-progress--default{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.k4-progress--default{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.k4-progress--default .k4-progress__indicator{background-color:var(--primary)}.k4-progress--secondary{background-color:var(--secondary)}.k4-progress--secondary .k4-progress__indicator{background-color:var(--secondary-foreground)}@supports (color:color-mix(in lab, red, red)){.k4-progress--secondary .k4-progress__indicator{background-color:color-mix(in oklab, var(--secondary-foreground) 60%, transparent)}}.k4-progress--destructive{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-progress--destructive{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-progress--destructive .k4-progress__indicator{background-color:var(--destructive)}.k4-progress--success{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.k4-progress--success{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.k4-progress--success .k4-progress__indicator{background-color:var(--success)}.k4-radio-group{gap:calc(var(--spacing,.25rem) * 3);display:grid}.k4-radio-group__item{aspect-ratio:1;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--input);color:var(--primary);--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);transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;border-radius:3.40282e38px;outline-style:none;flex-shrink:0}.k4-radio-group__item:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-radio-group__item:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-radio-group__item:disabled{cursor:not-allowed;opacity:.5}.k4-radio-group__item[aria-invalid=true]{border-color:var(--destructive);--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-radio-group__item[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-radio-group__indicator{justify-content:center;align-items:center;display:flex;position:relative}.k4-radio-group__indicator svg{width:calc(var(--spacing,.25rem) * 2);height:calc(var(--spacing,.25rem) * 2);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);fill:var(--primary);position:absolute;top:50%;left:50%}.k4-select__trigger{justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--input);width:fit-content;padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));white-space:nowrap;--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);transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;background-color:#0000;outline-style:none;display:flex}.k4-select__trigger--default{height:var(--k4-control-height-md)}.k4-select__trigger--sm{height:var(--k4-control-height-sm)}.k4-select__trigger:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-select__trigger:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-select__trigger:disabled{cursor:not-allowed;opacity:.5}.k4-select__trigger[data-placeholder]{color:var(--muted-foreground)}.k4-select__trigger[aria-invalid=true]{border-color:var(--destructive);--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-select__trigger[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-select__chevron{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);opacity:.5}.k4-select__content{z-index:50;max-height:var(--radix-select-content-available-height);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);background-color:var(--popover);min-width:8rem;color:var(--popover-foreground);--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);transform-origin:var(--radix-select-content-transform-origin);border-width:1px;position:relative;overflow:hidden auto}.k4-select__content[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-select__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-select__content[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.k4-select__content[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.k4-select__content--popper[data-side=bottom]{--tw-translate-y:calc(var(--spacing,.25rem) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.k4-select__content--popper[data-side=top]{--tw-translate-y:calc(var(--spacing,.25rem) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.k4-select__content--popper[data-side=left]{--tw-translate-x:calc(var(--spacing,.25rem) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.k4-select__content--popper[data-side=right]{--tw-translate-x:calc(var(--spacing,.25rem) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.k4-select__viewport{padding:calc(var(--spacing,.25rem) * 1)}.k4-select__content--popper .k4-select__viewport{height:var(--radix-select-trigger-height);width:100%;min-width:var(--radix-select-trigger-width);scroll-margin-block:calc(var(--spacing,.25rem) * 1)}.k4-select__label{padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));color:var(--muted-foreground)}.k4-select__item{cursor:default;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:calc(var(--radius) - 4px);width:100%;padding-block:calc(var(--spacing,.25rem) * 1.5);padding-right:calc(var(--spacing,.25rem) * 8);padding-left:calc(var(--spacing,.25rem) * 2);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-outline-style:none;-webkit-user-select:none;user-select:none;outline-style:none;display:flex;position:relative}.k4-select__item[data-highlighted]{background-color:var(--accent);color:var(--accent-foreground)}.k4-select__item[data-disabled]{pointer-events:none;opacity:.5}.k4-select__item svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);color:var(--muted-foreground);flex-shrink:0}.k4-select__item-indicator{right:calc(var(--spacing,.25rem) * 2);width:calc(var(--spacing,.25rem) * 3.5);height:calc(var(--spacing,.25rem) * 3.5);justify-content:center;align-items:center;display:flex;position:absolute}.k4-select__separator{pointer-events:none;margin-inline:calc(var(--spacing,.25rem) * -1);margin-block:calc(var(--spacing,.25rem) * 1);background-color:var(--border);height:1px}.k4-select__scroll-button{cursor:default;padding-block:calc(var(--spacing,.25rem) * 1);justify-content:center;align-items:center;display:flex}.k4-select__scroll-button svg{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4)}.k4-separator{background-color:var(--border);flex-shrink:0}.k4-separator[data-orientation=horizontal]{width:100%;height:1px}.k4-separator[data-orientation=vertical]{align-self:stretch;width:1px;height:100%}.k4-skeleton{animation:var(--animate-pulse,pulse 2s cubic-bezier(.4, 0, .6, 1) infinite);border-radius:calc(var(--radius) - 2px);background-color:var(--accent)}@keyframes pulse{50%{opacity:.5}}.k4-switch{border-style:var(--tw-border-style);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);width:2rem;height:1.15rem;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;border-width:1px;border-color:#0000;border-radius:3.40282e38px;outline-style:none;flex-shrink:0;align-items:center;display:inline-flex}.k4-switch:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-switch:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-switch:disabled{cursor:not-allowed;opacity:.5}.k4-switch[data-state=checked]{background-color:var(--primary)}.k4-switch[data-state=unchecked]{background-color:var(--input)}.k4-switch__thumb{pointer-events:none;background-color:var(--background);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);width:1rem;height:1rem;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-radius:3.40282e38px;display:block}.k4-switch[data-state=checked] .k4-switch__thumb{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.k4-switch[data-state=unchecked] .k4-switch__thumb{--tw-translate-x:calc(var(--spacing,.25rem) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.dark .k4-switch[data-state=unchecked] .k4-switch__thumb{background-color:var(--foreground)}.dark .k4-switch[data-state=checked] .k4-switch__thumb{background-color:var(--primary-foreground)}.k4-table-container{width:100%;position:relative;overflow-x:auto}.k4-table{caption-side:bottom;width:100%;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}.k4-table__header .k4-table__row{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.k4-table__body .k4-table__row:last-child{border-style:var(--tw-border-style);border-width:0}.k4-table__footer{border-top-style:var(--tw-border-style);background-color:var(--muted);border-top-width:1px}@supports (color:color-mix(in lab, red, red)){.k4-table__footer{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.k4-table__footer{--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}.k4-table__footer .k4-table__row:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.k4-table__row{border-bottom-style:var(--tw-border-style);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,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-bottom-width:1px}.k4-table__row:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.k4-table__row:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.k4-table__row[data-state=selected]{background-color:var(--muted)}.k4-table__head{height:calc(var(--spacing,.25rem) * 10);padding-inline:calc(var(--spacing,.25rem) * 2);text-align:left;vertical-align:middle;--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;color:var(--foreground)}.k4-table__cell{padding:calc(var(--spacing,.25rem) * 2);vertical-align:middle;white-space:nowrap}.k4-table__caption{margin-top:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));color:var(--muted-foreground)}.k4-tabs{gap:calc(var(--spacing,.25rem) * 2);flex-direction:column;display:flex}.k4-tabs__list{height:calc(var(--spacing,.25rem) * 9);border-radius:var(--radius);background-color:var(--muted);width:fit-content;color:var(--muted-foreground);justify-content:center;align-items:center;padding:3px;display:inline-flex}.k4-tabs__trigger{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 1.5);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);height:calc(100% - 1px);padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);white-space:nowrap;color:var(--foreground);transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;border-width:1px;border-color:#0000;outline-style:none;flex:1;display:inline-flex}.k4-tabs__trigger:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-tabs__trigger:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-tabs__trigger:disabled{pointer-events:none;opacity:.5}.k4-tabs__trigger svg{pointer-events:none;width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);flex-shrink:0}.k4-tabs__trigger[data-state=active]{background-color:var(--background);--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)}.dark .k4-tabs__trigger{color:var(--muted-foreground)}.dark .k4-tabs__trigger[data-state=active]{border-color:var(--input);background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark .k4-tabs__trigger[data-state=active]{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark .k4-tabs__trigger[data-state=active]{color:var(--foreground)}.k4-tabs__content{--tw-outline-style:none;outline-style:none;flex:1}.k4-textarea{field-sizing:content;min-height:calc(var(--spacing,.25rem) * 16);border-radius:calc(var(--radius) - 2px);border-style:var(--tw-border-style);border-width:1px;border-color:var(--input);width:100%;padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 2);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height,calc(1.5 / 1)));--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);transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-outline-style:none;background-color:#0000;outline-style:none;display:flex}@media (width>=48rem){.k4-textarea{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)))}}.k4-textarea::placeholder{color:var(--muted-foreground)}.k4-textarea:focus-visible{border-color:var(--ring);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + 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);--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.k4-textarea:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.k4-textarea:disabled{cursor:not-allowed;opacity:.5}.k4-textarea[aria-invalid=true]{border-color:var(--destructive);--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.k4-textarea[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.k4-tooltip__content{z-index:50;border-radius:calc(var(--radius) - 2px);background-color:var(--primary);width:fit-content;padding-inline:calc(var(--spacing,.25rem) * 3);padding-block:calc(var(--spacing,.25rem) * 1.5);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1 / .75)));text-wrap:balance;color:var(--primary-foreground);transform-origin:var(--radix-tooltip-content-transform-origin)}.k4-tooltip__content[data-state=delayed-open],.k4-tooltip__content[data-state=instant-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-enter-opacity:0;--tw-enter-scale:.95}.k4-tooltip__content[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-exit-opacity:0;--tw-exit-scale:.95}.k4-tooltip__content[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.k4-tooltip__content[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.k4-tooltip__content[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.k4-tooltip__content[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.k4-tooltip__arrow{z-index:50;width:calc(var(--spacing,.25rem) * 2.5);height:calc(var(--spacing,.25rem) * 2.5);--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y);background-color:var(--primary);fill:var(--primary);border-radius:2px;rotate:45deg}
|
|
3
|
+
/*$vite$:1*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ModeToggle';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type ThemeMode = 'light' | 'dark' | 'system';
|
|
3
|
+
export type ThemeProviderProps = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
/** Initial mode when nothing is stored yet. */
|
|
6
|
+
defaultMode?: ThemeMode;
|
|
7
|
+
/** localStorage key the chosen mode is persisted under. */
|
|
8
|
+
storageKey?: string;
|
|
9
|
+
};
|
|
10
|
+
type ThemeContextValue = {
|
|
11
|
+
/** The user's choice (may be 'system'). */
|
|
12
|
+
mode: ThemeMode;
|
|
13
|
+
/** What is actually applied right now. */
|
|
14
|
+
resolvedMode: 'light' | 'dark';
|
|
15
|
+
setMode: (mode: ThemeMode) => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Applies the design system's light/dark mode by toggling the `.dark`
|
|
19
|
+
* class on <html>. Dark-mode token values in theme.css key off that class.
|
|
20
|
+
* The chosen mode is persisted; 'system' follows prefers-color-scheme live.
|
|
21
|
+
*/
|
|
22
|
+
export declare function ThemeProvider({ children, defaultMode, storageKey, }: ThemeProviderProps): import("react").JSX.Element;
|
|
23
|
+
/** Read and control the design system's light/dark mode. */
|
|
24
|
+
export declare function useTheme(): ThemeContextValue;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ThemeProvider';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ToasterProps as SonnerProps } from 'sonner';
|
|
2
|
+
import './Toaster.css';
|
|
3
|
+
export type ToasterProps = SonnerProps;
|
|
4
|
+
/**
|
|
5
|
+
* App-level toast outlet (sonner), wired to the design system: follows the
|
|
6
|
+
* ThemeProvider's resolved mode and uses popover tokens for surfaces.
|
|
7
|
+
* Render once near the app root; fire toasts via `toast(...)` from 'sonner'.
|
|
8
|
+
*/
|
|
9
|
+
export declare function Toaster(props: ToasterProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ExternalToast, toast as sonnerToast } from 'sonner';
|
|
3
|
+
/** Plain toast options — same shape as sonner's. */
|
|
4
|
+
export type ToastOptions = ExternalToast;
|
|
5
|
+
/** Filled paints the surface in the brand color; outline keeps a neutral
|
|
6
|
+
* surface with a colored border + heading. */
|
|
7
|
+
export type ToastAppearance = 'filled' | 'outline';
|
|
8
|
+
/**
|
|
9
|
+
* Options for the brand toast variants. Extends every sonner option (so
|
|
10
|
+
* `description`, `duration`, `action`, `icon`, `id`, … all pass through)
|
|
11
|
+
* with an `appearance` switch. Pass `icon` to override the default icon, or
|
|
12
|
+
* `icon: null` to drop it.
|
|
13
|
+
*/
|
|
14
|
+
export type BrandToastOptions = ExternalToast & {
|
|
15
|
+
appearance?: ToastAppearance;
|
|
16
|
+
};
|
|
17
|
+
/** A brand toast trigger: a headline plus any sonner option, returning the
|
|
18
|
+
* toast id (same as sonner's `toast`). */
|
|
19
|
+
export type BrandToast = (message: ReactNode, options?: BrandToastOptions) => string | number;
|
|
20
|
+
/**
|
|
21
|
+
* The design system's toast API: sonner's `toast` (default / success / error /
|
|
22
|
+
* promise / …) plus brand-colored `primary` / `secondary` variants. Declared
|
|
23
|
+
* explicitly (rather than inferred from Object.assign) so type declarations
|
|
24
|
+
* reference sonner's `toast` type by name instead of inlining its non-exported
|
|
25
|
+
* internals — required for the published `.d.ts`.
|
|
26
|
+
*/
|
|
27
|
+
export type Toast = typeof sonnerToast & {
|
|
28
|
+
primary: BrandToast;
|
|
29
|
+
secondary: BrandToast;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Render `<Toaster />` once near the app root, then fire toasts with
|
|
33
|
+
* `toast(...)`, `toast.success(...)`, `toast.primary(...)`, etc.
|
|
34
|
+
*
|
|
35
|
+
* The wrapper is a fresh callable that copies sonner's own methods, so the
|
|
36
|
+
* upstream `toast` object is left untouched.
|
|
37
|
+
*/
|
|
38
|
+
export declare const toast: Toast;
|
package/theme/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Accordion as AccordionPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Accordion.css';
|
|
4
|
+
export declare const Accordion: import("react").ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export declare function AccordionItem({ className, ...props }: ComponentProps<typeof AccordionPrimitive.Item>): import("react").JSX.Element;
|
|
6
|
+
export declare function AccordionTrigger({ className, children, ...props }: ComponentProps<typeof AccordionPrimitive.Trigger>): import("react").JSX.Element;
|
|
7
|
+
export declare function AccordionContent({ className, children, ...props }: ComponentProps<typeof AccordionPrimitive.Content>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Accordion';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Alert.css';
|
|
4
|
+
export declare const alertVariants: (props?: ({
|
|
5
|
+
variant?: "default" | "primary" | "secondary" | "destructive" | "success" | null | undefined;
|
|
6
|
+
appearance?: "filled" | "outline" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
export type AlertProps = ComponentProps<'div'> & VariantProps<typeof alertVariants>;
|
|
9
|
+
export declare function Alert({ className, variant, appearance, ...props }: AlertProps): import("react").JSX.Element;
|
|
10
|
+
export declare function AlertTitle({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
11
|
+
export declare function AlertDescription({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Alert';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { AlertDialog as AlertDialogPrimitive } from 'radix-ui';
|
|
3
|
+
import type { ComponentProps } from 'react';
|
|
4
|
+
import { buttonVariants } from '../Button';
|
|
5
|
+
import './AlertDialog.css';
|
|
6
|
+
export declare const AlertDialog: import("react").FC<AlertDialogPrimitive.AlertDialogProps>;
|
|
7
|
+
export declare const AlertDialogTrigger: import("react").ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export declare const AlertDialogPortal: import("react").FC<AlertDialogPrimitive.AlertDialogPortalProps>;
|
|
9
|
+
export declare function AlertDialogOverlay({ className, ...props }: ComponentProps<typeof AlertDialogPrimitive.Overlay>): import("react").JSX.Element;
|
|
10
|
+
export declare function AlertDialogContent({ className, ...props }: ComponentProps<typeof AlertDialogPrimitive.Content>): import("react").JSX.Element;
|
|
11
|
+
export declare function AlertDialogHeader({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
12
|
+
export declare function AlertDialogFooter({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
13
|
+
export declare function AlertDialogTitle({ className, ...props }: ComponentProps<typeof AlertDialogPrimitive.Title>): import("react").JSX.Element;
|
|
14
|
+
export declare function AlertDialogDescription({ className, ...props }: ComponentProps<typeof AlertDialogPrimitive.Description>): import("react").JSX.Element;
|
|
15
|
+
/** The confirm button. Styled like Button; pass `variant="destructive"` for
|
|
16
|
+
* dangerous confirmations. Auto-closes the dialog. */
|
|
17
|
+
export declare function AlertDialogAction({ className, variant, appearance, size, ...props }: ComponentProps<typeof AlertDialogPrimitive.Action> & VariantProps<typeof buttonVariants>): import("react").JSX.Element;
|
|
18
|
+
/** The dismiss button. Defaults to the outline appearance. Auto-closes. */
|
|
19
|
+
export declare function AlertDialogCancel({ className, variant, appearance, size, ...props }: ComponentProps<typeof AlertDialogPrimitive.Cancel> & VariantProps<typeof buttonVariants>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AlertDialog';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Avatar as AvatarPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Avatar.css';
|
|
4
|
+
export type AvatarProps = ComponentProps<typeof AvatarPrimitive.Root>;
|
|
5
|
+
export declare function Avatar({ className, ...props }: AvatarProps): import("react").JSX.Element;
|
|
6
|
+
export declare function AvatarImage({ className, ...props }: ComponentProps<typeof AvatarPrimitive.Image>): import("react").JSX.Element;
|
|
7
|
+
export declare function AvatarFallback({ className, ...props }: ComponentProps<typeof AvatarPrimitive.Fallback>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Avatar';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type AwaitErrorBlockProps = {
|
|
2
|
+
title?: string;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Drop-in errorElement for <Await>. Reads the async error from context
|
|
6
|
+
* and delegates to ErrorBlock.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* <Await resolve={promise} errorElement={<AwaitErrorBlock title="Failed to load" />}>
|
|
10
|
+
*/
|
|
11
|
+
export declare function AwaitErrorBlock({ title }: AwaitErrorBlockProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AwaitErrorBlock';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Badge.css';
|
|
4
|
+
export declare const badgeVariants: (props?: ({
|
|
5
|
+
variant?: "default" | "outline" | "secondary" | "destructive" | "success" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type BadgeProps = ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function Badge({ className, variant, asChild, ...props }: BadgeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Badge';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Button.css';
|
|
4
|
+
export declare const buttonVariants: (props?: ({
|
|
5
|
+
variant?: "link" | "default" | "primary" | "secondary" | "destructive" | "success" | "ghost" | null | undefined;
|
|
6
|
+
appearance?: "filled" | "outline" | null | undefined;
|
|
7
|
+
size?: "default" | "icon" | "sm" | "lg" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
export type ButtonProps = ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
|
|
10
|
+
/** Render the child element instead of a <button>, merging props (Radix Slot). */
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function Button({ className, variant, appearance, size, asChild, ...props }: ButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Button';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import './Card.css';
|
|
3
|
+
export type CardProps = ComponentProps<'div'>;
|
|
4
|
+
export declare function Card({ className, ...props }: CardProps): import("react").JSX.Element;
|
|
5
|
+
export declare function CardHeader({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
6
|
+
export declare function CardTitle({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
7
|
+
export declare function CardDescription({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
8
|
+
/** Optional action area in the header's top-right corner (e.g. an icon button). */
|
|
9
|
+
export declare function CardAction({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
10
|
+
export declare function CardContent({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
11
|
+
export declare function CardFooter({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Card';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Checkbox as CheckboxPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Checkbox.css';
|
|
4
|
+
export type CheckboxProps = ComponentProps<typeof CheckboxPrimitive.Root>;
|
|
5
|
+
export declare function Checkbox({ className, ...props }: CheckboxProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Checkbox';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command as CommandPrimitive } from 'cmdk';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import { Dialog } from '../Dialog';
|
|
4
|
+
import './Command.css';
|
|
5
|
+
export declare function Command({ className, ...props }: ComponentProps<typeof CommandPrimitive>): import("react").JSX.Element;
|
|
6
|
+
export type CommandDialogProps = ComponentProps<typeof Dialog> & {
|
|
7
|
+
title?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
showCloseButton?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: CommandDialogProps): import("react").JSX.Element;
|
|
13
|
+
export declare function CommandInput({ className, ...props }: ComponentProps<typeof CommandPrimitive.Input>): import("react").JSX.Element;
|
|
14
|
+
export declare function CommandList({ className, ...props }: ComponentProps<typeof CommandPrimitive.List>): import("react").JSX.Element;
|
|
15
|
+
export declare function CommandEmpty(props: ComponentProps<typeof CommandPrimitive.Empty>): import("react").JSX.Element;
|
|
16
|
+
export declare function CommandGroup({ className, ...props }: ComponentProps<typeof CommandPrimitive.Group>): import("react").JSX.Element;
|
|
17
|
+
export declare function CommandSeparator({ className, ...props }: ComponentProps<typeof CommandPrimitive.Separator>): import("react").JSX.Element;
|
|
18
|
+
export declare function CommandItem({ className, ...props }: ComponentProps<typeof CommandPrimitive.Item>): import("react").JSX.Element;
|
|
19
|
+
export declare function CommandShortcut({ className, ...props }: ComponentProps<'span'>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Command';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Dialog as DialogPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Dialog.css';
|
|
4
|
+
export declare const Dialog: import("react").FC<DialogPrimitive.DialogProps>;
|
|
5
|
+
export declare const DialogTrigger: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
export declare const DialogPortal: import("react").FC<DialogPrimitive.DialogPortalProps>;
|
|
7
|
+
export declare const DialogClose: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export declare function DialogOverlay({ className, ...props }: ComponentProps<typeof DialogPrimitive.Overlay>): import("react").JSX.Element;
|
|
9
|
+
export type DialogContentProps = ComponentProps<typeof DialogPrimitive.Content> & {
|
|
10
|
+
/** Hide the default top-right close button. */
|
|
11
|
+
showCloseButton?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function DialogContent({ className, children, showCloseButton, ...props }: DialogContentProps): import("react").JSX.Element;
|
|
14
|
+
export declare function DialogHeader({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
15
|
+
export declare function DialogFooter({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
|
|
16
|
+
export declare function DialogTitle({ className, ...props }: ComponentProps<typeof DialogPrimitive.Title>): import("react").JSX.Element;
|
|
17
|
+
export declare function DialogDescription({ className, ...props }: ComponentProps<typeof DialogPrimitive.Description>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Dialog';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './DropdownMenu.css';
|
|
4
|
+
export declare const DropdownMenu: import("react").FC<DropdownMenuPrimitive.DropdownMenuProps>;
|
|
5
|
+
export declare const DropdownMenuPortal: import("react").FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
|
|
6
|
+
export declare const DropdownMenuTrigger: import("react").ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
export declare const DropdownMenuGroup: import("react").ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export declare const DropdownMenuRadioGroup: import("react").ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export declare const DropdownMenuSub: import("react").FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
|
|
10
|
+
export declare function DropdownMenuContent({ className, sideOffset, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Content>): import("react").JSX.Element;
|
|
11
|
+
export type DropdownMenuItemProps = ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
12
|
+
inset?: boolean;
|
|
13
|
+
variant?: 'default' | 'destructive';
|
|
14
|
+
};
|
|
15
|
+
export declare function DropdownMenuItem({ className, inset, variant, ...props }: DropdownMenuItemProps): import("react").JSX.Element;
|
|
16
|
+
export declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): import("react").JSX.Element;
|
|
17
|
+
export declare function DropdownMenuRadioItem({ className, children, ...props }: ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): import("react").JSX.Element;
|
|
18
|
+
export type DropdownMenuLabelProps = ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
19
|
+
inset?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps): import("react").JSX.Element;
|
|
22
|
+
export declare function DropdownMenuSeparator({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Separator>): import("react").JSX.Element;
|
|
23
|
+
export declare function DropdownMenuShortcut({ className, ...props }: ComponentProps<'span'>): import("react").JSX.Element;
|
|
24
|
+
export type DropdownMenuSubTriggerProps = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
25
|
+
inset?: boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: DropdownMenuSubTriggerProps): import("react").JSX.Element;
|
|
28
|
+
export declare function DropdownMenuSubContent({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubContent>): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DropdownMenu';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import './ErrorBlock.css';
|
|
2
|
+
export type ErrorDisplayProps = {
|
|
3
|
+
error: unknown;
|
|
4
|
+
title?: string;
|
|
5
|
+
onRetry?: () => void;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Inline error display. Renders as a span for use next to text, inside list
|
|
9
|
+
* items, or anywhere compact error feedback is needed.
|
|
10
|
+
*
|
|
11
|
+
* Intentionally NOT built on Button: the Button component's smallest size is
|
|
12
|
+
* too tall for an inline micro-action, so the retry stays a minimal link.
|
|
13
|
+
*/
|
|
14
|
+
export declare function ErrorInline({ error, onRetry }: ErrorDisplayProps): import("react").JSX.Element;
|
|
15
|
+
/**
|
|
16
|
+
* Block-level error display for sections and route error boundaries. Built on
|
|
17
|
+
* the UI kit's destructive Alert + Button, so it follows the design system
|
|
18
|
+
* (theming, dark mode) out of the box. Handles React Router responses,
|
|
19
|
+
* AppError, standard Errors, and unknowns.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ErrorBlock({ error, title, onRetry }: ErrorDisplayProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ErrorBlock';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Input';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Label as LabelPrimitive } from 'radix-ui';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import './Label.css';
|
|
4
|
+
export type LabelProps = ComponentProps<typeof LabelPrimitive.Root>;
|
|
5
|
+
export declare function Label({ className, ...props }: LabelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Label';
|