@tailor-platform/app-shell 0.16.0 → 0.17.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 +2 -2
- package/dist/index.d.ts +57 -70
- package/dist/index.js +1 -1
- package/package.json +2 -2
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-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}::-webkit-calendar-picker-indicator{line-height:1}:-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-path:inset(50%);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-0\.5{margin-top:calc(var(--astw-spacing) * .5)}.astw\:mt-1{margin-top:calc(var(--astw-spacing) * 1)}.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\:flex-shrink-0,.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-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.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\:items-start{align-items:flex-start}.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-destructive{color:var(--destructive)}.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,display,content-visibility,overlay,pointer-events;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\:fade-in-0{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.astw\:outline-none{--tw-outline-style: none;outline-style:none}.astw\:select-none{-webkit-user-select:none;user-select:none}.astw\:zoom-in-95{--tw-enter-scale: 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-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.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 ;--tw-exit-opacity: 0}}.astw\:data-\[state\=closed\]\:zoom-out-95{&[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}}.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\=open\]\:rotate-90{&[data-state=open]{rotate:90deg}}.astw\:data-\[state\=open\]\:animate-in{&[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.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 ;--tw-enter-opacity: 0}}.astw\:data-\[state\=open\]\:zoom-in-95{&[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}}.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\]\: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}}}@property --tw-animation-delay{syntax: "*"; inherits: false; initial-value: 0s;}@property --tw-animation-direction{syntax: "*"; inherits: false; initial-value: normal;}@property --tw-animation-duration{syntax: "*"; inherits: false;}@property --tw-animation-fill-mode{syntax: "*"; inherits: false; initial-value: none;}@property --tw-animation-iteration-count{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-translate-y{syntax: "*"; inherits: false; initial-value: 0;}:root{--background: 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));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@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: "";--tw-animation-delay: 0s;--tw-animation-direction: normal;--tw-animation-duration: initial;--tw-animation-fill-mode: none;--tw-animation-iteration-count: 1;--tw-enter-blur: 0;--tw-enter-opacity: 1;--tw-enter-rotate: 0;--tw-enter-scale: 1;--tw-enter-translate-x: 0;--tw-enter-translate-y: 0;--tw-exit-blur: 0;--tw-exit-opacity: 1;--tw-exit-rotate: 0;--tw-exit-scale: 1;--tw-exit-translate-x: 0;--tw-exit-translate-y: 0}}}
|
|
2
|
-
/*! tailwindcss v4.1.
|
|
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-0\.5{margin-top:calc(var(--astw-spacing) * .5)}.astw\:mt-1{margin-top:calc(var(--astw-spacing) * 1)}.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\:flex-shrink-0,.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-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.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\:items-start{align-items:flex-start}.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-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-destructive{color:var(--destructive)}.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\:fade-in-0{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.astw\:outline-none{--tw-outline-style: none;outline-style:none}.astw\:select-none{-webkit-user-select:none;user-select:none}.astw\:zoom-in-95{--tw-enter-scale: 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-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.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 ;--tw-exit-opacity: 0}}.astw\:data-\[state\=closed\]\:zoom-out-95{&[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}}.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\=open\]\:rotate-90{&[data-state=open]{rotate:90deg}}.astw\:data-\[state\=open\]\:animate-in{&[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}}.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 ;--tw-enter-opacity: 0}}.astw\:data-\[state\=open\]\:zoom-in-95{&[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}}.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\]\: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}}}@property --tw-animation-delay{syntax: "*"; inherits: false; initial-value: 0s;}@property --tw-animation-direction{syntax: "*"; inherits: false; initial-value: normal;}@property --tw-animation-duration{syntax: "*"; inherits: false;}@property --tw-animation-fill-mode{syntax: "*"; inherits: false; initial-value: none;}@property --tw-animation-iteration-count{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-blur{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-translate-y{syntax: "*"; inherits: false; initial-value: 0;}:root{--background: 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));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@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: "";--tw-animation-delay: 0s;--tw-animation-direction: normal;--tw-animation-duration: initial;--tw-animation-fill-mode: none;--tw-animation-iteration-count: 1;--tw-enter-blur: 0;--tw-enter-opacity: 1;--tw-enter-rotate: 0;--tw-enter-scale: 1;--tw-enter-translate-x: 0;--tw-enter-translate-y: 0;--tw-exit-blur: 0;--tw-exit-opacity: 1;--tw-exit-rotate: 0;--tw-exit-scale: 1;--tw-exit-translate-x: 0;--tw-exit-translate-y: 0}}}
|
|
2
|
+
/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */
|
package/dist/index.d.ts
CHANGED
|
@@ -68,7 +68,7 @@ type Module = Omit<CommonPageResource, "meta"> & {
|
|
|
68
68
|
};
|
|
69
69
|
resources: Array<Resource>;
|
|
70
70
|
loader?: () => Response;
|
|
71
|
-
errorBoundary
|
|
71
|
+
errorBoundary: ErrorBoundaryComponent;
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
74
74
|
* A resource that can be included in the sub-content in the root resource.
|
|
@@ -78,7 +78,7 @@ type Module = Omit<CommonPageResource, "meta"> & {
|
|
|
78
78
|
type Resource = CommonPageResource & {
|
|
79
79
|
_type: "resource";
|
|
80
80
|
subResources?: Array<Resource>;
|
|
81
|
-
errorBoundary
|
|
81
|
+
errorBoundary: ErrorBoundaryComponent;
|
|
82
82
|
};
|
|
83
83
|
type Modules = Array<Module>;
|
|
84
84
|
type ResourceMetaProps = {
|
|
@@ -89,12 +89,6 @@ type ResourceMetaProps = {
|
|
|
89
89
|
*/
|
|
90
90
|
title?: string;
|
|
91
91
|
icon?: ReactNode;
|
|
92
|
-
/**
|
|
93
|
-
* Whether to show a border around the content.
|
|
94
|
-
*
|
|
95
|
-
* @default true
|
|
96
|
-
*/
|
|
97
|
-
contentBorder?: boolean;
|
|
98
92
|
/**
|
|
99
93
|
* Custom breadcrumb segment title for this resource. Can be a string or a function.
|
|
100
94
|
*/
|
|
@@ -231,75 +225,68 @@ type AppShellProps = React.PropsWithChildren<{
|
|
|
231
225
|
*/
|
|
232
226
|
icon?: React.ReactNode;
|
|
233
227
|
/**
|
|
234
|
-
*
|
|
228
|
+
* Base path for the app shell
|
|
235
229
|
*/
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
* errorBoundary: <GlobalErrorBoundary />,
|
|
287
|
-
* }}
|
|
288
|
-
* >
|
|
289
|
-
* ```
|
|
290
|
-
*/
|
|
291
|
-
errorBoundary?: ErrorBoundaryComponent;
|
|
292
|
-
};
|
|
230
|
+
basePath?: string;
|
|
231
|
+
/**
|
|
232
|
+
* A component to be rendered at the root level of AppShell,
|
|
233
|
+
* or a redirect configuration
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```tsx
|
|
237
|
+
* // Render a component
|
|
238
|
+
* rootComponent: () => <DashboardHome />
|
|
239
|
+
*
|
|
240
|
+
* // Redirect to a resource
|
|
241
|
+
* rootComponent: redirectToResource("dashboard/overview")
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
rootComponent?: (() => React.ReactNode) | RedirectConfig;
|
|
245
|
+
/**
|
|
246
|
+
* Navigation configuration
|
|
247
|
+
*/
|
|
248
|
+
modules: Modules;
|
|
249
|
+
/**
|
|
250
|
+
* Settings resources to be included in the settings menu
|
|
251
|
+
*/
|
|
252
|
+
settingsResources?: Array<Resource>;
|
|
253
|
+
/**
|
|
254
|
+
* Global error boundary component applied to all routes.
|
|
255
|
+
* When an error occurs in any route component, this component will render.
|
|
256
|
+
* Module and resource-level error boundaries take precedence over this.
|
|
257
|
+
* Use the `useRouteError` hook to access error details within the component.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```tsx
|
|
261
|
+
* import { useRouteError } from "@tailor-platform/app-shell";
|
|
262
|
+
*
|
|
263
|
+
* const GlobalErrorBoundary = () => {
|
|
264
|
+
* const error = useRouteError() as Error;
|
|
265
|
+
* return (
|
|
266
|
+
* <div>
|
|
267
|
+
* <h1>Something went wrong</h1>
|
|
268
|
+
* <p>{error.message}</p>
|
|
269
|
+
* </div>
|
|
270
|
+
* );
|
|
271
|
+
* };
|
|
272
|
+
*
|
|
273
|
+
* <AppShell
|
|
274
|
+
* modules: [...],
|
|
275
|
+
* errorBoundary: <GlobalErrorBoundary />,
|
|
276
|
+
* />
|
|
277
|
+
* ```
|
|
278
|
+
*/
|
|
279
|
+
errorBoundary?: ErrorBoundaryComponent;
|
|
293
280
|
}>;
|
|
294
281
|
declare const AppShell: (props: AppShellProps) => react_jsx_runtime.JSX.Element | null;
|
|
295
282
|
|
|
296
|
-
type
|
|
283
|
+
type SidebarLayoutProps = {
|
|
297
284
|
children?: (props: {
|
|
298
285
|
Outlet: () => React.ReactNode;
|
|
299
286
|
}) => React.ReactNode;
|
|
300
287
|
sidebar?: React.ReactNode;
|
|
301
288
|
};
|
|
302
|
-
declare const
|
|
289
|
+
declare const SidebarLayout: (props: SidebarLayoutProps) => react_jsx_runtime.JSX.Element;
|
|
303
290
|
type DefaultSidebarProps = {
|
|
304
291
|
header?: React.ReactNode;
|
|
305
292
|
footer?: React.ReactNode;
|
|
@@ -310,7 +297,7 @@ type RootConfiguration = {
|
|
|
310
297
|
modules: Modules;
|
|
311
298
|
settingsResources: Resource[];
|
|
312
299
|
basePath?: string;
|
|
313
|
-
errorBoundary
|
|
300
|
+
errorBoundary: ErrorBoundaryComponent;
|
|
314
301
|
};
|
|
315
302
|
type NavChildItem = {
|
|
316
303
|
title: string;
|
|
@@ -417,4 +404,4 @@ declare const handleOAuthCallback: ({ currentUrl, apiEndpoint, clientId, redirec
|
|
|
417
404
|
redirectUri: string;
|
|
418
405
|
}) => Promise<void>;
|
|
419
406
|
|
|
420
|
-
export { AppShell, type AppShellProps, BuiltinIdPAuthProvider, DefaultSidebar, type ErrorBoundaryComponent, OAUTH_STATE_KEY, PKCE_VERIFIER_KEY, type ResourceComponentProps,
|
|
407
|
+
export { AppShell, type AppShellProps, BuiltinIdPAuthProvider, DefaultSidebar, type ErrorBoundaryComponent, OAUTH_STATE_KEY, PKCE_VERIFIER_KEY, type ResourceComponentProps, SidebarLayout, buildAuthorizationUrl, defineModule, defineResource, exchangeCodeForToken, handleOAuthCallback, prepareLogin, redirectToResource, useAppShell, useBuiltinIdpAuth, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Table as Ea}from"lucide-react";import{useEffect as Ia,useMemo as _a,useState as Aa}from"react";import{createContext as aa,useContext as ea}from"react";var G=aa({navItems:[],configurations:{modules:[],settingsResources:[]}}),P=()=>ea(G);import{createBrowserRouter as fa,RouterProvider as va,Navigate as xa,redirect as ya,Outlet as Ca}from"react-router";import{NavLink as la,Outlet as ct}from"react-router";import{Toaster as ca}from"sonner";import{Slot as sa}from"@radix-ui/react-slot";import{cva as ia}from"class-variance-authority";import{clsx as ra}from"clsx";import{twMerge as oa}from"tailwind-merge";function c(...t){return oa(ra(t))}import{jsx as da}from"react/jsx-runtime";var na=ia("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 y({className:t,variant:a,size:e,asChild:r=!1,...o}){return da(r?sa:"button",{"data-slot":"button",className:c(na({variant:a,size:e,className:t})),...o})}import{Fragment as wa,jsx as h,jsxs as I}from"react/jsx-runtime";var U=({contentBorder:t,children:a})=>h("div",{className:t?"astw:p-4 astw:rounded-sm astw:border astw:shadow-xs":"",children:a}),wt=()=>I(U,{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!"})]}),X=()=>I(wa,{children:[h(ct,{}),h(ca,{})]}),pt=()=>{let{configurations:t}=P();return I("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:I("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(la,{to:`./${a.path}`,children:({isActive:e})=>I(y,{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(ct,{})})]})};import{useRouteError as pa,isRouteErrorResponse as ua}from"react-router";import{AlertCircle as ut}from"lucide-react";import{jsx as x,jsxs as $}from"react/jsx-runtime";var mt=()=>{let t=pa();if(ua(t)&&t.status===404)return x("div",{className:"astw:p-6",children:$("div",{className:"astw:flex astw:items-start astw:gap-4",children:[x(ut,{className:"astw:h-5 astw:w-5 astw:text-destructive astw:flex-shrink-0 astw:mt-0.5"}),$("div",{children:[x("h1",{className:"astw:font-semibold astw:text-lg",children:"404 Not Found"}),x("p",{className:"astw:text-sm astw:text-muted-foreground astw:mt-1",children:"The page you requested could not be found."}),x(y,{variant:"outline",size:"sm",className:"astw:mt-4",onClick:()=>window.history.back(),children:"Go Back"})]})]})});let a=t instanceof Error?t.message:"An unexpected error occurred";return x("div",{className:"astw:p-6",children:$("div",{className:"astw:flex astw:items-start astw:gap-4",children:[x(ut,{className:"astw:h-5 astw:w-5 astw:text-destructive astw:flex-shrink-0 astw:mt-0.5"}),$("div",{children:[x("h1",{className:"astw:font-semibold astw:text-lg",children:"Something went wrong"}),x("p",{className:"astw:text-sm astw:text-muted-foreground astw:mt-1",children:a}),x(y,{variant:"outline",size:"sm",className:"astw:mt-4",onClick:()=>window.location.reload(),children:"Try Again"})]})]})})};import{capitalCase as gt}from"change-case";import{redirect as ma}from"react-router";import{jsx as bt}from"react/jsx-runtime";function ga(t){return{redirectTo:t}}function F(t){return typeof t=="object"&&t!==null&&"redirectTo"in t}function ba(t){let{path:a,meta:e,component:r,resources:o,errorBoundary:s}=t,l=e?.title??gt(a),i=F(r)?{component:()=>null,loader:()=>ma(r.redirectTo)}:{component:()=>bt(U,{contentBorder:e?.contentBorder??!1,children:r({title:l,resources:o})})};return{path:a,type:"component",_type:"module",...i,meta:{title:l,...e?.breadcrumbTitle!==void 0?{breadcrumbTitle:e.breadcrumbTitle}:{},...e,menuItemClickable:!F(r),icon:t.meta?.icon},resources:o,errorBoundary:s}}function ha(t){let{path:a,component:e,subResources:r,meta:o,errorBoundary:s}=t,l=o?.title??gt(a);return{_type:"resource",type:"component",path:a,meta:{title:l,icon:o?.icon,...o?.breadcrumbTitle!==void 0?{breadcrumbTitle:o.breadcrumbTitle}:{}},component:()=>bt(U,{contentBorder:o?.contentBorder??!1,children:e({title:l,resources:r})}),subResources:r,errorBoundary:s}}import{Fragment as Sa,jsx as _}from"react/jsx-runtime";var H=t=>()=>_(Sa,{children:t}),ka=(t,a)=>t.reduce((e,r)=>{let o=r.errorBoundary||a,s={index:!0,Component:r.component,loader:r.loader};return[...e,{path:r.path,...o&&{ErrorBoundary:H(o)},...r.resources&&r.resources.length>0?{children:[s,...r.resources.map(l=>ht(l,o))]}:{children:[s]}}]},[]),ht=(t,a)=>{let e=t.errorBoundary||a,r={index:!0,Component:t.component};return{path:t.path,...t.errorBoundary&&{ErrorBoundary:H(t.errorBoundary)},...t.subResources&&t.subResources.length>0?{children:[r,...t.subResources.map(o=>ht(o,e))]}:{children:[r]}}},ft=t=>{let{configurations:a}=P(),{rootComponent:e}=t,r=a.errorBoundary===void 0?_(mt,{}):a.errorBoundary,o=F(e)?{index:!0,loader:()=>ya(e.redirectTo)}:{index:!0,Component:e??wt},s=a.settingsResources.length>0?[{path:"settings",index:!0,Component:()=>_(xa,{to:a.settingsResources[0].path,relative:"path",replace:!0})},{path:"settings",Component:pt,children:a.settingsResources.map(d=>({path:d.path,Component:d.component,...d.errorBoundary&&{ErrorBoundary:H(d.errorBoundary)}}))}]:[],l=[o,{children:ka(a.modules,r)},...s,{path:"*",loader:()=>{throw new Response("Not Found",{status:404})}}],i=fa([{element:t.children,children:r?[{element:_(Ca,{}),ErrorBoundary:H(r),children:l}]:l}],{basename:a.basePath?"/"+a.basePath:void 0});return _(va,{router:i})};import{createContext as Pa,useContext as Ra,useEffect as Ta,useMemo as Na,useState as za}from"react";import{jsx as Ma}from"react/jsx-runtime";var Ba={resolvedTheme:"light",theme:"system",setTheme:()=>null},vt=Pa(Ba);function xt({children:t,storageKey:a,defaultTheme:e="system",...r}){let[o,s]=za(()=>localStorage.getItem(a)||e),l=Na(()=>o!=="system"?o:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[o]);Ta(()=>{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 Ma(vt.Provider,{...r,value:i,children:t})}var Y=()=>{let t=Ra(vt);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t};import{jsx as V}from"react/jsx-runtime";var La=t=>{let[a,e]=Aa(!1);Ia(function(){e(!0)},[]);let r=_a(()=>t.configurations.modules.map(s=>{let l=s.resources.map(i=>({title:i.meta.title,url:`${s.path}/${i.path}`}));return{title:s.meta.title,url:s.meta.menuItemClickable?s.path:void 0,clickable:s.component,icon:s.meta.icon||V(Ea,{}),isActive:!0,items:l}}),[t.configurations.modules]);return a?V(G.Provider,{value:{title:t.title,icon:t.icon,configurations:{modules:t.configurations.modules,settingsResources:t.configurations.settingsResources??[],errorBoundary:t.configurations.errorBoundary,basePath:t.configurations.basePath},navItems:r},children:V(xt,{defaultTheme:"system",storageKey:"appshell-ui-theme",children:V(ft,{rootComponent:t.configurations.rootComponent,children:t.children})})}):null};import*as z from"@radix-ui/react-collapsible";import{jsx as Q}from"react/jsx-runtime";function yt({...t}){return Q(z.Root,{"data-slot":"collapsible",...t})}function J({...t}){return Q(z.CollapsibleTrigger,{"data-slot":"collapsible-trigger",...t})}function Ct({...t}){return Q(z.CollapsibleContent,{"data-slot":"collapsible-content",...t})}import{useLocation as Xt,useMatch as ee}from"react-router";import*as b from"react";import{Slot as et}from"@radix-ui/react-slot";import{cva as $a}from"class-variance-authority";import{PanelLeftIcon as Fa}from"lucide-react";import*as K from"react";var Z=768;function kt(){let[t,a]=K.useState(void 0);return K.useEffect(()=>{let e=window.matchMedia(`(max-width: ${Z-1}px)`),r=()=>{a(window.innerWidth<Z)};return e.addEventListener("change",r),a(window.innerWidth<Z),()=>e.removeEventListener("change",r)},[]),!!t}import{jsx as vr}from"react/jsx-runtime";import*as Oa from"@radix-ui/react-separator";import{jsx as kr}from"react/jsx-runtime";import*as m from"@radix-ui/react-dialog";import{XIcon as Da}from"lucide-react";import{jsx as C,jsxs as tt}from"react/jsx-runtime";function St({...t}){return C(m.Root,{"data-slot":"sheet",...t})}function ja({...t}){return C(m.Portal,{"data-slot":"sheet-portal",...t})}function Wa({className:t,...a}){return C(m.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 tt(ja,{children:[C(Wa,{}),tt(m.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,tt(m.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:[C(Da,{className:"astw:size-4"}),C("span",{className:"astw:sr-only",children:"Close"})]})]})]})}function Rt({className:t,...a}){return C("div",{"data-slot":"sheet-header",className:c("astw:flex astw:flex-col astw:gap-1.5 astw:p-4",t),...a})}function Tt({className:t,...a}){return C(m.Title,{"data-slot":"sheet-title",className:c("astw:text-foreground astw:font-semibold",t),...a})}function Nt({className:t,...a}){return C(m.Description,{"data-slot":"sheet-description",className:c("astw:text-muted-foreground astw:text-sm",t),...a})}import{jsx as Mr}from"react/jsx-runtime";import*as f from"@radix-ui/react-tooltip";import{jsx as B,jsxs as Ua}from"react/jsx-runtime";function at({delayDuration:t=0,...a}){return B(f.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function zt({...t}){return B(at,{children:B(f.Root,{"data-slot":"tooltip",...t})})}function Bt({...t}){return B(f.Trigger,{"data-slot":"tooltip-trigger",...t})}function Mt({className:t,sideOffset:a=0,children:e,...r}){return B(f.Portal,{children:Ua(f.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,B(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 w,jsxs as A}from"react/jsx-runtime";var Ha="sidebar_state",Va=3600*24*7,Ka="16rem",qa="18rem",Ga="3rem",Xa="b",Et=b.createContext(null);function L(){let t=b.useContext(Et);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function It({defaultOpen:t=!0,open:a,onOpenChange:e,className:r,style:o,children:s,...l}){let i=kt(),[d,p]=b.useState(!1),[u,R]=b.useState(t),k=a??u,T=b.useCallback(v=>{let S=typeof v=="function"?v(k):v;e?e(S):R(S),document.cookie=`${Ha}=${S}; path=/; max-age=${Va}`},[e,k]),N=b.useCallback(()=>i?p(v=>!v):T(v=>!v),[i,T,p]);b.useEffect(()=>{let v=S=>{S.key===Xa&&(S.metaKey||S.ctrlKey)&&(S.preventDefault(),N())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[N]);let q=k?"expanded":"collapsed",W=b.useMemo(()=>({state:q,open:k,setOpen:T,isMobile:i,openMobile:d,setOpenMobile:p,toggleSidebar:N}),[q,k,T,i,d,p,N]);return w(Et.Provider,{value:W,children:w(at,{delayDuration:0,children:w("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":Ka,"--sidebar-width-icon":Ga,...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 _t({side:t="left",variant:a="sidebar",collapsible:e="offcanvas",className:r,children:o,...s}){let{isMobile:l,state:i,openMobile:d,setOpenMobile:p}=L();return e==="none"?w("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?w(St,{open:d,onOpenChange:p,...s,children:A(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":qa},side:t,children:[A(Rt,{className:"astw:sr-only",children:[w(Tt,{children:"Sidebar"}),w(Nt,{children:"Displays the mobile sidebar."})]}),w("div",{className:"flex h-full w-full flex-col",children:o})]})}):A("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:[w("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)")}),w("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:w("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 rt({className:t,onClick:a,...e}){let{toggleSidebar:r}=L();return A(y,{"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:[w(Fa,{className:"astw:size-4.5"}),w("span",{className:"astw:sr-only",children:"Toggle Sidebar"})]})}function At({className:t,...a}){return w("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 Lt({className:t,...a}){return w("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 Ot({className:t,...a}){return w("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 Dt({className:t,...a}){return w("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 jt({className:t,...a}){return w("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 Wt({className:t,...a}){return w("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:c("astw:group/menu-item astw:relative",t),...a})}var Ya=$a("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 ot({asChild:t=!1,isActive:a=!1,variant:e="default",size:r="default",tooltip:o,className:s,...l}){let i=t?et:"button",{isMobile:d,state:p}=L(),u=w(i,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":r,"data-active":a,className:c(Ya({variant:e,size:r}),s),...l});return o?(typeof o=="string"&&(o={children:o}),A(zt,{children:[w(Bt,{asChild:!0,children:u}),w(Mt,{side:"right",align:"center",hidden:p!=="collapsed"||d,...o})]})):u}function st({className:t,asChild:a=!1,showOnHover:e=!1,...r}){return w(a?et:"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 Ut({className:t,...a}){return w("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 $t({className:t,...a}){return w("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:c("astw:group/menu-sub-item astw:relative",t),...a})}function Ft({asChild:t=!1,size:a="md",isActive:e=!1,className:r,...o}){return w(t?et:"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 qt,SunIcon as re}from"lucide-react";import{Slot as Za}from"@radix-ui/react-slot";import{ChevronRight as te,MoreHorizontal as oo}from"lucide-react";import{Link as Ja,useHref as Qa}from"react-router";import{jsx as Ht}from"react/jsx-runtime";function O({to:t,children:a,...e}){try{return Qa(t),Ht(Ja,{to:t,...e,children:a})}catch{return Ht("a",{href:t,...e,children:a})}}import{jsx as M,jsxs as lo}from"react/jsx-runtime";function it({...t}){return M("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...t})}function nt({className:t,...a}){return M("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 dt({className:t,...a}){return M("li",{"data-slot":"breadcrumb-item",className:c("astw:inline-flex astw:items-center astw:gap-1.5",t),...a})}function lt({asChild:t,className:a,children:e,...r}){return M(t?Za:O,{"data-slot":"breadcrumb-link",className:c("astw:hover:text-foreground astw:transition-colors",a),...r,children:e})}function Vt({children:t,className:a,...e}){return M("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:c("astw:[&>svg]:size-3.5",a),...e,children:t??M(te,{})})}var ae=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 Kt(t,a,e){let r=t.split("/").filter(i=>i!=="").slice(1),o=a?(()=>{let[i,...d]=r;return d})():r,s=ae(e),l=o.map((i,d)=>{let p=o.slice(0,d+1).join("/"),u=s[p];if(!u){let k=Object.entries(s).find(([T])=>{let N=T.split("/").map(W=>W.startsWith(":")?"[^/]+":W).join("/");return new RegExp(`^${N}$`).test(p)})?.[1];k&&(u=k)}let R;return u?typeof u.breadcrumbTitle=="function"?R=u.breadcrumbTitle(i):typeof u.breadcrumbTitle=="string"?R=u.breadcrumbTitle:R=u.title:R=decodeURIComponent(i),{segment:i,path:p,title:R}});return{basePath:a||null,segments:l}}import{Fragment as Gt,jsx as n,jsxs as g}from"react/jsx-runtime";var oe=()=>{let{open:t}=L();return n("div",{className:t?"astw:md:hidden":void 0,children:n(rt,{className:"astw:-ml-2.5"})})},se=t=>{let a=t.children?t.children({Outlet:X}):null,e=Y(),r=()=>{e.setTheme(e.theme==="dark"?"light":"dark")};return n(It,{className:"astw:flex astw:flex-col",children:g("div",{className:"astw:flex astw:flex-1",children:[t.sidebar??n(Yt,{}),g(At,{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:g("div",{className:"astw:flex astw:w-full astw:items-center astw:justify-between",children:[g("div",{className:"astw:flex astw:items-center astw:gap-2",children:[n(oe,{}),n(ne,{})]}),n("div",{className:"astw:flex astw:items-center astw:gap-2",children:n(y,{variant:"outline",size:"icon",onClick:r,children:n(re,{})})})]})}),n("div",{className:"astw:flex astw:flex-col astw:gap-4",children:a??n(X,{})})]})]})})},Yt=t=>{let{title:a,icon:e,navItems:r}=P(),{pathname:o}=Xt(),s=g(Lt,{children:[e,n("h1",{className:"astw:text-sm astw:mb-2 astw:mt-2 astw:px-2",children:a})]});return g(_t,{variant:"inset",children:[g("div",{className:"astw:flex astw:justify-between astw:items-center",children:[t.header??s,n("div",{className:"astw:hidden astw:md:block",children:n(rt,{className:"astw:-ml-1"})})]}),n(Ot,{children:n(Dt,{children:n(jt,{children:r.map(i=>n(yt,{asChild:!0,defaultOpen:i.isActive,children:g(Wt,{children:[i.url?g(Gt,{children:[n(ot,{asChild:!0,tooltip:i.title,children:g(O,{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:g(st,{className:"astw:data-[state=open]:rotate-90",children:[n(qt,{}),n("span",{className:"astw:sr-only",children:"Toggle"})]})})]}):n(Gt,{children:g(J,{className:"astw:flex astw:w-[100%] astw:[&[data-state=open]_.astw-rotate-target]:rotate-90",children:[n(ot,{asChild:!0,tooltip:i.title,children:g("span",{className:"astw:flex astw:w-[100%]",children:[i.icon,n("span",{children:i.title})]})}),!!i.items?.length&&n(st,{className:"astw-rotate-target",asChild:!0,children:g("span",{children:[n(qt,{}),n("span",{className:"astw:sr-only",children:"Toggle"})]})})]})}),!!i.items?.length&&n(Ct,{children:n(Ut,{children:i.items?.map(d=>n($t,{children:n(Ft,{asChild:!0,children:n(O,{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]})},ie=()=>{let{configurations:t}=P(),a=Xt();return Kt(a.pathname,t.basePath,t.modules)},ne=()=>{let{segments:t}=ie(),a=ee("/:prefix/settings/:suffix");return a?n(it,{children:n(nt,{children:n("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:n(dt,{children:n(lt,{to:`/${a.params.prefix}/settings`,children:"Settings"})})})})}):n(it,{children:n(nt,{children:t.map((e,r)=>g("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:[n(dt,{children:n(lt,{to:e.path,children:e.title})}),r<t.length-1&&n(Vt,{})]},r))})})};import{useLocation as jo,useNavigate as Wo,useParams as Uo,useSearchParams as $o,useRouteError as Fo,Link as Ho}from"react-router";import{createContext as le,useCallback as Zt,useContext as ce,useEffect as we,useMemo as pe,useState as ue}from"react";import*as E from"oauth4webapi";var D="oauth_pkce_verifier",j="oauth_state",Jt=({apiEndpoint: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()},de=async({code:t,returnedState:a,apiEndpoint:e,clientId:r,redirectUri:o})=>{let s=sessionStorage.getItem(D),l=sessionStorage.getItem(j);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:p}=await d.json();return p}catch(d){throw new Error(`Token exchange failed: ${d instanceof Error?d.message:String(d)}`)}},Qt=async()=>{let t=E.generateRandomCodeVerifier(),a=await E.calculatePKCECodeChallenge(t),e=E.generateRandomState();return sessionStorage.setItem(D,t),sessionStorage.setItem(j,e),{codeChallenge:a,state:e}},Po=async({currentUrl:t,apiEndpoint:a,clientId:e,redirectUri:r})=>{try{let o=t.searchParams.get("code"),s=t.searchParams.get("state");await de({apiEndpoint:a,clientId:e,code:o,returnedState:s,redirectUri:r})}catch(o){console.error(o)}finally{sessionStorage.removeItem(D),sessionStorage.removeItem(j),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 be}from"react/jsx-runtime";var ta=le(void 0),me=()=>{let t=ce(ta);if(t===void 0)throw new Error("useBuiltinIdpAuth must be used within an BuiltinIdPAuthContextProvider");return t},ge=({apiEndpoint:t,clientId:a,redirectUri:e,children:r})=>{let[o,s]=ue(!1),l=Zt(async()=>{let{codeChallenge:d,state:p}=await Qt(),u=Jt({apiEndpoint:t,clientId:a,codeChallenge:d,state:p,redirectUri:e});window.location.href=u},[t,a,e]);we(()=>{(async()=>(await(await fetch(`${t}/query`,{method:"POST",headers:{"Content-Type":"application/json","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:JSON.stringify({query:"query Myself(){ me { id }}"})})).json()).data.me?s(!0):l())()},[t,l]);let i=Zt(async()=>{sessionStorage.removeItem(D),sessionStorage.removeItem(j);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(d){console.error(d)}},[t]);return be(ta.Provider,{value:pe(()=>({login:l,logout:i}),[l,i]),children:o?r:null})};export{La as AppShell,ge as BuiltinIdPAuthProvider,Yt as DefaultSidebar,Ho as Link,j as OAUTH_STATE_KEY,D as PKCE_VERIFIER_KEY,se as SidebarLayoutContainer,Jt as buildAuthorizationUrl,ba as defineModule,ha as defineResource,de as exchangeCodeForToken,Po as handleOAuthCallback,Qt as prepareLogin,ga as redirectToResource,P as useAppShell,me as useBuiltinIdpAuth,jo as useLocation,Wo as useNavigate,Uo as useParams,Fo as useRouteError,$o as useSearchParams,Y as useTheme};
|
|
1
|
+
import{Table as Aa}from"lucide-react";import{useEffect as Oa,useMemo as La,useState as Da}from"react";import{createContext as wa,useContext as pa}from"react";import{useRouteError as la,isRouteErrorResponse as ca}from"react-router";import{Slot as sa}from"@radix-ui/react-slot";import{cva as ia}from"class-variance-authority";import{clsx as ra}from"clsx";import{twMerge as oa}from"tailwind-merge";function c(...t){return oa(ra(t))}import{jsx as da}from"react/jsx-runtime";var na=ia("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 y({className:t,variant:a,size:e,asChild:r=!1,...o}){return da(r?sa:"button",{"data-slot":"button",className:c(na({variant:a,size:e,className:t})),...o})}import{AlertCircle as lt}from"lucide-react";import{jsx as x,jsxs as H}from"react/jsx-runtime";var T=()=>{let t=la(),a={role:"alert","aria-label":"default-error-boundary"};if(ca(t)&&t.status===404)return x("div",{...a,className:"astw:p-6",children:H("div",{className:"astw:flex astw:items-start astw:gap-4",children:[x(lt,{className:"astw:h-5 astw:w-5 astw:text-destructive astw:flex-shrink-0 astw:mt-0.5"}),H("div",{children:[x("h1",{className:"astw:font-semibold astw:text-lg",children:"404 Not Found"}),x("p",{className:"astw:text-sm astw:text-muted-foreground astw:mt-1",children:"The page you requested could not be found."}),x(y,{variant:"outline",size:"sm",className:"astw:mt-4",onClick:()=>window.history.back(),children:"Go Back"})]})]})});let e=t instanceof Error?t.message:"An unexpected error occurred";return x("div",{...a,className:"astw:p-6",children:H("div",{className:"astw:flex astw:items-start astw:gap-4",children:[x(lt,{className:"astw:h-5 astw:w-5 astw:text-destructive astw:flex-shrink-0 astw:mt-0.5"}),H("div",{children:[x("h1",{className:"astw:font-semibold astw:text-lg",children:"Something went wrong"}),x("p",{className:"astw:text-sm astw:text-muted-foreground astw:mt-1",children:e}),x(y,{variant:"outline",size:"sm",className:"astw:mt-4",onClick:()=>window.location.reload(),children:"Try Again"})]})]})})};import{jsx as ua}from"react/jsx-runtime";var q=wa({navItems:[],configurations:{modules:[],settingsResources:[],errorBoundary:ua(T,{})}}),P=()=>pa(q);import{Outlet as Ra,createMemoryRouter as Pa,createBrowserRouter as Sa,RouterProvider as Ta}from"react-router";import{Navigate as xa,redirect as ya}from"react-router";import{NavLink as ma,Outlet as ct}from"react-router";import{Toaster as ga}from"sonner";import{Fragment as ut,jsx as f,jsxs as _}from"react/jsx-runtime";var wt=()=>_(ut,{children:[f("p",{className:"astw:font-semibold astw:leading-none astw:tracking-tight",children:"Welcome to AppShell"}),f("p",{className:"pt-4",children:"Add your GraphQL resources from configuration at first!"})]}),G=()=>_(ut,{children:[f(ct,{}),f(ga,{})]}),pt=()=>{let{configurations:t}=P();return _("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:[f("div",{children:_("nav",{className:"astw:bg-card astw:md:w-xs astw:rounded-md astw:border astw:p-3 astw:shadow-xs",children:[f("h2",{className:"astw:text-sm astw:leading-[36px] astw:mb-2 astw:font-bold ",children:"Settings"}),f("ul",{className:"astw:flex astw:flex-col astw:gap-1",children:t.settingsResources.map(a=>f("li",{children:f(ma,{to:`./${a.path}`,children:({isActive:e})=>_(y,{variant:e?"secondary":"ghost",className:"astw:w-full astw:justify-start",children:[a.meta.icon,a.meta.title]})})},a.path))})]})}),f("section",{className:"astw:bg-card astw:flex-1 astw:rounded-md astw:border astw:shadow-xs",children:f(ct,{})})]})};import{capitalCase as mt}from"change-case";import{redirect as ba}from"react-router";import{jsx as gt}from"react/jsx-runtime";function ha(t){return{redirectTo:t}}function V(t){return typeof t=="object"&&t!==null&&"redirectTo"in t}function fa(t){let{path:a,meta:e,component:r,resources:o,errorBoundary:s}=t,d=e?.title??mt(a),i=V(r)?{component:()=>null,loader:()=>ba(r.redirectTo)}:{component:()=>r({title:d,resources:o})};return{path:a,type:"component",_type:"module",...i,meta:{title:d,...e?.breadcrumbTitle!==void 0?{breadcrumbTitle:e.breadcrumbTitle}:{},...e,menuItemClickable:!V(r),icon:t.meta?.icon},resources:o,errorBoundary:s||gt(T,{})}}function va(t){let{path:a,component:e,subResources:r,meta:o,errorBoundary:s}=t,d=o?.title??mt(a);return{_type:"resource",type:"component",path:a,meta:{title:d,icon:o?.icon,...o?.breadcrumbTitle!==void 0?{breadcrumbTitle:o.breadcrumbTitle}:{}},component:()=>e({title:d,resources:r}),subResources:r,errorBoundary:s??gt(T,{})}}import{Fragment as ka,jsx as ft}from"react/jsx-runtime";var F=t=>()=>ft(ka,{children:t}),bt=(t,a,e)=>{let r=t.errorBoundary||e,o={index:!0,Component:t.component,...t.loader&&{loader:t.loader}};return{path:t.path,...t.errorBoundary&&{ErrorBoundary:F(t.errorBoundary)},...a&&a.length>0?{children:[o,...a.map(s=>bt(s,s.subResources,r))]}:{children:[o]}}},Ca=t=>t.map(a=>bt(a,a.resources,a.errorBoundary)),ht=({modules:t,settingsResources:a,rootComponent:e})=>{let r=V(e)?{index:!0,loader:()=>ya(e.redirectTo)}:{index:!0,Component:e??wt},o=a.length>0?[{path:"settings",index:!0,Component:()=>ft(xa,{to:a[0].path,relative:"path",replace:!0})},{path:"settings",Component:pt,children:a.map(s=>({path:s.path,Component:s.component,...s.errorBoundary&&{ErrorBoundary:F(s.errorBoundary)}}))}]:[];return[r,{children:Ca(t)},...o,{path:"*",loader:()=>{throw new Response("Not Found",{status:404})}}]};import{jsx as vt}from"react/jsx-runtime";var xt=t=>{let{configurations:a}=P(),{rootComponent:e,children:r}=t,o=ht({modules:a.modules,settingsResources:a.settingsResources,rootComponent:e}),s=a.errorBoundary,d=[{element:r,children:s?[{element:vt(Ra,{}),ErrorBoundary:F(s),children:o}]:o}],i=a.basePath?"/"+a.basePath:void 0,l=t.memory?Pa(d,{basename:i,...t.initialEntries?{initialEntries:t.initialEntries}:{}}):Sa(d,{basename:i});return vt(Ta,{router:l})};import{createContext as Na,useContext as za,useEffect as Ba,useMemo as Ma,useState as Ea}from"react";import{jsx as _a}from"react/jsx-runtime";var Ia={resolvedTheme:"light",theme:"system",setTheme:()=>null},yt=Na(Ia);function Ct({children:t,storageKey:a,defaultTheme:e="system",...r}){let[o,s]=Ea(()=>localStorage.getItem(a)||e),d=Ma(()=>o!=="system"?o:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[o]);Ba(()=>{let l=window.document.documentElement;l.classList.remove("light","dark"),l.classList.add(d)},[d]);let i={resolvedTheme:d,theme:o,setTheme:l=>{localStorage.setItem(a,l),s(l)}};return _a(yt.Provider,{...r,value:i,children:t})}var X=()=>{let t=za(yt);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t};import{jsx as A}from"react/jsx-runtime";var Ua=t=>{let[a,e]=Da(!1);Oa(function(){e(!0)},[]);let r=La(()=>t.modules.map(s=>{let d=s.resources.map(i=>({title:i.meta.title,url:`${s.path}/${i.path}`}));return{title:s.meta.title,url:s.meta.menuItemClickable?s.path:void 0,clickable:s.component,icon:s.meta.icon||A(Aa,{}),isActive:!0,items:d}}),[t.modules]);return a?A(q.Provider,{value:{title:t.title,icon:t.icon,configurations:{modules:t.modules,settingsResources:t.settingsResources??[],errorBoundary:t.errorBoundary??A(T,{}),basePath:t.basePath},navItems:r},children:A(Ct,{defaultTheme:"system",storageKey:"appshell-ui-theme",children:A(xt,{rootComponent:t.rootComponent,children:t.children})})}):null};import*as B from"@radix-ui/react-collapsible";import{jsx as J}from"react/jsx-runtime";function kt({...t}){return J(B.Root,{"data-slot":"collapsible",...t})}function Y({...t}){return J(B.CollapsibleTrigger,{"data-slot":"collapsible-trigger",...t})}function Rt({...t}){return J(B.CollapsibleContent,{"data-slot":"collapsible-content",...t})}import{useLocation as Jt,useMatch as se}from"react-router";import*as b from"react";import{Slot as at}from"@radix-ui/react-slot";import{cva as Ka}from"class-variance-authority";import{PanelLeftIcon as Wa}from"lucide-react";import*as K from"react";var Q=768;function Pt(){let[t,a]=K.useState(void 0);return K.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{jsx as zr}from"react/jsx-runtime";import*as ja from"@radix-ui/react-separator";import{jsx as Ir}from"react/jsx-runtime";import*as m from"@radix-ui/react-dialog";import{XIcon as $a}from"lucide-react";import{jsx as C,jsxs as Z}from"react/jsx-runtime";function St({...t}){return C(m.Root,{"data-slot":"sheet",...t})}function Ha({...t}){return C(m.Portal,{"data-slot":"sheet-portal",...t})}function Va({className:t,...a}){return C(m.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 Tt({className:t,children:a,side:e="right",...r}){return Z(Ha,{children:[C(Va,{}),Z(m.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,Z(m.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:[C($a,{className:"astw:size-4"}),C("span",{className:"astw:sr-only",children:"Close"})]})]})]})}function Nt({className:t,...a}){return C("div",{"data-slot":"sheet-header",className:c("astw:flex astw:flex-col astw:gap-1.5 astw:p-4",t),...a})}function zt({className:t,...a}){return C(m.Title,{"data-slot":"sheet-title",className:c("astw:text-foreground astw:font-semibold",t),...a})}function Bt({className:t,...a}){return C(m.Description,{"data-slot":"sheet-description",className:c("astw:text-muted-foreground astw:text-sm",t),...a})}import{jsx as $r}from"react/jsx-runtime";import*as h from"@radix-ui/react-tooltip";import{jsx as M,jsxs as Fa}from"react/jsx-runtime";function tt({delayDuration:t=0,...a}){return M(h.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function Mt({...t}){return M(tt,{children:M(h.Root,{"data-slot":"tooltip",...t})})}function Et({...t}){return M(h.Trigger,{"data-slot":"tooltip-trigger",...t})}function It({className:t,sideOffset:a=0,children:e,...r}){return M(h.Portal,{children:Fa(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,M(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 w,jsxs as O}from"react/jsx-runtime";var qa="sidebar_state",Ga=60*60*24*7,Xa="16rem",Ya="18rem",Ja="3rem",Qa="b",_t=b.createContext(null);function L(){let t=b.useContext(_t);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function At({defaultOpen:t=!0,open:a,onOpenChange:e,className:r,style:o,children:s,...d}){let i=Pt(),[l,p]=b.useState(!1),[u,S]=b.useState(t),k=a??u,N=b.useCallback(v=>{let R=typeof v=="function"?v(k):v;e?e(R):S(R),document.cookie=`${qa}=${R}; path=/; max-age=${Ga}`},[e,k]),z=b.useCallback(()=>i?p(v=>!v):N(v=>!v),[i,N,p]);b.useEffect(()=>{let v=R=>{R.key===Qa&&(R.metaKey||R.ctrlKey)&&(R.preventDefault(),z())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[z]);let W=k?"expanded":"collapsed",$=b.useMemo(()=>({state:W,open:k,setOpen:N,isMobile:i,openMobile:l,setOpenMobile:p,toggleSidebar:z}),[W,k,N,i,l,p,z]);return w(_t.Provider,{value:$,children:w(tt,{delayDuration:0,children:w("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":Xa,"--sidebar-width-icon":Ja,...o},className:c("astw:group/sidebar-wrapper astw:has-data-[variant=inset]:bg-sidebar astw:flex astw:min-h-svh astw:w-full",r),...d,children:s})})})}function Ot({side:t="left",variant:a="sidebar",collapsible:e="offcanvas",className:r,children:o,...s}){let{isMobile:d,state:i,openMobile:l,setOpenMobile:p}=L();return e==="none"?w("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}):d?w(St,{open:l,onOpenChange:p,...s,children:O(Tt,{"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":Ya},side:t,children:[O(Nt,{className:"astw:sr-only",children:[w(zt,{children:"Sidebar"}),w(Bt,{children:"Displays the mobile sidebar."})]}),w("div",{className:"flex h-full w-full flex-col",children:o})]})}):O("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:[w("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)")}),w("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:w("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 et({className:t,onClick:a,...e}){let{toggleSidebar:r}=L();return O(y,{"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:[w(Wa,{className:"astw:size-4.5"}),w("span",{className:"astw:sr-only",children:"Toggle Sidebar"})]})}function Lt({className:t,...a}){return w("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 Dt({className:t,...a}){return w("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 Ut({className:t,...a}){return w("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 jt({className:t,...a}){return w("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 $t({className:t,...a}){return w("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 Ht({className:t,...a}){return w("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:c("astw:group/menu-item astw:relative",t),...a})}var Za=Ka("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 rt({asChild:t=!1,isActive:a=!1,variant:e="default",size:r="default",tooltip:o,className:s,...d}){let i=t?at:"button",{isMobile:l,state:p}=L(),u=w(i,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":r,"data-active":a,className:c(Za({variant:e,size:r}),s),...d});return o?(typeof o=="string"&&(o={children:o}),O(Mt,{children:[w(Et,{asChild:!0,children:u}),w(It,{side:"right",align:"center",hidden:p!=="collapsed"||l,...o})]})):u}function ot({className:t,asChild:a=!1,showOnHover:e=!1,...r}){return w(a?at:"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 Vt({className:t,...a}){return w("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 Ft({className:t,...a}){return w("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:c("astw:group/menu-sub-item astw:relative",t),...a})}function Kt({asChild:t=!1,size:a="md",isActive:e=!1,className:r,...o}){return w(t?at:"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 Xt,SunIcon as ie}from"lucide-react";import{Slot as ee}from"@radix-ui/react-slot";import{ChevronRight as re,MoreHorizontal as go}from"lucide-react";import{Link as te,useHref as ae}from"react-router";import{jsx as Wt}from"react/jsx-runtime";function D({to:t,children:a,...e}){try{return ae(t),Wt(te,{to:t,...e,children:a})}catch{return Wt("a",{href:t,...e,children:a})}}import{jsx as E,jsxs as vo}from"react/jsx-runtime";function st({...t}){return E("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...t})}function it({className:t,...a}){return E("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 nt({className:t,...a}){return E("li",{"data-slot":"breadcrumb-item",className:c("astw:inline-flex astw:items-center astw:gap-1.5",t),...a})}function dt({asChild:t,className:a,children:e,...r}){return E(t?ee:D,{"data-slot":"breadcrumb-link",className:c("astw:hover:text-foreground astw:transition-colors",a),...r,children:e})}function qt({children:t,className:a,...e}){return E("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:c("astw:[&>svg]:size-3.5",a),...e,children:t??E(re,{})})}var oe=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(d=>{let i=`${s}/${d.path}`;a[i]={title:d.meta.title,breadcrumbTitle:d.meta.breadcrumbTitle},d.subResources&&d.subResources.length>0&&r(d.subResources,i)})};return e.resources&&e.resources.length>0&&r(e.resources,e.path),a},{});function Gt(t,a,e){let r=t.split("/").filter(i=>i!==""),o=a&&r[0]===a?r.slice(1):r,s=oe(e),d=o.map((i,l)=>{let p=o.slice(0,l+1).join("/"),u=s[p];if(!u){let k=Object.entries(s).find(([N])=>{let z=N.split("/").map($=>$.startsWith(":")?"[^/]+":$).join("/");return new RegExp(`^${z}$`).test(p)})?.[1];k&&(u=k)}let S;return u?typeof u.breadcrumbTitle=="function"?S=u.breadcrumbTitle(i):typeof u.breadcrumbTitle=="string"?S=u.breadcrumbTitle:S=u.title:S=decodeURIComponent(i),{segment:i,path:p,title:S}});return{basePath:a||null,segments:d}}import{Fragment as Yt,jsx as n,jsxs as g}from"react/jsx-runtime";var ne=()=>{let{open:t}=L();return n("div",{className:t?"astw:md:hidden":void 0,children:n(et,{className:"astw:-ml-2.5"})})},de=t=>{let a=t.children?t.children({Outlet:G}):null,e=X(),r=()=>{e.setTheme(e.theme==="dark"?"light":"dark")};return n(At,{className:"astw:flex astw:flex-col",children:g("div",{className:"astw:flex astw:flex-1",children:[t.sidebar??n(Qt,{}),g(Lt,{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:g("div",{className:"astw:flex astw:w-full astw:items-center astw:justify-between",children:[g("div",{className:"astw:flex astw:items-center astw:gap-2",children:[n(ne,{}),n(ce,{})]}),n("div",{className:"astw:flex astw:items-center astw:gap-2",children:n(y,{variant:"outline",size:"icon",onClick:r,children:n(ie,{})})})]})}),n("div",{className:"astw:flex astw:flex-col astw:gap-4",children:a??n(G,{})})]})]})})},Qt=t=>{let{title:a,icon:e,navItems:r}=P(),{pathname:o}=Jt(),s=g(Dt,{children:[e,n("h1",{className:"astw:text-sm astw:mb-2 astw:mt-2 astw:px-2",children:a})]});return g(Ot,{variant:"inset",children:[g("div",{className:"astw:flex astw:justify-between astw:items-center",children:[t.header??s,n("div",{className:"astw:hidden astw:md:block",children:n(et,{className:"astw:-ml-1"})})]}),n(Ut,{children:n(jt,{children:n($t,{children:r.map(i=>n(kt,{asChild:!0,defaultOpen:i.isActive,children:g(Ht,{children:[i.url?g(Yt,{children:[n(rt,{asChild:!0,tooltip:i.title,children:g(D,{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(Y,{asChild:!0,children:g(ot,{className:"astw:data-[state=open]:rotate-90",children:[n(Xt,{}),n("span",{className:"astw:sr-only",children:"Toggle"})]})})]}):n(Yt,{children:g(Y,{className:"astw:flex astw:w-[100%] astw:[&[data-state=open]_.astw-rotate-target]:rotate-90",children:[n(rt,{asChild:!0,tooltip:i.title,children:g("span",{className:"astw:flex astw:w-[100%]",children:[i.icon,n("span",{children:i.title})]})}),!!i.items?.length&&n(ot,{className:"astw-rotate-target",asChild:!0,children:g("span",{children:[n(Xt,{}),n("span",{className:"astw:sr-only",children:"Toggle"})]})})]})}),!!i.items?.length&&n(Rt,{children:n(Vt,{children:i.items?.map(l=>n(Ft,{children:n(Kt,{asChild:!0,children:n(D,{to:l.url,className:l.url===o?"astw:bg-sidebar-accent astw:font-medium":void 0,children:n("span",{children:l.title})})})},l.title))})})]})},i.title))})})}),t.footer??null]})},le=()=>{let{configurations:t}=P(),a=Jt();return Gt(a.pathname,t.basePath,t.modules)},ce=()=>{let{segments:t}=le(),a=se("/:prefix/settings/:suffix");return a?n(st,{children:n(it,{children:n("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:n(nt,{children:n(dt,{to:`/${a.params.prefix}/settings`,children:"Settings"})})})})}):n(st,{children:n(it,{children:t.map((e,r)=>g("div",{className:"astw:inline-flex astw:items-center astw:gap-3 astw:last:text-foreground",children:[n(nt,{children:n(dt,{to:e.path,children:e.title})}),r<t.length-1&&n(qt,{})]},r))})})};import{useLocation as Xo,useNavigate as Yo,useParams as Jo,useSearchParams as Qo,useRouteError as Zo,Link as ts}from"react-router";import{createContext as pe,useCallback as aa,useContext as ue,useEffect as me,useMemo as ge,useState as be}from"react";import*as I from"oauth4webapi";var U="oauth_pkce_verifier",j="oauth_state",Zt=({apiEndpoint: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()},we=async({code:t,returnedState:a,apiEndpoint:e,clientId:r,redirectUri:o})=>{let s=sessionStorage.getItem(U),d=sessionStorage.getItem(j);if(!t||!a||!s||!d){let l=[];throw t||l.push("code"),a||l.push("returnedState"),s||l.push("code_verifier"),d||l.push("expectedState"),new Error(`Missing params: ${l.join(", ")}`)}if(a!==d)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 l=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:p}=await l.json();return p}catch(l){throw new Error(`Token exchange failed: ${l instanceof Error?l.message:String(l)}`)}},ta=async()=>{let t=I.generateRandomCodeVerifier(),a=await I.calculatePKCECodeChallenge(t),e=I.generateRandomState();return sessionStorage.setItem(U,t),sessionStorage.setItem(j,e),{codeChallenge:a,state:e}},Ao=async({currentUrl:t,apiEndpoint:a,clientId:e,redirectUri:r})=>{try{let o=t.searchParams.get("code"),s=t.searchParams.get("state");await we({apiEndpoint:a,clientId:e,code:o,returnedState:s,redirectUri:r})}catch(o){console.error(o)}finally{sessionStorage.removeItem(U),sessionStorage.removeItem(j),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 ve}from"react/jsx-runtime";var ea=pe(void 0),he=()=>{let t=ue(ea);if(t===void 0)throw new Error("useBuiltinIdpAuth must be used within an BuiltinIdPAuthContextProvider");return t},fe=({apiEndpoint:t,clientId:a,redirectUri:e,children:r})=>{let[o,s]=be(!1),d=aa(async()=>{let{codeChallenge:l,state:p}=await ta(),u=Zt({apiEndpoint:t,clientId:a,codeChallenge:l,state:p,redirectUri:e});window.location.href=u},[t,a,e]);me(()=>{(async()=>{(await(await fetch(`${t}/query`,{method:"POST",headers:{"Content-Type":"application/json","X-Tailor-Nonce":crypto.randomUUID()},credentials:"include",body:JSON.stringify({query:"query Myself(){ me { id }}"})})).json()).data.me?s(!0):d()})()},[t,d]);let i=aa(async()=>{sessionStorage.removeItem(U),sessionStorage.removeItem(j);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(l){console.error(l)}},[t]);return ve(ea.Provider,{value:ge(()=>({login:d,logout:i}),[d,i]),children:o?r:null})};export{Ua as AppShell,fe as BuiltinIdPAuthProvider,Qt as DefaultSidebar,ts as Link,j as OAUTH_STATE_KEY,U as PKCE_VERIFIER_KEY,de as SidebarLayout,Zt as buildAuthorizationUrl,fa as defineModule,va as defineResource,we as exchangeCodeForToken,Ao as handleOAuthCallback,ta as prepareLogin,ha as redirectToResource,P as useAppShell,he as useBuiltinIdpAuth,Xo as useLocation,Yo as useNavigate,Jo as useParams,Zo as useRouteError,Qo as useSearchParams,X as useTheme};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/app-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./styles": "./dist/index.css",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@types/node": "^22",
|
|
55
55
|
"@types/react": "^19",
|
|
56
56
|
"@types/react-dom": "^19",
|
|
57
|
-
"
|
|
57
|
+
"happy-dom": "^20.0.11",
|
|
58
58
|
"msw": "^2.11.2",
|
|
59
59
|
"postcss": "^8",
|
|
60
60
|
"prettier": "^3.6.2",
|