@baseplate-dev/project-builder-web 0.2.5 → 0.2.6
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/assets/{-constants-CyTNHADu.js → -constants-CqYT9Sad.js} +2 -2
- package/dist/assets/{-constants-CyTNHADu.js.map → -constants-CqYT9Sad.js.map} +1 -1
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-dPVRSC8L.js → web-CEscUEnR.js} +2 -2
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-dPVRSC8L.js.map → web-CEscUEnR.js.map} +1 -1
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CzpSl25Z.js +5 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CzpSl25Z.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/{ui-components-z-HwX7Wv.js → ui-components-Bpztr-cx.js} +4 -4
- package/dist/assets/__federation_shared_@baseplate-dev/{ui-components-z-HwX7Wv.js.map → ui-components-Bpztr-cx.js.map} +1 -1
- package/dist/assets/{_virtual___federation_fn_import-DK_YYIlv.js → _virtual___federation_fn_import-BLYgPlMt.js} +2 -2
- package/dist/assets/{_virtual___federation_fn_import-DK_YYIlv.js.map → _virtual___federation_fn_import-BLYgPlMt.js.map} +1 -1
- package/dist/assets/{backend-B_UhUC1z.js → backend-hJNcdERv.js} +2 -2
- package/dist/assets/{backend-B_UhUC1z.js.map → backend-hJNcdERv.js.map} +1 -1
- package/dist/assets/{badge-with-type-label-Cvf-Kq7s.js → badge-with-type-label-CezAtjFy.js} +2 -2
- package/dist/assets/{badge-with-type-label-Cvf-Kq7s.js.map → badge-with-type-label-CezAtjFy.js.map} +1 -1
- package/dist/assets/{edit._id-TYAWf8Zb.js → edit._id-bMpe6S3O.js} +2 -2
- package/dist/assets/{edit._id-TYAWf8Zb.js.map → edit._id-bMpe6S3O.js.map} +1 -1
- package/dist/assets/{enum-info-form-CfQbLUQ3.js → enum-info-form-xlZ2HO8I.js} +2 -2
- package/dist/assets/{enum-info-form-CfQbLUQ3.js.map → enum-info-form-xlZ2HO8I.js.map} +1 -1
- package/dist/assets/{graphql-DTRjqtIq.js → graphql-D3J4ZWXL.js} +2 -2
- package/dist/assets/{graphql-DTRjqtIq.js.map → graphql-D3J4ZWXL.js.map} +1 -1
- package/dist/assets/{hierarchy-BDu76BxG.js → hierarchy-DF9lzUjz.js} +2 -2
- package/dist/assets/{hierarchy-BDu76BxG.js.map → hierarchy-DF9lzUjz.js.map} +1 -1
- package/dist/assets/{index-DITwAD5X.js → index-1ErFJbDw.js} +2 -2
- package/dist/assets/{index-DITwAD5X.js.map → index-1ErFJbDw.js.map} +1 -1
- package/dist/assets/index-37eYMUXo.js +2 -0
- package/dist/assets/index-37eYMUXo.js.map +1 -0
- package/dist/assets/{index-DhWOhNFS.js → index-B5-Qczd9.js} +2 -2
- package/dist/assets/{index-DhWOhNFS.js.map → index-B5-Qczd9.js.map} +1 -1
- package/dist/assets/{index-PWrncK3R.js → index-BLuLGksP.js} +2 -2
- package/dist/assets/{index-PWrncK3R.js.map → index-BLuLGksP.js.map} +1 -1
- package/dist/assets/index-BPK2SbiO.js +2 -0
- package/dist/assets/index-BPK2SbiO.js.map +1 -0
- package/dist/assets/{index-01LAxHjt.js → index-BdmJimiZ.js} +2 -2
- package/dist/assets/{index-01LAxHjt.js.map → index-BdmJimiZ.js.map} +1 -1
- package/dist/assets/{index-D8LleqeK.js → index-Bv8hyN9u.js} +2 -2
- package/dist/assets/{index-D8LleqeK.js.map → index-Bv8hyN9u.js.map} +1 -1
- package/dist/assets/{index-BgFEd-vA.js → index-C15I7WFi.js} +2 -2
- package/dist/assets/{index-BgFEd-vA.js.map → index-C15I7WFi.js.map} +1 -1
- package/dist/assets/{index-B7G2CMwL.js → index-C_wN4CIq.js} +19 -19
- package/dist/assets/index-C_wN4CIq.js.map +1 -0
- package/dist/assets/index-DBOJRz5n.css +1 -0
- package/dist/assets/{index-CKCJuR7p.js → index-DJsZccoO.js} +2 -2
- package/dist/assets/{index-CKCJuR7p.js.map → index-DJsZccoO.js.map} +1 -1
- package/dist/assets/{index-tLZ1b0Gc.js → index-DwyYddxl.js} +2 -2
- package/dist/assets/{index-tLZ1b0Gc.js.map → index-DwyYddxl.js.map} +1 -1
- package/dist/assets/{index-BkkIaDrq.js → index-P-wtG1LL.js} +2 -2
- package/dist/assets/{index-BkkIaDrq.js.map → index-P-wtG1LL.js.map} +1 -1
- package/dist/assets/{index.esm-Bvv3vNQh.js → index.esm-DcyGeCKA.js} +2 -2
- package/dist/assets/{index.esm-Bvv3vNQh.js.map → index.esm-DcyGeCKA.js.map} +1 -1
- package/dist/assets/{model-info-form-tJoD-VwE.js → model-info-form-VtbYsjrH.js} +2 -2
- package/dist/assets/{model-info-form-tJoD-VwE.js.map → model-info-form-VtbYsjrH.js.map} +1 -1
- package/dist/assets/model-merger-qJqD9I2_.js +2 -0
- package/dist/assets/{model-merger-DuBMgrZ3.js.map → model-merger-qJqD9I2_.js.map} +1 -1
- package/dist/assets/{new-app-dialog-CFhp6QLe.js → new-app-dialog-CTtQ52jO.js} +2 -2
- package/dist/assets/{new-app-dialog-CFhp6QLe.js.map → new-app-dialog-CTtQ52jO.js.map} +1 -1
- package/dist/assets/{new-enum-dialog-BxDxXwX_.js → new-enum-dialog-B0QcIWdY.js} +2 -2
- package/dist/assets/{new-enum-dialog-BxDxXwX_.js.map → new-enum-dialog-B0QcIWdY.js.map} +1 -1
- package/dist/assets/{new-model-dialog-D4pnLGR_.js → new-model-dialog-CM2dJ8Iv.js} +2 -2
- package/dist/assets/{new-model-dialog-D4pnLGR_.js.map → new-model-dialog-CM2dJ8Iv.js.map} +1 -1
- package/dist/assets/{route-rzAviP-P.js → route-B34jnFQF.js} +2 -2
- package/dist/assets/{route-rzAviP-P.js.map → route-B34jnFQF.js.map} +1 -1
- package/dist/assets/{route-BLMjDHl_.js → route-BRBmSLMi.js} +2 -2
- package/dist/assets/{route-BLMjDHl_.js.map → route-BRBmSLMi.js.map} +1 -1
- package/dist/assets/{route-CO2y2T3j.js → route-BsIUCKz1.js} +2 -2
- package/dist/assets/{route-CO2y2T3j.js.map → route-BsIUCKz1.js.map} +1 -1
- package/dist/assets/route-CAp89B2q.js +2 -0
- package/dist/assets/{route-DSICQIL3.js.map → route-CAp89B2q.js.map} +1 -1
- package/dist/assets/{route-BGYla1q4.js → route-DcsVxxui.js} +2 -2
- package/dist/assets/{route-BGYla1q4.js.map → route-DcsVxxui.js.map} +1 -1
- package/dist/assets/{route-DYHQ0t6P.js → route-DmdFbZkw.js} +2 -2
- package/dist/assets/{route-DYHQ0t6P.js.map → route-DmdFbZkw.js.map} +1 -1
- package/dist/assets/{route-MA2rDgPd.js → route-Dpmx4lrA.js} +2 -2
- package/dist/assets/{route-MA2rDgPd.js.map → route-Dpmx4lrA.js.map} +1 -1
- package/dist/assets/route-T4J_Uk-9.js +2 -0
- package/dist/assets/route-T4J_Uk-9.js.map +1 -0
- package/dist/assets/{route-BILZA_nq.js → route-w8_2x1VY.js} +2 -2
- package/dist/assets/{route-BILZA_nq.js.map → route-w8_2x1VY.js.map} +1 -1
- package/dist/assets/{service-C0mRE7Wd.js → service-Bgm1ICPI.js} +2 -2
- package/dist/assets/{service-C0mRE7Wd.js.map → service-Bgm1ICPI.js.map} +1 -1
- package/dist/assets/{template-extractor-1dzSeRMo.js → template-extractor-DEU0CX0Y.js} +2 -2
- package/dist/assets/{template-extractor-1dzSeRMo.js.map → template-extractor-DEU0CX0Y.js.map} +1 -1
- package/dist/assets/{theme-builder-NSOA1xIw.js → theme-builder-La1nKR0K.js} +2 -2
- package/dist/assets/{theme-builder-NSOA1xIw.js.map → theme-builder-La1nKR0K.js.map} +1 -1
- package/dist/assets/{use-definition-schema-DOTr2MSB.js → use-definition-schema-CuFFJIzk.js} +2 -2
- package/dist/assets/{use-definition-schema-DOTr2MSB.js.map → use-definition-schema-CuFFJIzk.js.map} +1 -1
- package/dist/assets/{use-enum-form-Bon-b8Oc.js → use-enum-form-DKD2EDHZ.js} +2 -2
- package/dist/assets/{use-enum-form-Bon-b8Oc.js.map → use-enum-form-DKD2EDHZ.js.map} +1 -1
- package/dist/assets/{use-model-form-Bjm8n0m8.js → use-model-form-BQa-PiE_.js} +2 -2
- package/dist/assets/{use-model-form-Bjm8n0m8.js.map → use-model-form-BQa-PiE_.js.map} +1 -1
- package/dist/assets/{utils-BGrwv_U7.js → utils-BYjOwi1b.js} +2 -2
- package/dist/assets/{utils-BGrwv_U7.js.map → utils-BYjOwi1b.js.map} +1 -1
- package/dist/index.html +5 -5
- package/package.json +6 -6
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-DnM8acZf.js +0 -5
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-DnM8acZf.js.map +0 -1
- package/dist/assets/index-B7G2CMwL.js.map +0 -1
- package/dist/assets/index-B9Di1LKs.css +0 -1
- package/dist/assets/index-Cg4QKyV6.js +0 -2
- package/dist/assets/index-Cg4QKyV6.js.map +0 -1
- package/dist/assets/model-merger-DuBMgrZ3.js +0 -2
- package/dist/assets/route-DSICQIL3.js +0 -2
- package/dist/assets/route-DvbGaH6v.js +0 -2
- package/dist/assets/route-DvbGaH6v.js.map +0 -1
- package/dist/assets/sections-BSA71xrl.js +0 -2
- package/dist/assets/sections-BSA71xrl.js.map +0 -1
- package/dist/assets/sections._sectionKey-DSatzih8.js +0 -2
- package/dist/assets/sections._sectionKey-DSatzih8.js.map +0 -1
- package/dist/assets/web-B598C4Bq.js +0 -2
- package/dist/assets/web-B598C4Bq.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:"Geist Mono Variable","Adjusted Courier New Fallback","Courier New","monospace";--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-body:"Geist Variable","Arial Fallback","Trebuchet MS",sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@font-face{font-family:Arial Fallback;src:local(Arial);size-adjust:102%}@font-face{font-family:Adjusted Courier New Fallback;src:local(Courier New);size-adjust:100%;ascent-override:91%;descent-override:40%;line-gap-override:normal}h1{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-semibold);line-height:1;font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}h3{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}p{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}*{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(--font-body);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface:var(--background);--surface-foreground:var(--foreground);--surface-border:var(--foreground);--surface-muted:var(--background);--surface-muted-foreground:var(--foreground)}@supports (color:color-mix(in lab,red,red)){body{--surface-border:color-mix(in oklab,var(--foreground)40%,transparent);--surface-muted:color-mix(in oklab,var(--background)10%,transparent);--surface-muted-foreground:color-mix(in oklab,var(--foreground)70%,var(--background))}}html,body,#root{height:100vh}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-0,.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-44{top:calc(var(--spacing)*44)}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.top-px{top:1px}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-1{z-index:1}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-16{margin-block:calc(var(--spacing)*16)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-4{margin-right:calc(var(--spacing)*4)}.mr-5{margin-right:calc(var(--spacing)*5)}.mb-\(--action-bar-height\){margin-bottom:var(--action-bar-height)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-\[52px\]{margin-left:52px}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-20{width:calc(var(--spacing)*20);height:calc(var(--spacing)*20)}.size-40{width:calc(var(--spacing)*40);height:calc(var(--spacing)*40)}.size-auto{width:auto;height:auto}.size-fit{width:fit-content;height:fit-content}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-\(--topbar-height\){height:var(--topbar-height)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-40{height:calc(var(--spacing)*40)}.h-60{height:calc(var(--spacing)*60)}.h-72{height:calc(var(--spacing)*72)}.h-\[1\.15rem\]{height:1.15rem}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100vh-var\(--topbar-height\)-1px\)\]{height:calc(100vh - var(--topbar-height) - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--max-popper-height\){max-height:var(--max-popper-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-\[min\(var\(--max-popover-height\)\,var\(--radix-popover-content-available-height\)\)\]{max-height:min(var(--max-popover-height),var(--radix-popover-content-available-height))}.max-h-\[min\(var\(--max-popper-height\)\,var\(--radix-select-content-available-height\)\)\]{max-height:min(var(--max-popper-height),var(--radix-select-content-available-height))}.max-h-full{max-height:100%}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-9{min-height:calc(var(--spacing)*9)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-\[var\(--action-bar-height\,52px\)\]{min-height:var(--action-bar-height,52px)}.w-\(--cell-size\){width:var(--cell-size)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-\(--width\){width:var(--width)}.w-1\/5{width:20%}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-16{width:calc(var(--spacing)*16)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-96{width:calc(var(--spacing)*96)}.w-160{width:calc(var(--spacing)*160)}.w-\[50px\]{width:50px}.w-\[280px\]{width:280px}.w-\[320px\]{width:320px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-80{max-width:calc(var(--spacing)*80)}.max-w-\[100px\]{max-width:100px}.max-w-\[400px\]{max-width:400px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-fit{max-width:fit-content}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-\(--min-app-width\){min-width:var(--min-app-width)}.min-w-\(--radix-popover-trigger-width\){min-width:var(--radix-popover-trigger-width)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[230px\]{min-width:230px}.min-w-\[700px\]{min-width:700px}.flex-1{flex:1}.flex-auto{flex:auto}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-cols-\[repeat\(2\,minmax\(130px\,1fr\)\)_60px_minmax\(130px\,1fr\)_minmax\(100px\,1fr\)_80px\]{grid-template-columns:repeat(2,minmax(130px,1fr)) 60px minmax(130px,1fr) minmax(100px,1fr) 80px}.grid-cols-\[repeat\(2\,minmax\(130px\,1fr\)\)_80px\]{grid-template-columns:repeat(2,minmax(130px,1fr)) 80px}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing)*8)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.gap-y-2{row-gap:calc(var(--spacing)*2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-tl-sm{border-top-left-radius:var(--radius-sm)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border{border-color:var(--border)}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:oklab(0% none none/.5)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-surface{background-color:var(--surface)}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-\(--topbar-height\){padding-top:var(--topbar-height)}.pt-2\.5{padding-top:calc(var(--spacing)*2.5)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-\(--action-bar-height\){padding-bottom:var(--action-bar-height)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-12{padding-left:calc(var(--spacing)*12)}.text-center{text-align:center}.text-left{text-align:left}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-style-prose{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.text-style-prose a{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--link)}.text-style-prose a:hover{text-decoration-line:underline}.text-style-prose a:visited{color:var(--link-visited)}.text-style-lead{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground)}.text-style-muted{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);color:var(--muted-foreground)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:var(--accent-foreground)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-error-foreground{color:var(--error-foreground)}.text-foreground{color:var(--foreground)}.text-link{color:var(--link)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-success-foreground{color:var(--success-foreground)}.text-surface-foreground{color:var(--surface-foreground)}.text-surface-muted-foreground{color:var(--surface-muted-foreground)}.text-transparent{color:#0000}.text-warning-foreground{color:var(--warning-foreground)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.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,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.delay-300{transition-delay:.3s}.delay-\[600ms\]{transition-delay:.6s}.delay-\[var\(--delay\)\]{transition-delay:var(--delay)}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[var\(--transition-length\)\]{--tw-duration:var(--transition-length);transition-duration:var(--transition-length)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.surface-default{--surface:var(--background);--surface-foreground:var(--foreground);--surface-border:var(--foreground);--surface-muted:var(--background);--surface-muted-foreground:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.surface-default{--surface-border:color-mix(in oklab,var(--foreground)40%,transparent);--surface-muted:color-mix(in oklab,var(--background)10%,transparent);--surface-muted-foreground:color-mix(in oklab,var(--foreground)70%,var(--background))}}.surface-error{--surface:var(--error);--surface-foreground:var(--error-foreground);--surface-border:var(--error-foreground);--surface-muted:var(--error);--surface-muted-foreground:var(--error-foreground)}@supports (color:color-mix(in lab,red,red)){.surface-error{--surface-border:color-mix(in oklab,var(--error-foreground)40%,transparent);--surface-muted:color-mix(in oklab,var(--error)10%,transparent);--surface-muted-foreground:color-mix(in oklab,var(--error-foreground)70%,var(--error))}}.surface-success{--surface:var(--success);--surface-foreground:var(--success-foreground);--surface-border:var(--success-foreground);--surface-muted:var(--success);--surface-muted-foreground:var(--success-foreground)}@supports (color:color-mix(in lab,red,red)){.surface-success{--surface-border:color-mix(in oklab,var(--success-foreground)40%,transparent);--surface-muted:color-mix(in oklab,var(--success)10%,transparent);--surface-muted-foreground:color-mix(in oklab,var(--success-foreground)70%,var(--success))}}.surface-warning{--surface:var(--warning);--surface-foreground:var(--warning-foreground);--surface-border:var(--warning-foreground);--surface-muted:var(--warning);--surface-muted-foreground:var(--warning-foreground)}@supports (color:color-mix(in lab,red,red)){.surface-warning{--surface-border:color-mix(in oklab,var(--warning-foreground)40%,transparent);--surface-muted:color-mix(in oklab,var(--warning)10%,transparent);--surface-muted-foreground:color-mix(in oklab,var(--warning-foreground)70%,var(--warning))}}.delay-300{animation-delay:.3s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--cell-size\:--spacing\(8\)\]{--cell-size:calc(var(--spacing)*8)}.delay-\[600ms\]{animation-delay:.6s}.delay-\[var\(--delay\)\]{animation-delay:var(--delay)}.fade-in{--tw-enter-opacity:0}.running{animation-play-state:running}.zoom-in-70{--tw-enter-scale:.7}.zoom-in-95{--tw-enter-scale:.95}@media (hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--ring)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--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)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing)*1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:var(--radius-md)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--muted-foreground)}.group-\[\.toaster\]\:border-error:is(:where(.group).toaster *){border-color:var(--error)}.group-\[\.toaster\]\:border-success:is(:where(.group).toaster *){border-color:var(--success)}.group-\[\.toaster\]\:border-warning:is(:where(.group).toaster *){border-color:var(--warning)}.group-\[\.toaster\]\:bg-error:is(:where(.group).toaster *){background-color:var(--error)}.group-\[\.toaster\]\:bg-success:is(:where(.group).toaster *){background-color:var(--success)}.group-\[\.toaster\]\:bg-warning:is(:where(.group).toaster *){background-color:var(--warning)}.group-\[\.toaster\]\:text-error-foreground:is(:where(.group).toaster *){color:var(--error-foreground)}.group-\[\.toaster\]\:text-success-foreground:is(:where(.group).toaster *){color:var(--success-foreground)}.group-\[\.toaster\]\:text-warning-foreground:is(:where(.group).toaster *){color:var(--warning-foreground)}.group-\[\.toaster\]\:shadow-lg:is(:where(.group).toaster *){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media (hover:hover){.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive-hover:hover{background-color:var(--destructive-hover)}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary-hover:hover{background-color:var(--primary-hover)}.hover\:bg-secondary-hover:hover{background-color:var(--secondary-hover)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive-hover:hover{color:var(--destructive-hover)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[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)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-focus\:border-ring:has(:focus){border-color:var(--ring)}.has-focus\:ring-\[3px\]:has(:focus){--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)}.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.aria-selected\:bg-accent[aria-selected=true]{background-color:var(--accent)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:var(--accent-foreground)}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.aria-\[current\=\"page\"\]\:bg-accent\/80[aria-current=page]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.aria-\[current\=\"page\"\]\:bg-accent\/80[aria-current=page]{background-color:color-mix(in oklab,var(--accent)80%,transparent)}}.aria-\[current\=\"page\"\]\:text-accent-foreground[aria-current=page]{color:var(--accent-foreground)}@media (hover:hover){.aria-\[current\=\"page\"\]\:hover\:bg-accent[aria-current=page]:hover{background-color:var(--accent)}}.aria-\[current\=page\]\:bg-background[aria-current=page]{background-color:var(--background)}.aria-\[current\=page\]\:text-foreground[aria-current=page]{color:var(--foreground)}.aria-\[current\=page\]\:shadow-sm[aria-current=page]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}@media (hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[empty\=true\]\:text-muted-foreground[data-empty=true]{color:var(--muted-foreground)}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:calc(52*var(--spacing))}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:calc(52*var(--spacing))}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:calc(52*var(--spacing)*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[orientation\=\"vertical\"\]\:max-w-none[data-orientation=vertical]{max-width:none}.data-\[orientation\=\"vertical\"\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=\"vertical\"\]\:items-start[data-orientation=vertical]{align-items:flex-start}.data-\[orientation\=\"vertical\"\]\:items-stretch[data-orientation=vertical]{align-items:stretch}.data-\[orientation\=\"vertical\"\]\:justify-start[data-orientation=vertical]{justify-content:flex-start}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:var(--radius-md)}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--primary)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:var(--radius-md)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--primary)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--primary-foreground)}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--primary)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@media (min-width:40rem){.sm\:left-\(--sidebar-width\){left:var(--sidebar-width)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:w-120{width:calc(var(--spacing)*120)}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-7xl{max-width:var(--container-7xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:calc(var(--spacing)*2.5)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:pl-\(--sidebar-width\){padding-left:var(--sidebar-width)}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:bg-destructive\/60 .dark,.dark\:bg-destructive\/60 .dark *,.dark\:bg-destructive\/60:where([data-theme=dark],[data-theme=dark] *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:bg-destructive\/60 .dark,.dark\:bg-destructive\/60 .dark *,.dark\:bg-destructive\/60:where([data-theme=dark],[data-theme=dark] *)){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30 .dark,.dark\:bg-input\/30 .dark *,.dark\:bg-input\/30:where([data-theme=dark],[data-theme=dark] *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:bg-input\/30 .dark,.dark\:bg-input\/30 .dark *,.dark\:bg-input\/30:where([data-theme=dark],[data-theme=dark] *)){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:text-muted-foreground .dark,.dark\:text-muted-foreground .dark *,.dark\:text-muted-foreground:where([data-theme=dark],[data-theme=dark] *){color:var(--muted-foreground)}@media (hover:hover){:is(.dark\:hover\:bg-input\/50 .dark,.dark\:hover\:bg-input\/50 .dark *,.dark\:hover\:bg-input\/50:where([data-theme=dark],[data-theme=dark] *)):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:hover\:bg-input\/50 .dark,.dark\:hover\:bg-input\/50 .dark *,.dark\:hover\:bg-input\/50:where([data-theme=dark],[data-theme=dark] *)):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}:is(.dark\:hover\:text-accent-foreground .dark,.dark\:hover\:text-accent-foreground .dark *,.dark\:hover\:text-accent-foreground:where([data-theme=dark],[data-theme=dark] *)):hover{color:var(--accent-foreground)}}:is(.dark\:focus-visible\:ring-destructive\/40 .dark,.dark\:focus-visible\:ring-destructive\/40 .dark *,.dark\:focus-visible\:ring-destructive\/40:where([data-theme=dark],[data-theme=dark] *)):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:focus-visible\:ring-destructive\/40 .dark,.dark\:focus-visible\:ring-destructive\/40 .dark *,.dark\:focus-visible\:ring-destructive\/40:where([data-theme=dark],[data-theme=dark] *)):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}:is(.dark\:aria-invalid\:ring-destructive\/40 .dark,.dark\:aria-invalid\:ring-destructive\/40 .dark *,.dark\:aria-invalid\:ring-destructive\/40:where([data-theme=dark],[data-theme=dark] *))[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:aria-invalid\:ring-destructive\/40 .dark,.dark\:aria-invalid\:ring-destructive\/40 .dark *,.dark\:aria-invalid\:ring-destructive\/40:where([data-theme=dark],[data-theme=dark] *))[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}:is(.dark\:data-\[state\=active\]\:border-input .dark,.dark\:data-\[state\=active\]\:border-input .dark *,.dark\:data-\[state\=active\]\:border-input:where([data-theme=dark],[data-theme=dark] *))[data-state=active]{border-color:var(--input)}:is(.dark\:data-\[state\=active\]\:bg-input\/30 .dark,.dark\:data-\[state\=active\]\:bg-input\/30 .dark *,.dark\:data-\[state\=active\]\:bg-input\/30:where([data-theme=dark],[data-theme=dark] *))[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:data-\[state\=active\]\:bg-input\/30 .dark,.dark\:data-\[state\=active\]\:bg-input\/30 .dark *,.dark\:data-\[state\=active\]\:bg-input\/30:where([data-theme=dark],[data-theme=dark] *))[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}:is(.dark\:data-\[state\=active\]\:text-foreground .dark,.dark\:data-\[state\=active\]\:text-foreground .dark *,.dark\:data-\[state\=active\]\:text-foreground:where([data-theme=dark],[data-theme=dark] *))[data-state=active]{color:var(--foreground)}:is(.dark\:data-\[state\=checked\]\:bg-primary .dark,.dark\:data-\[state\=checked\]\:bg-primary .dark *,.dark\:data-\[state\=checked\]\:bg-primary:where([data-theme=dark],[data-theme=dark] *))[data-state=checked]{background-color:var(--primary)}:is(.dark\:data-\[state\=checked\]\:bg-primary-foreground .dark,.dark\:data-\[state\=checked\]\:bg-primary-foreground .dark *,.dark\:data-\[state\=checked\]\:bg-primary-foreground:where([data-theme=dark],[data-theme=dark] *))[data-state=checked]{background-color:var(--primary-foreground)}:is(.dark\:data-\[state\=unchecked\]\:bg-foreground .dark,.dark\:data-\[state\=unchecked\]\:bg-foreground .dark *,.dark\:data-\[state\=unchecked\]\:bg-foreground:where([data-theme=dark],[data-theme=dark] *))[data-state=unchecked]{background-color:var(--foreground)}:is(.dark\:data-\[state\=unchecked\]\:bg-input\/80 .dark,.dark\:data-\[state\=unchecked\]\:bg-input\/80 .dark *,.dark\:data-\[state\=unchecked\]\:bg-input\/80:where([data-theme=dark],[data-theme=dark] *))[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:data-\[state\=unchecked\]\:bg-input\/80 .dark,.dark\:data-\[state\=unchecked\]\:bg-input\/80 .dark *,.dark\:data-\[state\=unchecked\]\:bg-input\/80:where([data-theme=dark],[data-theme=dark] *))[data-state=unchecked]{background-color:color-mix(in oklab,var(--input)80%,transparent)}}:is(.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20 .dark,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20 .dark *,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:where([data-theme=dark],[data-theme=dark] *))[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20 .dark,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20 .dark *,.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:where([data-theme=dark],[data-theme=dark] *))[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_td\]\:py-1 td{padding-block:calc(var(--spacing)*1)}.\[\&_th\]\:sticky th{position:sticky}.\[\&_th\]\:top-0 th{top:calc(var(--spacing)*0)}.\[\&_th\]\:z-10 th{z-index:10}.\[\&_th\]\:bg-background th{background-color:var(--background)}.\[\&_th\]\:py-2 th{padding-block:calc(var(--spacing)*2)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg),:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\[\&\>\*\]\:focus-visible\:z-10>:focus-visible{z-index:10}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:border-r-0>:not(:last-child){border-right-style:var(--tw-border-style);border-right-width:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-orientation\=\"vertical\"\]\>\*\]\:w-full[data-orientation=vertical]>*{width:100%}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:#0000}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--background:oklch(1 0 0);--foreground:oklch(.129 .041 264.695);--muted:oklch(.968 .007 247.896);--muted-foreground:oklch(.554 .041 257.417);--card:oklch(1 0 0);--card-foreground:oklch(.129 .041 264.695);--popover:oklch(1 0 0);--popover-foreground:oklch(.129 .041 264.695);--accent:oklch(.968 .007 247.896);--accent-foreground:oklch(.208 .04 265.755);--success:oklch(.979 .021 166.113);--success-foreground:oklch(.262 .051 172.552);--warning:oklch(.987 .022 95.277);--warning-foreground:oklch(.279 .077 45.635);--error:oklch(.971 .013 17.38);--error-foreground:oklch(.258 .092 26.042);--primary:oklch(.424 .181 265.638);--primary-hover:oklch(.379 .138 265.522);--primary-foreground:oklch(.984 .003 247.858);--secondary:oklch(.968 .007 247.896);--secondary-hover:oklch(.869 .02 252.894);--secondary-foreground:oklch(.208 .04 265.755);--destructive:oklch(.637 .237 25.331);--destructive-hover:oklch(.505 .213 27.518);--destructive-foreground:oklch(.984 .003 247.858);--link:oklch(.488 .217 264.376);--link-visited:oklch(.424 .181 265.638);--border:oklch(.929 .013 255.508);--input:oklch(.929 .013 255.508);--ring:oklch(.714 .143 254.624)}.dark,html[data-theme=dark]{--background:oklch(.129 .041 264.695);--foreground:oklch(.984 .003 247.858);--muted:oklch(.279 .037 260.031);--muted-foreground:oklch(.711 .035 256.788);--card:oklch(.129 .041 264.695);--card-foreground:oklch(.984 .003 247.858);--popover:oklch(.129 .041 264.695);--popover-foreground:oklch(.984 .003 247.858);--accent:oklch(.279 .037 260.031);--accent-foreground:oklch(.984 .003 247.858);--success:oklch(.262 .051 172.552);--success-foreground:oklch(.979 .021 166.113);--warning:oklch(.279 .077 45.635);--warning-foreground:oklch(.987 .022 95.277);--error:oklch(.258 .092 26.042);--error-foreground:oklch(.971 .013 17.38);--primary:oklch(.282 .087 267.935);--primary-hover:oklch(.424 .181 265.638);--primary-foreground:oklch(.984 .003 247.858);--secondary:oklch(.279 .037 260.031);--secondary-hover:oklch(.446 .037 257.281);--secondary-foreground:oklch(.984 .003 247.858);--destructive:oklch(.396 .141 25.723);--destructive-hover:oklch(.505 .213 27.518);--destructive-foreground:oklch(.984 .003 247.858);--link:oklch(.546 .215 262.881);--link-visited:oklch(.488 .217 264.376);--border:oklch(.279 .037 260.031);--input:oklch(.279 .037 260.031);--ring:oklch(.623 .188 259.815)}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-Dg_dQHbK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{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-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as n}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e}from"./index.esm-Bvv3vNQh.js";import{q as v,s as w}from"./index-B7G2CMwL.js";import{u as A}from"./use-definition-schema-DOTr2MSB.js";const{authConfigSpec:L,createAdminAppSchema:R}=await n("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:k,useProjectDefinition:D,useResettableForm:F}=await n("@baseplate-dev/project-builder-lib/web"),{FormActionBar:P,InputFieldController:p,MultiComboboxFieldController:N,SectionList:y,SectionListSection:m,SectionListSectionContent:d,SectionListSectionDescription:u,SectionListSectionHeader:h,SectionListSectionTitle:x}=await n("@baseplate-dev/ui-components"),H=function(){const{adminDefinition:t}=v.useRouteContext(),{definition:j,saveDefinitionWithFeedback:S,pluginContainer:b}=D(),f=A(R),s=F({resolver:w(f),values:t}),{control:i,handleSubmit:g,reset:C}=s,a=g(o=>S(l=>{l.apps=l.apps.map(r=>r.id===t.id?o:r)}));k({control:i,reset:C,onSubmit:a});const c=b.getPluginSpecOptional(L)?.getAuthRoles(j).map(o=>({label:o.name,value:o.id}));return e.jsxs("form",{className:"w-full max-w-7xl space-y-4 p-4",onSubmit:a,children:[e.jsxs(y,{children:[e.jsxs(m,{children:[e.jsxs(h,{children:[e.jsx(x,{children:"General"}),e.jsx(u,{children:"Basic configuration for your admin application."})]}),e.jsxs(d,{className:"space-y-6",children:[e.jsx(p,{label:"Name",control:i,name:"name"}),e.jsx(p,{label:"Package Location (optional)",placeholder:"e.g. packages/admin",control:i,name:"packageLocation"})]})]}),c&&e.jsxs(m,{children:[e.jsxs(h,{children:[e.jsx(x,{children:"Access Control"}),e.jsx(u,{children:"Configure which user roles can access the admin application."})]}),e.jsx(d,{children:e.jsx(N,{label:"Allowed Roles",control:i,options:c,name:"allowedRoles"})})]})]}),e.jsx(P,{form:s})]})};export{H as component};
|
|
2
|
-
//# sourceMappingURL=index-Cg4QKyV6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Cg4QKyV6.js","sources":["../../src/routes/apps/edit.$key/admin/index.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n authConfigSpec,\n createAdminAppSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n FormActionBar,\n InputFieldController,\n MultiComboboxFieldController,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { useDefinitionSchema } from '#src/hooks/use-definition-schema.js';\n\nexport const Route = createFileRoute('/apps/edit/$key/admin/')({\n component: AdminAppEditPage,\n});\n\nfunction AdminAppEditPage(): React.JSX.Element {\n const { adminDefinition } = Route.useRouteContext();\n const { definition, saveDefinitionWithFeedback, pluginContainer } =\n useProjectDefinition();\n const adminAppSchema = useDefinitionSchema(createAdminAppSchema);\n\n const formProps = useResettableForm({\n resolver: zodResolver(adminAppSchema),\n values: adminDefinition,\n });\n const { control, handleSubmit, reset } = formProps;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.apps = draftConfig.apps.map((app) =>\n app.id === adminDefinition.id ? data : app,\n );\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n const roleOptions = pluginContainer\n .getPluginSpecOptional(authConfigSpec)\n ?.getAuthRoles(definition)\n .map((role) => ({\n label: role.name,\n value: role.id,\n }));\n\n return (\n <form className=\"w-full max-w-7xl space-y-4 p-4\" onSubmit={onSubmit}>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>General</SectionListSectionTitle>\n <SectionListSectionDescription>\n Basic configuration for your admin application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <InputFieldController\n label=\"Package Location (optional)\"\n placeholder=\"e.g. packages/admin\"\n control={control}\n name=\"packageLocation\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n {roleOptions && (\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Access Control</SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure which user roles can access the admin application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <MultiComboboxFieldController\n label=\"Allowed Roles\"\n control={control}\n options={roleOptions}\n name=\"allowedRoles\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n )}\n </SectionList>\n <FormActionBar form={formProps} />\n </form>\n );\n}\n"],"names":["authConfigSpec","createAdminAppSchema","importShared","useBlockUnsavedChangesNavigate","useProjectDefinition","useResettableForm","FormActionBar","InputFieldController","MultiComboboxFieldController","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SplitComponent","adminDefinition","Route","useRouteContext","definition","saveDefinitionWithFeedback","pluginContainer","adminAppSchema","useDefinitionSchema","formProps","resolver","zodResolver","values","control","handleSubmit","reset","onSubmit","draftConfig","apps","map","app","id","data","roleOptions","getPluginSpecOptional","getAuthRoles","role","label","name","value","jsxs","jsx"],"mappings":"qNAEA,KAAA,CAAA,eAAAA,EAAA,qBAAAC,CAAA,EAAA,MAAAC,EAAA,oCAAA,EAIA,CAAA,+BAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAH,EAAA,wCAAA,EAKA,CAAA,cAAAI,EAAA,qBAAAC,EAAA,6BAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,0BAAAC,EAAA,8BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,CAAA,EAAA,MAAAZ,EAAA,8BAAA,EAc0Ea,EAAA,UAM3B,CACvC,KAAA,CAAEC,gBAAAA,CAAAA,EAAoBC,EAAMC,gBAAgB,EAC5C,CAAEC,WAAAA,EAAYC,2BAAAA,EAA4BC,gBAAAA,GAC9CjB,EAAqB,EACjBkB,EAAiBC,EAAoBtB,CAAoB,EAEzDuB,EAAYnB,EAAkB,CAClCoB,SAAUC,EAAYJ,CAAc,EACpCK,OAAQX,CAAAA,CACT,EACK,CAAEY,QAAAA,EAASC,aAAAA,EAAcC,MAAAA,CAAAA,EAAUN,EAEnCO,EAAWF,EACfT,GAAAA,EAA4CY,GAAA,CAC9BC,EAAAA,KAAOD,EAAYC,KAAKC,IAAKC,GACvCA,EAAIC,KAAOpB,EAAgBoB,GAAKC,EAAOF,CACzC,CAAA,CACD,CACH,EAE+BhC,EAAA,CAAEyB,QAAAA,EAASE,MAAAA,EAAOC,SAAAA,CAAAA,CAAU,EAErDO,MAAAA,EAAcjB,EACjBkB,sBAAsBvC,CAAc,GACnCwC,aAAarB,CAAU,EACxBe,IAAeO,IAAA,CACdC,MAAOD,EAAKE,KACZC,MAAOH,EAAKL,EAAAA,EACZ,EAEJ,OACGS,EAAAA,KAAA,OAAA,CAAK,UAAU,iCAAiC,SAAAd,EAC/C,SAAA,CAAAc,OAACpC,EACC,CAAA,SAAA,CAAAoC,OAACnC,EACC,CAAA,SAAA,CAAAmC,OAAChC,EACC,CAAA,SAAA,CAAAiC,EAAAA,IAAChC,GAAwB,SAAO,SAAA,CAAA,EAChCgC,EAAAA,IAAClC,GAA6B,SAE9B,iDAAA,CAAA,CAAA,EACF,EACAiC,EAAAA,KAAClC,EAA0B,CAAA,UAAU,YACnC,SAAA,CAAAmC,EAAA,IAACvC,EAAqB,CAAA,MAAM,OAAO,QAAAqB,EAAkB,KAAK,OAAM,EAChEkB,MAACvC,GACC,MAAM,8BACN,YAAY,sBACZ,QAAAqB,EACA,KAAK,iBAAiB,CAAA,CAAA,CAE1B,CAAA,CAAA,EACF,EAECU,UACE5B,EACC,CAAA,SAAA,CAAAmC,OAAChC,EACC,CAAA,SAAA,CAAAiC,EAAAA,IAAChC,GAAwB,SAAc,gBAAA,CAAA,EACvCgC,EAAAA,IAAClC,GAA6B,SAE9B,8DAAA,CAAA,CAAA,EACF,EACAkC,EAAAA,IAACnC,EACC,CAAA,SAAAmC,EAAA,IAACtC,EACC,CAAA,MAAM,gBACN,QAAAoB,EACA,QAASU,EACT,KAAK,cAAc,CAAA,CAEvB,CAAA,CAAA,CACF,CAAA,CAAA,EAEJ,EACAQ,EAAAA,IAACxC,EAAc,CAAA,KAAMkB,CAAU,CAAA,CAAA,EACjC,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as F}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{g as Y,a as D,e as T}from"./isEqual-C420KeG-.js";function $(e){return e==null||typeof e!="object"&&typeof e!="function"}function C(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function g(e,t,i,n=new Map,s=void 0){const o=s?.(e,t,i,n);if(o!=null)return o;if($(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){const r=new Array(e.length);n.set(e,r);for(let f=0;f<e.length;f++)r[f]=g(e[f],f,i,n,s);return Object.hasOwn(e,"index")&&(r.index=e.index),Object.hasOwn(e,"input")&&(r.input=e.input),r}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){const r=new RegExp(e.source,e.flags);return r.lastIndex=e.lastIndex,r}if(e instanceof Map){const r=new Map;n.set(e,r);for(const[f,a]of e)r.set(f,g(a,f,i,n,s));return r}if(e instanceof Set){const r=new Set;n.set(e,r);for(const f of e)r.add(g(f,void 0,i,n,s));return r}if(typeof Buffer<"u"&&Buffer.isBuffer(e))return e.subarray();if(C(e)){const r=new(Object.getPrototypeOf(e)).constructor(e.length);n.set(e,r);for(let f=0;f<e.length;f++)r[f]=g(e[f],f,i,n,s);return r}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){const r=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return n.set(e,r),w(r,e,i,n,s),r}if(typeof File<"u"&&e instanceof File){const r=new File([e],e.name,{type:e.type});return n.set(e,r),w(r,e,i,n,s),r}if(e instanceof Blob){const r=new Blob([e],{type:e.type});return n.set(e,r),w(r,e,i,n,s),r}if(e instanceof Error){const r=new e.constructor;return n.set(e,r),r.message=e.message,r.name=e.name,r.stack=e.stack,r.cause=e.cause,w(r,e,i,n,s),r}if(typeof e=="object"&&e!==null){const r=Object.create(Object.getPrototypeOf(e));return n.set(e,r),w(r,e,i,n,s),r}return e}function w(e,t,i=e,n,s){const o=[...Object.keys(t),...Y(t)];for(let r=0;r<o.length;r++){const f=o[r],a=Object.getOwnPropertyDescriptor(e,f);(a==null||a.writable)&&(e[f]=g(t[f],f,i,n,s))}}function q(e){return g(e,void 0,e,new Map,void 0)}function j(e,t){const i={},n=Object.keys(e);for(let s=0;s<n.length;s++){const o=n[s],r=e[o];i[o]=t(r,o,e)}return i}function b(e,t){const i=Object.keys(t);for(let n=0;n<i.length;n++){const s=i[n],o=t[s],r=e[s];Array.isArray(o)?Array.isArray(r)?e[s]=b(r,o):e[s]=b([],o):D(o)?D(r)?e[s]=b(r,o):e[s]=b({},o):(r===void 0||o!==void 0)&&(e[s]=o)}return e}function N(e,t){const i={...e};for(let n=0;n<t.length;n++){const s=t[n];delete i[s]}return i}function v(e,t){return b(q(e),t)}let ee=e=>crypto.getRandomValues(new Uint8Array(e)),te=(e,t,i)=>{let n=(2<<Math.log2(e.length-1))-1,s=-~(1.6*n*t/e.length);return(o=t)=>{let r="";for(;;){let f=i(s),a=s|0;for(;a--;)if(r+=e[f[a]&n]||"",r.length>=o)return r}}},re=(e,t=21)=>te(e,t|0,ee);const ne="0123456789",ie="abcdefghijklmnopqrstuvwxyz",se="ABCDEFGHIJKLMNOPQRSTUVWXYZ",fe=re(`${ne}${ie}${se}_`,12);function oe(e=12){return fe(e)}const{z:R}=await F("zod"),ae=/^[a-z0-9-]+$/,K=/^[A-Z][a-zA-Z0-9]*$/,ue=/^[a-z][a-zA-Z0-9]*$/,de=/^[A-Z][A-Z0-9_]*$/,ce={KEBAB_CASE:R.string().regex(ae,{message:'Must be kebab case (e.g. "my-project")'}),PASCAL_CASE:R.string().regex(K,{message:'Must be pascal case (e.g. "MyProject")'}),CAMEL_CASE:R.string().regex(ue,{message:'Must be camel case (e.g. "myProject")'}),CONSTANT_CASE:R.string().regex(de,{message:'Must be constant case (e.g. "MY_PROJECT")'})};function ft(e,t){return{spec:e,implementation:t}}function ot(e,t){const{platforms:i,defaultInitializer:n}=t??{};return{type:"plugin-spec",name:e,platforms:i&&(Array.isArray(i)?i:[i]),isOptional:!1,optional(){return{...this,isOptional:!0}},defaultInitializer:n}}class le{constructor(t,i,n){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"parentType",{enumerable:!0,configurable:!0,writable:!0,value:n}),Object.defineProperty(this,"prefix",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.prefix=i??t.split("/").pop()??t}generateNewId(){return`${this.prefix}:${oe()}`}idFromKey(t){if(t)return`${this.prefix}:${t}`}keyFromId(t){return t.split(":")[1]}isId(t){return t.startsWith(`${this.prefix}:`)}}function p(e,t){const{parentType:i,prefix:n}=t??{};return new le(e,n,i)}class pe{constructor(t,i){Object.defineProperty(this,"value",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,"reference",{enumerable:!0,configurable:!0,writable:!0,value:i})}toString(){return this.value??""}}const m=Symbol("refAnnotationsMarker"),{z:ye}=await F("zod");function me({transformReferences:e}){function t(s){return ye.string().transform(o=>e&&o?new pe(o,s):o)}function i(s,o){if(!("id"in s.shape))throw new Error(`Entity must have an id field. Entity type: ${o.type.name}. Schema keys: ${Object.keys(s.shape).join(", ")}`);return s.transform(r=>{if(!("id"in r)||!o.type.isId(r.id))throw new Error(`Invalid id for entity ${o.type.name}. Id: ${r.id}`);if(e){const f=m in r?r[m]:void 0;return{...r,[m]:{entities:[...f?.entities??[],o],references:f?.references??[],contextPaths:f?.contextPaths??[]}}}return r})}function n(s,o){return s.transform(r=>{if(!r)return r;if(typeof r!="object")throw new TypeError(`refBuilder requires an object, but got ${typeof r}`);const f=m in r?r[m]:void 0,a=f?.entities??[],d=f?.references??[],u=f?.contextPaths??[];return o?.({addReference:l=>{d.push(l)},addEntity:l=>{a.push(l)},addPathToContext:(l,H,J)=>{u.push({path:l,type:H,context:J})}},r),e?{...r,[m]:{entities:a,references:d,contextPaths:u}}:r})}return{withRef:t,withEnt:i,withRefBuilder:n}}const{z:ge}=await F("zod");function he(e){return Array.isArray(e)?e.length===0:typeof e=="object"&&e!==null?Object.values(e).every(t=>t===void 0):e===!1||e===""}function we(e){const t=e.defaultMode??"populate";return{withDefault:function(n,s){const o=n.optional();switch(t){case"populate":return ge.preprocess(r=>r===void 0?s:r,o);case"strip":return o.transform(r=>{if(!he(r))return r});case"preserve":return o.transform(r=>r)}}}}function at(e){return{...e,...me(e),...we(e)}}function _(e){return t=>e(t)}function be(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}function Re(e){return Object.is(e,-0)?"-0":e.toString()}function z(e){const t=[],i=e.length;if(i===0)return t;let n=0,s="",o="",r=!1;for(e.charCodeAt(0)===46&&(t.push(""),n++);n<i;){const f=e[n];o?f==="\\"&&n+1<i?(n++,s+=e[n]):f===o?o="":s+=f:r?f==='"'||f==="'"?o=f:f==="]"?(r=!1,t.push(s),s=""):s+=f:f==="["?(r=!0,s&&(t.push(s),s="")):f==="."?s&&(t.push(s),s=""):s+=f,n++}return s&&t.push(s),t}function E(e,t,i){if(e==null)return i;switch(typeof t){case"string":{const n=e[t];return n===void 0?be(t)?E(e,z(t),i):i:n}case"number":case"symbol":{typeof t=="number"&&(t=Re(t));const n=e[t];return n===void 0?i:n}default:{if(Array.isArray(t))return Ae(e,t,i);Object.is(t?.valueOf(),-0)?t="-0":t=String(t);const n=e[t];return n===void 0?i:n}}}function Ae(e,t,i){if(t.length===0)return i;let n=e;for(let s=0;s<t.length;s++){if(n==null)return i;n=n[t[s]]}return n===void 0?i:n}function Ee(e){return e!==null&&(typeof e=="object"||typeof e=="function")}function h(e,t){if(t===e)return!0;switch(typeof t){case"object":{if(t==null)return!0;const i=Object.keys(t);if(e==null)return i.length===0;if(Array.isArray(t))return L(e,t);if(t instanceof Map)return Me(e,t);if(t instanceof Set)return Ie(e,t);for(let n=0;n<i.length;n++){const s=i[n];if(!$(e)&&!(s in e)||t[s]===void 0&&e[s]!==void 0||t[s]===null&&e[s]!==null||!h(e[s],t[s]))return!1}return!0}case"function":return Object.keys(t).length>0?h(e,{...t}):!1;default:return Ee(e)?!t:T(e,t)}}function Me(e,t){if(t.size===0)return!0;if(!(e instanceof Map))return!1;for(const[i,n]of t.entries())if(!h(e.get(i),n))return!1;return!0}function L(e,t){if(t.length===0)return!0;if(!Array.isArray(e))return!1;const i=new Set;for(let n=0;n<t.length;n++){const s=t[n],o=e.findIndex((r,f)=>h(r,s)&&!i.has(f));if(o===-1)return!1;i.add(o)}return!0}function Ie(e,t){return t.size===0?!0:e instanceof Set?L([...e],[...t]):!1}const Fe=/^(?:0|[1-9]\d*)$/;function Oe(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e<t;case"symbol":return!1;case"string":return Fe.test(e)}}function Se(e,t,i){const n=Array.isArray(t)?t:typeof t=="string"?z(t):[t];let s=e;for(let r=0;r<n.length-1;r++){const f=n[r],a=n[r+1];s[f]==null&&(s[f]=Oe(a)?[]:{}),s=s[f]}const o=n[n.length-1];return s[o]=i,e}const{z:A}=await F("zod"),M=p("feature"),k=ce.KEBAB_CASE,je=_(e=>e.withEnt(A.object({id:A.string(),name:A.string().min(1).refine(t=>t.split("/").every(i=>k.safeParse(i).success),{message:"Feature name must be lowercase and contain only letters, numbers, and dashes"}),parentRef:e.withRef({type:M,onDelete:"DELETE_PARENT"}).optional()}),{type:M})),ut=_(e=>A.array(je(e)).default([])),y=p("model"),xe=p("model-scalar-field",{parentType:y}),Pe=p("model-local-relation",{parentType:y}),De=p("model-foreign-relation",{parentType:y}),Ne=p("model-unique-constraint",{parentType:y}),dt=p("model-transformer",{parentType:y}),Be=p("model-enum"),ct=p("model-enum-value",{parentType:Be});function $e(e){return e.features.filter(t=>!t.parentRef)}function G(e,t){return e.features.find(i=>i.id===t)}function x(e,t){const i=G(e,t);if(!i)throw new Error(`Could not find feature with ID ${t}`);return i}function qe(e,t){return e.features.filter(i=>i.parentRef===t)}function U(e){return e.name.split("/").pop()??""}function Ke(e,t){const i=x(e,t);return U(i)}function _e(e,t){return x(e,t).name}function ze(e){return e.split("/").every(i=>k.safeParse(i).success)}function Le(e,t){if(M.isId(t))return t;const i=t.split("/");let n="",s;for(const o of i){const r=e.features.find(a=>a.name===o&&a.parentRef===s),f=[n,o].filter(Boolean).join("/");if(r)s=r.id;else{const a={id:M.generateNewId(),name:f,parentRef:s};e.features.push(a),s=a.id}n=f}if(!s)throw new Error("Failed to create feature");return s}function W(e,t){return e.features.find(i=>i.name===t)}function ke(e,t){return W(e,t)?.id??t}const lt={getRootFeatures:$e,getFeatureById:G,getFeatureByIdOrThrow:x,getFeatureChildren:qe,getFeatureName:U,getFeatureNameById:Ke,getFeaturePathById:_e,validateFeatureName:ze,ensureFeatureByNameRecursively:Le,getFeatureByName:W,getFeatureIdByNameOrDefault:ke};function X(e,t){return e.models.find(i=>i.id===t)}function Ge(e,t){const i=X(e,t);if(!i)throw new Error(`Could not find model with ID ${t}`);return i}function Ue(e,t){const i=e.model.fields.find(n=>n.id===t);if(!i)throw new Error(`Could not find field with ID ${t}`);return i}function We(e,t){return e.models.flatMap(i=>i.model.relations?.filter(n=>n.modelRef===t).map(n=>({model:i,relation:n}))??[])}function Xe(e,t){return e.models.filter(i=>i.featureRef===t)}function Ze(e){return e.model.primaryKeyFieldRefs}function Qe(e){return!!e.service.create.enabled||!!e.service.update.enabled||!!e.service.delete.enabled||e.service.transformers.length>0}function Ve(e){return K.test(e)}function He(e,t){return e.models.find(i=>i.name===t)?.id??t}const I={byId:X,byIdOrThrow:Ge,getScalarFieldById:Ue,getRelationsToModel:We,getModelsForFeature:Xe,getModelIdFields:Ze,hasService:Qe,validateModelName:Ve,getModelIdByNameOrDefault:He};class P{constructor(t){Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:t})}}class O extends P{constructor(t,i,n={}){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:i}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:n}),this.getKey=i}diff(t,i){const n=t??[],s=i??[];if(!Array.isArray(n)||!Array.isArray(s))throw new TypeError("Current and desired must be arrays");const o=[],{allowRemove:r,ignoreFields:f=["id"]}=this.options,a=new Map(n.map(u=>[this.getKey(u),u])),d=new Map(s.map(u=>[this.getKey(u),u]));for(const[u,c]of d){const l=a.get(u);if(!l){o.push({type:"add",key:u,item:c});continue}h(N(l,f),N(c,f))||o.push({type:"update",key:u,item:c})}if(r)for(const[u,c]of a)d.has(u)||o.push({type:"remove",key:u,item:c});return o}apply(t,i){const n=i,s=t??[];if(!Array.isArray(s))throw new TypeError("Current must be array");const o=[...s];for(const{type:r,key:f,item:a}of n){const d=o.findIndex(u=>this.getKey(u)===f);switch(r){case"add":{o.push(a);break}case"update":{if(d===-1)throw new Error(`Cannot apply patch. Item with key "${f}" not found.`);o[d]=v(o[d],a);break}case"remove":{d!==-1&&o.splice(d,1);break}}}return o}getActionVerb(t){return t?"created":"added or updated"}}class B extends P{diff(t,i){return i===void 0?[]:h(t,i)?[]:[{type:"update",key:"*",item:i}]}apply(t,i){return i.length===0?t:i[0].item}getActionVerb(t){return t?"set":"replaced"}}class S extends P{constructor(t,i){super(t),Object.defineProperty(this,"getKey",{enumerable:!0,configurable:!0,writable:!0,value:i})}diff(t,i){const n=t??[],s=i??[];if(!Array.isArray(n)||!Array.isArray(s))throw new TypeError("Current and desired must be arrays");const o=[],r=new Set(this.getKey?n.map(this.getKey):n);for(const f of s){const a=this.getKey?this.getKey(f):String(f);r.has(a)||o.push({type:"add",key:a,item:f})}return o}apply(t,i){const n=t??[];if(!Array.isArray(n))throw new TypeError("Current must be array");const s=[...n];for(const{type:o,item:r}of i)o==="add"&&s.push(r);return s}getActionVerb(t){return t?"created":"added"}}function pt(e){return e}function Je(e,t,i){const n=j(i,(s,o)=>s?s.diff(E(e,o),E(t,o)):[]);if(!Object.values(n).every(s=>s.length===0))return n}function Ye(e,t,i){const n=q(e);for(const[s,o]of Object.entries(t)){if(!o)continue;const r=i[s],f=E(n,s);Se(n,s,r.apply(f,o))}return n}function Te(e){return e.fields.map(i=>i.fieldRef).sort().join("|")}const Z={"model.fields":new O("fields",e=>e.name),"model.relations":new O("relations",e=>e.name),"model.uniqueConstraints":new O("unique constraints",e=>Te(e)),"model.primaryKeyFieldRefs":new B("primary key fields"),"graphql.objectType.enabled":new B("GraphQL object type enabled"),"graphql.objectType.fields":new S("GraphQL object type fields"),"graphql.objectType.localRelations":new S("GraphQL object type local relations"),"graphql.objectType.foreignRelations":new S("GraphQL object type foreign relations")};function Q(e,t,i){const n=new Map([...e.model.fields.map(f=>[f.id,f.name]),...i.flatMap(f=>f.model.fields.map(a=>[a.id,a.name]))]),s=new Map([...(e.model.relations??[]).map(f=>[f.id,f.name]),...i.flatMap(f=>(f.model.relations??[]).map(a=>[a.id,a.name])),...(e.model.relations??[]).map(f=>[f.foreignId,f.foreignRelationName]),...i.flatMap(f=>(f.model.relations??[]).map(a=>[a.foreignId,a.foreignRelationName]))]),o=f=>n.get(f)??t.nameFromId(f),r=f=>s.get(f)??t.nameFromId(f);return{...e,model:{...e.model,relations:e.model.relations?.map(f=>({...f,references:f.references.map(a=>({...a,localRef:o(a.localRef),foreignRef:o(a.foreignRef)}))})),uniqueConstraints:e.model.uniqueConstraints?.map(f=>({...f,fields:f.fields.map(a=>({...a,fieldRef:o(a.fieldRef)}))})),primaryKeyFieldRefs:e.model.primaryKeyFieldRefs.map(o)},graphql:{...e.graphql,objectType:{...e.graphql?.objectType,fields:e.graphql?.objectType?.fields?.map(o)??[],localRelations:e.graphql?.objectType?.localRelations?.map(r)??[],foreignRelations:e.graphql?.objectType?.foreignRelations?.map(r)??[]}}}}function Ce(e){return{...e,model:{...e.model,fields:e.model.fields.map(t=>({...t,id:t.id??xe.generateNewId()})),relations:e.model.relations?.map(t=>({...t,id:t.id??Pe.generateNewId(),foreignId:t.foreignId??De.generateNewId()})),uniqueConstraints:e.model.uniqueConstraints?.map(t=>({...t,id:t.id??Ne.generateNewId()}))}}}function ve(e,t,i){const n=Ce(e),s=r=>{const f=n.model.fields.find(a=>a.name===r);if(!f)throw new Error(`Field ${r} not found`);return f.id},o=r=>{const f=n.model.relations?.find(a=>a.name===r);if(!f)throw new Error(`Relation ${r} not found`);return f.id};return{...n,model:{...n.model,relations:n.model.relations?.map(r=>({...r,references:r.references.map(f=>({...f,localRef:s(f.localRef),foreignRef:t(r.modelRef,f.foreignRef)}))})),uniqueConstraints:n.model.uniqueConstraints?.map(r=>({...r,fields:r.fields.map(f=>({...f,fieldRef:s(f.fieldRef)}))})),primaryKeyFieldRefs:n.model.primaryKeyFieldRefs.map(r=>s(r))},graphql:{...n.graphql,objectType:{...n.graphql?.objectType,fields:n.graphql?.objectType?.fields?.map(r=>s(r))??[],localRelations:n.graphql?.objectType?.localRelations?.map(r=>o(r))??[],foreignRelations:n.graphql?.objectType?.foreignRelations?.map(r=>i(r))??[]}}}}function V(e,t){return{id:y.generateNewId(),name:e,featureRef:t,model:{fields:[],primaryKeyFieldRefs:[]}}}function et(e,t,i,{siblingModels:n=[]}={}){const s=e??V(t.name,t.featureRef),o=Q(s,i,n),r=Je(o,t,Z);if(r)return{isNewModel:!e,id:s.id,name:s.name,featureRef:s.featureRef,changes:r}}function yt(e){return Object.values(e).some(t=>t?.changes)}function tt(e,t,i,{siblingModels:n=[]}={}){return j(t,(s,o)=>et(e[o]&&y.isId(e[o])?I.byIdOrThrow(i.definition,e[o]):void 0,s,i,{siblingModels:n}))}function rt(e,t,i,n=[]){const s=Q(e,i,n),o=Ye(s,t,Z);return{...e,...ve(o,(r,f)=>{const a=n.find(c=>c.id===r);if(a){const c=a.model.fields.find(l=>l.name===f);if(!c)throw new Error(`Field ${f} not found in sibling model ${r}`);return c.id}const d=I.byIdOrThrow(i.definition,r),u=d.model.fields.find(c=>c.name===f);if(!u)throw new Error(`Field ${f} not found in model ${d.name}`);return u.id},r=>{let f;for(const u of n){const c=u.model.relations?.find(l=>l.foreignRelationName===r);if(c){f=c.foreignId;break}}if(f)return f;const d=I.getRelationsToModel(i.definition,e.id).find(u=>u.relation.foreignRelationName===r&&u.relation.modelRef===e.id);if(!d)throw new Error(`Relation ${r} not found in model ${e.name}`);return d.relation.foreignId})}}function nt(e,t,i,{siblingModels:n=[]}={}){const s=t.isNewModel?V(t.name,t.featureRef):I.byIdOrThrow(i.definition,t.id),o=rt(s,t.changes,i,n);if(t.isNewModel)e.models.push(o);else{const r=e.models.findIndex(f=>f.id===t.id);if(r===-1)throw new Error(`Model ${t.id} not found`);e.models[r]=o}return o.id}function mt(e,t,i,n,{siblingModels:s=[]}={}){const o=tt(t,i,n,{siblingModels:s});return j(o,(r,f)=>r?nt(e,r,n,{siblingModels:s}):i[f].name)}export{tt as A,rt as B,ce as C,pe as D,nt as E,lt as F,mt as G,O as H,B as I,S as J,pt as K,Je as L,I as M,Ye as N,m as R,p as a,at as b,ot as c,_ as d,De as e,Pe as f,E as g,xe as h,dt as i,y as j,ct as k,M as l,j as m,Be as n,Ne as o,ut as p,N as q,q as r,Se as s,ft as t,le as u,k as v,je as w,Z as x,et as y,yt as z};
|
|
2
|
-
//# sourceMappingURL=model-merger-DuBMgrZ3.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as r}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e}from"./index.esm-Bvv3vNQh.js";import{k as n,L as s,O as a}from"./index-B7G2CMwL.js";const{Alert:o,AlertDescription:l,AlertTitle:p,NavigationTabs:d,NavigationTabsItem:t}=await r("@baseplate-dev/ui-components"),x=function(){const{key:i}=n.useParams();return e.jsxs("div",{className:"p-4",children:[e.jsxs(o,{variant:"warning",className:"mb-4",children:[e.jsx(p,{children:"⚠️ Development Preview"}),e.jsx(l,{children:"The admin app functionality will likely be fully rewritten in future versions. This is provided for preview purposes only and should not be relied upon for production use."})]}),e.jsxs(d,{children:[e.jsx(t,{asChild:!0,children:e.jsx(s,{to:"/apps/edit/$key/admin",from:"/",params:{key:i},activeOptions:{exact:!0},children:"General"})}),e.jsx(t,{asChild:!0,children:e.jsx(s,{to:"/apps/edit/$key/admin/sections",params:{key:i},children:"Sections"})})]}),e.jsx("div",{className:"mt-4 border-t",children:e.jsx(a,{})})]})};export{x as component};
|
|
2
|
-
//# sourceMappingURL=route-DvbGaH6v.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route-DvbGaH6v.js","sources":["../../src/routes/apps/edit.$key/admin/route.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n NavigationTabs,\n NavigationTabsItem,\n} from '@baseplate-dev/ui-components';\nimport {\n createFileRoute,\n Link,\n Outlet,\n redirect,\n} from '@tanstack/react-router';\n\nexport const Route = createFileRoute('/apps/edit/$key/admin')({\n component: AdminAppEditLayout,\n beforeLoad: ({ context: { app }, params: { key } }) => {\n if (app?.type !== 'admin') {\n throw redirect({ to: '/apps/edit/$key', params: { key } });\n }\n return {\n adminDefinition: app,\n };\n },\n});\n\nfunction AdminAppEditLayout(): React.JSX.Element {\n const { key } = Route.useParams();\n return (\n <div className=\"p-4\">\n <Alert variant=\"warning\" className=\"mb-4\">\n <AlertTitle>⚠️ Development Preview</AlertTitle>\n <AlertDescription>\n The admin app functionality will likely be fully rewritten in future\n versions. This is provided for preview purposes only and should not be\n relied upon for production use.\n </AlertDescription>\n </Alert>\n <NavigationTabs>\n <NavigationTabsItem asChild>\n <Link\n to=\"/apps/edit/$key/admin\"\n from=\"/\"\n params={{ key }}\n activeOptions={{ exact: true }}\n >\n General\n </Link>\n </NavigationTabsItem>\n <NavigationTabsItem asChild>\n <Link to=\"/apps/edit/$key/admin/sections\" params={{ key }}>\n Sections\n </Link>\n </NavigationTabsItem>\n </NavigationTabs>\n <div className=\"mt-4 border-t\">\n <Outlet />\n </div>\n </div>\n );\n}\n"],"names":["Alert","AlertDescription","AlertTitle","NavigationTabs","NavigationTabsItem","importShared","SplitComponent","key","Route","useParams","jsxs","jsx","Link","exact","Outlet"],"mappings":"oKAEA,KAAA,CAAA,MAAAA,EAAA,iBAAAC,EAAA,WAAAC,EAAA,eAAAC,EAAA,mBAAAC,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAYgCC,EAAA,UAciB,CACzC,KAAA,CAAEC,IAAAA,CAAAA,EAAQC,EAAMC,UAAU,EAE9B,OAAAC,EAAA,KAAC,MAAI,CAAA,UAAU,MACb,SAAA,CAAAA,EAAA,KAACV,EAAM,CAAA,QAAQ,UAAU,UAAU,OACjC,SAAA,CAAAW,EAAAA,IAACT,GAAW,SAAsB,wBAAA,CAAA,EAClCS,EAAAA,IAACV,GAAgB,SAIjB,6KAAA,CAAA,CAAA,EACF,SACCE,EACC,CAAA,SAAA,CAACQ,EAAAA,IAAAP,EAAA,CAAmB,QAAO,GACzB,SAAAO,EAAAA,IAACC,GACC,GAAG,wBACH,KAAK,IACL,OAAQ,CAAEL,IAAAA,GACV,cAAe,CAAEM,MAAO,EAAA,EAAO,kBAGjC,CAAA,EACF,EACAF,EAAAA,IAACP,GAAmB,QAAO,GACzB,eAACQ,EAAK,CAAA,GAAG,iCAAiC,OAAQ,CAAEL,IAAAA,CAAAA,EAAM,oBAE1D,CACF,CAAA,CAAA,EACF,QACC,MAAI,CAAA,UAAU,gBACb,SAAAI,EAAA,IAACG,IAAM,CACT,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as o}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e}from"./index.esm-Bvv3vNQh.js";import{y as s,L as n,O as m,r as l}from"./index-B7G2CMwL.js";import{s as p}from"./immer-BOh2djD_.js";const{adminSectionEntityType:r}=await o("@baseplate-dev/project-builder-lib"),{NavigationMenu:y,NavigationMenuItemWithLink:a,NavigationMenuList:x,SidebarLayout:h,SidebarLayoutContent:u,SidebarLayoutSidebar:j}=await o("@baseplate-dev/ui-components");l(r,"/apps/edit/{parentKey}/sections/edit/{key}");const v=function(){const{adminDefinition:c}=s.useRouteContext(),{key:t}=s.useParams(),d=p(c.sections??[],[i=>i.name]);return e.jsxs(h,{children:[e.jsxs(j,{className:"space-y-4",width:"sm",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("h2",{children:"Sections"})}),e.jsx(y,{orientation:"vertical",children:e.jsxs(x,{children:[e.jsx("li",{children:e.jsx(a,{asChild:!0,children:e.jsx(n,{to:"/apps/edit/$key/admin/sections/$sectionKey",from:"/",params:{key:t,sectionKey:"new"},className:"text-green-500",children:"New Section"})})}),d.map(i=>e.jsx("li",{children:e.jsx(a,{asChild:!0,children:e.jsx(n,{to:"/apps/edit/$key/admin/sections/$sectionKey",from:"/",params:{key:t,sectionKey:r.keyFromId(i.id)},children:i.name})})},i.id))]})})]}),e.jsx(u,{className:"p-4",children:e.jsx(m,{})})]})};export{v as component};
|
|
2
|
-
//# sourceMappingURL=sections-BSA71xrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sections-BSA71xrl.js","sources":["../../src/routes/apps/edit.$key/admin/sections.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { adminSectionEntityType } from '@baseplate-dev/project-builder-lib';\nimport {\n NavigationMenu,\n NavigationMenuItemWithLink,\n NavigationMenuList,\n SidebarLayout,\n SidebarLayoutContent,\n SidebarLayoutSidebar,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute, Link, Outlet } from '@tanstack/react-router';\nimport { sortBy } from 'es-toolkit';\n\nimport { registerEntityTypeUrl } from '#src/services/entity-type.js';\n\nregisterEntityTypeUrl(\n adminSectionEntityType,\n `/apps/edit/{parentKey}/sections/edit/{key}`,\n);\n\nexport const Route = createFileRoute('/apps/edit/$key/admin/sections')({\n component: AdminAppEditSectionsPage,\n});\n\nfunction AdminAppEditSectionsPage(): React.JSX.Element {\n const { adminDefinition } = Route.useRouteContext();\n const { key } = Route.useParams();\n const sortedSections = sortBy(adminDefinition.sections ?? [], [\n (section) => section.name,\n ]);\n\n return (\n <SidebarLayout>\n <SidebarLayoutSidebar className=\"space-y-4\" width=\"sm\">\n <div className=\"flex items-center justify-between\">\n <h2>Sections</h2>\n </div>\n <NavigationMenu orientation=\"vertical\">\n <NavigationMenuList>\n <li>\n <NavigationMenuItemWithLink asChild>\n <Link\n to=\"/apps/edit/$key/admin/sections/$sectionKey\"\n from=\"/\"\n params={{\n key,\n sectionKey: 'new',\n }}\n className=\"text-green-500\"\n >\n New Section\n </Link>\n </NavigationMenuItemWithLink>\n </li>\n {sortedSections.map((section) => (\n <li key={section.id}>\n <NavigationMenuItemWithLink asChild>\n <Link\n to=\"/apps/edit/$key/admin/sections/$sectionKey\"\n from=\"/\"\n params={{\n key,\n sectionKey: adminSectionEntityType.keyFromId(section.id),\n }}\n >\n {section.name}\n </Link>\n </NavigationMenuItemWithLink>\n </li>\n ))}\n </NavigationMenuList>\n </NavigationMenu>\n </SidebarLayoutSidebar>\n <SidebarLayoutContent className=\"p-4\">\n <Outlet />\n </SidebarLayoutContent>\n </SidebarLayout>\n );\n}\n"],"names":["adminSectionEntityType","importShared","NavigationMenu","NavigationMenuItemWithLink","NavigationMenuList","SidebarLayout","SidebarLayoutContent","SidebarLayoutSidebar","registerEntityTypeUrl","SplitComponent","adminDefinition","Route","useRouteContext","key","useParams","sortedSections","sortBy","sections","section","name","jsxs","jsx","Link","sectionKey","map","keyFromId","id","Outlet"],"mappings":"mNAEA,KAAA,CAAA,uBAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,eAAAC,EAAA,2BAAAC,EAAA,mBAAAC,EAAA,cAAAC,EAAA,qBAAAC,EAAA,qBAAAC,CAAA,EAAA,MAAAN,EAAA,8BAAA,EAaAO,EACER,EACA,4CACF,EAAES,MAAAA,EAAA,UAMqD,CAC/C,KAAA,CAAEC,gBAAAA,CAAAA,EAAoBC,EAAMC,gBAAgB,EAC5C,CAAEC,IAAAA,CAAAA,EAAQF,EAAMG,UAAU,EAC1BC,EAAiBC,EAAON,EAAgBO,UAAY,GAAI,CAC3DC,GAAYA,EAAQC,IAAI,CAC1B,EAED,cACGd,EACC,CAAA,SAAA,CAAAe,EAAA,KAACb,EAAqB,CAAA,UAAU,YAAY,MAAM,KAChD,SAAA,CAAAc,EAAAA,IAAC,OAAI,UAAU,oCACb,SAACA,MAAA,KAAA,CAAG,oBAAQ,CACd,CAAA,EACCA,MAAAnB,EAAA,CAAe,YAAY,WAC1B,gBAACE,EACC,CAAA,SAAA,CAACiB,EAAA,IAAA,KAAA,CACC,SAACA,EAAA,IAAAlB,EAAA,CAA2B,QAAO,GACjC,SAACkB,EAAA,IAAAC,EAAA,CACC,GAAG,6CACH,KAAK,IACL,OAAQ,CACNT,IAAAA,EACAU,WAAY,KAAA,EAEd,UAAU,iBAAgB,SAAA,aAG5B,CAAA,CACF,CAAA,EACF,EACCR,EAAeS,IACdN,GAAAG,EAAAA,IAAC,MACC,SAACA,EAAA,IAAAlB,EAAA,CAA2B,QAAO,GACjC,eAACmB,EACC,CAAA,GAAG,6CACH,KAAK,IACL,OAAQ,CACNT,IAAAA,EACAU,WAAYvB,EAAuByB,UAAUP,EAAQQ,EAAE,CAAA,EAGxDR,SAAQC,EAAAA,IAAAA,CACX,EACF,CAZOD,EAAAA,EAAQQ,EAajB,CACD,CAAA,CAAA,CACH,CACF,CAAA,CAAA,EACF,QACCpB,EAAqB,CAAA,UAAU,MAC9B,SAAAe,EAAA,IAACM,IAAM,CACT,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as r}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e,f as U,e as v,b as Q}from"./index.esm-Bvv3vNQh.js";import{C as _,s as z,l as X,z as Z,A as N,c as ee}from"./index-B7G2CMwL.js";import{c as E}from"./index-BgFEd-vA.js";import{s as ne}from"./immer-BOh2djD_.js";const{ModelUtils:oe}=await r("@baseplate-dev/project-builder-lib"),{createAdminCrudInputWebConfig:le,useProjectDefinition:te}=await r("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:A}=await r("@baseplate-dev/ui-components");function ie({formProps:t,name:o,model:i,embeddedFormOptions:d}){const{definition:a}=te(),l=oe.getRelationsToModel(a,i.id).map(c=>({label:`${c.relation.foreignRelationName} (${c.model.name})`,value:c.relation.foreignId})),n=o,s=t.control;return e.jsxs(e.Fragment,{children:[e.jsx(A,{label:"Relation Name",control:s,name:`${n}.modelRelationRef`,options:l}),e.jsx(A,{label:"Embedded Form",control:s,name:`${n}.embeddedFormRef`,options:d})]})}const ae=le({name:"embedded",pluginId:void 0,label:"Embedded",getNewInput:()=>({label:"",type:"embedded",modelRelationRef:"",embeddedFormRef:""}),Form:ie}),{createAdminCrudInputWebConfig:se,useProjectDefinition:de}=await r("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:O}=await r("@baseplate-dev/ui-components");function re({formProps:t,name:o,model:i,embeddedFormOptions:d}){const{definitionContainer:a}=de(),l=i.model.relations?.map(c=>({label:`${c.name} (${a.nameFromId(c.modelRef)})`,value:c.id}))??[],n=o,s=t.control;return e.jsxs(e.Fragment,{children:[e.jsx(O,{label:"Relation Name",control:s,name:`${n}.localRelationRef`,options:l}),e.jsx(O,{label:"Embedded Form",control:s,name:`${n}.embeddedFormRef`,options:d})]})}const ce=se({name:"embeddedLocal",pluginId:void 0,label:"Embedded Local",getNewInput:()=>({label:"",type:"embeddedLocal",embeddedFormRef:"",localRelationRef:""}),Form:re}),{createAdminCrudInputWebConfig:me}=await r("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:pe}=await r("@baseplate-dev/ui-components");function ue({formProps:t,name:o,model:i}){const d=i.model.fields.filter(n=>n.type==="enum").map(n=>({label:n.name,value:n.id})),a=o,l=t.control;return e.jsx(pe,{label:"Enum Field",control:l,name:`${a}.modelFieldRef`,options:d})}const be=me({name:"enum",pluginId:void 0,label:"Enum",getNewInput:()=>({label:"",type:"enum",modelFieldRef:""}),Form:ue}),{createAdminCrudInputWebConfig:fe,useProjectDefinition:je}=await r("@baseplate-dev/project-builder-lib/web"),{InputFieldController:y,SelectFieldController:Ce}=await r("@baseplate-dev/ui-components");function xe({formProps:t,name:o,model:i}){const{definitionContainer:d}=je(),a=i.model.relations?.map(s=>({label:`${s.name} (${d.nameFromId(s.modelRef)})`,value:s.id}))??[],l=o,n=t.control;return e.jsxs(e.Fragment,{children:[e.jsx(Ce,{label:"Local Relation Name",control:n,name:`${l}.localRelationRef`,options:a}),e.jsx(y,{label:"Label Expression (e.g. name)",control:n,name:`${l}.labelExpression`}),e.jsx(y,{label:"Value Expression (e.g. id)",control:n,name:`${l}.valueExpression`}),e.jsx(y,{label:"Default Label (optional)",control:n,name:`${l}.defaultLabel`}),e.jsx(y,{label:"Empty Label (optional) - only if field is nullable",control:n,name:`${l}.nullLabel`})]})}const Fe=fe({name:"foreign",pluginId:void 0,label:"Foreign",getNewInput:()=>({label:"",type:"foreign",localRelationRef:"",labelExpression:"",valueExpression:"",defaultLabel:"",nullLabel:""}),Form:xe}),{createAdminCrudInputWebConfig:ve}=await r("@baseplate-dev/project-builder-lib/web"),{InputFieldController:ye,SelectFieldController:he}=await r("@baseplate-dev/ui-components");function Ie({formProps:t,name:o,model:i}){const d=i.model.fields.map(n=>({label:n.name,value:n.id})),a=o,l=t.control;return e.jsxs(e.Fragment,{children:[e.jsx(he,{label:"Field",control:l,name:`${a}.modelFieldRef`,options:d}),e.jsx(ye,{label:"Validation (zod), e.g. z.string().min(1) (optional)",control:l,name:`${a}.validation`})]})}const ge=ve({name:"text",pluginId:void 0,label:"Text",getNewInput:()=>({label:"",type:"text",modelFieldRef:""}),Form:Ie}),W=[ae,ce,be,Fe,ge],{ModelUtils:$e}=await r("@baseplate-dev/project-builder-lib"),{adminCrudInputWebSpec:we,useProjectDefinition:Re}=await r("@baseplate-dev/project-builder-lib/web"),{Button:Se,InputFieldController:Ee,SelectFieldController:Te}=await r("@baseplate-dev/ui-components");function De({idx:t,formProps:o,embeddedFormOptions:i}){const{control:d}=o,a=v({control:d,name:"modelRef"}),{definition:l,pluginContainer:n}=Re(),s=a?$e.byIdOrThrow(l,a):void 0,c=n.getPluginSpec(we),u=c.getInputWebConfigs(W).map(f=>({label:f.label,value:f.name})),b=v({control:d,name:`form.fields.${t}.type`}),m=c.getInputWebConfig(b,W),p=m.Form;return e.jsxs("div",{className:"space-y-4",children:[e.jsx(Te,{label:"Type",control:d,options:u,name:`form.fields.${t}.type`}),e.jsx(Ee,{label:"Label",control:d,name:`form.fields.${t}.label`}),p&&s&&e.jsx(p,{formProps:o,name:`form.fields.${t}`,model:s,embeddedFormOptions:i,pluginId:m.pluginId})]})}function V({className:t,formProps:o,embeddedFormOptions:i}){const{control:d}=o,{fields:a,append:l,remove:n}=U({control:d,name:"form.fields"});return e.jsxs("div",{className:E("space-y-4",t),children:[a.map((s,c)=>e.jsx(_,{collapsedContents:e.jsxs("div",{children:[s.label," (",s.type,")"]}),onRemove:()=>{n(c)},defaultOpen:!s.label,children:e.jsx(De,{idx:c,formProps:o,embeddedFormOptions:i},s.id)},s.id)),e.jsx(Se,{onClick:()=>{l({type:"text",label:""})},children:"Add Field"})]})}const{adminCrudDisplayTypes:Ne,ModelUtils:Ae}=await r("@baseplate-dev/project-builder-lib"),{useProjectDefinition:Oe}=await r("@baseplate-dev/project-builder-lib/web"),{Button:We,InputFieldController:w,SelectFieldController:R}=await r("@baseplate-dev/ui-components");function Le({idx:t,control:o,fieldOptions:i,localRelationOptions:d}){const a=Ne.map(n=>({label:n,value:n})),l=v({control:o,name:`table.columns.${t}.display.type`});return e.jsxs("div",{className:"space-y-4",children:[e.jsx(R,{label:"Type",control:o,options:a,name:`table.columns.${t}.display.type`}),e.jsx(w,{label:"Label",control:o,name:`table.columns.${t}.label`}),l==="text"&&e.jsx(R,{label:"Field",control:o,name:`table.columns.${t}.display.modelFieldRef`,options:i}),l==="foreign"&&e.jsxs(e.Fragment,{children:[e.jsx(R,{label:"Local Relation Name",control:o,name:`table.columns.${t}.display.localRelationRef`,options:d}),e.jsx(w,{label:"Label Expression (e.g. name)",control:o,name:`table.columns.${t}.display.labelExpression`}),e.jsx(w,{label:"Value Expression (e.g. id)",control:o,name:`table.columns.${t}.display.valueExpression`})]})]})}function H({className:t,control:o}){const i=v({control:o,name:"modelRef"}),{definition:d,definitionContainer:a}=Oe(),l=i?Ae.byIdOrThrow(d,i):void 0,{fields:n,append:s,remove:c}=U({control:o,name:"table.columns"}),u=l?.model.relations?.map(m=>({label:`${m.name} (${a.nameFromId(m.modelRef)})`,value:m.id}))??[],b=l?.model.fields.map(m=>({label:m.name,value:m.id}))??[];return e.jsxs("div",{className:E("space-y-4",t),children:[n.map((m,p)=>e.jsx(_,{collapsedContents:e.jsxs("div",{children:[m.label," (",m.display.type,")"]}),onRemove:()=>{c(p)},defaultOpen:!m.label,children:e.jsx(Le,{idx:p,control:o,fieldOptions:b,localRelationOptions:u},m.id)},m.id)),e.jsx(We,{onClick:()=>{s({display:{type:"text",modelFieldRef:""},label:""})},children:"Add Column"})]})}const{createAdminCrudEmbeddedFormSchema:Pe}=await r("@baseplate-dev/project-builder-lib"),{useDefinitionSchema:ke,useProjectDefinition:K}=await r("@baseplate-dev/project-builder-lib/web"),{Button:S,CheckboxFieldController:Be,InputFieldController:Me,SelectFieldController:L,Table:Ue,TableBody:_e,TableCell:h,TableHead:I,TableHeader:ze,TableRow:P,toast:Ve}=await r("@baseplate-dev/ui-components"),{useId:He}=await r("react");function Ke({items:t,edit:o,remove:i}){const{definitionContainer:d}=K();return e.jsxs(Ue,{className:"max-w-6xl",children:[e.jsx(ze,{children:e.jsxs(P,{children:[e.jsx(I,{children:"Form Name"}),e.jsx(I,{children:"Model Name"}),e.jsx(I,{children:"Type"}),e.jsx(I,{children:"Actions"})]})}),e.jsx(_e,{children:t.map((a,l)=>e.jsxs(P,{children:[e.jsx(h,{children:a.name}),e.jsx(h,{children:d.nameFromId(a.modelRef)}),e.jsx(h,{children:a.type}),e.jsxs(h,{className:"space-x-4",children:[e.jsx(S,{variant:"link",size:"none",onClick:()=>{o(l)},children:"Edit"}),e.jsx(S,{variant:"linkDestructive",size:"none",onClick:()=>{i(l)},children:"Remove"})]})]},a.id))})]})}const qe=[{label:"Object",value:"object"},{label:"List",value:"list"}];function Ge({initialData:t,onSubmit:o,embeddedFormOptions:i}){const{definition:d}=K(),a=ke(Pe),l=Q({resolver:z(a),defaultValues:t}),{handleSubmit:n,control:s,watch:c}=l,u=d.models.map(p=>({label:p.name,value:p.id})),b=c("type"),m=He();return e.jsxs("form",{onSubmit:p=>{p.stopPropagation(),n(o)(p).catch(f=>{Ve.error(X(f))})},id:m,className:"space-y-4",children:[e.jsx(Me,{label:"Name",control:s,name:"name"}),e.jsx(L,{label:"Type",control:s,name:"type",options:qe}),e.jsx(Be,{label:"Include ID Field? (useful for list types)",control:s,name:"includeIdField"}),e.jsx(L,{label:"Model",control:s,options:u,name:"modelRef"}),b==="list"&&e.jsxs(e.Fragment,{children:[e.jsx("h2",{children:"Table"}),e.jsx(H,{control:s})]}),e.jsx("h2",{children:"Form"}),e.jsx(V,{formProps:l,embeddedFormOptions:i}),e.jsx(S,{type:"submit",form:m,children:"Save"})]})}const{useProjectDefinition:Ye}=await r("@baseplate-dev/project-builder-lib/web"),{CheckboxFieldController:Je,SelectFieldController:Qe}=await r("@baseplate-dev/ui-components");function Xe({className:t,formProps:o}){const{control:i}=o,{definition:d}=Ye(),a=d.models.map(n=>({label:n.name,value:n.id})),l=v({control:i,name:"embeddedForms"})?.map(n=>({label:n.name,value:n.id}))??[];return e.jsxs("div",{className:E("space-y-4",t),children:[e.jsx(Qe,{label:"Model",control:i,options:a,name:"modelRef"}),e.jsx(Je,{label:"Disable Create?",control:i,name:"disableCreate"}),e.jsx("h2",{children:"Table"}),e.jsx(H,{control:i}),e.jsx("h2",{children:"Form"}),e.jsx(V,{formProps:o,embeddedFormOptions:l}),e.jsx("h2",{children:"Embedded Forms"}),e.jsx(Z.LabelledController,{control:i,name:"embeddedForms",renderForm:n=>e.jsx(Ge,{...n,embeddedFormOptions:l}),renderTable:n=>e.jsx(Ke,{...n}),defaultValue:{type:"object"}})]})}const{adminSectionEntityType:k,createAdminSectionSchema:Ze}=await r("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:en,useDefinitionSchema:nn,useProjectDefinition:on,useResettableForm:ln}=await r("@baseplate-dev/project-builder-lib/web"),{Button:B,ComboboxFieldController:tn,InputFieldController:M,SelectFieldController:an,useConfirmDialog:sn}=await r("@baseplate-dev/ui-components"),{useEffect:dn}=await r("react"),rn=[{label:"Crud",value:"crud"}],fn=function(){const{requestConfirm:o}=sn(),{key:i}=N.useParams(),{saveDefinitionWithFeedback:d,saveDefinitionWithFeedbackSync:a,isSavingDefinition:l,definition:n}=on(),s=ee(),{adminDefinition:c,sectionId:u,existingSection:b}=N.useLoaderData(),m=nn(Ze),p=ln({values:b,defaultValues:{type:"crud"},resolver:z(m)}),{control:f,handleSubmit:q,watch:G,reset:g}=p;dn(()=>{g(b??{type:"crud"})},[g,b]);const T=q(j=>{const C=j.id||k.generateNewId();return d(x=>{const $=x.apps.find(F=>F.id===c.id);if($?.type!=="admin")throw new Error("Cannot add a section to a non-admin app");$.sections=ne([...($.sections??[]).filter(F=>!u||F.id!==u),{...j,id:C}],[F=>F.name])},{onSuccess:()=>{u||s({to:"/apps/edit/$key/admin/sections/$sectionKey",params:{key:i,sectionKey:k.keyFromId(C)}})}})});en({control:f,reset:g,onSubmit:T});const D=G("type");function Y(){o({title:"Delete Section",content:`Are you sure you want to delete ${b?.name??"this section"}?`,onConfirm:()=>{a(j=>{const C=j.apps.find(x=>x.id===c.id);if(C?.type!=="admin")throw new Error("Cannot add a section to a non-admin app");C.sections=(C.sections??[]).filter(x=>!u||x.id!==u)},{successMessage:"Successfully deleted section!",onSuccess:()=>{s({to:".."})}})}})}const J=n.features.map(j=>({label:j.name,value:j.id}));return e.jsx("div",{className:"p-4",children:e.jsxs("form",{onSubmit:T,className:"space-y-4",children:[u&&e.jsx(B,{variant:"link",size:"none",onClick:()=>{Y()},children:"Delete Section"}),e.jsx(M,{label:"Name",control:f,name:"name"}),e.jsx(tn,{label:"Feature",control:f,options:J,name:"featureRef"}),e.jsx(M,{label:"Icon",control:f,name:"icon"}),e.jsx(an,{label:"Type",control:f,name:"type",options:rn}),(()=>{switch(D){case"crud":return e.jsx(Xe,{formProps:p});default:return e.jsxs("div",{children:["Unsupported type ",D]})}})(),e.jsx(B,{type:"submit",disabled:l,children:"Save"})]})})};export{fn as component};
|
|
2
|
-
//# sourceMappingURL=sections._sectionKey-DSatzih8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sections._sectionKey-DSatzih8.js","sources":["../../src/routes/apps/edit.$key/admin/-components/inputs/embedded-input-config.tsx","../../src/routes/apps/edit.$key/admin/-components/inputs/embedded-local-input-config.tsx","../../src/routes/apps/edit.$key/admin/-components/inputs/enum-input-config.tsx","../../src/routes/apps/edit.$key/admin/-components/inputs/foreign-input-config.tsx","../../src/routes/apps/edit.$key/admin/-components/inputs/text-input-config.tsx","../../src/routes/apps/edit.$key/admin/-components/inputs/index.ts","../../src/routes/apps/edit.$key/admin/-components/crud-form-fields-form.tsx","../../src/routes/apps/edit.$key/admin/-components/crud-table-columns-form.tsx","../../src/routes/apps/edit.$key/admin/-components/admin-crud-embedded-form.tsx","../../src/routes/apps/edit.$key/admin/-components/admin-crud-section-form.tsx","../../src/routes/apps/edit.$key/admin/sections.$sectionKey.tsx?tsr-split=component"],"sourcesContent":["import type { AdminCrudEmbeddedInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { ModelUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEmbeddedInputForm({\n formProps,\n name,\n model,\n embeddedFormOptions,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definition } = useProjectDefinition();\n\n const foreignRelationOptions = ModelUtils.getRelationsToModel(\n definition,\n model.id,\n ).map((r) => ({\n label: `${r.relation.foreignRelationName} (${r.model.name})`,\n value: r.relation.foreignId,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEmbeddedInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Relation Name\"\n control={controlTyped}\n name={`${prefix}.modelRelationRef`}\n options={foreignRelationOptions}\n />\n <SelectFieldController\n label=\"Embedded Form\"\n control={controlTyped}\n name={`${prefix}.embeddedFormRef`}\n options={embeddedFormOptions}\n />\n </>\n );\n}\n\nexport const adminCrudEmbeddedInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEmbeddedInputConfig>({\n name: 'embedded',\n pluginId: undefined,\n label: 'Embedded',\n getNewInput: () => ({\n label: '',\n type: 'embedded',\n modelRelationRef: '',\n embeddedFormRef: '',\n }),\n Form: AdminCrudEmbeddedInputForm,\n });\n","import type { AdminCrudEmbeddedLocalInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEmbeddedLocalInputForm({\n formProps,\n name,\n model,\n embeddedFormOptions,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n const localRelationOptions =\n model.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEmbeddedLocalInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Relation Name\"\n control={controlTyped}\n name={`${prefix}.localRelationRef`}\n options={localRelationOptions}\n />\n <SelectFieldController\n label=\"Embedded Form\"\n control={controlTyped}\n name={`${prefix}.embeddedFormRef`}\n options={embeddedFormOptions}\n />\n </>\n );\n}\n\nexport const adminCrudEmbeddedLocalInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEmbeddedLocalInputConfig>({\n name: 'embeddedLocal',\n pluginId: undefined,\n label: 'Embedded Local',\n getNewInput: () => ({\n label: '',\n type: 'embeddedLocal',\n embeddedFormRef: '',\n localRelationRef: '',\n }),\n Form: AdminCrudEmbeddedLocalInputForm,\n });\n","import type { AdminCrudEnumInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { createAdminCrudInputWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEnumInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const enumFieldOptions = model.model.fields\n .filter((f) => f.type === 'enum')\n .map((field) => ({\n label: field.name,\n value: field.id,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEnumInputConfig;\n }>;\n\n return (\n <SelectFieldController\n label=\"Enum Field\"\n control={controlTyped}\n name={`${prefix}.modelFieldRef`}\n options={enumFieldOptions}\n />\n );\n}\n\nexport const adminCrudEnumInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEnumInputConfig>({\n name: 'enum',\n pluginId: undefined,\n label: 'Enum',\n getNewInput: () => ({ label: '', type: 'enum', modelFieldRef: '' }),\n Form: AdminCrudEnumInputForm,\n });\n","import type { AdminCrudForeignInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\n\nfunction AdminCrudForeignInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n const localRelationOptions =\n model.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudForeignInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Local Relation Name\"\n control={controlTyped}\n name={`${prefix}.localRelationRef`}\n options={localRelationOptions}\n />\n <InputFieldController\n label=\"Label Expression (e.g. name)\"\n control={controlTyped}\n name={`${prefix}.labelExpression`}\n />\n <InputFieldController\n label=\"Value Expression (e.g. id)\"\n control={controlTyped}\n name={`${prefix}.valueExpression`}\n />\n <InputFieldController\n label=\"Default Label (optional)\"\n control={controlTyped}\n name={`${prefix}.defaultLabel`}\n />\n <InputFieldController\n label=\"Empty Label (optional) - only if field is nullable\"\n control={controlTyped}\n name={`${prefix}.nullLabel`}\n />\n </>\n );\n}\n\nexport const adminCrudForeignInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudForeignInputConfig>({\n name: 'foreign',\n pluginId: undefined,\n label: 'Foreign',\n getNewInput: () => ({\n label: '',\n type: 'foreign',\n localRelationRef: '',\n labelExpression: '',\n valueExpression: '',\n defaultLabel: '',\n nullLabel: '',\n }),\n Form: AdminCrudForeignInputForm,\n });\n","import type { AdminCrudTextInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { createAdminCrudInputWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport {\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\n\nfunction AdminCrudTextInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const fieldOptions = model.model.fields.map((field) => ({\n label: field.name,\n value: field.id,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudTextInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Field\"\n control={controlTyped}\n name={`${prefix}.modelFieldRef`}\n options={fieldOptions}\n />\n <InputFieldController\n label=\"Validation (zod), e.g. z.string().min(1) (optional)\"\n control={controlTyped}\n name={`${prefix}.validation`}\n />\n </>\n );\n}\n\nexport const adminCrudTextInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudTextInputConfig>({\n name: 'text',\n pluginId: undefined,\n label: 'Text',\n getNewInput: () => ({ label: '', type: 'text', modelFieldRef: '' }),\n Form: AdminCrudTextInputForm,\n });\n","import { adminCrudEmbeddedInputWebConfig } from './embedded-input-config.js';\nimport { adminCrudEmbeddedLocalInputWebConfig } from './embedded-local-input-config.js';\nimport { adminCrudEnumInputWebConfig } from './enum-input-config.js';\nimport { adminCrudForeignInputWebConfig } from './foreign-input-config.js';\nimport { adminCrudTextInputWebConfig } from './text-input-config.js';\n\nexport const BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS = [\n adminCrudEmbeddedInputWebConfig,\n adminCrudEmbeddedLocalInputWebConfig,\n adminCrudEnumInputWebConfig,\n adminCrudForeignInputWebConfig,\n adminCrudTextInputWebConfig,\n];\n","import type { AdminCrudSectionConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport { ModelUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n adminCrudInputWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\nimport clsx from 'clsx';\nimport { useFieldArray, useWatch } from 'react-hook-form';\n\nimport { CollapsibleRow } from '#src/components/index.js';\n\nimport { BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS } from './inputs/index.js';\n\nexport type AdminCrudFormConfigInput = Pick<\n AdminCrudSectionConfigInput,\n 'form' | 'modelRef'\n>;\n\ninterface Props {\n className?: string;\n formProps: UseFormReturn<AdminCrudFormConfigInput>;\n embeddedFormOptions: { label: string; value: string }[];\n}\n\nfunction FieldForm({\n idx,\n formProps,\n embeddedFormOptions,\n}: {\n idx: number;\n formProps: UseFormReturn<AdminCrudFormConfigInput>;\n embeddedFormOptions: { label: string; value: string }[];\n}): React.JSX.Element {\n const { control } = formProps;\n const modelRef = useWatch({ control, name: 'modelRef' });\n const { definition, pluginContainer } = useProjectDefinition();\n const model = modelRef\n ? ModelUtils.byIdOrThrow(definition, modelRef)\n : undefined;\n\n const inputWeb = pluginContainer.getPluginSpec(adminCrudInputWebSpec);\n\n const fieldTypeOptions = inputWeb\n .getInputWebConfigs(BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS)\n .map((config) => ({\n label: config.label,\n value: config.name,\n }));\n\n const type = useWatch({\n control,\n name: `form.fields.${idx}.type`,\n });\n const inputWebConfig = inputWeb.getInputWebConfig(\n type,\n BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS,\n );\n const WebForm = inputWebConfig.Form;\n\n return (\n <div className=\"space-y-4\">\n <SelectFieldController\n label=\"Type\"\n control={control}\n options={fieldTypeOptions}\n name={`form.fields.${idx}.type`}\n />\n <InputFieldController\n label=\"Label\"\n control={control}\n name={`form.fields.${idx}.label`}\n />\n {WebForm && model && (\n <WebForm\n formProps={formProps}\n name={`form.fields.${idx}`}\n model={model}\n embeddedFormOptions={embeddedFormOptions}\n pluginId={inputWebConfig.pluginId}\n />\n )}\n </div>\n );\n}\n\nfunction CrudFormFieldsForm({\n className,\n formProps,\n embeddedFormOptions,\n}: Props): React.JSX.Element {\n const { control } = formProps;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'form.fields',\n });\n\n return (\n <div className={clsx('space-y-4', className)}>\n {fields.map((field, idx) => (\n <CollapsibleRow\n key={field.id}\n collapsedContents={\n <div>\n {field.label} ({field.type})\n </div>\n }\n onRemove={() => {\n remove(idx);\n }}\n defaultOpen={!field.label}\n >\n <FieldForm\n key={field.id}\n idx={idx}\n formProps={formProps}\n embeddedFormOptions={embeddedFormOptions}\n />\n </CollapsibleRow>\n ))}\n <Button\n onClick={() => {\n append({ type: 'text', label: '' });\n }}\n >\n Add Field\n </Button>\n </div>\n );\n}\n\nexport default CrudFormFieldsForm;\n","import type { AdminCrudSectionConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n adminCrudDisplayTypes,\n ModelUtils,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\nimport clsx from 'clsx';\nimport { useFieldArray, useWatch } from 'react-hook-form';\n\nimport { CollapsibleRow } from '#src/components/index.js';\n\nexport type AdminCrudTableConfig = Pick<\n AdminCrudSectionConfig,\n 'table' | 'modelRef'\n>;\n\ninterface Props {\n className?: string;\n control: Control<AdminCrudTableConfig>;\n}\n\nfunction ColumnForm({\n idx,\n control,\n fieldOptions,\n localRelationOptions,\n}: {\n idx: number;\n control: Control<AdminCrudTableConfig>;\n fieldOptions: { label: string; value: string }[];\n localRelationOptions: { label: string; value: string }[];\n}): React.JSX.Element {\n const displayTypeOptions = adminCrudDisplayTypes.map((t) => ({\n label: t,\n value: t,\n }));\n const type = useWatch({ control, name: `table.columns.${idx}.display.type` });\n return (\n <div className=\"space-y-4\">\n <SelectFieldController\n label=\"Type\"\n control={control}\n options={displayTypeOptions}\n name={`table.columns.${idx}.display.type`}\n />\n <InputFieldController\n label=\"Label\"\n control={control}\n name={`table.columns.${idx}.label`}\n />\n\n {type === 'text' && (\n <SelectFieldController\n label=\"Field\"\n control={control}\n name={`table.columns.${idx}.display.modelFieldRef`}\n options={fieldOptions}\n />\n )}\n {type === 'foreign' && (\n <>\n <SelectFieldController\n label=\"Local Relation Name\"\n control={control}\n name={`table.columns.${idx}.display.localRelationRef`}\n options={localRelationOptions}\n />\n <InputFieldController\n label=\"Label Expression (e.g. name)\"\n control={control}\n name={`table.columns.${idx}.display.labelExpression`}\n />\n <InputFieldController\n label=\"Value Expression (e.g. id)\"\n control={control}\n name={`table.columns.${idx}.display.valueExpression`}\n />\n </>\n )}\n </div>\n );\n}\n\nfunction CrudTableColumnsForm({\n className,\n control,\n}: Props): React.JSX.Element {\n const modelRef = useWatch({ control, name: 'modelRef' });\n const { definition, definitionContainer } = useProjectDefinition();\n const model = modelRef\n ? ModelUtils.byIdOrThrow(definition, modelRef)\n : undefined;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'table.columns',\n });\n\n const localRelationOptions =\n model?.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n\n const fieldOptions =\n model?.model.fields.map((field) => ({\n label: field.name,\n value: field.id,\n })) ?? [];\n\n return (\n <div className={clsx('space-y-4', className)}>\n {fields.map((field, idx) => (\n <CollapsibleRow\n key={field.id}\n collapsedContents={\n <div>\n {field.label} ({field.display.type})\n </div>\n }\n onRemove={() => {\n remove(idx);\n }}\n defaultOpen={!field.label}\n >\n <ColumnForm\n key={field.id}\n idx={idx}\n control={control}\n fieldOptions={fieldOptions}\n localRelationOptions={localRelationOptions}\n />\n </CollapsibleRow>\n ))}\n <Button\n onClick={() => {\n append({ display: { type: 'text', modelFieldRef: '' }, label: '' });\n }}\n >\n Add Column\n </Button>\n </div>\n );\n}\n\nexport default CrudTableColumnsForm;\n","import type { AdminCrudEmbeddedFormConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormReturn } from 'react-hook-form';\n\nimport { createAdminCrudEmbeddedFormSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useDefinitionSchema,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n CheckboxFieldController,\n InputFieldController,\n SelectFieldController,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n toast,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useId } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport type {\n EmbeddedListFormProps,\n EmbeddedListTableProps,\n} from '#src/components/index.js';\n\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nimport type { AdminCrudFormConfigInput } from './crud-form-fields-form.js';\nimport type { AdminCrudTableConfig } from './crud-table-columns-form.js';\n\nimport CrudFormFieldsForm from './crud-form-fields-form.js';\nimport CrudTableColumnsForm from './crud-table-columns-form.js';\n\nexport function AdminCrudEmbeddedTable({\n items,\n edit,\n remove,\n}: EmbeddedListTableProps<AdminCrudEmbeddedFormConfigInput>): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n return (\n <Table className=\"max-w-6xl\">\n <TableHeader>\n <TableRow>\n <TableHead>Form Name</TableHead>\n <TableHead>Model Name</TableHead>\n <TableHead>Type</TableHead>\n <TableHead>Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, idx) => (\n <TableRow key={item.id}>\n <TableCell>{item.name}</TableCell>\n <TableCell>\n {definitionContainer.nameFromId(item.modelRef)}\n </TableCell>\n <TableCell>{item.type}</TableCell>\n <TableCell className=\"space-x-4\">\n <Button\n variant=\"link\"\n size=\"none\"\n onClick={() => {\n edit(idx);\n }}\n >\n Edit\n </Button>\n <Button\n variant=\"linkDestructive\"\n size=\"none\"\n onClick={() => {\n remove(idx);\n }}\n >\n Remove\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n\nconst TYPE_OPTIONS = [\n { label: 'Object', value: 'object' },\n { label: 'List', value: 'list' },\n];\n\ninterface Props\n extends EmbeddedListFormProps<AdminCrudEmbeddedFormConfigInput> {\n embeddedFormOptions: { label: string; value: string }[];\n}\n\nfunction AdminCrudEmbeddedForm({\n initialData,\n onSubmit,\n embeddedFormOptions,\n}: Props): React.JSX.Element {\n const { definition } = useProjectDefinition();\n const adminCrudEmbeddedFormSchema = useDefinitionSchema(\n createAdminCrudEmbeddedFormSchema,\n );\n const formProps = useForm<AdminCrudEmbeddedFormConfigInput>({\n resolver: zodResolver(adminCrudEmbeddedFormSchema),\n defaultValues: initialData,\n });\n const { handleSubmit, control, watch } = formProps;\n\n const modelOptions = definition.models.map((model) => ({\n label: model.name,\n value: model.id,\n }));\n\n const type = watch('type');\n\n const formId = useId();\n\n return (\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n handleSubmit(onSubmit)(e).catch((error: unknown) => {\n toast.error(logAndFormatError(error));\n });\n }}\n id={formId}\n className=\"space-y-4\"\n >\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <SelectFieldController\n label=\"Type\"\n control={control}\n name=\"type\"\n options={TYPE_OPTIONS}\n />\n <CheckboxFieldController\n label=\"Include ID Field? (useful for list types)\"\n control={control}\n name=\"includeIdField\"\n />\n <SelectFieldController\n label=\"Model\"\n control={control}\n options={modelOptions}\n name=\"modelRef\"\n />\n {type === 'list' && (\n <>\n <h2>Table</h2>\n <CrudTableColumnsForm\n control={control as unknown as Control<AdminCrudTableConfig>}\n />\n </>\n )}\n <h2>Form</h2>\n <CrudFormFieldsForm\n formProps={\n formProps as unknown as UseFormReturn<AdminCrudFormConfigInput>\n }\n embeddedFormOptions={embeddedFormOptions}\n />\n <Button type=\"submit\" form={formId}>\n Save\n </Button>\n </form>\n );\n}\n\nexport default AdminCrudEmbeddedForm;\n","import type { AdminCrudSectionConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormReturn } from 'react-hook-form';\n\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n CheckboxFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\nimport clsx from 'clsx';\nimport { useWatch } from 'react-hook-form';\n\nimport { EmbeddedListInput } from '#src/components/index.js';\n\nimport type { AdminCrudFormConfigInput } from './crud-form-fields-form.js';\nimport type { AdminCrudTableConfig } from './crud-table-columns-form.js';\n\nimport AdminCrudEmbeddedForm, {\n AdminCrudEmbeddedTable,\n} from './admin-crud-embedded-form.js';\nimport CrudFormFieldsForm from './crud-form-fields-form.js';\nimport CrudTableColumnsForm from './crud-table-columns-form.js';\n\ninterface Props {\n className?: string;\n formProps: UseFormReturn<AdminCrudSectionConfigInput>;\n}\n\nfunction AdminCrudSectionForm({\n className,\n formProps,\n}: Props): React.JSX.Element {\n const { control } = formProps;\n const { definition } = useProjectDefinition();\n\n const modelOptions = definition.models.map((model) => ({\n label: model.name,\n value: model.id,\n }));\n\n // TODO: struggles with https://github.com/react-hook-form/react-hook-form/discussions/7354\n\n const embeddedFormOptions =\n useWatch({\n control,\n name: 'embeddedForms',\n })?.map((form) => ({\n label: form.name,\n value: form.id,\n })) ?? [];\n\n // TODO: Update embedded form names when form is added/removed\n\n return (\n <div className={clsx('space-y-4', className)}>\n <SelectFieldController\n label=\"Model\"\n control={control}\n options={modelOptions}\n name=\"modelRef\"\n />\n <CheckboxFieldController\n label=\"Disable Create?\"\n control={control}\n name=\"disableCreate\"\n />\n <h2>Table</h2>\n <CrudTableColumnsForm\n control={control as unknown as Control<AdminCrudTableConfig>}\n />\n <h2>Form</h2>\n <CrudFormFieldsForm\n formProps={\n formProps as unknown as UseFormReturn<AdminCrudFormConfigInput>\n }\n embeddedFormOptions={embeddedFormOptions}\n />\n <h2>Embedded Forms</h2>\n <EmbeddedListInput.LabelledController\n control={control}\n name=\"embeddedForms\"\n renderForm={(formProps) => (\n <AdminCrudEmbeddedForm\n {...formProps}\n embeddedFormOptions={embeddedFormOptions}\n />\n )}\n renderTable={(tableProps) => <AdminCrudEmbeddedTable {...tableProps} />}\n defaultValue={{ type: 'object' }}\n />\n </div>\n );\n}\n\nexport default AdminCrudSectionForm;\n","import type React from 'react';\n\nimport {\n adminSectionEntityType,\n createAdminSectionSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useDefinitionSchema,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n ComboboxFieldController,\n InputFieldController,\n SelectFieldController,\n useConfirmDialog,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, notFound, useNavigate } from '@tanstack/react-router';\nimport { sortBy } from 'es-toolkit';\nimport { useEffect } from 'react';\n\nimport AdminCrudSectionForm from './-components/admin-crud-section-form.js';\n\nconst SECTION_OPTIONS = [{ label: 'Crud', value: 'crud' }];\n\nexport const Route = createFileRoute(\n '/apps/edit/$key/admin/sections/$sectionKey',\n)({\n component: AdminAppEditSectionPage,\n loader: ({ context: { adminDefinition }, params: { sectionKey } }) => {\n const sectionId =\n sectionKey === 'new'\n ? undefined\n : adminSectionEntityType.idFromKey(sectionKey);\n const existingSection = sectionId\n ? adminDefinition.sections?.find((section) => section.id === sectionId)\n : undefined;\n if (sectionId && !existingSection) throw notFound();\n return { adminDefinition, sectionId, existingSection };\n },\n});\n\nfunction AdminAppEditSectionPage(): React.JSX.Element {\n const { requestConfirm } = useConfirmDialog();\n const { key } = Route.useParams();\n const {\n saveDefinitionWithFeedback,\n saveDefinitionWithFeedbackSync,\n isSavingDefinition,\n definition,\n } = useProjectDefinition();\n const navigate = useNavigate();\n const { adminDefinition, sectionId, existingSection } = Route.useLoaderData();\n\n const adminSectionSchema = useDefinitionSchema(createAdminSectionSchema);\n\n const formProps = useResettableForm({\n values: existingSection,\n defaultValues: { type: 'crud' },\n resolver: zodResolver(adminSectionSchema),\n });\n\n const { control, handleSubmit, watch, reset } = formProps;\n\n useEffect(() => {\n reset(existingSection ?? { type: 'crud' });\n }, [reset, existingSection]);\n\n const onSubmit = handleSubmit((data) => {\n const id = data.id || adminSectionEntityType.generateNewId();\n return saveDefinitionWithFeedback(\n (config) => {\n const adminApp = config.apps.find(\n (app) => app.id === adminDefinition.id,\n );\n if (adminApp?.type !== 'admin') {\n throw new Error('Cannot add a section to a non-admin app');\n }\n\n adminApp.sections = sortBy(\n [\n ...(adminApp.sections ?? []).filter(\n (section) => !sectionId || section.id !== sectionId,\n ),\n { ...data, id },\n ],\n [(section) => section.name],\n );\n },\n {\n onSuccess: () => {\n if (!sectionId) {\n navigate({\n to: `/apps/edit/$key/admin/sections/$sectionKey`,\n params: { key, sectionKey: adminSectionEntityType.keyFromId(id) },\n });\n }\n },\n },\n );\n });\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n const type = watch('type');\n\n function handleDelete(): void {\n requestConfirm({\n title: 'Delete Section',\n content: `Are you sure you want to delete ${\n existingSection?.name ?? 'this section'\n }?`,\n onConfirm: () => {\n saveDefinitionWithFeedbackSync(\n (config) => {\n const adminApp = config.apps.find(\n (app) => app.id === adminDefinition.id,\n );\n if (adminApp?.type !== 'admin') {\n throw new Error('Cannot add a section to a non-admin app');\n }\n\n adminApp.sections = (adminApp.sections ?? []).filter(\n (section) => !sectionId || section.id !== sectionId,\n );\n },\n {\n successMessage: 'Successfully deleted section!',\n onSuccess: () => {\n navigate({ to: '..' });\n },\n },\n );\n },\n });\n }\n\n const featureOptions = definition.features.map((f) => ({\n label: f.name,\n value: f.id,\n }));\n\n return (\n <div className=\"p-4\">\n <form onSubmit={onSubmit} className=\"space-y-4\">\n {sectionId && (\n <Button\n variant=\"link\"\n size=\"none\"\n onClick={() => {\n handleDelete();\n }}\n >\n Delete Section\n </Button>\n )}\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <ComboboxFieldController\n label=\"Feature\"\n control={control}\n options={featureOptions}\n name=\"featureRef\"\n />\n <InputFieldController label=\"Icon\" control={control} name=\"icon\" />\n <SelectFieldController\n label=\"Type\"\n control={control}\n name=\"type\"\n options={SECTION_OPTIONS}\n />\n {(() => {\n switch (type as string) {\n case 'crud': {\n return <AdminCrudSectionForm formProps={formProps} />;\n }\n default: {\n return <div>Unsupported type {type}</div>;\n }\n }\n })()}\n <Button type=\"submit\" disabled={isSavingDefinition}>\n Save\n </Button>\n </form>\n </div>\n );\n}\n"],"names":["ModelUtils","importShared","createAdminCrudInputWebConfig","useProjectDefinition","SelectFieldController","AdminCrudEmbeddedInputForm","formProps","name","model","embeddedFormOptions","definition","foreignRelationOptions","r","prefix","controlTyped","jsxs","Fragment","jsx","adminCrudEmbeddedInputWebConfig","AdminCrudEmbeddedLocalInputForm","definitionContainer","localRelationOptions","relation","adminCrudEmbeddedLocalInputWebConfig","AdminCrudEnumInputForm","enumFieldOptions","f","field","adminCrudEnumInputWebConfig","InputFieldController","AdminCrudForeignInputForm","adminCrudForeignInputWebConfig","AdminCrudTextInputForm","fieldOptions","adminCrudTextInputWebConfig","BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS","adminCrudInputWebSpec","Button","FieldForm","idx","control","modelRef","useWatch","pluginContainer","inputWeb","fieldTypeOptions","config","type","inputWebConfig","WebForm","CrudFormFieldsForm","className","fields","append","remove","useFieldArray","clsx","CollapsibleRow","adminCrudDisplayTypes","ColumnForm","displayTypeOptions","t","CrudTableColumnsForm","createAdminCrudEmbeddedFormSchema","useDefinitionSchema","CheckboxFieldController","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","toast","useId","AdminCrudEmbeddedTable","items","edit","item","TYPE_OPTIONS","AdminCrudEmbeddedForm","initialData","onSubmit","adminCrudEmbeddedFormSchema","useForm","zodResolver","handleSubmit","watch","modelOptions","formId","e","error","logAndFormatError","AdminCrudSectionForm","form","EmbeddedListInput","tableProps","adminSectionEntityType","createAdminSectionSchema","useBlockUnsavedChangesNavigate","useResettableForm","ComboboxFieldController","useConfirmDialog","useEffect","SECTION_OPTIONS","label","value","SplitComponent","requestConfirm","key","Route","useParams","saveDefinitionWithFeedback","saveDefinitionWithFeedbackSync","isSavingDefinition","navigate","useNavigate","adminDefinition","sectionId","existingSection","useLoaderData","adminSectionSchema","values","defaultValues","resolver","reset","data","id","generateNewId","adminApp","apps","find","app","Error","sections","sortBy","filter","section","onSuccess","to","params","sectionKey","keyFromId","handleDelete","title","content","onConfirm","successMessage","featureOptions","features","map"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e}from"./index.esm-Bvv3vNQh.js";import{g as v,s as f}from"./index-B7G2CMwL.js";const{authConfigSpec:C,createWebAppSchema:w}=await i("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:A,useDefinitionSchema:k,useProjectDefinition:m,useResettableForm:D}=await i("@baseplate-dev/project-builder-lib/web"),{Button:F,CheckboxFieldController:t,InputFieldController:n,MultiComboboxFieldController:R}=await i("@baseplate-dev/ui-components"),U=function(){const{saveDefinitionWithFeedback:b,isSavingDefinition:u}=m(),{appConfig:s}=v.useLoaderData(),d=k(w),j=D({resolver:f(d),values:s}),{control:o,handleSubmit:x,reset:g}=j,{definition:h,pluginContainer:S}=m(),l=x(a=>b(c=>{c.apps=c.apps.map(r=>r.id===s.id?a:r)}));A({control:o,reset:g,onSubmit:l});const p=S.getPluginSpecOptional(C)?.getAuthRoles(h).map(a=>({label:a.name,value:a.id}));return e.jsx("div",{className:"p-4",children:e.jsxs("form",{onSubmit:l,className:"space-y-4",children:[e.jsx(n,{label:"Name",control:o,name:"name"}),e.jsx(n,{label:"Package Location (optional) e.g. packages/web",control:o,name:"packageLocation"}),e.jsx(n,{label:"Page Title",control:o,name:"title"}),e.jsx(n,{label:"Description Meta Tag",control:o,name:"description"}),e.jsx(t,{label:"Include Auth?",control:o,name:"includeAuth"}),e.jsx(t,{label:"Include Upload Components?",control:o,name:"includeUploadComponents"}),e.jsx(t,{label:"Enable Subscriptions?",control:o,name:"enableSubscriptions"}),p&&e.jsx(R,{label:"Allowed Roles?",control:o,options:p,name:"allowedRoles"}),e.jsx(F,{type:"submit",disabled:u,children:"Save"})]})})};export{U as component};
|
|
2
|
-
//# sourceMappingURL=web-B598C4Bq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web-B598C4Bq.js","sources":["../../src/routes/apps/edit.$key/web.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n authConfigSpec,\n createWebAppSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useDefinitionSchema,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n CheckboxFieldController,\n InputFieldController,\n MultiComboboxFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, notFound, redirect } from '@tanstack/react-router';\n\nexport const Route = createFileRoute('/apps/edit/$key/web')({\n component: WebAppForm,\n loader: ({ context: { app }, params: { key } }) => {\n if (!app) throw notFound();\n if (app.type !== 'web') {\n throw redirect({ to: '/apps/edit/$key', params: { key } });\n }\n return {\n appConfig: app,\n };\n },\n});\n\nfunction WebAppForm(): React.JSX.Element {\n const { saveDefinitionWithFeedback, isSavingDefinition } =\n useProjectDefinition();\n const { appConfig } = Route.useLoaderData();\n\n const webAppSchema = useDefinitionSchema(createWebAppSchema);\n const formProps = useResettableForm({\n resolver: zodResolver(webAppSchema),\n values: appConfig,\n });\n const { control, handleSubmit, reset } = formProps;\n\n const { definition, pluginContainer } = useProjectDefinition();\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.apps = draftConfig.apps.map((app) =>\n app.id === appConfig.id ? data : app,\n );\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n const roleOptions = pluginContainer\n .getPluginSpecOptional(authConfigSpec)\n ?.getAuthRoles(definition)\n .map((role) => ({\n label: role.name,\n value: role.id,\n }));\n\n return (\n <div className=\"p-4\">\n <form onSubmit={onSubmit} className=\"space-y-4\">\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <InputFieldController\n label=\"Package Location (optional) e.g. packages/web\"\n control={control}\n name=\"packageLocation\"\n />\n <InputFieldController\n label=\"Page Title\"\n control={control}\n name=\"title\"\n />\n <InputFieldController\n label=\"Description Meta Tag\"\n control={control}\n name=\"description\"\n />\n <CheckboxFieldController\n label=\"Include Auth?\"\n control={control}\n name=\"includeAuth\"\n />\n <CheckboxFieldController\n label=\"Include Upload Components?\"\n control={control}\n name=\"includeUploadComponents\"\n />\n <CheckboxFieldController\n label=\"Enable Subscriptions?\"\n control={control}\n name=\"enableSubscriptions\"\n />\n {roleOptions && (\n <MultiComboboxFieldController\n label=\"Allowed Roles?\"\n control={control}\n options={roleOptions}\n name=\"allowedRoles\"\n />\n )}\n <Button type=\"submit\" disabled={isSavingDefinition}>\n Save\n </Button>\n </form>\n </div>\n );\n}\n"],"names":["authConfigSpec","createWebAppSchema","importShared","useBlockUnsavedChangesNavigate","useDefinitionSchema","useProjectDefinition","useResettableForm","Button","CheckboxFieldController","InputFieldController","MultiComboboxFieldController","SplitComponent","saveDefinitionWithFeedback","isSavingDefinition","appConfig","Route","useLoaderData","webAppSchema","formProps","resolver","zodResolver","values","control","handleSubmit","reset","definition","pluginContainer","onSubmit","draftConfig","apps","map","app","id","data","roleOptions","getPluginSpecOptional","getAuthRoles","role","label","name","value","jsx"],"mappings":"wJAEA,KAAA,CAAA,eAAAA,EAAA,mBAAAC,CAAA,EAAA,MAAAC,EAAA,oCAAA,EAIA,CAAA,+BAAAC,EAAA,oBAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAJ,EAAA,wCAAA,EAMA,CAAA,OAAAK,EAAA,wBAAAC,EAAA,qBAAAC,EAAA,6BAAAC,CAAA,EAAA,MAAAR,EAAA,8BAAA,EAMsDS,EAAA,UAgBb,CACjC,KAAA,CAAEC,2BAAAA,EAA4BC,mBAAAA,GAClCR,EAAqB,EACjB,CAAES,UAAAA,CAAAA,EAAcC,EAAMC,cAAc,EAEpCC,EAAeb,EAAoBH,CAAkB,EACrDiB,EAAYZ,EAAkB,CAClCa,SAAUC,EAAYH,CAAY,EAClCI,OAAQP,CAAAA,CACT,EACK,CAAEQ,QAAAA,EAASC,aAAAA,EAAcC,MAAAA,CAAAA,EAAUN,EAEnC,CAAEO,WAAAA,EAAYC,gBAAAA,GAAoBrB,EAAqB,EAEvDsB,EAAWJ,EACfX,GAAAA,EAA4CgB,GAAA,CAC9BC,EAAAA,KAAOD,EAAYC,KAAKC,IAAKC,GACvCA,EAAIC,KAAOlB,EAAUkB,GAAKC,EAAOF,CACnC,CAAA,CACD,CACH,EAE+B5B,EAAA,CAAEmB,QAAAA,EAASE,MAAAA,EAAOG,SAAAA,CAAAA,CAAU,EAErDO,MAAAA,EAAcR,EACjBS,sBAAsBnC,CAAc,GACnCoC,aAAaX,CAAU,EACxBK,IAAeO,IAAA,CACdC,MAAOD,EAAKE,KACZC,MAAOH,EAAKL,EAAAA,EACZ,EAGF,OAAAS,EAAA,IAAC,OAAI,UAAU,MACb,gBAAC,OAAK,CAAA,SAAAd,EAAoB,UAAU,YAClC,SAAA,CAAAc,EAAA,IAAChC,EAAqB,CAAA,MAAM,OAAO,QAAAa,EAAkB,KAAK,OAAM,QAC/Db,EACC,CAAA,MAAM,gDACN,QAAAa,EACA,KAAK,kBAAiB,QAEvBb,EACC,CAAA,MAAM,aACN,QAAAa,EACA,KAAK,QAAO,QAEbb,EACC,CAAA,MAAM,uBACN,QAAAa,EACA,KAAK,cAAa,QAEnBd,EACC,CAAA,MAAM,gBACN,QAAAc,EACA,KAAK,cAAa,QAEnBd,EACC,CAAA,MAAM,6BACN,QAAAc,EACA,KAAK,0BAAyB,QAE/Bd,EACC,CAAA,MAAM,wBACN,QAAAc,EACA,KAAK,sBAAqB,EAE3BY,SACExB,EACC,CAAA,MAAM,iBACN,QAAAY,EACA,QAASY,EACT,KAAK,cAER,CAAA,QACA3B,EAAO,CAAA,KAAK,SAAS,SAAUM,EAAmB,SAEnD,MAAA,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAEJ"}
|