@tailor-platform/app-shell 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
- @layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--astw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--astw-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--astw-color-black: #000;--astw-color-white: #fff;--astw-spacing: .25rem;--astw-container-sm: 24rem;--astw-container-lg: 32rem;--astw-text-xs: .75rem;--astw-text-xs--line-height: calc(1 / .75);--astw-text-sm: .875rem;--astw-text-sm--line-height: calc(1.25 / .875);--astw-text-base: 1rem;--astw-text-base--line-height: 1.5 ;--astw-text-lg: 1.125rem;--astw-text-lg--line-height: calc(1.75 / 1.125);--astw-font-weight-normal: 400;--astw-font-weight-medium: 500;--astw-font-weight-semibold: 600;--astw-tracking-tight: -.025em;--astw-radius-xs: .125rem;--astw-ease-in-out: cubic-bezier(.4, 0, .2, 1);--astw-animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--astw-default-transition-duration: .15s;--astw-default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--astw-default-font-family: var(--astw-font-sans);--astw-default-mono-font-family: var(--astw-font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--astw-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(--astw-default-font-feature-settings, normal);font-variation-settings:var(--astw-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--astw-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--astw-default-mono-font-feature-settings, normal);font-variation-settings:var(--astw-default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}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{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}: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)){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,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.astw\:pointer-events-none{pointer-events:none}.astw\:sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.astw\:absolute{position:absolute}.astw\:fixed{position:fixed}.astw\:relative{position:relative}.astw\:inset-0{inset:calc(var(--astw-spacing) * 0)}.astw\:inset-x-0{inset-inline:calc(var(--astw-spacing) * 0)}.astw\:inset-y-0{inset-block:calc(var(--astw-spacing) * 0)}.astw\:top-0{top:calc(var(--astw-spacing) * 0)}.astw\:top-1\.5{top:calc(var(--astw-spacing) * 1.5)}.astw\:top-3\.5{top:calc(var(--astw-spacing) * 3.5)}.astw\:top-4{top:calc(var(--astw-spacing) * 4)}.astw\:top-\[50\%\]{top:50%}.astw\:right-0{right:calc(var(--astw-spacing) * 0)}.astw\:right-1{right:calc(var(--astw-spacing) * 1)}.astw\:right-3{right:calc(var(--astw-spacing) * 3)}.astw\:right-4{right:calc(var(--astw-spacing) * 4)}.astw\:bottom-0{bottom:calc(var(--astw-spacing) * 0)}.astw\:left-0{left:calc(var(--astw-spacing) * 0)}.astw\:left-\[50\%\]{left:50%}.astw\:z-10{z-index:10}.astw\:z-20{z-index:20}.astw\:z-50{z-index:50}.astw\:mx-2{margin-inline:calc(var(--astw-spacing) * 2)}.astw\:mx-3\.5{margin-inline:calc(var(--astw-spacing) * 3.5)}.astw\:mt-2{margin-top:calc(var(--astw-spacing) * 2)}.astw\:mt-4{margin-top:calc(var(--astw-spacing) * 4)}.astw\:mt-auto{margin-top:auto}.astw\:mb-2{margin-bottom:calc(var(--astw-spacing) * 2)}.astw\:-ml-1{margin-left:calc(var(--astw-spacing) * -1)}.astw\:-ml-2\.5{margin-left:calc(var(--astw-spacing) * -2.5)}.astw\:flex{display:flex}.astw\:grid{display:grid}.astw\:hidden{display:none}.astw\:inline-flex{display:inline-flex}.astw\:aspect-square{aspect-ratio:1 / 1}.astw\:size-2\.5{width:calc(var(--astw-spacing) * 2.5);height:calc(var(--astw-spacing) * 2.5)}.astw\:size-4{width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}.astw\:size-4\.5{width:calc(var(--astw-spacing) * 4.5);height:calc(var(--astw-spacing) * 4.5)}.astw\:size-9{width:calc(var(--astw-spacing) * 9);height:calc(var(--astw-spacing) * 9)}.astw\:h-4{height:calc(var(--astw-spacing) * 4)}.astw\:h-5{height:calc(var(--astw-spacing) * 5)}.astw\:h-7{height:calc(var(--astw-spacing) * 7)}.astw\:h-8{height:calc(var(--astw-spacing) * 8)}.astw\:h-9{height:calc(var(--astw-spacing) * 9)}.astw\:h-10{height:calc(var(--astw-spacing) * 10)}.astw\:h-12{height:calc(var(--astw-spacing) * 12)}.astw\:h-14{height:calc(var(--astw-spacing) * 14)}.astw\:h-auto{height:auto}.astw\:h-full{height:100%}.astw\:h-svh{height:100svh}.astw\:min-h-0{min-height:calc(var(--astw-spacing) * 0)}.astw\:min-h-svh{min-height:100svh}.astw\:w-\(--sidebar-width\){width:var(--sidebar-width)}.astw\:w-3\/4{width:75%}.astw\:w-4{width:calc(var(--astw-spacing) * 4)}.astw\:w-5{width:calc(var(--astw-spacing) * 5)}.astw\:w-\[100\%\]{width:100%}.astw\:w-\[calc\(100\%-var\(--sidebar-width\)\)\]{width:calc(100% - var(--sidebar-width))}.astw\:w-auto{width:auto}.astw\:w-fit{width:fit-content}.astw\:w-full{width:100%}.astw\:max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.astw\:max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.astw\:min-w-0{min-width:calc(var(--astw-spacing) * 0)}.astw\:min-w-5{min-width:calc(var(--astw-spacing) * 5)}.astw\:flex-1{flex:1}.astw\:shrink-0{flex-shrink:0}.astw\:caption-bottom{caption-side:bottom}.astw\:origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.astw\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:-translate-x-px{--tw-translate-x: -1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-x-\[-50\%\]{--tw-translate-x: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-x-px{--tw-translate-x: 1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-y-\[-50\%\]{--tw-translate-y: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:rotate-45{rotate:45deg}.astw\:animate-in{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.astw\:animate-pulse{animation:var(--astw-animate-pulse)}.astw\:flex-col{flex-direction:column}.astw\:flex-col-reverse{flex-direction:column-reverse}.astw\:flex-row{flex-direction:row}.astw\:flex-wrap{flex-wrap:wrap}.astw\:items-center{align-items:center}.astw\:justify-between{justify-content:space-between}.astw\:justify-center{justify-content:center}.astw\:gap-0\.5{gap:calc(var(--astw-spacing) * .5)}.astw\:gap-1{gap:calc(var(--astw-spacing) * 1)}.astw\:gap-1\.5{gap:calc(var(--astw-spacing) * 1.5)}.astw\:gap-2{gap:calc(var(--astw-spacing) * 2)}.astw\:gap-3{gap:calc(var(--astw-spacing) * 3)}.astw\:gap-4{gap:calc(var(--astw-spacing) * 4)}.astw\:overflow-auto{overflow:auto}.astw\:overflow-hidden{overflow:hidden}.astw\:overflow-x-auto{overflow-x:auto}.astw\:rounded-\[2px\]{border-radius:2px}.astw\:rounded-lg{border-radius:var(--radius)}.astw\:rounded-md{border-radius:calc(var(--radius) - 2px)}.astw\:rounded-sm{border-radius:calc(var(--radius) - 4px)}.astw\:rounded-xs{border-radius:var(--astw-radius-xs)}.astw\:border{border-style:var(--tw-border-style);border-width:1px}.astw\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.astw\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.astw\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.astw\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.astw\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.astw\:border-input{border-color:var(--input)}.astw\:border-sidebar-border{border-color:var(--sidebar-border)}.astw\:border-x-border{border-inline-color:var(--border)}.astw\:bg-accent{background-color:var(--accent)}.astw\:bg-background{background-color:var(--background)}.astw\:bg-black\/50{background-color:var(--astw-color-black);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--astw-color-black) 50%,transparent)}}.astw\:bg-border{background-color:var(--border)}.astw\:bg-destructive{background-color:var(--destructive)}.astw\:bg-muted\/50{background-color:var(--muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.astw\:bg-primary{background-color:var(--primary)}.astw\:bg-secondary{background-color:var(--secondary)}.astw\:bg-sidebar{background-color:var(--sidebar)}.astw\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.astw\:bg-sidebar-border{background-color:var(--sidebar-border)}.astw\:bg-transparent{background-color:transparent}.astw\:fill-primary{fill:var(--primary)}.astw\:p-0{padding:calc(var(--astw-spacing) * 0)}.astw\:p-2{padding:calc(var(--astw-spacing) * 2)}.astw\:p-4{padding:calc(var(--astw-spacing) * 4)}.astw\:p-6{padding:calc(var(--astw-spacing) * 6)}.astw\:px-1{padding-inline:calc(var(--astw-spacing) * 1)}.astw\:px-2{padding-inline:calc(var(--astw-spacing) * 2)}.astw\:px-2\.5{padding-inline:calc(var(--astw-spacing) * 2.5)}.astw\:px-3{padding-inline:calc(var(--astw-spacing) * 3)}.astw\:px-4{padding-inline:calc(var(--astw-spacing) * 4)}.astw\:px-6{padding-inline:calc(var(--astw-spacing) * 6)}.astw\:py-0\.5{padding-block:calc(var(--astw-spacing) * .5)}.astw\:py-1{padding-block:calc(var(--astw-spacing) * 1)}.astw\:py-1\.5{padding-block:calc(var(--astw-spacing) * 1.5)}.astw\:py-2{padding-block:calc(var(--astw-spacing) * 2)}.astw\:text-center{text-align:center}.astw\:text-left{text-align:left}.astw\:align-middle{vertical-align:middle}.astw\:text-base{font-size:var(--astw-text-base);line-height:var(--tw-leading, var(--astw-text-base--line-height))}.astw\:text-lg{font-size:var(--astw-text-lg);line-height:var(--tw-leading, var(--astw-text-lg--line-height))}.astw\:text-sm{font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}.astw\:text-xs{font-size:var(--astw-text-xs);line-height:var(--tw-leading, var(--astw-text-xs--line-height))}.astw\:leading-none{--tw-leading: 1;line-height:1}.astw\:font-medium{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}.astw\:font-normal{--tw-font-weight: var(--astw-font-weight-normal);font-weight:var(--astw-font-weight-normal)}.astw\:font-semibold{--tw-font-weight: var(--astw-font-weight-semibold);font-weight:var(--astw-font-weight-semibold)}.astw\:tracking-tight{--tw-tracking: var(--astw-tracking-tight);letter-spacing:var(--astw-tracking-tight)}.astw\:text-balance{text-wrap:balance}.astw\:break-words{overflow-wrap:break-word}.astw\:whitespace-nowrap{white-space:nowrap}.astw\:text-foreground{color:var(--foreground)}.astw\:text-muted-foreground{color:var(--muted-foreground)}.astw\:text-primary{color:var(--primary)}.astw\:text-primary-foreground{color:var(--primary-foreground)}.astw\:text-secondary-foreground{color:var(--secondary-foreground)}.astw\:text-sidebar-foreground{color:var(--sidebar-foreground)}.astw\:text-sidebar-foreground\/70{color:var(--sidebar-foreground);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.astw\:text-white{color:var(--astw-color-white)}.astw\:tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.astw\:underline-offset-4{text-underline-offset:4px}.astw\:opacity-70{opacity:70%}.astw\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-none{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:ring-sidebar-ring{--tw-ring-color: var(--sidebar-ring)}.astw\:outline-hidden{--tw-outline-style: none;outline-style:none;@media (forced-colors: active){outline:2px solid transparent;outline-offset:2px}}.astw\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:duration-200{--tw-duration: .2s;transition-duration:.2s}.astw\:ease-in-out{--tw-ease: var(--astw-ease-in-out);transition-timing-function:var(--astw-ease-in-out)}.astw\:ease-linear{--tw-ease: linear;transition-timing-function:linear}.astw\:outline-none{--tw-outline-style: none;outline-style:none}.astw\:select-none{-webkit-user-select:none;user-select:none}.astw\:fade-in-0{--tw-enter-opacity: 0}.astw\:zoom-in-95{--tw-enter-scale: .95}.astw\:group-focus-within\/menu-item\:opacity-100{&:is(:where(.astw\:group\/menu-item):focus-within *){opacity:100%}}.astw\:group-hover\/menu-item\:opacity-100{&:is(:where(.astw\:group\/menu-item):hover *){@media (hover: hover){opacity:100%}}}.astw\:group-has-data-\[collapsible\=icon\]\/sidebar-wrapper\:h-12{&:is(:where(.astw\:group\/sidebar-wrapper):has(*[data-collapsible=icon]) *){height:calc(var(--astw-spacing) * 12)}}.astw\:group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8{&:is(:where(.astw\:group\/menu-item):has(*[data-sidebar=menu-action]) *){padding-right:calc(var(--astw-spacing) * 8)}}.astw\:group-data-\[collapsible\=icon\]\:-mt-8{&:is(:where(.astw\:group)[data-collapsible=icon] *){margin-top:calc(var(--astw-spacing) * -8)}}.astw\:group-data-\[collapsible\=icon\]\:hidden{&:is(:where(.astw\:group)[data-collapsible=icon] *){display:none}}.astw\:group-data-\[collapsible\=icon\]\:size-8\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--astw-spacing) * 8)!important;height:calc(var(--astw-spacing) * 8)!important}}.astw\:group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\){&:is(:where(.astw\:group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}}.astw\:group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--astw-spacing) * 4)))}}.astw\:group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--astw-spacing) * 4)) + 2px)}}.astw\:group-data-\[collapsible\=icon\]\:overflow-hidden{&:is(:where(.astw\:group)[data-collapsible=icon] *){overflow:hidden}}.astw\:group-data-\[collapsible\=icon\]\:p-0\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){padding:calc(var(--astw-spacing) * 0)!important}}.astw\:group-data-\[collapsible\=icon\]\:p-2\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){padding:calc(var(--astw-spacing) * 2)!important}}.astw\:group-data-\[collapsible\=icon\]\:opacity-0{&:is(:where(.astw\:group)[data-collapsible=icon] *){opacity:0%}}.astw\:group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}}.astw\:group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}}.astw\:group-data-\[collapsible\=offcanvas\]\:w-0{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){width:calc(var(--astw-spacing) * 0)}}.astw\:group-data-\[collapsible\=offcanvas\]\:translate-x-0{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){--tw-translate-x: calc(var(--astw-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}}.astw\:group-data-\[side\=left\]\:-right-4{&:is(:where(.astw\:group)[data-side=left] *){right:calc(var(--astw-spacing) * -4)}}.astw\:group-data-\[side\=left\]\:border-r{&:is(:where(.astw\:group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}}.astw\:group-data-\[side\=right\]\:left-0{&:is(:where(.astw\:group)[data-side=right] *){left:calc(var(--astw-spacing) * 0)}}.astw\:group-data-\[side\=right\]\:rotate-180{&:is(:where(.astw\:group)[data-side=right] *){rotate:180deg}}.astw\:group-data-\[side\=right\]\:border-l{&:is(:where(.astw\:group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}}.astw\:group-data-\[variant\=floating\]\:rounded-lg{&:is(:where(.astw\:group)[data-variant=floating] *){border-radius:var(--radius)}}.astw\:group-data-\[variant\=floating\]\:border{&:is(:where(.astw\:group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}}.astw\:group-data-\[variant\=floating\]\:border-sidebar-border{&:is(:where(.astw\:group)[data-variant=floating] *){border-color:var(--sidebar-border)}}.astw\:group-data-\[variant\=floating\]\:shadow-sm{&:is(:where(.astw\:group)[data-variant=floating] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:peer-hover\/menu-button\:text-sidebar-accent-foreground{&:is(:where(.astw\:peer\/menu-button):hover~*){@media (hover: hover){color:var(--sidebar-accent-foreground)}}}.astw\:peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{&:is(:where(.astw\:peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}}.astw\:peer-data-\[size\=default\]\/menu-button\:top-1\.5{&:is(:where(.astw\:peer\/menu-button)[data-size=default]~*){top:calc(var(--astw-spacing) * 1.5)}}.astw\:peer-data-\[size\=lg\]\/menu-button\:top-2\.5{&:is(:where(.astw\:peer\/menu-button)[data-size=lg]~*){top:calc(var(--astw-spacing) * 2.5)}}.astw\:peer-data-\[size\=sm\]\/menu-button\:top-1{&:is(:where(.astw\:peer\/menu-button)[data-size=sm]~*){top:calc(var(--astw-spacing) * 1)}}.astw\:selection\:bg-primary{& *::selection{background-color:var(--primary)}&::selection{background-color:var(--primary)}}.astw\:selection\:text-primary-foreground{& *::selection{color:var(--primary-foreground)}&::selection{color:var(--primary-foreground)}}.astw\:file\:inline-flex{&::file-selector-button{display:inline-flex}}.astw\:file\:h-7{&::file-selector-button{height:calc(var(--astw-spacing) * 7)}}.astw\:file\:border-0{&::file-selector-button{border-style:var(--tw-border-style);border-width:0px}}.astw\:file\:bg-transparent{&::file-selector-button{background-color:transparent}}.astw\:file\:text-sm{&::file-selector-button{font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}}.astw\:file\:font-medium{&::file-selector-button{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}}.astw\:file\:text-foreground{&::file-selector-button{color:var(--foreground)}}.astw\:placeholder\:text-muted-foreground{&::placeholder{color:var(--muted-foreground)}}.astw\:after\:absolute{&:after{content:var(--tw-content);position:absolute}}.astw\:after\:-inset-2{&:after{content:var(--tw-content);inset:calc(var(--astw-spacing) * -2)}}.astw\:after\:inset-y-0{&:after{content:var(--tw-content);inset-block:calc(var(--astw-spacing) * 0)}}.astw\:after\:left-1\/2{&:after{content:var(--tw-content);left:50%}}.astw\:after\:w-\[2px\]{&:after{content:var(--tw-content);width:2px}}.astw\:group-data-\[collapsible\=offcanvas\]\:after\:left-full{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){&:after{content:var(--tw-content);left:100%}}}.astw\:last\:text-foreground{&:last-child{color:var(--foreground)}}.astw\:hover\:bg-accent{&:hover{@media (hover: hover){background-color:var(--accent)}}}.astw\:hover\:bg-destructive\/90{&:hover{@media (hover: hover){background-color:var(--destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}}.astw\:hover\:bg-muted\/50{&:hover{@media (hover: hover){background-color:var(--muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}}.astw\:hover\:bg-primary\/90{&:hover{@media (hover: hover){background-color:var(--primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}}.astw\:hover\:bg-secondary\/80{&:hover{@media (hover: hover){background-color:var(--secondary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}}.astw\:hover\:bg-sidebar-accent{&:hover{@media (hover: hover){background-color:var(--sidebar-accent)}}}.astw\:hover\:text-accent-foreground{&:hover{@media (hover: hover){color:var(--accent-foreground)}}}.astw\:hover\:text-foreground{&:hover{@media (hover: hover){color:var(--foreground)}}}.astw\:hover\:text-sidebar-accent-foreground{&:hover{@media (hover: hover){color:var(--sidebar-accent-foreground)}}}.astw\:hover\:underline{&:hover{@media (hover: hover){text-decoration-line:underline}}}.astw\:hover\:opacity-100{&:hover{@media (hover: hover){opacity:100%}}}.astw\:hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]{&:hover{@media (hover: hover){--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.astw\:hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar{&:hover{@media (hover: hover){&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}}}}.astw\:hover\:after\:bg-sidebar-border{&:hover{@media (hover: hover){&:after{content:var(--tw-content);background-color:var(--sidebar-border)}}}}.astw\:focus\:ring-2{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:focus\:ring-ring{&:focus{--tw-ring-color: var(--ring)}}.astw\:focus\:ring-offset-2{&:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.astw\:focus\:outline-hidden{&:focus{--tw-outline-style: none;outline-style:none;@media (forced-colors: active){outline:2px solid transparent;outline-offset:2px}}}.astw\:focus-visible\:border-ring{&:focus-visible{border-color:var(--ring)}}.astw\:focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:focus-visible\:ring-\[3px\]{&: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)}}.astw\:focus-visible\:ring-destructive\/20{&:focus-visible{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}}.astw\:focus-visible\:ring-ring\/50{&:focus-visible{--tw-ring-color: var(--ring);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}}.astw\:active\:bg-sidebar-accent{&:active{background-color:var(--sidebar-accent)}}.astw\:active\:text-sidebar-accent-foreground{&:active{color:var(--sidebar-accent-foreground)}}.astw\:disabled\:pointer-events-none{&:disabled{pointer-events:none}}.astw\:disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.astw\:disabled\:opacity-50{&:disabled{opacity:50%}}.astw\:in-data-\[side\=left\]\:cursor-w-resize{:where(*[data-side=left]) &{cursor:w-resize}}.astw\:in-data-\[side\=right\]\:cursor-e-resize{:where(*[data-side=right]) &{cursor:e-resize}}.astw\:has-data-\[variant\=inset\]\:bg-sidebar{&:has(*[data-variant=inset]){background-color:var(--sidebar)}}.astw\:has-\[\>svg\]\:px-2\.5{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 2.5)}}.astw\:has-\[\>svg\]\:px-3{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 3)}}.astw\:has-\[\>svg\]\:px-4{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 4)}}.astw\:aria-disabled\:pointer-events-none{&[aria-disabled=true]{pointer-events:none}}.astw\:aria-disabled\:opacity-50{&[aria-disabled=true]{opacity:50%}}.astw\:aria-invalid\:border-destructive{&[aria-invalid=true]{border-color:var(--destructive)}}.astw\:aria-invalid\:ring-destructive\/20{&[aria-invalid=true]{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}}.astw\:data-\[active\=true\]\:bg-sidebar-accent{&[data-active=true]{background-color:var(--sidebar-accent)}}.astw\:data-\[active\=true\]\:font-medium{&[data-active=true]{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}}.astw\:data-\[active\=true\]\:text-sidebar-accent-foreground{&[data-active=true]{color:var(--sidebar-accent-foreground)}}.astw\:data-\[orientation\=horizontal\]\:h-px{&[data-orientation=horizontal]{height:1px}}.astw\:data-\[orientation\=horizontal\]\:w-full{&[data-orientation=horizontal]{width:100%}}.astw\:data-\[orientation\=vertical\]\:h-full{&[data-orientation=vertical]{height:100%}}.astw\:data-\[orientation\=vertical\]\:w-px{&[data-orientation=vertical]{width:1px}}.astw\:data-\[side\=bottom\]\:slide-in-from-top-2{&[data-side=bottom]{--tw-enter-translate-y: calc(2*var(--spacing)*-1)}}.astw\:data-\[side\=left\]\:slide-in-from-right-2{&[data-side=left]{--tw-enter-translate-x: calc(2*var(--spacing))}}.astw\:data-\[side\=right\]\:slide-in-from-left-2{&[data-side=right]{--tw-enter-translate-x: calc(2*var(--spacing)*-1)}}.astw\:data-\[side\=top\]\:slide-in-from-bottom-2{&[data-side=top]{--tw-enter-translate-y: calc(2*var(--spacing))}}.astw\:data-\[state\=closed\]\:animate-out{&[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}}.astw\:data-\[state\=closed\]\:duration-300{&[data-state=closed]{--tw-duration: .3s;transition-duration:.3s}}.astw\:data-\[state\=closed\]\:fade-out-0{&[data-state=closed]{--tw-exit-opacity: 0}}.astw\:data-\[state\=closed\]\:slide-out-to-bottom{&[data-state=closed]{--tw-exit-translate-y: 100%}}.astw\:data-\[state\=closed\]\:slide-out-to-left{&[data-state=closed]{--tw-exit-translate-x: -100%}}.astw\:data-\[state\=closed\]\:slide-out-to-right{&[data-state=closed]{--tw-exit-translate-x: 100%}}.astw\:data-\[state\=closed\]\:slide-out-to-top{&[data-state=closed]{--tw-exit-translate-y: -100%}}.astw\:data-\[state\=closed\]\:zoom-out-95{&[data-state=closed]{--tw-exit-scale: .95}}.astw\:data-\[state\=open\]\:rotate-90{&[data-state=open]{rotate:90deg}}.astw\:data-\[state\=open\]\:animate-in{&[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}}.astw\:data-\[state\=open\]\:bg-accent{&[data-state=open]{background-color:var(--accent)}}.astw\:data-\[state\=open\]\:bg-secondary{&[data-state=open]{background-color:var(--secondary)}}.astw\:data-\[state\=open\]\:text-muted-foreground{&[data-state=open]{color:var(--muted-foreground)}}.astw\:data-\[state\=open\]\:opacity-100{&[data-state=open]{opacity:100%}}.astw\:data-\[state\=open\]\:duration-500{&[data-state=open]{--tw-duration: .5s;transition-duration:.5s}}.astw\:data-\[state\=open\]\:fade-in-0{&[data-state=open]{--tw-enter-opacity: 0}}.astw\:data-\[state\=open\]\:slide-in-from-bottom{&[data-state=open]{--tw-enter-translate-y: 100%}}.astw\:data-\[state\=open\]\:slide-in-from-left{&[data-state=open]{--tw-enter-translate-x: -100%}}.astw\:data-\[state\=open\]\:slide-in-from-right{&[data-state=open]{--tw-enter-translate-x: 100%}}.astw\:data-\[state\=open\]\:slide-in-from-top{&[data-state=open]{--tw-enter-translate-y: -100%}}.astw\:data-\[state\=open\]\:zoom-in-95{&[data-state=open]{--tw-enter-scale: .95}}.astw\:data-\[state\=open\]\:hover\:bg-sidebar-accent{&[data-state=open]{&:hover{@media (hover: hover){background-color:var(--sidebar-accent)}}}}.astw\:data-\[state\=open\]\:hover\:text-sidebar-accent-foreground{&[data-state=open]{&:hover{@media (hover: hover){color:var(--sidebar-accent-foreground)}}}}.astw\:data-\[state\=selected\]\:bg-muted{&[data-state=selected]{background-color:var(--muted)}}.astw\:sm\:flex{@media (width >= 40rem){display:flex}}.astw\:sm\:max-w-lg{@media (width >= 40rem){max-width:var(--astw-container-lg)}}.astw\:sm\:max-w-sm{@media (width >= 40rem){max-width:var(--astw-container-sm)}}.astw\:sm\:flex-row{@media (width >= 40rem){flex-direction:row}}.astw\:sm\:justify-end{@media (width >= 40rem){justify-content:flex-end}}.astw\:sm\:gap-2\.5{@media (width >= 40rem){gap:calc(var(--astw-spacing) * 2.5)}}.astw\:sm\:text-left{@media (width >= 40rem){text-align:left}}.astw\:md\:block{@media (width >= 48rem){display:block}}.astw\:md\:flex{@media (width >= 48rem){display:flex}}.astw\:md\:hidden{@media (width >= 48rem){display:none}}.astw\:md\:text-sm{@media (width >= 48rem){font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}}.astw\:md\:opacity-0{@media (width >= 48rem){opacity:0%}}.astw\:md\:peer-data-\[variant\=inset\]\:px-8{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){padding-inline:calc(var(--astw-spacing) * 8)}}}.astw\:md\:peer-data-\[variant\=inset\]\:py-2{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){padding-block:calc(var(--astw-spacing) * 2)}}}.astw\:md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:pl-2{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){&:is(:where(.astw\:peer)[data-state=collapsed]~*){padding-left:calc(var(--astw-spacing) * 2)}}}}.astw\:md\:after\:hidden{@media (width >= 48rem){&:after{content:var(--tw-content);display:none}}}.astw\:dark\:border-input{&:where(.dark,.dark *){border-color:var(--input)}}.astw\:dark\:bg-destructive\/60{&:where(.dark,.dark *){background-color:var(--destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}}.astw\:dark\:bg-input\/30{&:where(.dark,.dark *){background-color:var(--input);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}}.astw\:dark\:hover\:bg-accent\/50{&:where(.dark,.dark *){&:hover{@media (hover: hover){background-color:var(--accent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}}}.astw\:dark\:hover\:bg-input\/50{&:where(.dark,.dark *){&:hover{@media (hover: hover){background-color:var(--input);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}}}.astw\:dark\:focus-visible\:ring-destructive\/40{&:where(.dark,.dark *){&:focus-visible{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}}}.astw\:dark\:aria-invalid\:ring-destructive\/40{&:where(.dark,.dark *){&[aria-invalid=true]{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}}}.astw\:\[\&_svg\]\:pointer-events-none{& svg{pointer-events:none}}.astw\:\[\&_svg\]\:shrink-0{& svg{flex-shrink:0}}.astw\:\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4{& svg:not([class*=size-]){width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}}.astw\:\[\&_tr\]\:border-b{& tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}.astw\:\[\&_tr\:last-child\]\:border-0{& tr:last-child{border-style:var(--tw-border-style);border-width:0px}}.astw\:\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0{&:has([role=checkbox]){padding-right:calc(var(--astw-spacing) * 0)}}.astw\:\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]{>[role=checkbox]{--tw-translate-y: 2px;translate:var(--tw-translate-x) var(--tw-translate-y)}}.astw\:\[\&\>button\]\:hidden{>button{display:none}}.astw\:\[\&\>span\:last-child\]\:truncate{>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.astw\:\[\&\>svg\]\:size-3\.5{>svg{width:calc(var(--astw-spacing) * 3.5);height:calc(var(--astw-spacing) * 3.5)}}.astw\:\[\&\>svg\]\:size-4{>svg{width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}}.astw\:\[\&\>svg\]\:shrink-0{>svg{flex-shrink:0}}.astw\:\[\&\>svg\]\:text-sidebar-accent-foreground{>svg{color:var(--sidebar-accent-foreground)}}.astw\:\[\&\>tr\]\:last\:border-b-0{>tr{&:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}}}.astw\:\[\&\[data-state\=open\]_\.astw-rotate-target\]\:rotate-90{&[data-state=open] .astw-rotate-target{rotate:90deg}}.astw\:\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{[data-side=left][data-collapsible=offcanvas] &{right:calc(var(--astw-spacing) * -2)}}.astw\:\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{[data-side=left][data-state=collapsed] &{cursor:e-resize}}.astw\:\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{[data-side=right][data-collapsible=offcanvas] &{left:calc(var(--astw-spacing) * -2)}}.astw\:\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{[data-side=right][data-state=collapsed] &{cursor:w-resize}}}:root{--background: rgba(250, 250, 250, 1);--foreground: rgba(10, 10, 10, 1);--card: rgba(255, 255, 255, 1);--card-foreground: rgba(10, 10, 10, 1);--popover: rgba(255, 255, 255, 1);--popover-foreground: rgba(10, 10, 10, 1);--primary: rgba(23, 23, 23, 1);--primary-foreground: rgba(250, 250, 250, 1);--secondary: rgba(245, 245, 245, 1);--secondary-foreground: rgba(23, 23, 23, 1);--muted: rgba(245, 245, 245, 1);--muted-foreground: rgba(115, 115, 115, 1);--accent: rgba(245, 245, 245, 1);--accent-foreground: rgba(23, 23, 23, 1);--destructive: rgba(220, 38, 38, 1);--destructive-foreground: rgba(254, 242, 242, 1);--border: rgba(229, 229, 229, 1);--input: rgba(229, 229, 229, 1);--ring: rgba(163, 163, 163, 1);--chart-1: rgba(234, 88, 12, 1);--chart-2: rgba(13, 148, 136, 1);--chart-3: rgba(22, 78, 99, 1);--chart-4: rgba(251, 191, 36, 1);--chart-5: rgba(245, 158, 11, 1);--radius: .625rem;--sidebar: rgba(250, 250, 250, 1);--sidebar-foreground: rgba(10, 10, 10, 1);--sidebar-primary: rgba(23, 23, 23, 1);--sidebar-primary-foreground: rgba(250, 250, 250, 1);--sidebar-accent: rgba(245, 245, 245, 1);--sidebar-accent-foreground: rgba(23, 23, 23, 1);--sidebar-border: rgba(229, 229, 229, 1);--sidebar-ring: rgba(163, 163, 163, 1)}.dark{--background: rgba(10, 10, 10, 1);--foreground: rgba(250, 250, 250, 1);--card: rgba(23, 23, 23, 1);--card-foreground: rgba(250, 250, 250, 1);--popover: rgba(38, 38, 38, 1);--popover-foreground: rgba(250, 250, 250, 1);--primary: rgba(229, 229, 229, 1);--primary-foreground: rgba(23, 23, 23, 1);--secondary: rgba(38, 38, 38, 1);--secondary-foreground: rgba(250, 250, 250, 1);--muted: rgba(38, 38, 38, 1);--muted-foreground: rgba(163, 163, 163, 1);--accent: rgba(64, 64, 64, 1);--accent-foreground: rgba(250, 250, 250, 1);--destructive: rgba(248, 113, 113, 1);--destructive-foreground: rgba(254, 242, 242, 1);--border: rgba(255, 255, 255, .10000000149011612);--input: rgba(255, 255, 255, .15000000596046448);--ring: rgba(115, 115, 115, 1);--chart-1: rgba(29, 78, 216, 1);--chart-2: rgba(16, 185, 129, 1);--chart-3: rgba(245, 158, 11, 1);--chart-4: rgba(168, 85, 247, 1);--chart-5: rgba(244, 63, 94, 1);--sidebar: rgba(23, 23, 23, 1);--sidebar-foreground: rgba(250, 250, 250, 1);--sidebar-primary: rgba(29, 78, 216, 1);--sidebar-primary-foreground: rgba(250, 250, 250, 1);--sidebar-accent: rgba(38, 38, 38, 1);--sidebar-accent-foreground: rgba(250, 250, 250, 1);--sidebar-border: rgba(255, 255, 255, .10000000149011612);--sidebar-ring: rgba(82, 82, 82, 1)}@layer base{*,:after,:before,::backdrop,::file-selector-button{border-color:var(--color-gray-200, currentcolor)}}@layer base{*{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-color:var(--background);font-family:var(--astw-font-sans);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{height:calc(var(--astw-spacing) * 2);width:calc(var(--astw-spacing) * 2);background-color:var(--muted)}::-webkit-scrollbar-thumb{border-radius:.25rem;background-color:var(--muted-foreground)}::-webkit-scrollbar-corner{background-color:var(--muted-foreground)}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-content{syntax: "*"; initial-value: ""; inherits: false;}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-duration: initial;--tw-ease: initial;--tw-content: ""}}}
1
+ @layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--astw-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--astw-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--astw-color-black: #000;--astw-color-white: #fff;--astw-spacing: .25rem;--astw-container-xs: 20rem;--astw-container-sm: 24rem;--astw-container-lg: 32rem;--astw-container-5xl: 64rem;--astw-text-xs: .75rem;--astw-text-xs--line-height: calc(1 / .75);--astw-text-sm: .875rem;--astw-text-sm--line-height: calc(1.25 / .875);--astw-text-base: 1rem;--astw-text-base--line-height: 1.5 ;--astw-text-lg: 1.125rem;--astw-text-lg--line-height: calc(1.75 / 1.125);--astw-font-weight-normal: 400;--astw-font-weight-medium: 500;--astw-font-weight-semibold: 600;--astw-font-weight-bold: 700;--astw-tracking-tight: -.025em;--astw-radius-xs: .125rem;--astw-ease-in-out: cubic-bezier(.4, 0, .2, 1);--astw-animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--astw-default-transition-duration: .15s;--astw-default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--astw-default-font-family: var(--astw-font-sans);--astw-default-mono-font-family: var(--astw-font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--astw-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(--astw-default-font-feature-settings, normal);font-variation-settings:var(--astw-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--astw-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--astw-default-mono-font-feature-settings, normal);font-variation-settings:var(--astw-default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}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{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}: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)){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,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.astw\:pointer-events-none{pointer-events:none}.astw\:sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.astw\:absolute{position:absolute}.astw\:fixed{position:fixed}.astw\:relative{position:relative}.astw\:inset-0{inset:calc(var(--astw-spacing) * 0)}.astw\:inset-x-0{inset-inline:calc(var(--astw-spacing) * 0)}.astw\:inset-y-0{inset-block:calc(var(--astw-spacing) * 0)}.astw\:top-0{top:calc(var(--astw-spacing) * 0)}.astw\:top-1\.5{top:calc(var(--astw-spacing) * 1.5)}.astw\:top-3\.5{top:calc(var(--astw-spacing) * 3.5)}.astw\:top-4{top:calc(var(--astw-spacing) * 4)}.astw\:top-\[50\%\]{top:50%}.astw\:right-0{right:calc(var(--astw-spacing) * 0)}.astw\:right-1{right:calc(var(--astw-spacing) * 1)}.astw\:right-3{right:calc(var(--astw-spacing) * 3)}.astw\:right-4{right:calc(var(--astw-spacing) * 4)}.astw\:bottom-0{bottom:calc(var(--astw-spacing) * 0)}.astw\:left-0{left:calc(var(--astw-spacing) * 0)}.astw\:left-\[50\%\]{left:50%}.astw\:z-10{z-index:10}.astw\:z-20{z-index:20}.astw\:z-50{z-index:50}.astw\:mx-2{margin-inline:calc(var(--astw-spacing) * 2)}.astw\:mx-3\.5{margin-inline:calc(var(--astw-spacing) * 3.5)}.astw\:mx-auto{margin-inline:auto}.astw\:mt-2{margin-top:calc(var(--astw-spacing) * 2)}.astw\:mt-4{margin-top:calc(var(--astw-spacing) * 4)}.astw\:mt-auto{margin-top:auto}.astw\:mb-2{margin-bottom:calc(var(--astw-spacing) * 2)}.astw\:-ml-1{margin-left:calc(var(--astw-spacing) * -1)}.astw\:-ml-2\.5{margin-left:calc(var(--astw-spacing) * -2.5)}.astw\:flex{display:flex}.astw\:grid{display:grid}.astw\:hidden{display:none}.astw\:inline-flex{display:inline-flex}.astw\:aspect-square{aspect-ratio:1 / 1}.astw\:size-2\.5{width:calc(var(--astw-spacing) * 2.5);height:calc(var(--astw-spacing) * 2.5)}.astw\:size-4{width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}.astw\:size-4\.5{width:calc(var(--astw-spacing) * 4.5);height:calc(var(--astw-spacing) * 4.5)}.astw\:size-9{width:calc(var(--astw-spacing) * 9);height:calc(var(--astw-spacing) * 9)}.astw\:h-4{height:calc(var(--astw-spacing) * 4)}.astw\:h-5{height:calc(var(--astw-spacing) * 5)}.astw\:h-7{height:calc(var(--astw-spacing) * 7)}.astw\:h-8{height:calc(var(--astw-spacing) * 8)}.astw\:h-9{height:calc(var(--astw-spacing) * 9)}.astw\:h-10{height:calc(var(--astw-spacing) * 10)}.astw\:h-12{height:calc(var(--astw-spacing) * 12)}.astw\:h-14{height:calc(var(--astw-spacing) * 14)}.astw\:h-auto{height:auto}.astw\:h-full{height:100%}.astw\:h-svh{height:100svh}.astw\:min-h-0{min-height:calc(var(--astw-spacing) * 0)}.astw\:min-h-svh{min-height:100svh}.astw\:w-\(--sidebar-width\){width:var(--sidebar-width)}.astw\:w-3\/4{width:75%}.astw\:w-4{width:calc(var(--astw-spacing) * 4)}.astw\:w-5{width:calc(var(--astw-spacing) * 5)}.astw\:w-\[100\%\]{width:100%}.astw\:w-\[calc\(100\%-var\(--sidebar-width\)\)\]{width:calc(100% - var(--sidebar-width))}.astw\:w-auto{width:auto}.astw\:w-fit{width:fit-content}.astw\:w-full{width:100%}.astw\:max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.astw\:max-w-5xl{max-width:var(--astw-container-5xl)}.astw\:max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.astw\:min-w-0{min-width:calc(var(--astw-spacing) * 0)}.astw\:min-w-5{min-width:calc(var(--astw-spacing) * 5)}.astw\:flex-1{flex:1}.astw\:shrink-0{flex-shrink:0}.astw\:caption-bottom{caption-side:bottom}.astw\:origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.astw\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:-translate-x-px{--tw-translate-x: -1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-x-\[-50\%\]{--tw-translate-x: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-x-px{--tw-translate-x: 1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-y-\[-50\%\]{--tw-translate-y: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.astw\:rotate-45{rotate:45deg}.astw\:animate-in{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.astw\:animate-pulse{animation:var(--astw-animate-pulse)}.astw\:flex-col{flex-direction:column}.astw\:flex-col-reverse{flex-direction:column-reverse}.astw\:flex-row{flex-direction:row}.astw\:flex-wrap{flex-wrap:wrap}.astw\:items-center{align-items:center}.astw\:justify-between{justify-content:space-between}.astw\:justify-center{justify-content:center}.astw\:justify-start{justify-content:flex-start}.astw\:gap-0\.5{gap:calc(var(--astw-spacing) * .5)}.astw\:gap-1{gap:calc(var(--astw-spacing) * 1)}.astw\:gap-1\.5{gap:calc(var(--astw-spacing) * 1.5)}.astw\:gap-2{gap:calc(var(--astw-spacing) * 2)}.astw\:gap-3{gap:calc(var(--astw-spacing) * 3)}.astw\:gap-4{gap:calc(var(--astw-spacing) * 4)}.astw\:gap-\[10px\]{gap:10px}.astw\:overflow-auto{overflow:auto}.astw\:overflow-hidden{overflow:hidden}.astw\:overflow-x-auto{overflow-x:auto}.astw\:rounded-\[2px\]{border-radius:2px}.astw\:rounded-lg{border-radius:var(--radius)}.astw\:rounded-md{border-radius:calc(var(--radius) - 2px)}.astw\:rounded-sm{border-radius:calc(var(--radius) - 4px)}.astw\:rounded-xs{border-radius:var(--astw-radius-xs)}.astw\:border{border-style:var(--tw-border-style);border-width:1px}.astw\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.astw\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.astw\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.astw\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.astw\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.astw\:border-input{border-color:var(--input)}.astw\:border-sidebar-border{border-color:var(--sidebar-border)}.astw\:border-x-border{border-inline-color:var(--border)}.astw\:bg-accent{background-color:var(--accent)}.astw\:bg-background{background-color:var(--background)}.astw\:bg-black\/50{background-color:var(--astw-color-black);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--astw-color-black) 50%,transparent)}}.astw\:bg-border{background-color:var(--border)}.astw\:bg-card{background-color:var(--card)}.astw\:bg-destructive{background-color:var(--destructive)}.astw\:bg-muted\/50{background-color:var(--muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.astw\:bg-primary{background-color:var(--primary)}.astw\:bg-secondary{background-color:var(--secondary)}.astw\:bg-sidebar{background-color:var(--sidebar)}.astw\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.astw\:bg-sidebar-border{background-color:var(--sidebar-border)}.astw\:bg-transparent{background-color:transparent}.astw\:fill-primary{fill:var(--primary)}.astw\:p-0{padding:calc(var(--astw-spacing) * 0)}.astw\:p-2{padding:calc(var(--astw-spacing) * 2)}.astw\:p-3{padding:calc(var(--astw-spacing) * 3)}.astw\:p-4{padding:calc(var(--astw-spacing) * 4)}.astw\:p-6{padding:calc(var(--astw-spacing) * 6)}.astw\:px-1{padding-inline:calc(var(--astw-spacing) * 1)}.astw\:px-2{padding-inline:calc(var(--astw-spacing) * 2)}.astw\:px-2\.5{padding-inline:calc(var(--astw-spacing) * 2.5)}.astw\:px-3{padding-inline:calc(var(--astw-spacing) * 3)}.astw\:px-4{padding-inline:calc(var(--astw-spacing) * 4)}.astw\:px-6{padding-inline:calc(var(--astw-spacing) * 6)}.astw\:py-0\.5{padding-block:calc(var(--astw-spacing) * .5)}.astw\:py-1{padding-block:calc(var(--astw-spacing) * 1)}.astw\:py-1\.5{padding-block:calc(var(--astw-spacing) * 1.5)}.astw\:py-2{padding-block:calc(var(--astw-spacing) * 2)}.astw\:text-center{text-align:center}.astw\:text-left{text-align:left}.astw\:align-middle{vertical-align:middle}.astw\:text-base{font-size:var(--astw-text-base);line-height:var(--tw-leading, var(--astw-text-base--line-height))}.astw\:text-lg{font-size:var(--astw-text-lg);line-height:var(--tw-leading, var(--astw-text-lg--line-height))}.astw\:text-sm{font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}.astw\:text-xs{font-size:var(--astw-text-xs);line-height:var(--tw-leading, var(--astw-text-xs--line-height))}.astw\:leading-\[36px\]{--tw-leading: 36px;line-height:36px}.astw\:leading-none{--tw-leading: 1;line-height:1}.astw\:font-bold{--tw-font-weight: var(--astw-font-weight-bold);font-weight:var(--astw-font-weight-bold)}.astw\:font-medium{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}.astw\:font-normal{--tw-font-weight: var(--astw-font-weight-normal);font-weight:var(--astw-font-weight-normal)}.astw\:font-semibold{--tw-font-weight: var(--astw-font-weight-semibold);font-weight:var(--astw-font-weight-semibold)}.astw\:tracking-tight{--tw-tracking: var(--astw-tracking-tight);letter-spacing:var(--astw-tracking-tight)}.astw\:text-balance{text-wrap:balance}.astw\:break-words{overflow-wrap:break-word}.astw\:whitespace-nowrap{white-space:nowrap}.astw\:text-foreground{color:var(--foreground)}.astw\:text-muted-foreground{color:var(--muted-foreground)}.astw\:text-primary{color:var(--primary)}.astw\:text-primary-foreground{color:var(--primary-foreground)}.astw\:text-secondary-foreground{color:var(--secondary-foreground)}.astw\:text-sidebar-foreground{color:var(--sidebar-foreground)}.astw\:text-sidebar-foreground\/70{color:var(--sidebar-foreground);@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.astw\:text-white{color:var(--astw-color-white)}.astw\:tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.astw\:underline-offset-4{text-underline-offset:4px}.astw\:opacity-70{opacity:70%}.astw\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-none{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.astw\:ring-sidebar-ring{--tw-ring-color: var(--sidebar-ring)}.astw\:outline-hidden{--tw-outline-style: none;outline-style:none;@media (forced-colors: active){outline:2px solid transparent;outline-offset:2px}}.astw\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--astw-default-transition-timing-function));transition-duration:var(--tw-duration, var(--astw-default-transition-duration))}.astw\:duration-200{--tw-duration: .2s;transition-duration:.2s}.astw\:ease-in-out{--tw-ease: var(--astw-ease-in-out);transition-timing-function:var(--astw-ease-in-out)}.astw\:ease-linear{--tw-ease: linear;transition-timing-function:linear}.astw\:outline-none{--tw-outline-style: none;outline-style:none}.astw\:select-none{-webkit-user-select:none;user-select:none}.astw\:fade-in-0{--tw-enter-opacity: 0}.astw\:zoom-in-95{--tw-enter-scale: .95}.astw\:group-focus-within\/menu-item\:opacity-100{&:is(:where(.astw\:group\/menu-item):focus-within *){opacity:100%}}.astw\:group-hover\/menu-item\:opacity-100{&:is(:where(.astw\:group\/menu-item):hover *){@media (hover: hover){opacity:100%}}}.astw\:group-has-data-\[collapsible\=icon\]\/sidebar-wrapper\:h-12{&:is(:where(.astw\:group\/sidebar-wrapper):has(*[data-collapsible=icon]) *){height:calc(var(--astw-spacing) * 12)}}.astw\:group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8{&:is(:where(.astw\:group\/menu-item):has(*[data-sidebar=menu-action]) *){padding-right:calc(var(--astw-spacing) * 8)}}.astw\:group-data-\[collapsible\=icon\]\:-mt-8{&:is(:where(.astw\:group)[data-collapsible=icon] *){margin-top:calc(var(--astw-spacing) * -8)}}.astw\:group-data-\[collapsible\=icon\]\:hidden{&:is(:where(.astw\:group)[data-collapsible=icon] *){display:none}}.astw\:group-data-\[collapsible\=icon\]\:size-8\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--astw-spacing) * 8)!important;height:calc(var(--astw-spacing) * 8)!important}}.astw\:group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\){&:is(:where(.astw\:group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}}.astw\:group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--astw-spacing) * 4)))}}.astw\:group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{&:is(:where(.astw\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--astw-spacing) * 4)) + 2px)}}.astw\:group-data-\[collapsible\=icon\]\:overflow-hidden{&:is(:where(.astw\:group)[data-collapsible=icon] *){overflow:hidden}}.astw\:group-data-\[collapsible\=icon\]\:p-0\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){padding:calc(var(--astw-spacing) * 0)!important}}.astw\:group-data-\[collapsible\=icon\]\:p-2\!{&:is(:where(.astw\:group)[data-collapsible=icon] *){padding:calc(var(--astw-spacing) * 2)!important}}.astw\:group-data-\[collapsible\=icon\]\:opacity-0{&:is(:where(.astw\:group)[data-collapsible=icon] *){opacity:0%}}.astw\:group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}}.astw\:group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}}.astw\:group-data-\[collapsible\=offcanvas\]\:w-0{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){width:calc(var(--astw-spacing) * 0)}}.astw\:group-data-\[collapsible\=offcanvas\]\:translate-x-0{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){--tw-translate-x: calc(var(--astw-spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}}.astw\:group-data-\[side\=left\]\:-right-4{&:is(:where(.astw\:group)[data-side=left] *){right:calc(var(--astw-spacing) * -4)}}.astw\:group-data-\[side\=left\]\:border-r{&:is(:where(.astw\:group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}}.astw\:group-data-\[side\=right\]\:left-0{&:is(:where(.astw\:group)[data-side=right] *){left:calc(var(--astw-spacing) * 0)}}.astw\:group-data-\[side\=right\]\:rotate-180{&:is(:where(.astw\:group)[data-side=right] *){rotate:180deg}}.astw\:group-data-\[side\=right\]\:border-l{&:is(:where(.astw\:group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}}.astw\:group-data-\[variant\=floating\]\:rounded-lg{&:is(:where(.astw\:group)[data-variant=floating] *){border-radius:var(--radius)}}.astw\:group-data-\[variant\=floating\]\:border{&:is(:where(.astw\:group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}}.astw\:group-data-\[variant\=floating\]\:border-sidebar-border{&:is(:where(.astw\:group)[data-variant=floating] *){border-color:var(--sidebar-border)}}.astw\:group-data-\[variant\=floating\]\:shadow-sm{&:is(:where(.astw\:group)[data-variant=floating] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:peer-hover\/menu-button\:text-sidebar-accent-foreground{&:is(:where(.astw\:peer\/menu-button):hover~*){@media (hover: hover){color:var(--sidebar-accent-foreground)}}}.astw\:peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{&:is(:where(.astw\:peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}}.astw\:peer-data-\[size\=default\]\/menu-button\:top-1\.5{&:is(:where(.astw\:peer\/menu-button)[data-size=default]~*){top:calc(var(--astw-spacing) * 1.5)}}.astw\:peer-data-\[size\=lg\]\/menu-button\:top-2\.5{&:is(:where(.astw\:peer\/menu-button)[data-size=lg]~*){top:calc(var(--astw-spacing) * 2.5)}}.astw\:peer-data-\[size\=sm\]\/menu-button\:top-1{&:is(:where(.astw\:peer\/menu-button)[data-size=sm]~*){top:calc(var(--astw-spacing) * 1)}}.astw\:selection\:bg-primary{& *::selection{background-color:var(--primary)}&::selection{background-color:var(--primary)}}.astw\:selection\:text-primary-foreground{& *::selection{color:var(--primary-foreground)}&::selection{color:var(--primary-foreground)}}.astw\:file\:inline-flex{&::file-selector-button{display:inline-flex}}.astw\:file\:h-7{&::file-selector-button{height:calc(var(--astw-spacing) * 7)}}.astw\:file\:border-0{&::file-selector-button{border-style:var(--tw-border-style);border-width:0px}}.astw\:file\:bg-transparent{&::file-selector-button{background-color:transparent}}.astw\:file\:text-sm{&::file-selector-button{font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}}.astw\:file\:font-medium{&::file-selector-button{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}}.astw\:file\:text-foreground{&::file-selector-button{color:var(--foreground)}}.astw\:placeholder\:text-muted-foreground{&::placeholder{color:var(--muted-foreground)}}.astw\:after\:absolute{&:after{content:var(--tw-content);position:absolute}}.astw\:after\:-inset-2{&:after{content:var(--tw-content);inset:calc(var(--astw-spacing) * -2)}}.astw\:after\:inset-y-0{&:after{content:var(--tw-content);inset-block:calc(var(--astw-spacing) * 0)}}.astw\:after\:left-1\/2{&:after{content:var(--tw-content);left:50%}}.astw\:after\:w-\[2px\]{&:after{content:var(--tw-content);width:2px}}.astw\:group-data-\[collapsible\=offcanvas\]\:after\:left-full{&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){&:after{content:var(--tw-content);left:100%}}}.astw\:last\:text-foreground{&:last-child{color:var(--foreground)}}.astw\:hover\:bg-accent{&:hover{@media (hover: hover){background-color:var(--accent)}}}.astw\:hover\:bg-destructive\/90{&:hover{@media (hover: hover){background-color:var(--destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}}.astw\:hover\:bg-muted\/50{&:hover{@media (hover: hover){background-color:var(--muted);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}}.astw\:hover\:bg-primary\/90{&:hover{@media (hover: hover){background-color:var(--primary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}}.astw\:hover\:bg-secondary\/80{&:hover{@media (hover: hover){background-color:var(--secondary);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}}.astw\:hover\:bg-sidebar-accent{&:hover{@media (hover: hover){background-color:var(--sidebar-accent)}}}.astw\:hover\:text-accent-foreground{&:hover{@media (hover: hover){color:var(--accent-foreground)}}}.astw\:hover\:text-foreground{&:hover{@media (hover: hover){color:var(--foreground)}}}.astw\:hover\:text-sidebar-accent-foreground{&:hover{@media (hover: hover){color:var(--sidebar-accent-foreground)}}}.astw\:hover\:underline{&:hover{@media (hover: hover){text-decoration-line:underline}}}.astw\:hover\:opacity-100{&:hover{@media (hover: hover){opacity:100%}}}.astw\:hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]{&:hover{@media (hover: hover){--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.astw\:hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar{&:hover{@media (hover: hover){&:is(:where(.astw\:group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}}}}.astw\:hover\:after\:bg-sidebar-border{&:hover{@media (hover: hover){&:after{content:var(--tw-content);background-color:var(--sidebar-border)}}}}.astw\:focus\:ring-2{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:focus\:ring-ring{&:focus{--tw-ring-color: var(--ring)}}.astw\:focus\:ring-offset-2{&:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.astw\:focus\:outline-hidden{&:focus{--tw-outline-style: none;outline-style:none;@media (forced-colors: active){outline:2px solid transparent;outline-offset:2px}}}.astw\:focus-visible\:border-ring{&:focus-visible{border-color:var(--ring)}}.astw\:focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.astw\:focus-visible\:ring-\[3px\]{&: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)}}.astw\:focus-visible\:ring-destructive\/20{&:focus-visible{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}}.astw\:focus-visible\:ring-ring\/50{&:focus-visible{--tw-ring-color: var(--ring);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}}.astw\:active\:bg-sidebar-accent{&:active{background-color:var(--sidebar-accent)}}.astw\:active\:text-sidebar-accent-foreground{&:active{color:var(--sidebar-accent-foreground)}}.astw\:disabled\:pointer-events-none{&:disabled{pointer-events:none}}.astw\:disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.astw\:disabled\:opacity-50{&:disabled{opacity:50%}}.astw\:in-data-\[side\=left\]\:cursor-w-resize{:where(*[data-side=left]) &{cursor:w-resize}}.astw\:in-data-\[side\=right\]\:cursor-e-resize{:where(*[data-side=right]) &{cursor:e-resize}}.astw\:has-data-\[variant\=inset\]\:bg-sidebar{&:has(*[data-variant=inset]){background-color:var(--sidebar)}}.astw\:has-\[\>svg\]\:px-2\.5{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 2.5)}}.astw\:has-\[\>svg\]\:px-3{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 3)}}.astw\:has-\[\>svg\]\:px-4{&:has(>svg){padding-inline:calc(var(--astw-spacing) * 4)}}.astw\:aria-disabled\:pointer-events-none{&[aria-disabled=true]{pointer-events:none}}.astw\:aria-disabled\:opacity-50{&[aria-disabled=true]{opacity:50%}}.astw\:aria-invalid\:border-destructive{&[aria-invalid=true]{border-color:var(--destructive)}}.astw\:aria-invalid\:ring-destructive\/20{&[aria-invalid=true]{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}}.astw\:data-\[active\=true\]\:bg-sidebar-accent{&[data-active=true]{background-color:var(--sidebar-accent)}}.astw\:data-\[active\=true\]\:font-medium{&[data-active=true]{--tw-font-weight: var(--astw-font-weight-medium);font-weight:var(--astw-font-weight-medium)}}.astw\:data-\[active\=true\]\:text-sidebar-accent-foreground{&[data-active=true]{color:var(--sidebar-accent-foreground)}}.astw\:data-\[orientation\=horizontal\]\:h-px{&[data-orientation=horizontal]{height:1px}}.astw\:data-\[orientation\=horizontal\]\:w-full{&[data-orientation=horizontal]{width:100%}}.astw\:data-\[orientation\=vertical\]\:h-full{&[data-orientation=vertical]{height:100%}}.astw\:data-\[orientation\=vertical\]\:w-px{&[data-orientation=vertical]{width:1px}}.astw\:data-\[side\=bottom\]\:slide-in-from-top-2{&[data-side=bottom]{--tw-enter-translate-y: calc(2*var(--spacing)*-1)}}.astw\:data-\[side\=left\]\:slide-in-from-right-2{&[data-side=left]{--tw-enter-translate-x: calc(2*var(--spacing))}}.astw\:data-\[side\=right\]\:slide-in-from-left-2{&[data-side=right]{--tw-enter-translate-x: calc(2*var(--spacing)*-1)}}.astw\:data-\[side\=top\]\:slide-in-from-bottom-2{&[data-side=top]{--tw-enter-translate-y: calc(2*var(--spacing))}}.astw\:data-\[state\=closed\]\:animate-out{&[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}}.astw\:data-\[state\=closed\]\:duration-300{&[data-state=closed]{--tw-duration: .3s;transition-duration:.3s}}.astw\:data-\[state\=closed\]\:fade-out-0{&[data-state=closed]{--tw-exit-opacity: 0}}.astw\:data-\[state\=closed\]\:slide-out-to-bottom{&[data-state=closed]{--tw-exit-translate-y: 100%}}.astw\:data-\[state\=closed\]\:slide-out-to-left{&[data-state=closed]{--tw-exit-translate-x: -100%}}.astw\:data-\[state\=closed\]\:slide-out-to-right{&[data-state=closed]{--tw-exit-translate-x: 100%}}.astw\:data-\[state\=closed\]\:slide-out-to-top{&[data-state=closed]{--tw-exit-translate-y: -100%}}.astw\:data-\[state\=closed\]\:zoom-out-95{&[data-state=closed]{--tw-exit-scale: .95}}.astw\:data-\[state\=open\]\:rotate-90{&[data-state=open]{rotate:90deg}}.astw\:data-\[state\=open\]\:animate-in{&[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}}.astw\:data-\[state\=open\]\:bg-accent{&[data-state=open]{background-color:var(--accent)}}.astw\:data-\[state\=open\]\:bg-secondary{&[data-state=open]{background-color:var(--secondary)}}.astw\:data-\[state\=open\]\:text-muted-foreground{&[data-state=open]{color:var(--muted-foreground)}}.astw\:data-\[state\=open\]\:opacity-100{&[data-state=open]{opacity:100%}}.astw\:data-\[state\=open\]\:duration-500{&[data-state=open]{--tw-duration: .5s;transition-duration:.5s}}.astw\:data-\[state\=open\]\:fade-in-0{&[data-state=open]{--tw-enter-opacity: 0}}.astw\:data-\[state\=open\]\:slide-in-from-bottom{&[data-state=open]{--tw-enter-translate-y: 100%}}.astw\:data-\[state\=open\]\:slide-in-from-left{&[data-state=open]{--tw-enter-translate-x: -100%}}.astw\:data-\[state\=open\]\:slide-in-from-right{&[data-state=open]{--tw-enter-translate-x: 100%}}.astw\:data-\[state\=open\]\:slide-in-from-top{&[data-state=open]{--tw-enter-translate-y: -100%}}.astw\:data-\[state\=open\]\:zoom-in-95{&[data-state=open]{--tw-enter-scale: .95}}.astw\:data-\[state\=open\]\:hover\:bg-sidebar-accent{&[data-state=open]{&:hover{@media (hover: hover){background-color:var(--sidebar-accent)}}}}.astw\:data-\[state\=open\]\:hover\:text-sidebar-accent-foreground{&[data-state=open]{&:hover{@media (hover: hover){color:var(--sidebar-accent-foreground)}}}}.astw\:data-\[state\=selected\]\:bg-muted{&[data-state=selected]{background-color:var(--muted)}}.astw\:sm\:flex{@media (width >= 40rem){display:flex}}.astw\:sm\:max-w-lg{@media (width >= 40rem){max-width:var(--astw-container-lg)}}.astw\:sm\:max-w-sm{@media (width >= 40rem){max-width:var(--astw-container-sm)}}.astw\:sm\:flex-row{@media (width >= 40rem){flex-direction:row}}.astw\:sm\:justify-end{@media (width >= 40rem){justify-content:flex-end}}.astw\:sm\:gap-2\.5{@media (width >= 40rem){gap:calc(var(--astw-spacing) * 2.5)}}.astw\:sm\:text-left{@media (width >= 40rem){text-align:left}}.astw\:md\:block{@media (width >= 48rem){display:block}}.astw\:md\:flex{@media (width >= 48rem){display:flex}}.astw\:md\:hidden{@media (width >= 48rem){display:none}}.astw\:md\:w-xs{@media (width >= 48rem){width:var(--astw-container-xs)}}.astw\:md\:flex-row{@media (width >= 48rem){flex-direction:row}}.astw\:md\:text-sm{@media (width >= 48rem){font-size:var(--astw-text-sm);line-height:var(--tw-leading, var(--astw-text-sm--line-height))}}.astw\:md\:opacity-0{@media (width >= 48rem){opacity:0%}}.astw\:md\:peer-data-\[variant\=inset\]\:px-8{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){padding-inline:calc(var(--astw-spacing) * 8)}}}.astw\:md\:peer-data-\[variant\=inset\]\:py-2{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){padding-block:calc(var(--astw-spacing) * 2)}}}.astw\:md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:pl-2{@media (width >= 48rem){&:is(:where(.astw\:peer)[data-variant=inset]~*){&:is(:where(.astw\:peer)[data-state=collapsed]~*){padding-left:calc(var(--astw-spacing) * 2)}}}}.astw\:md\:after\:hidden{@media (width >= 48rem){&:after{content:var(--tw-content);display:none}}}.astw\:dark\:border-input{&:where(.dark,.dark *){border-color:var(--input)}}.astw\:dark\:bg-destructive\/60{&:where(.dark,.dark *){background-color:var(--destructive);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}}.astw\:dark\:bg-input\/30{&:where(.dark,.dark *){background-color:var(--input);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}}.astw\:dark\:hover\:bg-accent\/50{&:where(.dark,.dark *){&:hover{@media (hover: hover){background-color:var(--accent);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}}}.astw\:dark\:hover\:bg-input\/50{&:where(.dark,.dark *){&:hover{@media (hover: hover){background-color:var(--input);@supports (color: color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}}}.astw\:dark\:focus-visible\:ring-destructive\/40{&:where(.dark,.dark *){&:focus-visible{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}}}.astw\:dark\:aria-invalid\:ring-destructive\/40{&:where(.dark,.dark *){&[aria-invalid=true]{--tw-ring-color: var(--destructive);@supports (color: color-mix(in lab,red,red)){--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}}}.astw\:\[\&_svg\]\:pointer-events-none{& svg{pointer-events:none}}.astw\:\[\&_svg\]\:shrink-0{& svg{flex-shrink:0}}.astw\:\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4{& svg:not([class*=size-]){width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}}.astw\:\[\&_tr\]\:border-b{& tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}.astw\:\[\&_tr\:last-child\]\:border-0{& tr:last-child{border-style:var(--tw-border-style);border-width:0px}}.astw\:\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0{&:has([role=checkbox]){padding-right:calc(var(--astw-spacing) * 0)}}.astw\:\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]{>[role=checkbox]{--tw-translate-y: 2px;translate:var(--tw-translate-x) var(--tw-translate-y)}}.astw\:\[\&\>button\]\:hidden{>button{display:none}}.astw\:\[\&\>span\:last-child\]\:truncate{>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.astw\:\[\&\>svg\]\:size-3\.5{>svg{width:calc(var(--astw-spacing) * 3.5);height:calc(var(--astw-spacing) * 3.5)}}.astw\:\[\&\>svg\]\:size-4{>svg{width:calc(var(--astw-spacing) * 4);height:calc(var(--astw-spacing) * 4)}}.astw\:\[\&\>svg\]\:shrink-0{>svg{flex-shrink:0}}.astw\:\[\&\>svg\]\:text-sidebar-accent-foreground{>svg{color:var(--sidebar-accent-foreground)}}.astw\:\[\&\>tr\]\:last\:border-b-0{>tr{&:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}}}.astw\:\[\&\[data-state\=open\]_\.astw-rotate-target\]\:rotate-90{&[data-state=open] .astw-rotate-target{rotate:90deg}}.astw\:\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{[data-side=left][data-collapsible=offcanvas] &{right:calc(var(--astw-spacing) * -2)}}.astw\:\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{[data-side=left][data-state=collapsed] &{cursor:e-resize}}.astw\:\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{[data-side=right][data-collapsible=offcanvas] &{left:calc(var(--astw-spacing) * -2)}}.astw\:\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{[data-side=right][data-state=collapsed] &{cursor:w-resize}}}:root{--background: rgba(250, 250, 250, 1);--foreground: rgba(10, 10, 10, 1);--card: rgba(255, 255, 255, 1);--card-foreground: rgba(10, 10, 10, 1);--popover: rgba(255, 255, 255, 1);--popover-foreground: rgba(10, 10, 10, 1);--primary: rgba(23, 23, 23, 1);--primary-foreground: rgba(250, 250, 250, 1);--secondary: rgba(245, 245, 245, 1);--secondary-foreground: rgba(23, 23, 23, 1);--muted: rgba(245, 245, 245, 1);--muted-foreground: rgba(115, 115, 115, 1);--accent: rgba(245, 245, 245, 1);--accent-foreground: rgba(23, 23, 23, 1);--destructive: rgba(220, 38, 38, 1);--destructive-foreground: rgba(254, 242, 242, 1);--border: rgba(229, 229, 229, 1);--input: rgba(229, 229, 229, 1);--ring: rgba(163, 163, 163, 1);--chart-1: rgba(234, 88, 12, 1);--chart-2: rgba(13, 148, 136, 1);--chart-3: rgba(22, 78, 99, 1);--chart-4: rgba(251, 191, 36, 1);--chart-5: rgba(245, 158, 11, 1);--radius: .625rem;--sidebar: rgba(250, 250, 250, 1);--sidebar-foreground: rgba(10, 10, 10, 1);--sidebar-primary: rgba(23, 23, 23, 1);--sidebar-primary-foreground: rgba(250, 250, 250, 1);--sidebar-accent: rgba(245, 245, 245, 1);--sidebar-accent-foreground: rgba(23, 23, 23, 1);--sidebar-border: rgba(229, 229, 229, 1);--sidebar-ring: rgba(163, 163, 163, 1)}.dark{--background: rgba(10, 10, 10, 1);--foreground: rgba(250, 250, 250, 1);--card: rgba(23, 23, 23, 1);--card-foreground: rgba(250, 250, 250, 1);--popover: rgba(38, 38, 38, 1);--popover-foreground: rgba(250, 250, 250, 1);--primary: rgba(229, 229, 229, 1);--primary-foreground: rgba(23, 23, 23, 1);--secondary: rgba(38, 38, 38, 1);--secondary-foreground: rgba(250, 250, 250, 1);--muted: rgba(38, 38, 38, 1);--muted-foreground: rgba(163, 163, 163, 1);--accent: rgba(64, 64, 64, 1);--accent-foreground: rgba(250, 250, 250, 1);--destructive: rgba(248, 113, 113, 1);--destructive-foreground: rgba(254, 242, 242, 1);--border: rgba(255, 255, 255, .10000000149011612);--input: rgba(255, 255, 255, .15000000596046448);--ring: rgba(115, 115, 115, 1);--chart-1: rgba(29, 78, 216, 1);--chart-2: rgba(16, 185, 129, 1);--chart-3: rgba(245, 158, 11, 1);--chart-4: rgba(168, 85, 247, 1);--chart-5: rgba(244, 63, 94, 1);--sidebar: rgba(23, 23, 23, 1);--sidebar-foreground: rgba(250, 250, 250, 1);--sidebar-primary: rgba(29, 78, 216, 1);--sidebar-primary-foreground: rgba(250, 250, 250, 1);--sidebar-accent: rgba(38, 38, 38, 1);--sidebar-accent-foreground: rgba(250, 250, 250, 1);--sidebar-border: rgba(255, 255, 255, .10000000149011612);--sidebar-ring: rgba(82, 82, 82, 1)}@layer base{*,:after,:before,::backdrop,::file-selector-button{border-color:var(--color-gray-200, currentcolor)}}@layer base{*{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-color:var(--background);font-family:var(--astw-font-sans);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{height:calc(var(--astw-spacing) * 2);width:calc(var(--astw-spacing) * 2);background-color:var(--muted)}::-webkit-scrollbar-thumb{border-radius:.25rem;background-color:var(--muted-foreground)}::-webkit-scrollbar-corner{background-color:var(--muted-foreground)}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-content{syntax: "*"; initial-value: ""; inherits: false;}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-duration: initial;--tw-ease: initial;--tw-content: ""}}}
2
2
  /*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ type CommonPageResource = {
8
8
  component: () => ReactNode;
9
9
  meta: {
10
10
  title: string;
11
+ icon?: ReactNode;
11
12
  };
12
13
  };
13
14
  /**
@@ -33,6 +34,7 @@ type Resource = CommonPageResource & {
33
34
  type Modules = Array<Module>;
34
35
  type RootConfiguration = {
35
36
  modules: Modules;
37
+ settingsResources?: Resource[];
36
38
  basePath?: string;
37
39
  };
38
40
  type ResourceMetaProps = {
@@ -42,6 +44,7 @@ type ResourceMetaProps = {
42
44
  * If not provided, the title will be generated from the path.
43
45
  */
44
46
  title?: string;
47
+ icon?: ReactNode;
45
48
  /**
46
49
  * Whether to show a border around the content.
47
50
  *
@@ -68,6 +71,7 @@ type CommonProps = {
68
71
  };
69
72
  type ResourceComponentProps = {
70
73
  title: string;
74
+ icon?: ReactNode;
71
75
  resources?: Array<Resource>;
72
76
  };
73
77
  type ReactResourceProps = {
@@ -173,6 +177,10 @@ type AppShellProps = {
173
177
  * Navigation configuration
174
178
  */
175
179
  modules: Modules;
180
+ /**
181
+ * Modules that appear only in Settings
182
+ */
183
+ settingsModules?: Modules;
176
184
  };
177
185
  };
178
186
  declare const AppShell: (props: React.PropsWithChildren<AppShellProps>) => react_jsx_runtime.JSX.Element | null;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{Table as la}from"lucide-react";import{useEffect as ca,useMemo as wa,useState as pa}from"react";import{createContext as qt,useContext as Yt}from"react";var V=qt({navItems:[],configurations:{modules:[]}}),S=()=>Yt(V);import{createBrowserRouter as Zt,RouterProvider as ta}from"react-router";import{Outlet as Xt}from"react-router";import{Toaster as Qt}from"sonner";import{Fragment as Jt,jsx as _,jsxs as rt}from"react/jsx-runtime";var D=({contentBorder:t,children:a})=>_("div",{className:t?"astw:p-4 astw:rounded-sm astw:border astw:shadow-xs":"",children:a}),et=()=>rt(D,{contentBorder:!0,children:[_("p",{className:"astw:font-semibold astw:leading-none astw:tracking-tight",children:"Welcome to AppShell"}),_("p",{className:"pt-4",children:"Add your GraphQL resources from configuration at first!"})]}),K=()=>rt(Jt,{children:[_(Xt,{}),_(Qt,{})]});import{jsx as aa}from"react/jsx-runtime";var ot=t=>{let a={index:!0,Component:t.component};return{path:t.path,...t.subResources&&t.subResources.length>0?{children:[a,...t.subResources.map(ot)]}:{children:[a]}}},st=t=>{let{configurations:a}=S(),e=a.modules.reduce((o,s)=>{let l={index:!0,Component:s.component};return[...o,{path:s.path,...s.resources&&s.resources.length>0?{children:[l,...s.resources.map(ot)]}:{children:[l]}}]},[]),r=Zt([{path:a.basePath,element:t.children,children:[{index:!0,Component:et},{path:R,children:e}]}]);return aa(ta,{router:r})};import{createContext as ea,useContext as ra,useEffect as oa,useMemo as sa,useState as ia}from"react";import{jsx as da}from"react/jsx-runtime";var na={resolvedTheme:"light",theme:"system",setTheme:()=>null},it=ea(na);function nt({children:t,storageKey:a,defaultTheme:e="system",...r}){let[o,s]=ia(()=>localStorage.getItem(a)||e),l=sa(()=>o!=="system"?o:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[o]);oa(()=>{let d=window.document.documentElement;d.classList.remove("light","dark"),d.classList.add(l)},[l]);let i={resolvedTheme:l,theme:o,setTheme:d=>{localStorage.setItem(a,d),s(d)}};return da(it.Provider,{...r,value:i,children:t})}var F=()=>{let t=ra(it);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t};import{jsx as $}from"react/jsx-runtime";var R="resources",ua=t=>{let[a,e]=pa(!1);ca(function(){e(!0)},[]);let r=t.configurations.basePath,o=l=>r?`/${r}/${R}/${l}`:`/${R}/${l}`,s=wa(()=>t.configurations.modules.map(i=>{let d=i.resources.map(w=>({title:w.meta.title,url:o(`${i.path}/${w.path}`)}));return{title:i.meta.title,url:i.meta.menuItemClickable?o(i.path):void 0,clickable:i.component,icon:i.meta.icon||$(la,{}),isActive:!0,items:d}}),[t.configurations.modules]);return a?$(V.Provider,{value:{title:t.title,icon:t.icon,configurations:{...t.configurations,basePath:r},navItems:s},children:$(nt,{defaultTheme:"system",storageKey:"appshell-ui-theme",children:$(st,{children:t.children})})}):null};import*as T from"@radix-ui/react-collapsible";import{jsx as G}from"react/jsx-runtime";function dt({...t}){return G(T.Root,{"data-slot":"collapsible",...t})}function j({...t}){return G(T.CollapsibleTrigger,{"data-slot":"collapsible-trigger",...t})}function lt({...t}){return G(T.CollapsibleContent,{"data-slot":"collapsible-content",...t})}import{useLocation as Ut}from"react-router";import*as b from"react";import{Slot as Q}from"@radix-ui/react-slot";import{cva as Sa}from"class-variance-authority";import{PanelLeftIcon as Ra}from"lucide-react";import*as U from"react";var q=768;function ct(){let[t,a]=U.useState(void 0);return U.useEffect(()=>{let e=window.matchMedia(`(max-width: ${q-1}px)`),r=()=>{a(window.innerWidth<q)};return e.addEventListener("change",r),a(window.innerWidth<q),()=>e.removeEventListener("change",r)},[]),!!t}import{clsx as ga}from"clsx";import{twMerge as ma}from"tailwind-merge";function c(...t){return ma(ga(t))}import{Slot as ba}from"@radix-ui/react-slot";import{cva as ha}from"class-variance-authority";import{jsx as va}from"react/jsx-runtime";var fa=ha("astw:inline-flex astw:items-center astw:justify-center astw:gap-2 astw:whitespace-nowrap astw:rounded-md astw:text-sm astw:font-medium astw:transition-all astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:[&_svg]:pointer-events-none astw:[&_svg:not([class*='size-'])]:size-4 astw:shrink-0 astw:[&_svg]:shrink-0 astw:outline-none astw:focus-visible:border-ring astw:focus-visible:ring-ring/50 astw:focus-visible:ring-[3px] astw:aria-invalid:ring-destructive/20 astw:dark:aria-invalid:ring-destructive/40 astw:aria-invalid:border-destructive",{variants:{variant:{default:"astw:bg-primary astw:text-primary-foreground astw:shadow-xs astw:hover:bg-primary/90",destructive:"astw:bg-destructive astw:text-white astw:shadow-xs astw:hover:bg-destructive/90 astw:focus-visible:ring-destructive/20 astw:dark:focus-visible:ring-destructive/40 astw:dark:bg-destructive/60",outline:"astw:border astw:bg-background astw:shadow-xs astw:hover:bg-accent astw:hover:text-accent-foreground astw:dark:bg-input/30 astw:dark:border-input astw:dark:hover:bg-input/50",secondary:"astw:bg-secondary astw:text-secondary-foreground astw:shadow-xs astw:hover:bg-secondary/80",ghost:"astw:hover:bg-accent astw:hover:text-accent-foreground astw:dark:hover:bg-accent/50",link:"astw:text-primary astw:underline-offset-4 astw:hover:underline"},size:{default:"astw:h-9 astw:px-4 astw:py-2 astw:has-[>svg]:px-3",sm:"astw:h-8 astw:rounded-md astw:gap-1.5 astw:px-3 astw:has-[>svg]:px-2.5",lg:"astw:h-10 astw:rounded-md astw:px-6 astw:has-[>svg]:px-4",icon:"astw:size-9"}},defaultVariants:{variant:"default",size:"default"}});function W({className:t,variant:a,size:e,asChild:r=!1,...o}){return va(r?ba:"button",{"data-slot":"button",className:c(fa({variant:a,size:e,className:t})),...o})}import{jsx as We}from"react/jsx-runtime";import*as xa from"@radix-ui/react-separator";import{jsx as Fe}from"react/jsx-runtime";import*as g from"@radix-ui/react-dialog";import{XIcon as ya}from"lucide-react";import{jsx as x,jsxs as Y}from"react/jsx-runtime";function wt({...t}){return x(g.Root,{"data-slot":"sheet",...t})}function ka({...t}){return x(g.Portal,{"data-slot":"sheet-portal",...t})}function Pa({className:t,...a}){return x(g.Overlay,{"data-slot":"sheet-overlay",className:c("astw:data-[state=open]:animate-in astw:data-[state=closed]:animate-out astw:data-[state=closed]:fade-out-0 astw:data-[state=open]:fade-in-0 astw:fixed astw:inset-0 astw:z-50 astw:bg-black/50",t),...a})}function pt({className:t,children:a,side:e="right",...r}){return Y(ka,{children:[x(Pa,{}),Y(g.Content,{"data-slot":"sheet-content",className:c("astw:bg-background astw:data-[state=open]:animate-in astw:data-[state=closed]:animate-out astw:fixed astw:z-50 astw:flex astw:flex-col astw:gap-4 astw:shadow-lg astw:transition astw:ease-in-out astw:data-[state=closed]:duration-300 astw:data-[state=open]:duration-500",e==="right"&&"astw:data-[state=closed]:slide-out-to-right astw:data-[state=open]:slide-in-from-right astw:inset-y-0 astw:right-0 astw:h-full astw:w-3/4 astw:border-l astw:sm:max-w-sm",e==="left"&&"astw:data-[state=closed]:slide-out-to-left astw:data-[state=open]:slide-in-from-left astw:inset-y-0 astw:left-0 astw:h-full astw:w-3/4 astw:border-r astw:sm:max-w-sm",e==="top"&&"astw:data-[state=closed]:slide-out-to-top astw:data-[state=open]:slide-in-from-top astw:inset-x-0 astw:top-0 astw:h-auto astw:border-b",e==="bottom"&&"astw:data-[state=closed]:slide-out-to-bottom astw:data-[state=open]:slide-in-from-bottom astw:inset-x-0 astw:bottom-0 astw:h-auto astw:border-t",t),...r,children:[a,Y(g.Close,{className:"astw:ring-offset-bg astw:focus:ring-ring astw:data-[state=open]:bg-secondary astw:absolute astw:top-4 astw:right-4 astw:rounded-xs astw:opacity-70 astw:transition-opacity astw:hover:opacity-100 astw:focus:ring-2 astw:focus:ring-offset-2 astw:focus:outline-hidden astw:disabled:pointer-events-none",children:[x(ya,{className:"astw:size-4"}),x("span",{className:"astw:sr-only",children:"Close"})]})]})]})}function ut({className:t,...a}){return x("div",{"data-slot":"sheet-header",className:c("astw:flex astw:flex-col astw:gap-1.5 astw:p-4",t),...a})}function gt({className:t,...a}){return x(g.Title,{"data-slot":"sheet-title",className:c("astw:text-foreground astw:font-semibold",t),...a})}function mt({className:t,...a}){return x(g.Description,{"data-slot":"sheet-description",className:c("astw:text-muted-foreground astw:text-sm",t),...a})}import{jsx as Ze}from"react/jsx-runtime";import*as h from"@radix-ui/react-tooltip";import{jsx as z,jsxs as Ca}from"react/jsx-runtime";function X({delayDuration:t=0,...a}){return z(h.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function bt({...t}){return z(X,{children:z(h.Root,{"data-slot":"tooltip",...t})})}function ht({...t}){return z(h.Trigger,{"data-slot":"tooltip-trigger",...t})}function ft({className:t,sideOffset:a=0,children:e,...r}){return z(h.Portal,{children:Ca(h.Content,{"data-slot":"tooltip-content",sideOffset:a,className:c("astw:bg-primary astw:text-primary-foreground astw:animate-in astw:fade-in-0 astw:zoom-in-95 astw:data-[state=closed]:animate-out astw:data-[state=closed]:fade-out-0 astw:data-[state=closed]:zoom-out-95 astw:data-[side=bottom]:slide-in-from-top-2 astw:data-[side=left]:slide-in-from-right-2 astw:data-[side=right]:slide-in-from-left-2 astw:data-[side=top]:slide-in-from-bottom-2 astw:z-50 astw:w-fit astw:origin-(--radix-tooltip-content-transform-origin) astw:rounded-md astw:px-3 astw:py-1.5 astw:text-xs astw:text-balance",t),...r,children:[e,z(h.Arrow,{className:"astw:bg-primary astw:fill-primary astw:z-50 astw:size-2.5 astw:translate-y-[calc(-50%_-_2px)] astw:rotate-45 astw:rounded-[2px]"})]})})}import{jsx as p,jsxs as I}from"react/jsx-runtime";var Ta="sidebar_state",za=60*60*24*7,Na="16rem",Ma="18rem",_a="3rem",Ia="b",vt=b.createContext(null);function A(){let t=b.useContext(vt);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function xt({defaultOpen:t=!0,open:a,onOpenChange:e,className:r,style:o,children:s,...l}){let i=ct(),[d,w]=b.useState(!1),[u,v]=b.useState(t),y=a??u,P=b.useCallback(f=>{let k=typeof f=="function"?f(y):f;e?e(k):v(k),document.cookie=`${Ta}=${k}; path=/; max-age=${za}`},[e,y]),C=b.useCallback(()=>i?w(f=>!f):P(f=>!f),[i,P,w]);b.useEffect(()=>{let f=k=>{k.key===Ia&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),C())};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[C]);let H=y?"expanded":"collapsed",O=b.useMemo(()=>({state:H,open:y,setOpen:P,isMobile:i,openMobile:d,setOpenMobile:w,toggleSidebar:C}),[H,y,P,i,d,w,C]);return p(vt.Provider,{value:O,children:p(X,{delayDuration:0,children:p("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":Na,"--sidebar-width-icon":_a,...o},className:c("astw:group/sidebar-wrapper astw:has-data-[variant=inset]:bg-sidebar astw:flex astw:min-h-svh astw:w-full",r),...l,children:s})})})}function yt({side:t="left",variant:a="sidebar",collapsible:e="offcanvas",className:r,children:o,...s}){let{isMobile:l,state:i,openMobile:d,setOpenMobile:w}=A();return e==="none"?p("div",{"data-slot":"sidebar",className:c("astw:bg-sidebar astw:text-sidebar-foreground astw:flex astw:h-full astw:w-(--sidebar-width) astw:flex-col",r),...s,children:o}):l?p(wt,{open:d,onOpenChange:w,...s,children:I(pt,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"astw:bg-sidebar astw:text-sidebar-foreground astw:w-(--sidebar-width) astw:p-0 astw:[&>button]:hidden",style:{"--sidebar-width":Ma},side:t,children:[I(ut,{className:"sr-only",children:[p(gt,{children:"Sidebar"}),p(mt,{children:"Displays the mobile sidebar."})]}),p("div",{className:"flex h-full w-full flex-col",children:o})]})}):I("div",{className:"astw:group astw:peer astw:text-sidebar-foreground astw:hidden astw:md:block","data-state":i,"data-collapsible":i==="collapsed"?e:"","data-variant":a,"data-side":t,"data-slot":"sidebar",children:[p("div",{"data-slot":"sidebar-gap",className:c("astw:relative astw:w-(--sidebar-width) astw:bg-transparent astw:transition-[width] astw:duration-200 astw:ease-linear","astw:group-data-[collapsible=offcanvas]:w-0","astw:group-data-[side=right]:rotate-180",a==="floating"||a==="inset"?"astw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"astw:group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),p("div",{"data-slot":"sidebar-container",className:c("astw:fixed astw:inset-y-0 astw:z-10 astw:hidden astw:h-svh astw:w-(--sidebar-width) astw:transition-[left,right,width] astw:duration-200 astw:ease-linear astw:md:flex",t==="left"?"astw:left-0 astw:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"astw:right-0 astw:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",a==="floating"||a==="inset"?"astw:p-2 astw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"astw:group-data-[collapsible=icon]:w-(--sidebar-width-icon) astw:group-data-[side=left]:border-r astw:group-data-[side=right]:border-l",a==="inset"&&"astw:border-x astw:border-x-border",r),...s,children:p("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"astw:bg-sidebar astw:group-data-[variant=floating]:border-sidebar-border astw:flex astw:h-full astw:w-full astw:flex-col astw:group-data-[variant=floating]:rounded-lg astw:group-data-[variant=floating]:border astw:group-data-[variant=floating]:shadow-sm",children:o})})]})}function J({className:t,onClick:a,...e}){let{toggleSidebar:r}=A();return I(W,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon",className:c("astw:text-muted-foreground",t),onClick:o=>{a?.(o),r()},...e,children:[p(Ra,{className:"astw:size-4.5"}),p("span",{className:"astw:sr-only",children:"Toggle Sidebar"})]})}function kt({className:t,...a}){return p("main",{"data-slot":"sidebar-inset",className:c("astw:bg-background astw:relative astw:flex astw:w-full astw:flex-1 astw:flex-col","astw:px-4 astw:md:peer-data-[variant=inset]:px-8 astw:md:peer-data-[variant=inset]:py-2",t),...a})}function Pt({className:t,...a}){return p("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:c("astw:flex astw:flex-row astw:items-center astw:gap-0.5 astw:p-2",t),...a})}function Ct({className:t,...a}){return p("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:c("astw:flex astw:min-h-0 astw:flex-1 astw:flex-col astw:gap-2 astw:overflow-auto astw:group-data-[collapsible=icon]:overflow-hidden",t),...a})}function St({className:t,...a}){return p("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:c("astw:relative astw:flex astw:w-full astw:min-w-0 astw:flex-col astw:p-2",t),...a})}function Rt({className:t,...a}){return p("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:c("astw:flex astw:w-full astw:min-w-0 astw:flex-col astw:gap-1",t),...a})}function Tt({className:t,...a}){return p("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:c("astw:group/menu-item astw:relative",t),...a})}var Aa=Sa("astw:peer/menu-button astw:flex astw:w-full astw:items-center astw:gap-2 astw:overflow-hidden astw:rounded-md astw:p-2 astw:text-left astw:text-sm astw:outline-hidden astw:ring-sidebar-ring astw:transition-[width,height,padding] astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:focus-visible:ring-2 astw:active:bg-sidebar-accent astw:active:text-sidebar-accent-foreground astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:group-has-data-[sidebar=menu-action]/menu-item:pr-8 astw:aria-disabled:pointer-events-none astw:aria-disabled:opacity-50 astw:data-[active=true]:bg-sidebar-accent astw:data-[active=true]:font-medium astw:data-[active=true]:text-sidebar-accent-foreground astw:data-[state=open]:hover:bg-sidebar-accent astw:data-[state=open]:hover:text-sidebar-accent-foreground astw:group-data-[collapsible=icon]:size-8! astw:group-data-[collapsible=icon]:p-2! astw:[&>span:last-child]:truncate astw:[&>svg]:size-4 astw:[&>svg]:shrink-0",{variants:{variant:{default:"astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground",outline:"astw:bg-background astw:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"astw:h-8 astw:text-sm",sm:"astw:h-7 astw:rounded-md astw:gap-1.5 astw:px-3 astw:has-[>svg]:px-2.5",lg:"astw:h-12 astw:text-sm astw:group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function Z({asChild:t=!1,isActive:a=!1,variant:e="default",size:r="default",tooltip:o,className:s,...l}){let i=t?Q:"button",{isMobile:d,state:w}=A(),u=p(i,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":r,"data-active":a,className:c(Aa({variant:e,size:r}),s),...l});return o?(typeof o=="string"&&(o={children:o}),I(bt,{children:[p(ht,{asChild:!0,children:u}),p(ft,{side:"right",align:"center",hidden:w!=="collapsed"||d,...o})]})):u}function tt({className:t,asChild:a=!1,showOnHover:e=!1,...r}){return p(a?Q:"button",{"data-slot":"sidebar-menu-action","data-sidebar":"menu-action",className:c("astw:text-sidebar-foreground astw:ring-sidebar-ring astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:peer-hover/menu-button:text-sidebar-accent-foreground astw:absolute astw:top-1.5 astw:right-1 astw:flex astw:aspect-square astw:w-5 astw:items-center astw:justify-center astw:rounded-md astw:p-0 astw:outline-hidden astw:transition-transform astw:focus-visible:ring-2 astw:[&>svg]:size-4 astw:[&>svg]:shrink-0","astw:after:absolute astw:after:-inset-2 astw:md:after:hidden","astw:peer-data-[size=sm]/menu-button:top-1","astw:peer-data-[size=default]/menu-button:top-1.5","astw:peer-data-[size=lg]/menu-button:top-2.5","astw:group-data-[collapsible=icon]:hidden",e&&"astw:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground astw:group-focus-within/menu-item:opacity-100 astw:group-hover/menu-item:opacity-100 astw:data-[state=open]:opacity-100 astw:md:opacity-0",t),...r})}function zt({className:t,...a}){return p("ul",{"data-slot":"sidebar-menu-sub","data-sidebar":"menu-sub",className:c("astw:border-sidebar-border astw:mx-3.5 astw:flex astw:min-w-0 astw:translate-x-px astw:flex-col astw:gap-1 astw:border-l astw:px-2.5 astw:py-0.5","astw:group-data-[collapsible=icon]:hidden",t),...a})}function Nt({className:t,...a}){return p("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:c("astw:group/menu-sub-item astw:relative",t),...a})}function Mt({asChild:t=!1,size:a="md",isActive:e=!1,className:r,...o}){return p(t?Q:"a",{"data-slot":"sidebar-menu-sub-button","data-sidebar":"menu-sub-button","data-size":a,"data-active":e,className:c("astw:text-sidebar-foreground astw:ring-sidebar-ring astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:active:bg-sidebar-accent astw:active:text-sidebar-accent-foreground astw:[&>svg]:text-sidebar-accent-foreground astw:flex astw:h-7 astw:min-w-0 astw:-translate-x-px astw:items-center astw:gap-2 astw:overflow-hidden astw:rounded-md astw:px-2 astw:outline-hidden astw:focus-visible:ring-2 astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:aria-disabled:pointer-events-none astw:aria-disabled:opacity-50 astw:[&>span:last-child]:truncate astw:[&>svg]:size-4 astw:[&>svg]:shrink-0","astw:data-[active=true]:bg-sidebar-accent astw:data-[active=true]:text-sidebar-accent-foreground",a==="sm"&&"astw:text-xs",a==="md"&&"astw:text-sm","astw:group-data-[collapsible=icon]:hidden",r),...o})}import{ChevronRight as Dt,SunIcon as $a}from"lucide-react";import{Slot as La}from"@radix-ui/react-slot";import{ChevronRight as Oa,MoreHorizontal as Rr}from"lucide-react";import{Link as Ba,useHref as Ea}from"react-router";import{jsx as _t}from"react/jsx-runtime";function B({to:t,children:a,...e}){try{return Ea(t),_t(Ba,{to:t,...e,children:a})}catch{return _t("a",{href:t,...e,children:a})}}import{jsx as N,jsxs as Mr}from"react/jsx-runtime";function It({...t}){return N("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...t})}function At({className:t,...a}){return N("ol",{"data-slot":"breadcrumb-list",className:c("astw:text-muted-foreground astw:flex astw:flex-wrap astw:items-center astw:gap-1.5 astw:text-sm astw:break-words astw:sm:gap-2.5",t),...a})}function Bt({className:t,...a}){return N("li",{"data-slot":"breadcrumb-item",className:c("astw:inline-flex astw:items-center astw:gap-1.5",t),...a})}function Et({asChild:t,className:a,children:e,...r}){return N(t?La:B,{"data-slot":"breadcrumb-link",className:c("astw:hover:text-foreground astw:transition-colors",a),...r,children:e})}function Lt({children:t,className:a,...e}){return N("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:c("astw:[&>svg]:size-3.5",a),...e,children:t??N(Oa,{})})}var Da=t=>t.reduce((a,e)=>{a[e.path]={title:e.meta.title,breadcrumbTitle:e.meta.breadcrumbTitle};let r=(o,s)=>{!o||o.length===0||o.forEach(l=>{let i=`${s}/${l.path}`;a[i]={title:l.meta.title,breadcrumbTitle:l.meta.breadcrumbTitle},l.subResources&&l.subResources.length>0&&r(l.subResources,i)})};return e.resources&&e.resources.length>0&&r(e.resources,e.path),a},{});function Ot(t,a,e){let r=t.split("/").filter(i=>i!=="").slice(1),o=a?(()=>{let[i,...d]=r;return d})():r,s=Da(e),l=o.map((i,d)=>{let w=o.slice(0,d+1).join("/"),u=s[w];if(!u){let y=Object.entries(s).find(([P])=>{let C=P.split("/").map(O=>O.startsWith(":")?"[^/]+":O).join("/");return new RegExp(`^${C}$`).test(w)})?.[1];y&&(u=y)}let v;return u?typeof u.breadcrumbTitle=="function"?v=u.breadcrumbTitle(i):typeof u.breadcrumbTitle=="string"?v=u.breadcrumbTitle:v=u.title:v=decodeURIComponent(i),{segment:i,path:w,title:v}});return{basePath:a||null,segments:l}}import{Fragment as $t,jsx as n,jsxs as m}from"react/jsx-runtime";var Ua=()=>{let{open:t}=A();return n("div",{className:t?"astw:md:hidden":void 0,children:n(J,{className:"astw:-ml-2.5"})})},Wa=t=>{let a=t.children?t.children({Outlet:K}):null,e=F(),r=()=>{e.setTheme(e.theme==="dark"?"light":"dark")};return n(xt,{className:"astw:flex astw:flex-col",children:m("div",{className:"astw:flex astw:flex-1",children:[t.sidebar??n(Wt,{}),m(kt,{className:"astw:w-[calc(100%-var(--sidebar-width))]",children:[n("header",{className:"astw:flex astw:h-14 astw:shrink-0 astw:items-center astw:gap-2 astw:transition-[width,height] astw:ease-linear astw:group-has-data-[collapsible=icon]/sidebar-wrapper:h-12",children:m("div",{className:"astw:flex astw:w-full astw:items-center astw:justify-between",children:[m("div",{className:"astw:flex astw:items-center astw:gap-2",children:[n(Ua,{}),n(Va,{})]}),n("div",{className:"astw:flex astw:items-center astw:gap-2",children:n(W,{variant:"outline",size:"icon",onClick:r,children:n($a,{})})})]})}),n("div",{className:"astw:flex astw:flex-col astw:gap-4",children:a??n(K,{})})]})]})})},Wt=t=>{let{title:a,icon:e,navItems:r}=S(),{pathname:o}=Ut(),s=m(Pt,{children:[e,n("h1",{className:"astw:text-sm astw:mb-2 astw:mt-2 astw:px-2",children:a})]});return m(yt,{variant:"inset",children:[m("div",{className:"astw:flex astw:justify-between astw:items-center",children:[t.header??s,n("div",{className:"astw:hidden astw:md:block",children:n(J,{className:"astw:-ml-1"})})]}),n(Ct,{children:n(St,{children:n(Rt,{children:r.map(i=>n(dt,{asChild:!0,defaultOpen:i.isActive,children:m(Tt,{children:[i.url?m($t,{children:[n(Z,{asChild:!0,tooltip:i.title,children:m(B,{to:i.url,className:i.url===o?"astw:bg-sidebar-accent astw:font-medium":void 0,children:[i.icon,n("span",{children:i.title})]})}),!!i.items?.length&&n(j,{asChild:!0,children:m(tt,{className:"astw:data-[state=open]:rotate-90",children:[n(Dt,{}),n("span",{className:"sr-only",children:"Toggle"})]})})]}):n($t,{children:m(j,{className:"astw:flex astw:w-[100%] astw:[&[data-state=open]_.astw-rotate-target]:rotate-90",children:[n(Z,{asChild:!0,tooltip:i.title,children:m("span",{className:"astw:flex astw:w-[100%]",children:[i.icon,n("span",{children:i.title})]})}),!!i.items?.length&&n(tt,{className:"astw-rotate-target",asChild:!0,children:m("span",{children:[n(Dt,{}),n("span",{className:"sr-only",children:"Toggle"})]})})]})}),!!i.items?.length&&n(lt,{children:n(zt,{children:i.items?.map(d=>n(Nt,{children:n(Mt,{asChild:!0,children:n(B,{to:d.url,className:d.url===o?"astw:bg-sidebar-accent astw:font-medium":void 0,children:n("span",{children:d.title})})})},d.title))})})]})},i.title))})})}),t.footer??null]})},Ha=()=>{let{configurations:t}=S(),a=Ut();return Ot(a.pathname,t.basePath,t.modules)},Va=()=>{let{basePath:t,segments:a}=Ha();return n(It,{children:n(At,{children:a.map((e,r)=>m("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:[n(Bt,{children:n(Et,{to:`${t?`/${t}`:""}/${R}/${e.path}`,children:e.title})}),r<a.length-1&&n(Lt,{})]},r))})})};import{useEffect as Ka}from"react";import{capitalCase as Ht}from"change-case";import{useNavigate as Fa}from"react-router";import{jsx as Vt}from"react/jsx-runtime";function ja(t){let{path:a,meta:e,component:r,defaultResourceRedirectPath:o,resources:s}=t,l=e?.title??Ht(a),i=r||function(){let w=Fa();return Ka(()=>{w(o)},[w]),null};return{path:a,type:"component",_type:"module",component:()=>Vt(D,{contentBorder:e?.contentBorder??!1,children:i({title:l,resources:s})}),meta:{title:l,...e?.breadcrumbTitle!==void 0?{breadcrumbTitle:e.breadcrumbTitle}:{},...e,menuItemClickable:!o,icon:t.meta?.icon},resources:s}}function Ga(t){let{path:a,component:e,subResources:r,meta:o}=t,s=o?.title??Ht(a);return{_type:"resource",type:"component",path:a,meta:{title:s,...o?.breadcrumbTitle!==void 0?{breadcrumbTitle:o.breadcrumbTitle}:{}},component:()=>Vt(D,{contentBorder:o?.contentBorder??!1,children:e({title:s,resources:r})}),subResources:r}}import{useLocation as mo,useNavigate as bo,useParams as ho,useSearchParams as fo,Link as vo}from"react-router";import{createContext as Ya,useCallback as at,useContext as Xa,useEffect as Qa,useState as Ja}from"react";import*as M from"oauth4webapi";var E="oauth_pkce_verifier",L="oauth_state",Kt=({idpEndpoint:t,clientId:a,state:e,codeChallenge:r,redirectUri:o})=>{let s=new URL(`${t}/oauth2/authorize`);return s.searchParams.set("response_type","code"),s.searchParams.set("client_id",a),s.searchParams.set("redirect_uri",o||window.location.origin),s.searchParams.set("scope","openid profile email"),s.searchParams.set("state",e),s.searchParams.set("code_challenge",r),s.searchParams.set("code_challenge_method","S256"),s.toString()},qa=async({code:t,returnedState:a,idpEndpoint:e,clientId:r,redirectUri:o})=>{let s=sessionStorage.getItem(E),l=sessionStorage.getItem(L);if(!t||!a||!s||!l){let d=[];throw t||d.push("code"),a||d.push("returnedState"),s||d.push("code_verifier"),l||d.push("expectedState"),new Error(`Missing params: ${d.join(", ")}`)}if(a!==l)throw new Error("State mismatch: possible CSRF attack");let i=new URLSearchParams({grant_type:"authorization_code",client_id:r,code:t,redirect_uri:o||window.location.origin,code_verifier:s});try{let d=await fetch(`${e}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:i.toString()}),{access_token:w}=await d.json();return w}catch(d){throw new Error(`Token exchange failed: ${d instanceof Error?d.message:String(d)}`)}},Ft=async()=>{let t=M.generateRandomCodeVerifier(),a=await M.calculatePKCECodeChallenge(t),e=M.generateRandomState();return sessionStorage.setItem(E,t),sessionStorage.setItem(L,e),{codeChallenge:a,state:e}},jt=async({currentUrl:t,idpEndpoint:a,clientId:e,redirectUri:r})=>{try{let o=t.searchParams.get("code"),s=t.searchParams.get("state");await qa({idpEndpoint:a,clientId:e,code:o,returnedState:s,redirectUri:r})}catch(o){console.error(o)}finally{sessionStorage.removeItem(E),sessionStorage.removeItem(L),t.searchParams.delete("code"),t.searchParams.delete("state"),t.searchParams.delete("error"),t.searchParams.delete("error_description"),window.history.replaceState({},document.title,t.toString())}};import{jsx as ae}from"react/jsx-runtime";var Gt=Ya(void 0),Za=()=>{let t=Xa(Gt);if(t===void 0)throw new Error("useBuiltinIdpAuth must be used within an BuiltinIdPAuthContextProvider");return t},te=({idpEndpoint:t,clientId:a,redirectUri:e,children:r})=>{let[o,s]=Ja(!0),l=at(async()=>{let{codeChallenge:w,state:u}=await Ft(),v=Kt({idpEndpoint:t,clientId:a,codeChallenge:w,state:u,redirectUri:e});window.location.href=v},[t,a,e]),i=at(async()=>{sessionStorage.removeItem(E),sessionStorage.removeItem(L);try{await fetch(`${t}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:""}),window.location.href="/"}catch(w){console.error(w)}},[t]),d=at(async w=>{s(!0),await jt({currentUrl:w,idpEndpoint:t,clientId:a,redirectUri:e}),s(!1)},[t,a,e]);return Qa(()=>{let w=new URL(window.location.href);w.searchParams.has("error")&&w.searchParams.has("error_description")?(console.error(w.searchParams.get("error_description")||"Authentication Error"),s(!1)):w.searchParams.has("code")&&w.searchParams.has("state")?d(w):s(!1)},[]),ae(Gt.Provider,{value:{isLoading:o,login:l,logout:i},children:r})};export{ua as AppShell,te as BuiltinIdPAuthProvider,Wt as DefaultSidebar,vo as Link,Wa as SidebarLayoutContainer,ja as defineModule,Ga as defineResource,S as useAppShell,Za as useBuiltinIdpAuth,mo as useLocation,bo as useNavigate,ho as useParams,fo as useSearchParams,F as useTheme};
1
+ import{Table as va}from"lucide-react";import{useEffect as xa,useMemo as ya,useState as ka}from"react";import{createContext as Qt,useContext as Jt}from"react";var j=Qt({navItems:[],configurations:{modules:[]}}),P=()=>Jt(j);import{createBrowserRouter as da,RouterProvider as la,Navigate as ca}from"react-router";import{NavLink as sa,Outlet as nt}from"react-router";import{Toaster as ia}from"sonner";import{Slot as aa}from"@radix-ui/react-slot";import{cva as ea}from"class-variance-authority";import{clsx as Zt}from"clsx";import{twMerge as ta}from"tailwind-merge";function l(...t){return ta(Zt(t))}import{jsx as oa}from"react/jsx-runtime";var ra=ea("astw:inline-flex astw:items-center astw:justify-center astw:gap-2 astw:whitespace-nowrap astw:rounded-md astw:text-sm astw:font-medium astw:transition-all astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:[&_svg]:pointer-events-none astw:[&_svg:not([class*='size-'])]:size-4 astw:shrink-0 astw:[&_svg]:shrink-0 astw:outline-none astw:focus-visible:border-ring astw:focus-visible:ring-ring/50 astw:focus-visible:ring-[3px] astw:aria-invalid:ring-destructive/20 astw:dark:aria-invalid:ring-destructive/40 astw:aria-invalid:border-destructive",{variants:{variant:{default:"astw:bg-primary astw:text-primary-foreground astw:shadow-xs astw:hover:bg-primary/90",destructive:"astw:bg-destructive astw:text-white astw:shadow-xs astw:hover:bg-destructive/90 astw:focus-visible:ring-destructive/20 astw:dark:focus-visible:ring-destructive/40 astw:dark:bg-destructive/60",outline:"astw:border astw:bg-background astw:shadow-xs astw:hover:bg-accent astw:hover:text-accent-foreground astw:dark:bg-input/30 astw:dark:border-input astw:dark:hover:bg-input/50",secondary:"astw:bg-secondary astw:text-secondary-foreground astw:shadow-xs astw:hover:bg-secondary/80",ghost:"astw:hover:bg-accent astw:hover:text-accent-foreground astw:dark:hover:bg-accent/50",link:"astw:text-primary astw:underline-offset-4 astw:hover:underline"},size:{default:"astw:h-9 astw:px-4 astw:py-2 astw:has-[>svg]:px-3",sm:"astw:h-8 astw:rounded-md astw:gap-1.5 astw:px-3 astw:has-[>svg]:px-2.5",lg:"astw:h-10 astw:rounded-md astw:px-6 astw:has-[>svg]:px-4",icon:"astw:size-9"}},defaultVariants:{variant:"default",size:"default"}});function T({className:t,variant:a,size:e,asChild:r=!1,...o}){return oa(r?aa:"button",{"data-slot":"button",className:l(ra({variant:a,size:e,className:t})),...o})}import{Fragment as na,jsx as h,jsxs as A}from"react/jsx-runtime";var W=({contentBorder:t,children:a})=>h("div",{className:t?"astw:p-4 astw:rounded-sm astw:border astw:shadow-xs":"",children:a}),dt=()=>A(W,{contentBorder:!0,children:[h("p",{className:"astw:font-semibold astw:leading-none astw:tracking-tight",children:"Welcome to AppShell"}),h("p",{className:"pt-4",children:"Add your GraphQL resources from configuration at first!"})]}),K=()=>A(na,{children:[h(nt,{}),h(ia,{})]}),lt=()=>{let{configurations:t}=P();return A("div",{className:"astw:mx-auto astw:flex-col astw:flex astw:md:flex-row astw:max-w-5xl astw:gap-[10px] astw:w-full",children:[h("div",{children:A("nav",{className:"astw:bg-card astw:md:w-xs astw:rounded-md astw:border astw:p-3 astw:shadow-xs",children:[h("h2",{className:"astw:text-sm astw:leading-[36px] astw:mb-2 astw:font-bold ",children:"Settings"}),h("ul",{className:"astw:flex astw:flex-col astw:gap-1",children:t.settingsResources?.map(a=>h("li",{children:h(sa,{to:`./${a.path}`,children:({isActive:e})=>A(T,{variant:e?"secondary":"ghost",className:"astw:w-full astw:justify-start",children:[a.meta.icon,a.meta.title]})})},a.path))})]})}),h("section",{className:"astw:bg-card astw:flex-1 astw:rounded-md astw:border astw:shadow-xs",children:h(nt,{})})]})};import{jsx as ct}from"react/jsx-runtime";var wa=t=>t.reduce((a,e)=>{let r={index:!0,Component:e.component};return[...a,{path:e.path,...e.resources&&e.resources.length>0?{children:[r,...e.resources.map(wt)]}:{children:[r]}}]},[]),wt=t=>{let a={index:!0,Component:t.component};return{path:t.path,...t.subResources&&t.subResources.length>0?{children:[a,...t.subResources.map(wt)]}:{children:[a]}}},pt=t=>{let{configurations:a}=P(),e=da([{path:a.basePath,element:t.children,children:[{index:!0,Component:dt},{path:N,children:wa(a.modules)},{path:"settings",index:!0,Component:()=>ct(ca,{to:(a.settingsResources??[])[0].path,relative:"path",replace:!0})},{path:"settings",Component:lt,children:a.settingsResources?.map(r=>({path:r.path,Component:r.component}))}]}]);return ct(la,{router:e})};import{createContext as pa,useContext as ua,useEffect as ga,useMemo as ma,useState as ba}from"react";import{jsx as fa}from"react/jsx-runtime";var ha={resolvedTheme:"light",theme:"system",setTheme:()=>null},ut=pa(ha);function gt({children:t,storageKey:a,defaultTheme:e="system",...r}){let[o,i]=ba(()=>localStorage.getItem(a)||e),c=ma(()=>o!=="system"?o:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[o]);ga(()=>{let d=window.document.documentElement;d.classList.remove("light","dark"),d.classList.add(c)},[c]);let s={resolvedTheme:c,theme:o,setTheme:d=>{localStorage.setItem(a,d),i(d)}};return fa(ut.Provider,{...r,value:s,children:t})}var F=()=>{let t=ua(ut);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t};import{jsx as U}from"react/jsx-runtime";var N="resources",Ca=t=>{let[a,e]=ka(!1);xa(function(){e(!0)},[]);let r=t.configurations.basePath,o=c=>r?`/${r}/${N}/${c}`:`/${N}/${c}`,i=ya(()=>t.configurations.modules.map(s=>{let d=s.resources.map(w=>({title:w.meta.title,url:o(`${s.path}/${w.path}`)}));return{title:s.meta.title,url:s.meta.menuItemClickable?o(s.path):void 0,clickable:s.component,icon:s.meta.icon||U(va,{}),isActive:!0,items:d}}),[t.configurations.modules]);return a?U(j.Provider,{value:{title:t.title,icon:t.icon,configurations:{...t.configurations,basePath:r},navItems:i},children:U(gt,{defaultTheme:"system",storageKey:"appshell-ui-theme",children:U(pt,{children:t.children})})}):null};import*as z from"@radix-ui/react-collapsible";import{jsx as q}from"react/jsx-runtime";function mt({...t}){return q(z.Root,{"data-slot":"collapsible",...t})}function G({...t}){return q(z.CollapsibleTrigger,{"data-slot":"collapsible-trigger",...t})}function bt({...t}){return q(z.CollapsibleContent,{"data-slot":"collapsible-content",...t})}import{useLocation as Vt,useMatch as Va}from"react-router";import*as b from"react";import{Slot as J}from"@radix-ui/react-slot";import{cva as za}from"class-variance-authority";import{PanelLeftIcon as Ma}from"lucide-react";import*as H from"react";var Y=768;function ht(){let[t,a]=H.useState(void 0);return H.useEffect(()=>{let e=window.matchMedia(`(max-width: ${Y-1}px)`),r=()=>{a(window.innerWidth<Y)};return e.addEventListener("change",r),a(window.innerWidth<Y),()=>e.removeEventListener("change",r)},[]),!!t}import{jsx as qe}from"react/jsx-runtime";import*as Pa from"@radix-ui/react-separator";import{jsx as Je}from"react/jsx-runtime";import*as g from"@radix-ui/react-dialog";import{XIcon as Sa}from"lucide-react";import{jsx as y,jsxs as X}from"react/jsx-runtime";function ft({...t}){return y(g.Root,{"data-slot":"sheet",...t})}function Ra({...t}){return y(g.Portal,{"data-slot":"sheet-portal",...t})}function Ta({className:t,...a}){return y(g.Overlay,{"data-slot":"sheet-overlay",className:l("astw:data-[state=open]:animate-in astw:data-[state=closed]:animate-out astw:data-[state=closed]:fade-out-0 astw:data-[state=open]:fade-in-0 astw:fixed astw:inset-0 astw:z-50 astw:bg-black/50",t),...a})}function vt({className:t,children:a,side:e="right",...r}){return X(Ra,{children:[y(Ta,{}),X(g.Content,{"data-slot":"sheet-content",className:l("astw:bg-background astw:data-[state=open]:animate-in astw:data-[state=closed]:animate-out astw:fixed astw:z-50 astw:flex astw:flex-col astw:gap-4 astw:shadow-lg astw:transition astw:ease-in-out astw:data-[state=closed]:duration-300 astw:data-[state=open]:duration-500",e==="right"&&"astw:data-[state=closed]:slide-out-to-right astw:data-[state=open]:slide-in-from-right astw:inset-y-0 astw:right-0 astw:h-full astw:w-3/4 astw:border-l astw:sm:max-w-sm",e==="left"&&"astw:data-[state=closed]:slide-out-to-left astw:data-[state=open]:slide-in-from-left astw:inset-y-0 astw:left-0 astw:h-full astw:w-3/4 astw:border-r astw:sm:max-w-sm",e==="top"&&"astw:data-[state=closed]:slide-out-to-top astw:data-[state=open]:slide-in-from-top astw:inset-x-0 astw:top-0 astw:h-auto astw:border-b",e==="bottom"&&"astw:data-[state=closed]:slide-out-to-bottom astw:data-[state=open]:slide-in-from-bottom astw:inset-x-0 astw:bottom-0 astw:h-auto astw:border-t",t),...r,children:[a,X(g.Close,{className:"astw:ring-offset-bg astw:focus:ring-ring astw:data-[state=open]:bg-secondary astw:absolute astw:top-4 astw:right-4 astw:rounded-xs astw:opacity-70 astw:transition-opacity astw:hover:opacity-100 astw:focus:ring-2 astw:focus:ring-offset-2 astw:focus:outline-hidden astw:disabled:pointer-events-none",children:[y(Sa,{className:"astw:size-4"}),y("span",{className:"astw:sr-only",children:"Close"})]})]})]})}function xt({className:t,...a}){return y("div",{"data-slot":"sheet-header",className:l("astw:flex astw:flex-col astw:gap-1.5 astw:p-4",t),...a})}function yt({className:t,...a}){return y(g.Title,{"data-slot":"sheet-title",className:l("astw:text-foreground astw:font-semibold",t),...a})}function kt({className:t,...a}){return y(g.Description,{"data-slot":"sheet-description",className:l("astw:text-muted-foreground astw:text-sm",t),...a})}import{jsx as ir}from"react/jsx-runtime";import*as f from"@radix-ui/react-tooltip";import{jsx as M,jsxs as Na}from"react/jsx-runtime";function Q({delayDuration:t=0,...a}){return M(f.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function Ct({...t}){return M(Q,{children:M(f.Root,{"data-slot":"tooltip",...t})})}function Pt({...t}){return M(f.Trigger,{"data-slot":"tooltip-trigger",...t})}function St({className:t,sideOffset:a=0,children:e,...r}){return M(f.Portal,{children:Na(f.Content,{"data-slot":"tooltip-content",sideOffset:a,className:l("astw:bg-primary astw:text-primary-foreground astw:animate-in astw:fade-in-0 astw:zoom-in-95 astw:data-[state=closed]:animate-out astw:data-[state=closed]:fade-out-0 astw:data-[state=closed]:zoom-out-95 astw:data-[side=bottom]:slide-in-from-top-2 astw:data-[side=left]:slide-in-from-right-2 astw:data-[side=right]:slide-in-from-left-2 astw:data-[side=top]:slide-in-from-bottom-2 astw:z-50 astw:w-fit astw:origin-(--radix-tooltip-content-transform-origin) astw:rounded-md astw:px-3 astw:py-1.5 astw:text-xs astw:text-balance",t),...r,children:[e,M(f.Arrow,{className:"astw:bg-primary astw:fill-primary astw:z-50 astw:size-2.5 astw:translate-y-[calc(-50%_-_2px)] astw:rotate-45 astw:rounded-[2px]"})]})})}import{jsx as p,jsxs as B}from"react/jsx-runtime";var _a="sidebar_state",Ia=60*60*24*7,Aa="16rem",Ba="18rem",Ea="3rem",La="b",Rt=b.createContext(null);function E(){let t=b.useContext(Rt);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function Tt({defaultOpen:t=!0,open:a,onOpenChange:e,className:r,style:o,children:i,...c}){let s=ht(),[d,w]=b.useState(!1),[u,x]=b.useState(t),k=a??u,S=b.useCallback(v=>{let C=typeof v=="function"?v(k):v;e?e(C):x(C),document.cookie=`${_a}=${C}; path=/; max-age=${Ia}`},[e,k]),R=b.useCallback(()=>s?w(v=>!v):S(v=>!v),[s,S,w]);b.useEffect(()=>{let v=C=>{C.key===La&&(C.metaKey||C.ctrlKey)&&(C.preventDefault(),R())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[R]);let V=k?"expanded":"collapsed",$=b.useMemo(()=>({state:V,open:k,setOpen:S,isMobile:s,openMobile:d,setOpenMobile:w,toggleSidebar:R}),[V,k,S,s,d,w,R]);return p(Rt.Provider,{value:$,children:p(Q,{delayDuration:0,children:p("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":Aa,"--sidebar-width-icon":Ea,...o},className:l("astw:group/sidebar-wrapper astw:has-data-[variant=inset]:bg-sidebar astw:flex astw:min-h-svh astw:w-full",r),...c,children:i})})})}function Nt({side:t="left",variant:a="sidebar",collapsible:e="offcanvas",className:r,children:o,...i}){let{isMobile:c,state:s,openMobile:d,setOpenMobile:w}=E();return e==="none"?p("div",{"data-slot":"sidebar",className:l("astw:bg-sidebar astw:text-sidebar-foreground astw:flex astw:h-full astw:w-(--sidebar-width) astw:flex-col",r),...i,children:o}):c?p(ft,{open:d,onOpenChange:w,...i,children:B(vt,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"astw:bg-sidebar astw:text-sidebar-foreground astw:w-(--sidebar-width) astw:p-0 astw:[&>button]:hidden",style:{"--sidebar-width":Ba},side:t,children:[B(xt,{className:"sr-only",children:[p(yt,{children:"Sidebar"}),p(kt,{children:"Displays the mobile sidebar."})]}),p("div",{className:"flex h-full w-full flex-col",children:o})]})}):B("div",{className:"astw:group astw:peer astw:text-sidebar-foreground astw:hidden astw:md:block","data-state":s,"data-collapsible":s==="collapsed"?e:"","data-variant":a,"data-side":t,"data-slot":"sidebar",children:[p("div",{"data-slot":"sidebar-gap",className:l("astw:relative astw:w-(--sidebar-width) astw:bg-transparent astw:transition-[width] astw:duration-200 astw:ease-linear","astw:group-data-[collapsible=offcanvas]:w-0","astw:group-data-[side=right]:rotate-180",a==="floating"||a==="inset"?"astw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"astw:group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),p("div",{"data-slot":"sidebar-container",className:l("astw:fixed astw:inset-y-0 astw:z-10 astw:hidden astw:h-svh astw:w-(--sidebar-width) astw:transition-[left,right,width] astw:duration-200 astw:ease-linear astw:md:flex",t==="left"?"astw:left-0 astw:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"astw:right-0 astw:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",a==="floating"||a==="inset"?"astw:p-2 astw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"astw:group-data-[collapsible=icon]:w-(--sidebar-width-icon) astw:group-data-[side=left]:border-r astw:group-data-[side=right]:border-l",a==="inset"&&"astw:border-x astw:border-x-border",r),...i,children:p("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"astw:bg-sidebar astw:group-data-[variant=floating]:border-sidebar-border astw:flex astw:h-full astw:w-full astw:flex-col astw:group-data-[variant=floating]:rounded-lg astw:group-data-[variant=floating]:border astw:group-data-[variant=floating]:shadow-sm",children:o})})]})}function Z({className:t,onClick:a,...e}){let{toggleSidebar:r}=E();return B(T,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon",className:l("astw:text-muted-foreground",t),onClick:o=>{a?.(o),r()},...e,children:[p(Ma,{className:"astw:size-4.5"}),p("span",{className:"astw:sr-only",children:"Toggle Sidebar"})]})}function zt({className:t,...a}){return p("main",{"data-slot":"sidebar-inset",className:l("astw:bg-background astw:relative astw:flex astw:w-full astw:flex-1 astw:flex-col","astw:px-4 astw:md:peer-data-[variant=inset]:px-8 astw:md:peer-data-[variant=inset]:py-2",t),...a})}function Mt({className:t,...a}){return p("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:l("astw:flex astw:flex-row astw:items-center astw:gap-0.5 astw:p-2",t),...a})}function _t({className:t,...a}){return p("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:l("astw:flex astw:min-h-0 astw:flex-1 astw:flex-col astw:gap-2 astw:overflow-auto astw:group-data-[collapsible=icon]:overflow-hidden",t),...a})}function It({className:t,...a}){return p("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:l("astw:relative astw:flex astw:w-full astw:min-w-0 astw:flex-col astw:p-2",t),...a})}function At({className:t,...a}){return p("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:l("astw:flex astw:w-full astw:min-w-0 astw:flex-col astw:gap-1",t),...a})}function Bt({className:t,...a}){return p("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:l("astw:group/menu-item astw:relative",t),...a})}var Oa=za("astw:peer/menu-button astw:flex astw:w-full astw:items-center astw:gap-2 astw:overflow-hidden astw:rounded-md astw:p-2 astw:text-left astw:text-sm astw:outline-hidden astw:ring-sidebar-ring astw:transition-[width,height,padding] astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:focus-visible:ring-2 astw:active:bg-sidebar-accent astw:active:text-sidebar-accent-foreground astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:group-has-data-[sidebar=menu-action]/menu-item:pr-8 astw:aria-disabled:pointer-events-none astw:aria-disabled:opacity-50 astw:data-[active=true]:bg-sidebar-accent astw:data-[active=true]:font-medium astw:data-[active=true]:text-sidebar-accent-foreground astw:data-[state=open]:hover:bg-sidebar-accent astw:data-[state=open]:hover:text-sidebar-accent-foreground astw:group-data-[collapsible=icon]:size-8! astw:group-data-[collapsible=icon]:p-2! astw:[&>span:last-child]:truncate astw:[&>svg]:size-4 astw:[&>svg]:shrink-0",{variants:{variant:{default:"astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground",outline:"astw:bg-background astw:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"astw:h-8 astw:text-sm",sm:"astw:h-7 astw:rounded-md astw:gap-1.5 astw:px-3 astw:has-[>svg]:px-2.5",lg:"astw:h-12 astw:text-sm astw:group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function tt({asChild:t=!1,isActive:a=!1,variant:e="default",size:r="default",tooltip:o,className:i,...c}){let s=t?J:"button",{isMobile:d,state:w}=E(),u=p(s,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":r,"data-active":a,className:l(Oa({variant:e,size:r}),i),...c});return o?(typeof o=="string"&&(o={children:o}),B(Ct,{children:[p(Pt,{asChild:!0,children:u}),p(St,{side:"right",align:"center",hidden:w!=="collapsed"||d,...o})]})):u}function at({className:t,asChild:a=!1,showOnHover:e=!1,...r}){return p(a?J:"button",{"data-slot":"sidebar-menu-action","data-sidebar":"menu-action",className:l("astw:text-sidebar-foreground astw:ring-sidebar-ring astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:peer-hover/menu-button:text-sidebar-accent-foreground astw:absolute astw:top-1.5 astw:right-1 astw:flex astw:aspect-square astw:w-5 astw:items-center astw:justify-center astw:rounded-md astw:p-0 astw:outline-hidden astw:transition-transform astw:focus-visible:ring-2 astw:[&>svg]:size-4 astw:[&>svg]:shrink-0","astw:after:absolute astw:after:-inset-2 astw:md:after:hidden","astw:peer-data-[size=sm]/menu-button:top-1","astw:peer-data-[size=default]/menu-button:top-1.5","astw:peer-data-[size=lg]/menu-button:top-2.5","astw:group-data-[collapsible=icon]:hidden",e&&"astw:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground astw:group-focus-within/menu-item:opacity-100 astw:group-hover/menu-item:opacity-100 astw:data-[state=open]:opacity-100 astw:md:opacity-0",t),...r})}function Et({className:t,...a}){return p("ul",{"data-slot":"sidebar-menu-sub","data-sidebar":"menu-sub",className:l("astw:border-sidebar-border astw:mx-3.5 astw:flex astw:min-w-0 astw:translate-x-px astw:flex-col astw:gap-1 astw:border-l astw:px-2.5 astw:py-0.5","astw:group-data-[collapsible=icon]:hidden",t),...a})}function Lt({className:t,...a}){return p("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:l("astw:group/menu-sub-item astw:relative",t),...a})}function Ot({asChild:t=!1,size:a="md",isActive:e=!1,className:r,...o}){return p(t?J:"a",{"data-slot":"sidebar-menu-sub-button","data-sidebar":"menu-sub-button","data-size":a,"data-active":e,className:l("astw:text-sidebar-foreground astw:ring-sidebar-ring astw:hover:bg-sidebar-accent astw:hover:text-sidebar-accent-foreground astw:active:bg-sidebar-accent astw:active:text-sidebar-accent-foreground astw:[&>svg]:text-sidebar-accent-foreground astw:flex astw:h-7 astw:min-w-0 astw:-translate-x-px astw:items-center astw:gap-2 astw:overflow-hidden astw:rounded-md astw:px-2 astw:outline-hidden astw:focus-visible:ring-2 astw:disabled:pointer-events-none astw:disabled:opacity-50 astw:aria-disabled:pointer-events-none astw:aria-disabled:opacity-50 astw:[&>span:last-child]:truncate astw:[&>svg]:size-4 astw:[&>svg]:shrink-0","astw:data-[active=true]:bg-sidebar-accent astw:data-[active=true]:text-sidebar-accent-foreground",a==="sm"&&"astw:text-xs",a==="md"&&"astw:text-sm","astw:group-data-[collapsible=icon]:hidden",r),...o})}import{ChevronRight as Ut,SunIcon as ja}from"lucide-react";import{Slot as Wa}from"@radix-ui/react-slot";import{ChevronRight as Ua,MoreHorizontal as Ar}from"lucide-react";import{Link as Da,useHref as $a}from"react-router";import{jsx as Dt}from"react/jsx-runtime";function L({to:t,children:a,...e}){try{return $a(t),Dt(Da,{to:t,...e,children:a})}catch{return Dt("a",{href:t,...e,children:a})}}import{jsx as _,jsxs as Or}from"react/jsx-runtime";function et({...t}){return _("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...t})}function rt({className:t,...a}){return _("ol",{"data-slot":"breadcrumb-list",className:l("astw:text-muted-foreground astw:flex astw:flex-wrap astw:items-center astw:gap-1.5 astw:text-sm astw:break-words astw:sm:gap-2.5",t),...a})}function ot({className:t,...a}){return _("li",{"data-slot":"breadcrumb-item",className:l("astw:inline-flex astw:items-center astw:gap-1.5",t),...a})}function st({asChild:t,className:a,children:e,...r}){return _(t?Wa:L,{"data-slot":"breadcrumb-link",className:l("astw:hover:text-foreground astw:transition-colors",a),...r,children:e})}function $t({children:t,className:a,...e}){return _("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:l("astw:[&>svg]:size-3.5",a),...e,children:t??_(Ua,{})})}var Ha=t=>t.reduce((a,e)=>{a[e.path]={title:e.meta.title,breadcrumbTitle:e.meta.breadcrumbTitle};let r=(o,i)=>{!o||o.length===0||o.forEach(c=>{let s=`${i}/${c.path}`;a[s]={title:c.meta.title,breadcrumbTitle:c.meta.breadcrumbTitle},c.subResources&&c.subResources.length>0&&r(c.subResources,s)})};return e.resources&&e.resources.length>0&&r(e.resources,e.path),a},{});function Wt(t,a,e){let r=t.split("/").filter(s=>s!=="").slice(1),o=a?(()=>{let[s,...d]=r;return d})():r,i=Ha(e),c=o.map((s,d)=>{let w=o.slice(0,d+1).join("/"),u=i[w];if(!u){let k=Object.entries(i).find(([S])=>{let R=S.split("/").map($=>$.startsWith(":")?"[^/]+":$).join("/");return new RegExp(`^${R}$`).test(w)})?.[1];k&&(u=k)}let x;return u?typeof u.breadcrumbTitle=="function"?x=u.breadcrumbTitle(s):typeof u.breadcrumbTitle=="string"?x=u.breadcrumbTitle:x=u.title:x=decodeURIComponent(s),{segment:s,path:w,title:x}});return{basePath:a||null,segments:c}}import{Fragment as Ht,jsx as n,jsxs as m}from"react/jsx-runtime";var Ka=()=>{let{open:t}=E();return n("div",{className:t?"astw:md:hidden":void 0,children:n(Z,{className:"astw:-ml-2.5"})})},Fa=t=>{let a=t.children?t.children({Outlet:K}):null,e=F(),r=()=>{e.setTheme(e.theme==="dark"?"light":"dark")};return n(Tt,{className:"astw:flex astw:flex-col",children:m("div",{className:"astw:flex astw:flex-1",children:[t.sidebar??n(jt,{}),m(zt,{className:"astw:w-[calc(100%-var(--sidebar-width))]",children:[n("header",{className:"astw:flex astw:h-14 astw:shrink-0 astw:items-center astw:gap-2 astw:transition-[width,height] astw:ease-linear astw:group-has-data-[collapsible=icon]/sidebar-wrapper:h-12",children:m("div",{className:"astw:flex astw:w-full astw:items-center astw:justify-between",children:[m("div",{className:"astw:flex astw:items-center astw:gap-2",children:[n(Ka,{}),n(qa,{})]}),n("div",{className:"astw:flex astw:items-center astw:gap-2",children:n(T,{variant:"outline",size:"icon",onClick:r,children:n(ja,{})})})]})}),n("div",{className:"astw:flex astw:flex-col astw:gap-4",children:a??n(K,{})})]})]})})},jt=t=>{let{title:a,icon:e,navItems:r}=P(),{pathname:o}=Vt(),i=m(Mt,{children:[e,n("h1",{className:"astw:text-sm astw:mb-2 astw:mt-2 astw:px-2",children:a})]});return m(Nt,{variant:"inset",children:[m("div",{className:"astw:flex astw:justify-between astw:items-center",children:[t.header??i,n("div",{className:"astw:hidden astw:md:block",children:n(Z,{className:"astw:-ml-1"})})]}),n(_t,{children:n(It,{children:n(At,{children:r.map(s=>n(mt,{asChild:!0,defaultOpen:s.isActive,children:m(Bt,{children:[s.url?m(Ht,{children:[n(tt,{asChild:!0,tooltip:s.title,children:m(L,{to:s.url,className:s.url===o?"astw:bg-sidebar-accent astw:font-medium":void 0,children:[s.icon,n("span",{children:s.title})]})}),!!s.items?.length&&n(G,{asChild:!0,children:m(at,{className:"astw:data-[state=open]:rotate-90",children:[n(Ut,{}),n("span",{className:"sr-only",children:"Toggle"})]})})]}):n(Ht,{children:m(G,{className:"astw:flex astw:w-[100%] astw:[&[data-state=open]_.astw-rotate-target]:rotate-90",children:[n(tt,{asChild:!0,tooltip:s.title,children:m("span",{className:"astw:flex astw:w-[100%]",children:[s.icon,n("span",{children:s.title})]})}),!!s.items?.length&&n(at,{className:"astw-rotate-target",asChild:!0,children:m("span",{children:[n(Ut,{}),n("span",{className:"sr-only",children:"Toggle"})]})})]})}),!!s.items?.length&&n(bt,{children:n(Et,{children:s.items?.map(d=>n(Lt,{children:n(Ot,{asChild:!0,children:n(L,{to:d.url,className:d.url===o?"astw:bg-sidebar-accent astw:font-medium":void 0,children:n("span",{children:d.title})})})},d.title))})})]})},s.title))})})}),t.footer??null]})},Ga=()=>{let{configurations:t}=P(),a=Vt();return Wt(a.pathname,t.basePath,t.modules)},qa=()=>{let{basePath:t,segments:a}=Ga(),e=Va("/:prefix/settings/:suffix");return e?n(et,{children:n(rt,{children:n("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:n(ot,{children:n(st,{to:`/${e.params.prefix}/settings`,children:"Settings"})})})})}):n(et,{children:n(rt,{children:a.map((r,o)=>m("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:[n(ot,{children:n(st,{to:`${t?`/${t}`:""}/${N}/${r.path}`,children:r.title})}),o<a.length-1&&n($t,{})]},o))})})};import{useEffect as Ya}from"react";import{capitalCase as Kt}from"change-case";import{useNavigate as Xa}from"react-router";import{jsx as Ft}from"react/jsx-runtime";function Qa(t){let{path:a,meta:e,component:r,defaultResourceRedirectPath:o,resources:i}=t,c=e?.title??Kt(a),s=r||function(){let w=Xa();return Ya(()=>{w(o)},[w]),null};return{path:a,type:"component",_type:"module",component:()=>Ft(W,{contentBorder:e?.contentBorder??!1,children:s({title:c,resources:i})}),meta:{title:c,...e?.breadcrumbTitle!==void 0?{breadcrumbTitle:e.breadcrumbTitle}:{},...e,menuItemClickable:!o,icon:t.meta?.icon},resources:i}}function Ja(t){let{path:a,component:e,subResources:r,meta:o}=t,i=o?.title??Kt(a);return{_type:"resource",type:"component",path:a,meta:{title:i,icon:o?.icon,...o?.breadcrumbTitle!==void 0?{breadcrumbTitle:o.breadcrumbTitle}:{}},component:()=>Ft(W,{contentBorder:o?.contentBorder??!1,children:e({title:i,resources:r})}),subResources:r}}import{useLocation as ko,useNavigate as Co,useParams as Po,useSearchParams as So,Link as Ro}from"react-router";import{createContext as te,useCallback as it,useContext as ae,useEffect as ee,useState as re}from"react";import*as I from"oauth4webapi";var O="oauth_pkce_verifier",D="oauth_state",Gt=({idpEndpoint:t,clientId:a,state:e,codeChallenge:r,redirectUri:o})=>{let i=new URL(`${t}/oauth2/authorize`);return i.searchParams.set("response_type","code"),i.searchParams.set("client_id",a),i.searchParams.set("redirect_uri",o||window.location.origin),i.searchParams.set("scope","openid profile email"),i.searchParams.set("state",e),i.searchParams.set("code_challenge",r),i.searchParams.set("code_challenge_method","S256"),i.toString()},Za=async({code:t,returnedState:a,idpEndpoint:e,clientId:r,redirectUri:o})=>{let i=sessionStorage.getItem(O),c=sessionStorage.getItem(D);if(!t||!a||!i||!c){let d=[];throw t||d.push("code"),a||d.push("returnedState"),i||d.push("code_verifier"),c||d.push("expectedState"),new Error(`Missing params: ${d.join(", ")}`)}if(a!==c)throw new Error("State mismatch: possible CSRF attack");let s=new URLSearchParams({grant_type:"authorization_code",client_id:r,code:t,redirect_uri:o||window.location.origin,code_verifier:i});try{let d=await fetch(`${e}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:s.toString()}),{access_token:w}=await d.json();return w}catch(d){throw new Error(`Token exchange failed: ${d instanceof Error?d.message:String(d)}`)}},qt=async()=>{let t=I.generateRandomCodeVerifier(),a=await I.calculatePKCECodeChallenge(t),e=I.generateRandomState();return sessionStorage.setItem(O,t),sessionStorage.setItem(D,e),{codeChallenge:a,state:e}},Yt=async({currentUrl:t,idpEndpoint:a,clientId:e,redirectUri:r})=>{try{let o=t.searchParams.get("code"),i=t.searchParams.get("state");await Za({idpEndpoint:a,clientId:e,code:o,returnedState:i,redirectUri:r})}catch(o){console.error(o)}finally{sessionStorage.removeItem(O),sessionStorage.removeItem(D),t.searchParams.delete("code"),t.searchParams.delete("state"),t.searchParams.delete("error"),t.searchParams.delete("error_description"),window.history.replaceState({},document.title,t.toString())}};import{jsx as ie}from"react/jsx-runtime";var Xt=te(void 0),oe=()=>{let t=ae(Xt);if(t===void 0)throw new Error("useBuiltinIdpAuth must be used within an BuiltinIdPAuthContextProvider");return t},se=({idpEndpoint:t,clientId:a,redirectUri:e,children:r})=>{let[o,i]=re(!0),c=it(async()=>{let{codeChallenge:w,state:u}=await qt(),x=Gt({idpEndpoint:t,clientId:a,codeChallenge:w,state:u,redirectUri:e});window.location.href=x},[t,a,e]),s=it(async()=>{sessionStorage.removeItem(O),sessionStorage.removeItem(D);try{await fetch(`${t}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:""}),window.location.href="/"}catch(w){console.error(w)}},[t]),d=it(async w=>{i(!0),await Yt({currentUrl:w,idpEndpoint:t,clientId:a,redirectUri:e}),i(!1)},[t,a,e]);return ee(()=>{let w=new URL(window.location.href);w.searchParams.has("error")&&w.searchParams.has("error_description")?(console.error(w.searchParams.get("error_description")||"Authentication Error"),i(!1)):w.searchParams.has("code")&&w.searchParams.has("state")?d(w):i(!1)},[]),ie(Xt.Provider,{value:{isLoading:o,login:c,logout:s},children:r})};export{Ca as AppShell,se as BuiltinIdPAuthProvider,jt as DefaultSidebar,Ro as Link,Fa as SidebarLayoutContainer,Qa as defineModule,Ja as defineResource,P as useAppShell,oe as useBuiltinIdpAuth,ko as useLocation,Co as useNavigate,Po as useParams,So as useSearchParams,F as useTheme};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/app-shell",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./styles": "./dist/index.css",