@mendylanda/ui 0.4.2 → 0.4.3-dev.69.b44a9721f450

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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Mendy UI
2
2
 
3
- React components by Mendy Landa. My collection currently includes Table and Filters, maintained in one package and shared across projects.
3
+ React components by Mendy Landa. My collection currently includes Table, Filters, and Sheet, maintained in one package and shared across projects.
4
4
 
5
- Use either component independently or connect them. [Documentation and live examples](https://ui.mendylanda.com).
5
+ Use each component independently or connect them. [Documentation and live examples](https://ui.mendylanda.com).
6
6
 
7
7
  ```sh
8
8
  npm install @mendylanda/ui
@@ -131,7 +131,7 @@ See [defaults and app configuration](https://ui.mendylanda.com/docs/defaults) fo
131
131
 
132
132
  ## Localization
133
133
 
134
- English is the default for Table and Filters. Set Hebrew once for built-in text, calendar labels, accessible announcements, and RTL behavior:
134
+ English is the default for Table, Filters, and Sheet. Set Hebrew once for built-in text, calendar labels, accessible announcements, and RTL behavior:
135
135
 
136
136
  ```tsx
137
137
  import { MendyUIProvider } from "@mendylanda/ui";
@@ -143,3 +143,25 @@ import { he } from "@mendylanda/ui/locales/he";
143
143
  ```
144
144
 
145
145
  Use `messages` for individual wording overrides, or `defineLocale` to create a private dictionary with English fallbacks. Complete contributed dictionaries use the `MendyMessages` type. Application labels and values remain application-owned; locale changes preserve IDs and saved state. See [Localization](https://ui.mendylanda.com/docs/localization) for the live English/Hebrew example, Next.js usage, and formatting.
146
+
147
+ ## Sheet
148
+
149
+ Side panels with automatic stacking, pinning, and guarded dismissal.
150
+
151
+ ```tsx
152
+ import { Sheet, SheetProvider } from "@mendylanda/ui/sheet";
153
+
154
+ <SheetProvider>
155
+ <Sheet>
156
+ <Sheet.Trigger>Open project</Sheet.Trigger>
157
+ <Sheet.Content>
158
+ <Sheet.Header title="Project" />
159
+ <Sheet.Body>Project details</Sheet.Body>
160
+ </Sheet.Content>
161
+ </Sheet>
162
+ </SheetProvider>;
163
+ ```
164
+
165
+ Use `useSheetCloseGuard(isDirty)` inside a form to protect unsaved changes. Use `useSheets().open({ id, render })` for instances that survive route navigation, with the provider mounted above the router outlet. Reload restoration is opt-in and stores identifiers, not form drafts. English, Hebrew, logical start/end placement, and reduced motion use the shared library settings.
166
+
167
+ See the [Sheet guide](https://ui.mendylanda.com/docs/components/sheet) for controlled state, composition, persistence, and API details.
@@ -1 +1 @@
1
- export const originalClassNames = {"mui-cb20bd519346":"pointer-events-auto","mui-33228ff7d583":"pointer-events-none","mui-b75af7ef6c4d":"invisible","mui-d42ef1497900":"visible","mui-32fb090591d9":"sr-only","mui-747355bdc2a2":"absolute","mui-992a93455c71":"fixed","mui-d2d9e1f13413":"relative","mui-964a9431ff49":"sticky","mui-ce13093ad8c9":"inset-0","mui-3ba24c062d55":"inset-x-0","mui-eb9e48c5dda9":"inset-y-0","mui-cced28c6dc3f":"start","mui-8368bbb62f66":"start-0","mui-207bd0b3f259":"start-2","mui-cea70f23972e":"start-3","mui-361e48d0308f":"end","mui-aa7bcba08429":"end-0","mui-13422ddc8d83":"end-1","mui-585f4729f611":"end-9","mui-98599e4ee250":"top-0","mui-4e45f4841abb":"top-1/2","mui-30150dd033ab":"bottom-0","mui-a5c36273c0f0":"bottom-2","mui-014aadadffad":"isolate","mui-d7efd1b0b0f9":"z-1","mui-418e44ad4f9e":"z-10","mui-4e8f0a87a0dc":"z-20","mui-fbb62f5cb6fe":"z-30","mui-3eef1ce97dba":"z-50","mui-29a5b1dea191":"col-start-2","mui-a42d519714d6":"container","mui-a2526bc2efa3":"m-0","mui-abba77319850":"-mx-1","mui-1752f11474a6":"mx-auto","mui-d8747231f142":"my-1","mui-958e2cfcf5b6":"-ms-2","mui-291952c2525a":"-ms-px","mui-5cf4ab3b6fa0":"ms-auto","mui-8cc46fa87f41":"-me-1.5","mui-477d8f4dfce9":"me-1","mui-68d781378b03":"me-2","mui-f28fea81a5cd":"mt-2","mui-496aca80e4d8":"block","mui-d1b2a59fbea7":"contents","mui-222f930b8752":"flex","mui-0f2a693e93e2":"grid","mui-e564b4081d7a":"hidden","mui-995cf20a9c45":"inline","mui-123306850fe1":"inline-flex","mui-0d4fc4a78d37":"table","mui-3da89b3ed14b":"field-sizing-content","mui-129d6f9b1e07":"aspect-square","mui-f7d12b41bceb":"size-(--cell-size)","mui-dc797fcc7165":"size-1.5","mui-5e34f5313859":"size-3","mui-61c000c8a98a":"size-3.5","mui-100c22d5776b":"size-4","mui-2bd43fb57913":"size-5","mui-0712570dcc9f":"size-6","mui-79ede756e761":"size-7","mui-ebd37e04d422":"size-8","mui-3ee10ef4c057":"size-9","mui-d0a383a9c24f":"size-10","mui-4dad94bd15e3":"size-auto","mui-a5960ac1d283":"h-(--cell-size)","mui-c7d5500b77ab":"h-0","mui-2edce89ef182":"h-3","mui-099be97e1fa4":"h-4","mui-ce1945804664":"h-6","mui-c8e50836f8a1":"h-7","mui-1fb07b38c63b":"h-8","mui-539ae144f076":"h-9","mui-fdd2f85cad6b":"h-10","mui-a66e9985b093":"h-auto","mui-57c930dc1c31":"h-full","mui-ae2c4b060bb9":"h-px","mui-571ea69568d3":"max-h-(--filter-menu-height)","mui-1f061e70178e":"max-h-(--radix-dropdown-menu-content-available-height)","mui-4d3f1304ebb2":"max-h-(--radix-popover-content-available-height)","mui-da0beef015c9":"max-h-[400px]","mui-80baa5d03af7":"max-h-[calc(var(--filter-menu-height)-2px)]","mui-1326520533f0":"max-h-[min(6rem,calc(var(--filter-menu-height)*0.25))]","mui-fb4a3e97b5bd":"max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height,20rem))]","mui-dcd942c18ddc":"max-h-[var(--radix-dropdown-menu-content-available-height)]","mui-7bd696ca6be3":"max-h-full","mui-410da8dfa8ac":"min-h-0","mui-9974acedf3f7":"min-h-9","mui-8423dc94ee06":"min-h-10","mui-50312c3ce4a3":"min-h-[60px]","mui-d48fe95d4da8":"w-(--cell-size)","mui-d4ea834145ae":"w-2","mui-56bb14cbd1fe":"w-2/3","mui-8867d85ed290":"w-8","mui-4ac4ec8dfbce":"w-40","mui-37535002f0f7":"w-72","mui-a4cce7869436":"w-[300px]","mui-fc6a57ff7553":"w-[var(--mendy-filter-editor-width,19rem)]","mui-0b9c84552e40":"w-[var(--mendy-filter-list-width,var(--mendy-filter-anchor-width,18.75rem))]","mui-4415137b0467":"w-[var(--mendy-filter-menu-width,calc(var(--filter-list-width)_+_var(--mendy-filter-editor-width,19rem)))]","mui-8cfb5a42ef9f":"w-fit","mui-58d0413dd93c":"w-full","mui-91f82aa1df0c":"max-w-[60%]","mui-34055e6f8c1b":"max-w-[calc(100vw-2rem)]","mui-81b198a2db84":"max-w-full","mui-1458e495e3ae":"min-w-(--cell-size)","mui-184ddc11e5f9":"min-w-0","mui-e9ab1547c94d":"min-w-[8rem]","mui-2bf6510f1330":"min-w-full","mui-7bd5bab6d7f4":"flex-1","mui-66b490dd6005":"shrink","mui-27ead27a81df":"shrink-0","mui-adca5146416e":"grow","mui-215061302c50":"border-collapse","mui-3a3774477287":"origin-(--radix-dropdown-menu-content-transform-origin)","mui-5dde0fd996f0":"-translate-y-1/2","mui-4e3f08588318":"-rotate-45","mui-c80411b7591f":"rotate-45","mui-aa214ea38326":"transform","mui-393df0d154e0":"animate-none!","mui-7b3cd77eb999":"animate-pulse","mui-2c14b55d77e6":"animate-spin","mui-2194d094b585":"cursor-col-resize","mui-d343f41ba73e":"cursor-default","mui-f2e47d9c52ad":"cursor-grab","mui-d2fa8848968d":"cursor-pointer","mui-739a9a000791":"touch-none","mui-acd532d8913e":"resize","mui-ae112c903ef8":"resize-y","mui-eeb3a8b33f69":"grid-cols-[min(var(--filter-list-width),calc(100%_-_min(var(--mendy-filter-editor-width,19rem),50%)))_minmax(0,1fr)]","mui-b5985369ee35":"grid-rows-[minmax(0,1fr)]","mui-302c0d124a94":"flex-col","mui-faa8a23c68f6":"flex-wrap","mui-8fd2e2355cbc":"place-content-center","mui-71556df3b421":"items-center","mui-b9677bd1cb66":"items-start","mui-32c92bb1fde4":"justify-between","mui-a503dd374cca":"justify-center","mui-307644c34db6":"justify-end","mui-c62ec162662e":"justify-start","mui-19e97f3f40e6":"gap-1","mui-70007b876865":"gap-1.5","mui-074569488cca":"gap-2","mui-d7db3451d154":"gap-3","mui-90fc3ec35a37":"gap-4","mui-27e6c432192f":"space-y-1","mui-267171770524":"space-y-2","mui-5a3a4ee420c2":"truncate","mui-1a26a0d28420":"overflow-auto","mui-d5111d0e9f48":"overflow-hidden","mui-0fc84a692dad":"overflow-visible","mui-3b82279f859f":"overflow-x-hidden","mui-2368e909f3a5":"overflow-y-auto","mui-998780cdef87":"overscroll-contain","mui-b005d61d0953":"rounded-full","mui-3fa8c572949b":"rounded-md","mui-52417259a4f5":"rounded-none","mui-02e603944040":"rounded-sm","mui-7efd3a0ebfc6":"rounded-s-md","mui-2176687d6745":"rounded-ss-none","mui-7f3780751c2e":"rounded-e-md","mui-c9755c8858d9":"rounded-es-none","mui-4f1a55de40bc":"border","mui-dad556abfe15":"border-0","mui-55860251be20":"border-s","mui-3b6d5fc7b061":"border-e","mui-894c3815a57f":"border-t","mui-bbe39cfb5cc6":"border-b","mui-8450eb0f1857":"border-dashed","mui-163a623b3716":"border-border/50","mui-1267095cdeb7":"border-input","mui-9b76f456b8c9":"border-muted-foreground/50","mui-515f9fdc6db7":"border-primary","mui-292affc1f780":"bg-accent","mui-5b272f3c5076":"bg-background","mui-a943bea85d66":"bg-border","mui-0cf6c2e8fe7e":"bg-current","mui-965cf6587342":"bg-destructive","mui-047624ec0c39":"bg-green-100","mui-6ba846e1630e":"bg-inherit","mui-87ecb59f2d2d":"bg-muted","mui-810ae775809b":"bg-muted-foreground/20","mui-e593c38256e0":"bg-popover","mui-0c2864fba576":"bg-primary","mui-d191cb569aac":"bg-secondary","mui-8fca9236d191":"bg-transparent","mui-04760bcd507f":"p-0","mui-1dee6e3ec67d":"p-1","mui-b97db4a9f432":"p-2","mui-094f5333853b":"p-3","mui-c432836760e3":"p-6","mui-c7902d77ad80":"p-8","mui-56b8f5e0fb12":"px-(--cell-size)","mui-16e909e6f01d":"px-0","mui-1da2e8f173c5":"px-1.5","mui-e7e01cc7f4df":"px-2","mui-0f9e6672913a":"px-3","mui-9513b3968002":"px-4","mui-0194c6e46323":"px-8","mui-1fcf28756bb1":"py-1","mui-a8c1dfb1d4ef":"py-1.5","mui-b5edc3ea7c91":"py-2","mui-d3cea061f2f3":"py-3","mui-96b92a971c95":"py-5","mui-6dd4e62564b2":"ps-2","mui-078d945937da":"ps-8","mui-b2100041c585":"ps-9","mui-b15eee699c4b":"pe-1","mui-05d4103bd67f":"pe-2","mui-a202804a1738":"pe-3","mui-0e14c365f9e8":"pe-9","mui-559069d2c2e5":"pe-16","mui-0a702d97ed7d":"pt-3","mui-05ab12448317":"text-center","mui-10558dbb3a24":"text-end","mui-e9347b78185f":"text-start","mui-757071a1d1c4":"text-base","mui-c74ab393b96d":"text-sm","mui-3992de70b033":"text-xs","mui-5f120ad4b50b":"text-[0.8rem]","mui-761cdb81bddb":"leading-none","mui-daaac3fbf55e":"font-medium","mui-52101fc7d8bb":"font-normal","mui-e1683b3c030a":"tracking-widest","mui-393883c1db68":"[overflow-wrap:anywhere]","mui-37cf9655f30a":"break-words","mui-726fca123972":"whitespace-normal","mui-963f6168b7d6":"whitespace-nowrap","mui-cc209238d847":"text-accent-foreground","mui-5eafab9bbefc":"text-current","mui-887b9502d5c7":"text-destructive","mui-8d4bf2704c8d":"text-destructive-foreground","mui-957a109f887f":"text-foreground","mui-35f35c41d134":"text-muted-foreground","mui-5bd2afe89f0b":"text-popover-foreground","mui-249f14ee5b6b":"text-primary","mui-abd1aaa1f5b2":"text-primary-foreground","mui-80df79ec9bb5":"text-secondary-foreground","mui-944969efb294":"underline","mui-d52f902a57e8":"underline-offset-4","mui-94f91922a10e":"opacity-0","mui-0b5a4d1257ab":"opacity-50","mui-65694092f002":"opacity-100","mui-0d4ca75de41c":"shadow-lg","mui-94ea94fde25f":"shadow-md","mui-89c3006b2722":"shadow-none","mui-7de07d413c13":"shadow-xs","mui-853be6c11609":"ring-2","mui-fd9d0b696aac":"ring-primary","mui-59edd3d33673":"outline-hidden","mui-318678825324":"outline","mui-e42932b7a79c":"blur","mui-e0122edc668b":"drop-shadow-md","mui-dfc3376b8266":"filter","mui-70dd37c11434":"transition","mui-eae178841c68":"transition-colors","mui-2cdd01663c76":"transition-opacity","mui-2b48746f4314":"transition-shadow","mui-b4b2fd95f324":"transition-none","mui-b30fc56058b6":"outline-none","mui-78905c9e865c":"select-none","mui-d80b6593dae5":"[--cell-size:--spacing(8)]","mui-82c2977beb8e":"[--cell-size:min(2rem,calc((100vw-3.5rem)/7))]","mui-d7d803c609c5":"[--filter-list-width:var(--mendy-filter-list-width,var(--mendy-filter-anchor-width,13rem))]","mui-971625533e56":"[--filter-menu-height:min(var(--mendy-filter-menu-max-height,44rem),var(--radix-dropdown-menu-content-available-height,44rem))]","mui-cacb19aa9640":"[scrollbar-width:thin]","mui-14bd99410890":"[unicode-bidi:isolate]","mui-97b1c00ff005":"group-hover:bg-accent","mui-ad936fcbed63":"group","mui-34a57d4b4103":"group-hover:opacity-50","mui-9af9a4182597":"group-data-[disabled=true]:pointer-events-none","mui-272ef88d6a0c":"group-data-[disabled=true]:opacity-50","mui-60052b901494":"group-data-[focused=true]/day:relative","mui-d9c5891363f9":"group/day","mui-3f96bf138f7b":"group-data-[focused=true]/day:z-10","mui-d39eb62b8363":"group-data-[focused=true]/day:border-ring","mui-5892a880410a":"group-data-[focused=true]/day:ring-1","mui-31b75c623c06":"group-data-[focused=true]/day:ring-ring","mui-e6020023567a":"group-data-[highlighted=true]:bg-accent","mui-f0ee83167878":"peer-disabled:cursor-not-allowed","mui-2ffc1d06387e":"peer","mui-25d26df52a1d":"peer-disabled:opacity-50","mui-32713fefe32f":"file:border-0","mui-25a74d576c42":"file:bg-transparent","mui-844abccf1fd0":"file:text-sm","mui-dc43de54f42a":"file:font-medium","mui-20315da78444":"placeholder:text-muted-foreground","mui-3deb00079b4c":"first:border-s-0","mui-37ad15a95595":"hover:bg-accent","mui-bb6a4b3e902d":"hover:bg-destructive/90","mui-5cbdd1b32f1a":"hover:bg-muted/50","mui-4273133a876a":"hover:bg-primary/20","mui-af9ea085901b":"hover:bg-primary/90","mui-099700a5a311":"hover:bg-secondary/80","mui-71863717995b":"hover:bg-transparent","mui-9f1f77b92dcb":"hover:text-accent-foreground","mui-4d6720d47806":"hover:text-foreground","mui-b56720602554":"hover:underline","mui-8da02faac748":"hover:opacity-100","mui-a8c1861c5d03":"focus:bg-accent","mui-a85c4c5d7465":"focus:text-accent-foreground","mui-b906a32b31ee":"focus-visible:border-ring","mui-2f669cfad5aa":"focus-visible:bg-primary/20","mui-b8b1747fa763":"focus-visible:opacity-100","mui-39be5a15b766":"focus-visible:ring-1","mui-355efe22aedb":"focus-visible:ring-2","mui-365a4654f7b1":"focus-visible:ring-[3px]","mui-db549d38ff19":"focus-visible:ring-ring","mui-392a26f4c1b0":"focus-visible:ring-ring/50","mui-a47d391255f3":"focus-visible:outline","mui-1df9125eebaf":"focus-visible:outline-1","mui-a8719ed8b095":"focus-visible:-outline-offset-2","mui-2b1c7d88acff":"focus-visible:outline-primary","mui-223daa83ed2d":"focus-visible:outline-ring","mui-2e357972fc10":"focus-visible:outline-none","mui-50aafa8694bb":"focus-visible:ring-inset","mui-71998ea7a2d0":"active:cursor-grabbing","mui-8d3c1014b967":"disabled:pointer-events-none","mui-db567af109b7":"disabled:cursor-not-allowed","mui-d2e4a66bb430":"disabled:opacity-0!","mui-4600b77303d6":"disabled:opacity-50","mui-978f422895e5":"group-hover:disabled:opacity-50!","mui-7eb7501a2ef0":"has-focus:border-ring","mui-d0449753ba7b":"has-focus:ring-[3px]","mui-fc19c8471f34":"has-focus:ring-ring/50","mui-e288cffc2ef4":"has-[>svg]:px-1.5","mui-3b01ee05b16d":"has-[>svg]:px-2.5","mui-9e08353b774f":"has-[>svg]:px-3","mui-2c0115d1c32a":"aria-disabled:opacity-50","mui-1fac1d7d1df3":"aria-invalid:border-destructive","mui-2d91b4cbc3cb":"aria-invalid:ring-destructive","mui-5491fd0b4dc5":"aria-invalid:ring-destructive/20","mui-2d6703b5473b":"aria-pressed:bg-accent","mui-ff2dcda51a27":"aria-pressed:text-accent-foreground","mui-7d900a71e5ba":"aria-selected:text-muted-foreground","mui-397f5ba426a0":"data-[disabled]:pointer-events-none","mui-9beb654fcb0d":"data-[disabled]:opacity-50","mui-9d7d1760cd8e":"data-[highlighted=true]:bg-accent","mui-1da7bb9a299c":"data-[inset]:ps-8","mui-bbaaa5969856":"data-[more-below=true]:[mask-image:linear-gradient(#000_calc(100%_-_1rem),transparent)]","mui-dfc89afd7885":"data-[navigation=pointer]:focus-visible:ring-0","mui-96308b55e0d6":"data-[range-end=true]:rounded-md","mui-35468f495139":"data-[range-end=true]:rounded-e-md","mui-714051e55e8e":"data-[range-end=true]:bg-primary","mui-c764cebcd540":"data-[range-end=true]:text-primary-foreground","mui-05ec0700cd48":"data-[range-middle=true]:rounded-none","mui-5fb598fb06f4":"data-[range-middle=true]:bg-accent","mui-0813905aa141":"data-[range-middle=true]:text-accent-foreground","mui-8020e31bff67":"data-[range-start=true]:rounded-md","mui-6143f152715b":"data-[range-start=true]:rounded-s-md","mui-f5460d79341c":"data-[range-start=true]:bg-primary","mui-421a7d3e6631":"data-[range-start=true]:text-primary-foreground","mui-a39af81d518c":"data-[selected-single=true]:bg-primary","mui-b6991ab170de":"data-[selected-single=true]:text-primary-foreground","mui-3cc0d07ef843":"data-[selected=true]:rounded-none","mui-89f6aab7a3f8":"data-[side=bottom]:slide-in-from-top-2","mui-3550f48d66b9":"data-[side=left]:slide-in-from-right-2","mui-7720fe004f5c":"data-[side=right]:slide-in-from-left-2","mui-66b560f839de":"data-[side=top]:slide-in-from-bottom-2","mui-20553d55d224":"data-[state=checked]:border-primary","mui-57d6d6401a2f":"data-[state=checked]:bg-primary","mui-7ca12016214f":"data-[state=checked]:text-primary-foreground","mui-d0c2ae8419e1":"data-[state=checked]:opacity-100","mui-9c02852bfc55":"data-[state=checked]:disabled:opacity-100!","mui-37d8a3f448ff":"data-[state=closed]:animate-none!","mui-0cb4489c3645":"data-[state=closed]:animate-out","mui-bb5869ef903b":"data-[state=closed]:fade-out-0","mui-f4cf4be63707":"data-[state=closed]:zoom-out-95","mui-e2ed522ed9b7":"data-[state=indeterminate]:opacity-100","mui-cbd3aed703f7":"data-[state=indeterminate]:disabled:opacity-100!","mui-bae1e782f277":"data-[state=open]:animate-in","mui-4027d9c589b6":"data-[state=open]:bg-accent","mui-1952cd5b00aa":"data-[state=open]:text-accent-foreground","mui-6f73a280432e":"data-[state=open]:text-foreground","mui-790ed041a953":"data-[state=open]:opacity-100","mui-45464a92c1f6":"data-[state=open]:fade-in-0","mui-9ca352480f25":"data-[state=open]:zoom-in-95","mui-f3f7a9c5e1b3":"data-[variant=destructive]:text-destructive","mui-e2bb4ac97190":"data-[variant=destructive]:focus:bg-destructive/10","mui-353a727facfd":"data-[variant=destructive]:focus:text-destructive","mui-237747164b60":"motion-reduce:animate-none","mui-0cc20f4e20c8":"sm:w-[21.875rem]","mui-56760b222da0":"md:flex-row","mui-c05c9b99939d":"md:text-sm","mui-36b12e8339c7":"rtl:rotate-180","mui-d254c96aea74":"dark:bg-green-950","mui-9daa2369a41b":"dark:bg-input/30","mui-b2786f463a62":"dark:hover:text-accent-foreground","mui-c88f65aa011e":"dark:aria-invalid:ring-destructive/40","mui-bd73d819941e":"dark:data-[state=checked]:bg-primary","mui-98a28c2293f7":"dark:data-[variant=destructive]:focus:bg-destructive/20","mui-d78a8526410d":"pointer-coarse:[--cell-size:min(2.5rem,calc((100vw-3.5rem)/7))]","mui-b51243872d85":"sm:pointer-fine:h-8","mui-e771a8b4d87d":"sm:pointer-fine:h-9","mui-aa0e3c036805":"sm:pointer-fine:min-h-8","mui-0288c4ea71ea":"sm:pointer-fine:py-0.5","mui-41d1475cf71a":"sm:pointer-fine:py-1.5","mui-548a450e8e53":"[&_*]:transition-none!","mui-a1c8c43d9be2":"[&_[role^=menuitem]]:min-h-9","mui-b43343fe71c0":"sm:pointer-fine:[&_[role^=menuitem]]:min-h-8","mui-cc310a330231":"[&_button]:font-semibold","mui-b7ff49878425":"[&_button]:underline","mui-d9bdd2c94504":"[&_button]:underline-offset-4","mui-bcae9d37090c":"[&_svg]:pointer-events-none","mui-c77732bd3ab4":"[&_svg]:size-3.5","mui-040e748a3fa0":"[&_svg]:shrink-0","mui-be87a4a64d81":"[&_svg:not([class*='size-'])]:size-3","mui-eb5ef2dbc2d4":"[&_svg:not([class*='size-'])]:size-4","mui-8637dfd54fbb":"[&_svg:not([class*='text-'])]:text-muted-foreground","mui-4f05a238500e":"[&::-webkit-search-cancel-button]:appearance-none","mui-9b9b154fb4bf":"[&:first-child[data-selected=true]_button]:rounded-s-md","mui-13858191ca50":"rtl:**:[.rdp-button\\_next>svg]:rotate-180","mui-a324a7f99932":"rtl:**:[.rdp-button\\_previous>svg]:rotate-180","mui-82b114bbff3d":"data-[variant=destructive]:*:[svg]:text-destructive!","mui-e9494a526550":"[&:last-child[data-selected=true]_button]:rounded-e-md","mui-167d036894df":"[&:nth-child(2)[data-selected=true]_button]:rounded-s-md","mui-f157ee6bae99":"[&>div]:w-full","mui-ba417cf466b0":"[&>span]:text-xs","mui-829c8ef4f9c5":"[&>span]:opacity-70","mui-bf95f682e553":"[&>span:first-child]:mt-[calc(0.5lh-0.4375rem)]","mui-eb740dd32318":"[&>svg]:size-3.5","mui-019fd73c95db":"[&>svg]:text-muted-foreground","mui-fa8e1efead3c":"[@media(hover:none)]:opacity-100","mui-eaedb91f8774":"[@media(hover:none)]:disabled:opacity-100!","mui-b8293c91796c":"[[data-slot=card-content]_&]:bg-transparent","mui-8dd7e6b42262":"[[data-slot=popover-content]_&]:bg-transparent"};
1
+ export const originalClassNames = {"mui-cb20bd519346":"pointer-events-auto","mui-33228ff7d583":"pointer-events-none","mui-b75af7ef6c4d":"invisible","mui-d42ef1497900":"visible","mui-32fb090591d9":"sr-only","mui-747355bdc2a2":"absolute","mui-992a93455c71":"fixed","mui-d2d9e1f13413":"relative","mui-964a9431ff49":"sticky","mui-ce13093ad8c9":"inset-0","mui-3ba24c062d55":"inset-x-0","mui-eb9e48c5dda9":"inset-y-0","mui-cced28c6dc3f":"start","mui-8368bbb62f66":"start-0","mui-69b8e049976d":"start-1/2","mui-207bd0b3f259":"start-2","mui-cea70f23972e":"start-3","mui-361e48d0308f":"end","mui-aa7bcba08429":"end-0","mui-13422ddc8d83":"end-1","mui-585f4729f611":"end-9","mui-98599e4ee250":"top-0","mui-4e45f4841abb":"top-1/2","mui-30150dd033ab":"bottom-0","mui-a5c36273c0f0":"bottom-2","mui-014aadadffad":"isolate","mui-d7efd1b0b0f9":"z-1","mui-418e44ad4f9e":"z-10","mui-4e8f0a87a0dc":"z-20","mui-fbb62f5cb6fe":"z-30","mui-3eef1ce97dba":"z-50","mui-e749b7f89462":"z-[70]","mui-d0957da54446":"z-[71]","mui-29a5b1dea191":"col-start-2","mui-a42d519714d6":"container","mui-a2526bc2efa3":"m-0","mui-abba77319850":"-mx-1","mui-1752f11474a6":"mx-auto","mui-d8747231f142":"my-1","mui-958e2cfcf5b6":"-ms-2","mui-291952c2525a":"-ms-px","mui-5cf4ab3b6fa0":"ms-auto","mui-8cc46fa87f41":"-me-1.5","mui-477d8f4dfce9":"me-1","mui-68d781378b03":"me-2","mui-f28fea81a5cd":"mt-2","mui-496aca80e4d8":"block","mui-d1b2a59fbea7":"contents","mui-222f930b8752":"flex","mui-0f2a693e93e2":"grid","mui-e564b4081d7a":"hidden","mui-995cf20a9c45":"inline","mui-123306850fe1":"inline-flex","mui-0d4fc4a78d37":"table","mui-3da89b3ed14b":"field-sizing-content","mui-129d6f9b1e07":"aspect-square","mui-f7d12b41bceb":"size-(--cell-size)","mui-dc797fcc7165":"size-1.5","mui-5e34f5313859":"size-3","mui-61c000c8a98a":"size-3.5","mui-100c22d5776b":"size-4","mui-2bd43fb57913":"size-5","mui-0712570dcc9f":"size-6","mui-79ede756e761":"size-7","mui-ebd37e04d422":"size-8","mui-3ee10ef4c057":"size-9","mui-d0a383a9c24f":"size-10","mui-4dad94bd15e3":"size-auto","mui-a5960ac1d283":"h-(--cell-size)","mui-c7d5500b77ab":"h-0","mui-2edce89ef182":"h-3","mui-099be97e1fa4":"h-4","mui-ce1945804664":"h-6","mui-c8e50836f8a1":"h-7","mui-1fb07b38c63b":"h-8","mui-539ae144f076":"h-9","mui-fdd2f85cad6b":"h-10","mui-a66e9985b093":"h-auto","mui-57c930dc1c31":"h-full","mui-ae2c4b060bb9":"h-px","mui-571ea69568d3":"max-h-(--filter-menu-height)","mui-1f061e70178e":"max-h-(--radix-dropdown-menu-content-available-height)","mui-4d3f1304ebb2":"max-h-(--radix-popover-content-available-height)","mui-da0beef015c9":"max-h-[400px]","mui-80baa5d03af7":"max-h-[calc(var(--filter-menu-height)-2px)]","mui-1326520533f0":"max-h-[min(6rem,calc(var(--filter-menu-height)*0.25))]","mui-fb4a3e97b5bd":"max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height,20rem))]","mui-dcd942c18ddc":"max-h-[var(--radix-dropdown-menu-content-available-height)]","mui-7bd696ca6be3":"max-h-full","mui-410da8dfa8ac":"min-h-0","mui-9974acedf3f7":"min-h-9","mui-8423dc94ee06":"min-h-10","mui-50312c3ce4a3":"min-h-[60px]","mui-d48fe95d4da8":"w-(--cell-size)","mui-d4ea834145ae":"w-2","mui-56bb14cbd1fe":"w-2/3","mui-8867d85ed290":"w-8","mui-4ac4ec8dfbce":"w-40","mui-37535002f0f7":"w-72","mui-a4cce7869436":"w-[300px]","mui-42be1194a64d":"w-[calc(100%-2rem)]","mui-fc6a57ff7553":"w-[var(--mendy-filter-editor-width,19rem)]","mui-0b9c84552e40":"w-[var(--mendy-filter-list-width,var(--mendy-filter-anchor-width,18.75rem))]","mui-4415137b0467":"w-[var(--mendy-filter-menu-width,calc(var(--filter-list-width)_+_var(--mendy-filter-editor-width,19rem)))]","mui-8cfb5a42ef9f":"w-fit","mui-58d0413dd93c":"w-full","mui-91f82aa1df0c":"max-w-[60%]","mui-34055e6f8c1b":"max-w-[calc(100vw-2rem)]","mui-81b198a2db84":"max-w-full","mui-7b7574448a48":"max-w-md","mui-1458e495e3ae":"min-w-(--cell-size)","mui-184ddc11e5f9":"min-w-0","mui-e9ab1547c94d":"min-w-[8rem]","mui-2bf6510f1330":"min-w-full","mui-7bd5bab6d7f4":"flex-1","mui-66b490dd6005":"shrink","mui-27ead27a81df":"shrink-0","mui-adca5146416e":"grow","mui-215061302c50":"border-collapse","mui-3a3774477287":"origin-(--radix-dropdown-menu-content-transform-origin)","mui-5dde0fd996f0":"-translate-y-1/2","mui-4e3f08588318":"-rotate-45","mui-c80411b7591f":"rotate-45","mui-aa214ea38326":"transform","mui-393df0d154e0":"animate-none!","mui-7b3cd77eb999":"animate-pulse","mui-2c14b55d77e6":"animate-spin","mui-2194d094b585":"cursor-col-resize","mui-d343f41ba73e":"cursor-default","mui-f2e47d9c52ad":"cursor-grab","mui-d2fa8848968d":"cursor-pointer","mui-739a9a000791":"touch-none","mui-acd532d8913e":"resize","mui-ae112c903ef8":"resize-y","mui-eeb3a8b33f69":"grid-cols-[min(var(--filter-list-width),calc(100%_-_min(var(--mendy-filter-editor-width,19rem),50%)))_minmax(0,1fr)]","mui-b5985369ee35":"grid-rows-[minmax(0,1fr)]","mui-302c0d124a94":"flex-col","mui-faa8a23c68f6":"flex-wrap","mui-8fd2e2355cbc":"place-content-center","mui-71556df3b421":"items-center","mui-b9677bd1cb66":"items-start","mui-32c92bb1fde4":"justify-between","mui-a503dd374cca":"justify-center","mui-307644c34db6":"justify-end","mui-c62ec162662e":"justify-start","mui-19e97f3f40e6":"gap-1","mui-70007b876865":"gap-1.5","mui-074569488cca":"gap-2","mui-d7db3451d154":"gap-3","mui-90fc3ec35a37":"gap-4","mui-27e6c432192f":"space-y-1","mui-267171770524":"space-y-2","mui-5a3a4ee420c2":"truncate","mui-1a26a0d28420":"overflow-auto","mui-d5111d0e9f48":"overflow-hidden","mui-0fc84a692dad":"overflow-visible","mui-3b82279f859f":"overflow-x-hidden","mui-2368e909f3a5":"overflow-y-auto","mui-998780cdef87":"overscroll-contain","mui-b005d61d0953":"rounded-full","mui-49abc543ea42":"rounded-lg","mui-3fa8c572949b":"rounded-md","mui-52417259a4f5":"rounded-none","mui-02e603944040":"rounded-sm","mui-7efd3a0ebfc6":"rounded-s-md","mui-2176687d6745":"rounded-ss-none","mui-7f3780751c2e":"rounded-e-md","mui-c9755c8858d9":"rounded-es-none","mui-4f1a55de40bc":"border","mui-dad556abfe15":"border-0","mui-55860251be20":"border-s","mui-3b6d5fc7b061":"border-e","mui-894c3815a57f":"border-t","mui-bbe39cfb5cc6":"border-b","mui-8450eb0f1857":"border-dashed","mui-163a623b3716":"border-border/50","mui-1267095cdeb7":"border-input","mui-9b76f456b8c9":"border-muted-foreground/50","mui-515f9fdc6db7":"border-primary","mui-292affc1f780":"bg-accent","mui-5b272f3c5076":"bg-background","mui-4a30330fe460":"bg-background/60","mui-8e5a84e37552":"bg-background/80","mui-a943bea85d66":"bg-border","mui-0cf6c2e8fe7e":"bg-current","mui-965cf6587342":"bg-destructive","mui-047624ec0c39":"bg-green-100","mui-6ba846e1630e":"bg-inherit","mui-87ecb59f2d2d":"bg-muted","mui-810ae775809b":"bg-muted-foreground/20","mui-e593c38256e0":"bg-popover","mui-0c2864fba576":"bg-primary","mui-d191cb569aac":"bg-secondary","mui-8fca9236d191":"bg-transparent","mui-04760bcd507f":"p-0","mui-1dee6e3ec67d":"p-1","mui-b97db4a9f432":"p-2","mui-094f5333853b":"p-3","mui-014b941a7774":"p-5","mui-c432836760e3":"p-6","mui-c7902d77ad80":"p-8","mui-56b8f5e0fb12":"px-(--cell-size)","mui-16e909e6f01d":"px-0","mui-1da2e8f173c5":"px-1.5","mui-e7e01cc7f4df":"px-2","mui-0f9e6672913a":"px-3","mui-9513b3968002":"px-4","mui-0194c6e46323":"px-8","mui-1fcf28756bb1":"py-1","mui-a8c1dfb1d4ef":"py-1.5","mui-b5edc3ea7c91":"py-2","mui-d3cea061f2f3":"py-3","mui-96b92a971c95":"py-5","mui-6dd4e62564b2":"ps-2","mui-078d945937da":"ps-8","mui-b2100041c585":"ps-9","mui-b15eee699c4b":"pe-1","mui-05d4103bd67f":"pe-2","mui-a202804a1738":"pe-3","mui-0e14c365f9e8":"pe-9","mui-559069d2c2e5":"pe-16","mui-0a702d97ed7d":"pt-3","mui-05ab12448317":"text-center","mui-10558dbb3a24":"text-end","mui-e9347b78185f":"text-start","mui-757071a1d1c4":"text-base","mui-035bd245837f":"text-lg","mui-c74ab393b96d":"text-sm","mui-3992de70b033":"text-xs","mui-5f120ad4b50b":"text-[0.8rem]","mui-761cdb81bddb":"leading-none","mui-daaac3fbf55e":"font-medium","mui-52101fc7d8bb":"font-normal","mui-87e86ce38eaf":"font-semibold","mui-e1683b3c030a":"tracking-widest","mui-393883c1db68":"[overflow-wrap:anywhere]","mui-37cf9655f30a":"break-words","mui-726fca123972":"whitespace-normal","mui-963f6168b7d6":"whitespace-nowrap","mui-cc209238d847":"text-accent-foreground","mui-5eafab9bbefc":"text-current","mui-887b9502d5c7":"text-destructive","mui-8d4bf2704c8d":"text-destructive-foreground","mui-957a109f887f":"text-foreground","mui-35f35c41d134":"text-muted-foreground","mui-5bd2afe89f0b":"text-popover-foreground","mui-249f14ee5b6b":"text-primary","mui-abd1aaa1f5b2":"text-primary-foreground","mui-80df79ec9bb5":"text-secondary-foreground","mui-944969efb294":"underline","mui-d52f902a57e8":"underline-offset-4","mui-94f91922a10e":"opacity-0","mui-0b5a4d1257ab":"opacity-50","mui-65694092f002":"opacity-100","mui-0d4ca75de41c":"shadow-lg","mui-94ea94fde25f":"shadow-md","mui-89c3006b2722":"shadow-none","mui-7de07d413c13":"shadow-xs","mui-853be6c11609":"ring-2","mui-fd9d0b696aac":"ring-primary","mui-59edd3d33673":"outline-hidden","mui-318678825324":"outline","mui-e42932b7a79c":"blur","mui-e0122edc668b":"drop-shadow-md","mui-dfc3376b8266":"filter","mui-70dd37c11434":"transition","mui-27986534f992":"transition-[inset-inline-start,inset-inline-end]","mui-55fc320dcf4a":"transition-[padding]","mui-eae178841c68":"transition-colors","mui-2cdd01663c76":"transition-opacity","mui-2b48746f4314":"transition-shadow","mui-b4b2fd95f324":"transition-none","mui-f07df86364db":"duration-300","mui-b30fc56058b6":"outline-none","mui-78905c9e865c":"select-none","mui-d80b6593dae5":"[--cell-size:--spacing(8)]","mui-82c2977beb8e":"[--cell-size:min(2rem,calc((100vw-3.5rem)/7))]","mui-d7d803c609c5":"[--filter-list-width:var(--mendy-filter-list-width,var(--mendy-filter-anchor-width,13rem))]","mui-971625533e56":"[--filter-menu-height:min(var(--mendy-filter-menu-max-height,44rem),var(--radix-dropdown-menu-content-available-height,44rem))]","mui-cacb19aa9640":"[scrollbar-width:thin]","mui-14bd99410890":"[unicode-bidi:isolate]","mui-97b1c00ff005":"group-hover:bg-accent","mui-ad936fcbed63":"group","mui-34a57d4b4103":"group-hover:opacity-50","mui-9af9a4182597":"group-data-[disabled=true]:pointer-events-none","mui-272ef88d6a0c":"group-data-[disabled=true]:opacity-50","mui-60052b901494":"group-data-[focused=true]/day:relative","mui-d9c5891363f9":"group/day","mui-3f96bf138f7b":"group-data-[focused=true]/day:z-10","mui-d39eb62b8363":"group-data-[focused=true]/day:border-ring","mui-5892a880410a":"group-data-[focused=true]/day:ring-1","mui-31b75c623c06":"group-data-[focused=true]/day:ring-ring","mui-e6020023567a":"group-data-[highlighted=true]:bg-accent","mui-f0ee83167878":"peer-disabled:cursor-not-allowed","mui-2ffc1d06387e":"peer","mui-25d26df52a1d":"peer-disabled:opacity-50","mui-32713fefe32f":"file:border-0","mui-25a74d576c42":"file:bg-transparent","mui-844abccf1fd0":"file:text-sm","mui-dc43de54f42a":"file:font-medium","mui-20315da78444":"placeholder:text-muted-foreground","mui-3deb00079b4c":"first:border-s-0","mui-37ad15a95595":"hover:bg-accent","mui-bb6a4b3e902d":"hover:bg-destructive/90","mui-5cbdd1b32f1a":"hover:bg-muted/50","mui-4273133a876a":"hover:bg-primary/20","mui-af9ea085901b":"hover:bg-primary/90","mui-099700a5a311":"hover:bg-secondary/80","mui-71863717995b":"hover:bg-transparent","mui-9f1f77b92dcb":"hover:text-accent-foreground","mui-4d6720d47806":"hover:text-foreground","mui-b56720602554":"hover:underline","mui-8da02faac748":"hover:opacity-100","mui-a8c1861c5d03":"focus:bg-accent","mui-a85c4c5d7465":"focus:text-accent-foreground","mui-b906a32b31ee":"focus-visible:border-ring","mui-2f669cfad5aa":"focus-visible:bg-primary/20","mui-b8b1747fa763":"focus-visible:opacity-100","mui-39be5a15b766":"focus-visible:ring-1","mui-355efe22aedb":"focus-visible:ring-2","mui-365a4654f7b1":"focus-visible:ring-[3px]","mui-db549d38ff19":"focus-visible:ring-ring","mui-392a26f4c1b0":"focus-visible:ring-ring/50","mui-a47d391255f3":"focus-visible:outline","mui-1df9125eebaf":"focus-visible:outline-1","mui-a8719ed8b095":"focus-visible:-outline-offset-2","mui-2b1c7d88acff":"focus-visible:outline-primary","mui-223daa83ed2d":"focus-visible:outline-ring","mui-2e357972fc10":"focus-visible:outline-none","mui-50aafa8694bb":"focus-visible:ring-inset","mui-71998ea7a2d0":"active:cursor-grabbing","mui-8d3c1014b967":"disabled:pointer-events-none","mui-db567af109b7":"disabled:cursor-not-allowed","mui-d2e4a66bb430":"disabled:opacity-0!","mui-4600b77303d6":"disabled:opacity-50","mui-978f422895e5":"group-hover:disabled:opacity-50!","mui-7eb7501a2ef0":"has-focus:border-ring","mui-d0449753ba7b":"has-focus:ring-[3px]","mui-fc19c8471f34":"has-focus:ring-ring/50","mui-e288cffc2ef4":"has-[>svg]:px-1.5","mui-3b01ee05b16d":"has-[>svg]:px-2.5","mui-9e08353b774f":"has-[>svg]:px-3","mui-2c0115d1c32a":"aria-disabled:opacity-50","mui-1fac1d7d1df3":"aria-invalid:border-destructive","mui-2d91b4cbc3cb":"aria-invalid:ring-destructive","mui-5491fd0b4dc5":"aria-invalid:ring-destructive/20","mui-2d6703b5473b":"aria-pressed:bg-accent","mui-ff2dcda51a27":"aria-pressed:text-accent-foreground","mui-7d900a71e5ba":"aria-selected:text-muted-foreground","mui-397f5ba426a0":"data-[disabled]:pointer-events-none","mui-9beb654fcb0d":"data-[disabled]:opacity-50","mui-9d7d1760cd8e":"data-[highlighted=true]:bg-accent","mui-1da7bb9a299c":"data-[inset]:ps-8","mui-bbaaa5969856":"data-[more-below=true]:[mask-image:linear-gradient(#000_calc(100%_-_1rem),transparent)]","mui-dfc89afd7885":"data-[navigation=pointer]:focus-visible:ring-0","mui-96308b55e0d6":"data-[range-end=true]:rounded-md","mui-35468f495139":"data-[range-end=true]:rounded-e-md","mui-714051e55e8e":"data-[range-end=true]:bg-primary","mui-c764cebcd540":"data-[range-end=true]:text-primary-foreground","mui-05ec0700cd48":"data-[range-middle=true]:rounded-none","mui-5fb598fb06f4":"data-[range-middle=true]:bg-accent","mui-0813905aa141":"data-[range-middle=true]:text-accent-foreground","mui-8020e31bff67":"data-[range-start=true]:rounded-md","mui-6143f152715b":"data-[range-start=true]:rounded-s-md","mui-f5460d79341c":"data-[range-start=true]:bg-primary","mui-421a7d3e6631":"data-[range-start=true]:text-primary-foreground","mui-a39af81d518c":"data-[selected-single=true]:bg-primary","mui-b6991ab170de":"data-[selected-single=true]:text-primary-foreground","mui-3cc0d07ef843":"data-[selected=true]:rounded-none","mui-89f6aab7a3f8":"data-[side=bottom]:slide-in-from-top-2","mui-3550f48d66b9":"data-[side=left]:slide-in-from-right-2","mui-7720fe004f5c":"data-[side=right]:slide-in-from-left-2","mui-66b560f839de":"data-[side=top]:slide-in-from-bottom-2","mui-20553d55d224":"data-[state=checked]:border-primary","mui-57d6d6401a2f":"data-[state=checked]:bg-primary","mui-7ca12016214f":"data-[state=checked]:text-primary-foreground","mui-d0c2ae8419e1":"data-[state=checked]:opacity-100","mui-9c02852bfc55":"data-[state=checked]:disabled:opacity-100!","mui-37d8a3f448ff":"data-[state=closed]:animate-none!","mui-0cb4489c3645":"data-[state=closed]:animate-out","mui-afc0930525cc":"data-[state=closed]:duration-200","mui-bb5869ef903b":"data-[state=closed]:fade-out-0","mui-f4cf4be63707":"data-[state=closed]:zoom-out-95","mui-5984dbdad10e":"data-[state=closed]:slide-out-to-left","mui-bddf3012e102":"data-[state=closed]:slide-out-to-right","mui-e2ed522ed9b7":"data-[state=indeterminate]:opacity-100","mui-cbd3aed703f7":"data-[state=indeterminate]:disabled:opacity-100!","mui-bae1e782f277":"data-[state=open]:animate-in","mui-4027d9c589b6":"data-[state=open]:bg-accent","mui-1952cd5b00aa":"data-[state=open]:text-accent-foreground","mui-6f73a280432e":"data-[state=open]:text-foreground","mui-790ed041a953":"data-[state=open]:opacity-100","mui-f1c50715f473":"data-[state=open]:duration-300","mui-45464a92c1f6":"data-[state=open]:fade-in-0","mui-9ca352480f25":"data-[state=open]:zoom-in-95","mui-55ef7b573ebd":"data-[state=open]:slide-in-from-left","mui-783958b1d2bd":"data-[state=open]:slide-in-from-right","mui-f3f7a9c5e1b3":"data-[variant=destructive]:text-destructive","mui-e2bb4ac97190":"data-[variant=destructive]:focus:bg-destructive/10","mui-353a727facfd":"data-[variant=destructive]:focus:text-destructive","mui-237747164b60":"motion-reduce:animate-none","mui-b2ed949e45a3":"motion-reduce:transition-none","mui-1129583edd8e":"data-[state=closed]:motion-reduce:animate-none","mui-c94eb5dd463e":"data-[state=open]:motion-reduce:animate-none","mui-0cc20f4e20c8":"sm:w-[21.875rem]","mui-56760b222da0":"md:flex-row","mui-44cb2048f000":"md:p-0","mui-d946caa1a695":"md:p-4","mui-c05c9b99939d":"md:text-sm","mui-36b12e8339c7":"rtl:rotate-180","mui-d254c96aea74":"dark:bg-green-950","mui-9daa2369a41b":"dark:bg-input/30","mui-b2786f463a62":"dark:hover:text-accent-foreground","mui-c88f65aa011e":"dark:aria-invalid:ring-destructive/40","mui-bd73d819941e":"dark:data-[state=checked]:bg-primary","mui-98a28c2293f7":"dark:data-[variant=destructive]:focus:bg-destructive/20","mui-d78a8526410d":"pointer-coarse:[--cell-size:min(2.5rem,calc((100vw-3.5rem)/7))]","mui-b51243872d85":"sm:pointer-fine:h-8","mui-e771a8b4d87d":"sm:pointer-fine:h-9","mui-aa0e3c036805":"sm:pointer-fine:min-h-8","mui-0288c4ea71ea":"sm:pointer-fine:py-0.5","mui-41d1475cf71a":"sm:pointer-fine:py-1.5","mui-548a450e8e53":"[&_*]:transition-none!","mui-a1c8c43d9be2":"[&_[role^=menuitem]]:min-h-9","mui-b43343fe71c0":"sm:pointer-fine:[&_[role^=menuitem]]:min-h-8","mui-cc310a330231":"[&_button]:font-semibold","mui-b7ff49878425":"[&_button]:underline","mui-d9bdd2c94504":"[&_button]:underline-offset-4","mui-bcae9d37090c":"[&_svg]:pointer-events-none","mui-c77732bd3ab4":"[&_svg]:size-3.5","mui-040e748a3fa0":"[&_svg]:shrink-0","mui-be87a4a64d81":"[&_svg:not([class*='size-'])]:size-3","mui-eb5ef2dbc2d4":"[&_svg:not([class*='size-'])]:size-4","mui-8637dfd54fbb":"[&_svg:not([class*='text-'])]:text-muted-foreground","mui-4f05a238500e":"[&::-webkit-search-cancel-button]:appearance-none","mui-9b9b154fb4bf":"[&:first-child[data-selected=true]_button]:rounded-s-md","mui-13858191ca50":"rtl:**:[.rdp-button\\_next>svg]:rotate-180","mui-a324a7f99932":"rtl:**:[.rdp-button\\_previous>svg]:rotate-180","mui-82b114bbff3d":"data-[variant=destructive]:*:[svg]:text-destructive!","mui-e9494a526550":"[&:last-child[data-selected=true]_button]:rounded-e-md","mui-167d036894df":"[&:nth-child(2)[data-selected=true]_button]:rounded-s-md","mui-f157ee6bae99":"[&>div]:w-full","mui-ba417cf466b0":"[&>span]:text-xs","mui-829c8ef4f9c5":"[&>span]:opacity-70","mui-bf95f682e553":"[&>span:first-child]:mt-[calc(0.5lh-0.4375rem)]","mui-eb740dd32318":"[&>svg]:size-3.5","mui-019fd73c95db":"[&>svg]:text-muted-foreground","mui-fa8e1efead3c":"[@media(hover:none)]:opacity-100","mui-eaedb91f8774":"[@media(hover:none)]:disabled:opacity-100!","mui-b8293c91796c":"[[data-slot=card-content]_&]:bg-transparent","mui-8dd7e6b42262":"[[data-slot=popover-content]_&]:bg-transparent"};
@@ -65,6 +65,11 @@ export function FilterMenuPanel({ sections, selectedId, onSelect, onClose, ancho
65
65
  });
66
66
  useEffect(() => {
67
67
  const frame = requestAnimationFrame(() => {
68
+ const active = document.activeElement;
69
+ // A slow frame must not reset navigation or an editor the user already entered.
70
+ if (active !== content.current &&
71
+ (content.current?.contains(active) || editor.current?.contains(active)))
72
+ return;
68
73
  const first = rows.current.get(initialSelection.current ?? "") ??
69
74
  [...rows.current.values()].find((button) => !button.disabled);
70
75
  (first ?? content.current)?.focus();
@@ -1,5 +1,13 @@
1
1
  import type { MendyLocale } from "../locale.js";
2
2
  export declare const englishMessages: {
3
+ readonly sheetClose: "Close sheet";
4
+ readonly sheetPin: "Pin sheet";
5
+ readonly sheetUnpin: "Unpin sheet";
6
+ readonly sheetUnsavedTitle: "Unsaved changes";
7
+ readonly sheetUnsavedDescription: "Your changes will be lost if you close this sheet.";
8
+ readonly sheetUnsavedPinDescription: "Pin this sheet to keep your changes while you use the page, or discard them and close it.";
9
+ readonly sheetKeepEditing: "Keep editing";
10
+ readonly sheetDiscard: "Discard changes";
3
11
  readonly search: "Search";
4
12
  readonly searchOrFilter: "Search or filter";
5
13
  readonly clearSearch: "Clear search";
@@ -1,4 +1,12 @@
1
1
  export const englishMessages = {
2
+ sheetClose: "Close sheet",
3
+ sheetPin: "Pin sheet",
4
+ sheetUnpin: "Unpin sheet",
5
+ sheetUnsavedTitle: "Unsaved changes",
6
+ sheetUnsavedDescription: "Your changes will be lost if you close this sheet.",
7
+ sheetUnsavedPinDescription: "Pin this sheet to keep your changes while you use the page, or discard them and close it.",
8
+ sheetKeepEditing: "Keep editing",
9
+ sheetDiscard: "Discard changes",
2
10
  search: "Search",
3
11
  searchOrFilter: "Search or filter",
4
12
  clearSearch: "Clear search",
@@ -3,6 +3,14 @@ export declare const he: {
3
3
  code: string;
4
4
  direction: "rtl";
5
5
  messages: {
6
+ sheetClose: string;
7
+ sheetPin: string;
8
+ sheetUnpin: string;
9
+ sheetUnsavedTitle: string;
10
+ sheetUnsavedDescription: string;
11
+ sheetUnsavedPinDescription: string;
12
+ sheetKeepEditing: string;
13
+ sheetDiscard: string;
6
14
  search: string;
7
15
  searchOrFilter: string;
8
16
  clearSearch: string;
@@ -3,6 +3,14 @@ export const he = {
3
3
  code: "he-IL",
4
4
  direction: "rtl",
5
5
  messages: {
6
+ sheetClose: "סגירת החלונית",
7
+ sheetPin: "הצמדת החלונית",
8
+ sheetUnpin: "ביטול הצמדת החלונית",
9
+ sheetUnsavedTitle: "שינויים שלא נשמרו",
10
+ sheetUnsavedDescription: "השינויים שלך יאבדו אם החלונית תיסגר.",
11
+ sheetUnsavedPinDescription: "אפשר להצמיד את החלונית כדי לשמור את השינויים בזמן השימוש בעמוד, או לבטל אותם ולסגור אותה.",
12
+ sheetKeepEditing: "המשך עריכה",
13
+ sheetDiscard: "ביטול השינויים",
6
14
  search: "חיפוש",
7
15
  searchOrFilter: "חיפוש או סינון",
8
16
  clearSearch: "ניקוי החיפוש",
@@ -0,0 +1,7 @@
1
+ import type { ComponentProps } from "react";
2
+ import * as Dialog from "@radix-ui/react-dialog";
3
+ export interface SheetContentProps extends ComponentProps<typeof Dialog.Content> {
4
+ /** Disable opening and repositioning motion for this sheet. */
5
+ animation?: boolean;
6
+ }
7
+ export declare function SheetContent({ children, className, style, animation, onEscapeKeyDown, onInteractOutside, onOpenAutoFocus, onCloseAutoFocus, ref, ...props }: SheetContentProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useContext } from "react";
4
+ import * as Dialog from "@radix-ui/react-dialog";
5
+ import { FocusScope } from "@radix-ui/react-focus-scope";
6
+ import { useMendyLocale } from "../locale-context.js";
7
+ import { cn } from "../utils.js";
8
+ import { SheetStackContext, useSheetInstance } from "./context.js";
9
+ import { useSheetFocus } from "./use-sheet-focus.js";
10
+ export function SheetContent({ children, className, style, animation, onEscapeKeyDown, onInteractOutside, onOpenAutoFocus, onCloseAutoFocus, ref, ...props }) {
11
+ const stack = useContext(SheetStackContext);
12
+ const instance = useSheetInstance();
13
+ const { direction, code } = useMendyLocale();
14
+ const layout = instance.layout;
15
+ const hasAnimation = animation ?? stack.animation;
16
+ const covered = Boolean(layout?.covered);
17
+ const focus = useSheetFocus({ onOpenAutoFocus, onCloseAutoFocus });
18
+ if (!stack.container)
19
+ return null;
20
+ return (_jsx(Dialog.Portal, { container: stack.container, children: _jsx(Dialog.Content, { ...props, ref: (node) => {
21
+ instance.contentRef.current = node;
22
+ if (typeof ref === "function")
23
+ return ref(node);
24
+ if (ref)
25
+ ref.current = node;
26
+ }, "data-mendy-ui": "", "data-mendy-sheet-content": "", "data-sheet-id": instance.id, "data-side": instance.side, "data-pinned": layout?.pinned || undefined, "data-covered": covered || undefined, dir: direction, lang: code, "aria-hidden": covered || undefined, inert: covered || undefined, "aria-modal": layout?.modal || undefined, "aria-describedby": Object.hasOwn(props, "aria-describedby")
27
+ ? props["aria-describedby"]
28
+ : instance.descriptionId, ...presentation(instance, direction, hasAnimation, className, style), onOpenAutoFocus: focus.onOpen, onCloseAutoFocus: focus.onClose, onEscapeKeyDown: (event) => {
29
+ onEscapeKeyDown?.(event);
30
+ if (event.defaultPrevented)
31
+ return;
32
+ event.preventDefault();
33
+ stack.store.closeTop("escape");
34
+ }, onInteractOutside: (event) => {
35
+ onInteractOutside?.(event);
36
+ // The shared backdrop dismisses exactly one sheet, never a neighboring sheet or popup.
37
+ event.preventDefault();
38
+ }, children: _jsx(FocusScope, { asChild: true, loop: layout?.modal, trapped: layout?.modal && instance.open, onMountAutoFocus: (event) => event.preventDefault(), onUnmountAutoFocus: (event) => event.preventDefault(), children: _jsx("div", { className: cn("mui-222f930b8752 mui-57c930dc1c31 mui-410da8dfa8ac mui-302c0d124a94 mui-d5111d0e9f48 mui-49abc543ea42 mui-4f1a55de40bc mui-5b272f3c5076 mui-957a109f887f mui-0d4ca75de41c", layout?.pinned && "mui-52417259a4f5 mui-89c3006b2722"), children: children }) }) }) }));
39
+ }
40
+ function presentation({ layout, width, side }, direction, hasAnimation, className, style) {
41
+ const covered = Boolean(layout?.covered);
42
+ return {
43
+ className: cn("mui-cb20bd519346 mui-992a93455c71 mui-eb9e48c5dda9 mui-222f930b8752 mui-184ddc11e5f9 mui-302c0d124a94 mui-04760bcd507f mui-b30fc56058b6 mui-d946caa1a695", layout?.pinned && "mui-44cb2048f000", hasAnimation && "mui-27986534f992 mui-f07df86364db mui-b2ed949e45a3 mui-bae1e782f277 mui-0cb4489c3645 mui-f1c50715f473 mui-afc0930525cc mui-c94eb5dd463e mui-1129583edd8e", hasAnimation &&
44
+ (side === "end") === (direction === "ltr") && "mui-783958b1d2bd mui-bddf3012e102", hasAnimation &&
45
+ (side === "start") === (direction === "ltr") && "mui-55ef7b573ebd mui-5984dbdad10e", className),
46
+ style: {
47
+ ...style,
48
+ width: layout?.width ?? width,
49
+ maxWidth: style?.maxWidth ?? "100vw",
50
+ insetInlineStart: side === "start" ? (layout?.offset ?? 0) : undefined,
51
+ insetInlineEnd: side === "end" ? (layout?.offset ?? 0) : undefined,
52
+ zIndex: layout?.pinned ? 60 : layout?.top ? 52 : 51,
53
+ visibility: covered ? "hidden" : undefined,
54
+ },
55
+ };
56
+ }
@@ -0,0 +1,67 @@
1
+ import type { RefObject } from "react";
2
+ import type { SheetStore } from "./store.js";
3
+ import type { SheetCloseReason, SheetLayout, SheetSide } from "./types.js";
4
+ export declare const SheetStackContext: import("react").Context<{
5
+ store: SheetStore;
6
+ container: HTMLElement | null;
7
+ animation: boolean;
8
+ pageRef: RefObject<HTMLDivElement | null>;
9
+ } | null>;
10
+ export interface SheetGuardMessages {
11
+ title?: string;
12
+ description?: string;
13
+ confirm?: string;
14
+ cancel?: string;
15
+ }
16
+ export declare const SheetInstanceContext: import("react").Context<{
17
+ id: string;
18
+ open: boolean;
19
+ pinned: boolean;
20
+ pinnable: boolean;
21
+ side: SheetSide;
22
+ width: number;
23
+ descriptionId?: string;
24
+ registerDescription: (id: string) => () => void;
25
+ layout?: SheetLayout;
26
+ contentRef: RefObject<HTMLDivElement | null>;
27
+ triggerRef: RefObject<HTMLButtonElement | null>;
28
+ requestClose: (reason?: SheetCloseReason) => void;
29
+ setOpen: (open: boolean) => void;
30
+ setPinned: (pinned: boolean) => void;
31
+ registerGuard: (read: () => {
32
+ dirty: boolean;
33
+ messages?: SheetGuardMessages;
34
+ }) => () => void;
35
+ } | null>;
36
+ export declare function useSheetInstance(): {
37
+ id: string;
38
+ open: boolean;
39
+ pinned: boolean;
40
+ pinnable: boolean;
41
+ side: SheetSide;
42
+ width: number;
43
+ descriptionId?: string;
44
+ registerDescription: (id: string) => () => void;
45
+ layout?: SheetLayout;
46
+ contentRef: RefObject<HTMLDivElement | null>;
47
+ triggerRef: RefObject<HTMLButtonElement | null>;
48
+ requestClose: (reason?: SheetCloseReason) => void;
49
+ setOpen: (open: boolean) => void;
50
+ setPinned: (pinned: boolean) => void;
51
+ registerGuard: (read: () => {
52
+ dirty: boolean;
53
+ messages?: SheetGuardMessages;
54
+ }) => () => void;
55
+ };
56
+ export declare const SheetControlsContext: import("react").Context<{
57
+ open: boolean;
58
+ pinned: boolean;
59
+ docked: boolean;
60
+ close: (reason?: SheetCloseReason) => void;
61
+ pin: () => void;
62
+ unpin: () => void;
63
+ registerGuard: (read: () => {
64
+ dirty: boolean;
65
+ messages?: SheetGuardMessages;
66
+ }) => () => void;
67
+ } | null>;
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { createContext, useContext } from "react";
3
+ export const SheetStackContext = createContext(null);
4
+ export const SheetInstanceContext = createContext(null);
5
+ export function useSheetInstance() {
6
+ const value = useContext(SheetInstanceContext);
7
+ if (!value)
8
+ throw new Error("Sheet components must be inside a Sheet.");
9
+ return value;
10
+ }
11
+ export const SheetControlsContext = createContext(null);
@@ -0,0 +1,19 @@
1
+ import { SheetRoot } from "./root.js";
2
+ import { SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPin, SheetTitle, SheetTrigger } from "./parts.js";
3
+ export declare const Sheet: typeof SheetRoot & {
4
+ Trigger: typeof SheetTrigger;
5
+ Content: typeof SheetContent;
6
+ Header: typeof SheetHeader;
7
+ Body: typeof SheetBody;
8
+ Footer: typeof SheetFooter;
9
+ Title: typeof SheetTitle;
10
+ Description: typeof SheetDescription;
11
+ Close: typeof SheetClose;
12
+ Pin: typeof SheetPin;
13
+ };
14
+ export * from "./parts.js";
15
+ export * from "./provider.js";
16
+ export { useSheetCloseGuard } from "./sheet-guard.js";
17
+ export type { SheetGuardMessages } from "./context.js";
18
+ export type { SheetProps } from "./root.js";
19
+ export type { SheetSide, SheetCloseReason, SheetController, SheetJson, SheetRecord, SheetPersistence, OpenSheetOptions, } from "./types.js";
@@ -0,0 +1,16 @@
1
+ import { SheetRoot } from "./root.js";
2
+ import { SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPin, SheetTitle, SheetTrigger, } from "./parts.js";
3
+ export const Sheet = Object.assign(SheetRoot, {
4
+ Trigger: SheetTrigger,
5
+ Content: SheetContent,
6
+ Header: SheetHeader,
7
+ Body: SheetBody,
8
+ Footer: SheetFooter,
9
+ Title: SheetTitle,
10
+ Description: SheetDescription,
11
+ Close: SheetClose,
12
+ Pin: SheetPin,
13
+ });
14
+ export * from "./parts.js";
15
+ export * from "./provider.js";
16
+ export { useSheetCloseGuard } from "./sheet-guard.js";
@@ -0,0 +1,19 @@
1
+ import type { SheetLayout, SheetSide } from "./types.js";
2
+ export interface SheetEntry {
3
+ id: string;
4
+ side: SheetSide;
5
+ width: number;
6
+ order: number;
7
+ requestedOrder?: number;
8
+ pinOrder: number;
9
+ pinned: boolean;
10
+ pinnable: boolean;
11
+ }
12
+ export interface StackLayout {
13
+ sheets: ReadonlyMap<string, SheetLayout>;
14
+ startWidth: number;
15
+ endWidth: number;
16
+ hasOverlay: boolean;
17
+ }
18
+ /** Pure geometry; no DOM reads while opening, pinning, or changing the stack. */
19
+ export declare function layoutSheets(entries: readonly SheetEntry[], viewport: number): StackLayout;
@@ -0,0 +1,48 @@
1
+ /** Pure geometry; no DOM reads while opening, pinning, or changing the stack. */
2
+ export function layoutSheets(entries, viewport) {
3
+ const width = Math.max(0, viewport);
4
+ const mobile = width < 768;
5
+ const ordered = [...entries].sort((a, b) => a.order - b.order);
6
+ // If the rail would consume the viewport, keep pin intent but show a normal stack.
7
+ const requestedPins = ordered.filter((entry) => entry.pinned);
8
+ const pinTotal = requestedPins.reduce((sum, entry) => sum + entry.width, 0);
9
+ const pinsFit = !mobile && pinTotal <= Math.max(0, width - 320);
10
+ const pins = pinsFit ? requestedPins.sort((a, b) => a.pinOrder - b.pinOrder) : [];
11
+ const pinIds = new Set(pins.map((entry) => entry.id));
12
+ const floating = ordered.filter((entry) => !pinIds.has(entry.id));
13
+ const reserved = pins.reduce((sum, entry) => sum + entry.width, 0);
14
+ const available = Math.max(0, width - reserved);
15
+ const tiled = !mobile && floating.reduce((sum, entry) => sum + entry.width, 0) <= available;
16
+ const top = floating.at(-1)?.id ?? pins.at(-1)?.id;
17
+ const visibleCount = pins.length + (tiled ? floating.length : Math.min(1, floating.length));
18
+ const offsets = { start: 0, end: 0 };
19
+ const sheets = new Map();
20
+ for (const entry of pins) {
21
+ sheets.set(entry.id, {
22
+ offset: offsets[entry.side],
23
+ width: entry.width,
24
+ pinned: true,
25
+ covered: false,
26
+ top: entry.id === top,
27
+ canPin: true,
28
+ modal: false,
29
+ });
30
+ offsets[entry.side] += entry.width;
31
+ }
32
+ const startWidth = offsets.start;
33
+ const endWidth = offsets.end;
34
+ for (const entry of [...floating].reverse()) {
35
+ sheets.set(entry.id, {
36
+ offset: offsets[entry.side],
37
+ width: mobile ? width : Math.min(entry.width, available),
38
+ pinned: false,
39
+ covered: !tiled && entry.id !== top,
40
+ top: entry.id === top,
41
+ canPin: !mobile && entry.pinnable && reserved + entry.width <= width - 320,
42
+ modal: visibleCount === 1 && entry.id === top,
43
+ });
44
+ if (tiled)
45
+ offsets[entry.side] += entry.width;
46
+ }
47
+ return { sheets, startWidth, endWidth, hasOverlay: floating.length > 0 };
48
+ }
@@ -0,0 +1,29 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ import * as Dialog from "@radix-ui/react-dialog";
3
+ import { Button } from "../customization.js";
4
+ export declare function SheetTrigger({ ref, ...props }: ComponentProps<typeof Dialog.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ export { SheetContent } from "./content.js";
6
+ export type { SheetContentProps } from "./content.js";
7
+ export declare function SheetClose({ onClick, ...props }: ComponentProps<typeof Dialog.Close>): import("react/jsx-runtime").JSX.Element;
8
+ export declare function SheetPin({ onClick, ...props }: ComponentProps<typeof Button>): import("react/jsx-runtime").JSX.Element | null;
9
+ export interface SheetHeaderProps extends Omit<ComponentProps<"div">, "title"> {
10
+ title?: ReactNode;
11
+ description?: ReactNode;
12
+ /** Extra application actions beside the standard controls. */
13
+ actions?: ReactNode;
14
+ controls?: boolean;
15
+ }
16
+ export declare function SheetHeader({ title, description, actions, controls, children, className, ...props }: SheetHeaderProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function SheetTitle({ className, ...props }: ComponentProps<typeof Dialog.Title>): import("react/jsx-runtime").JSX.Element;
18
+ export declare function SheetDescription({ className, ...props }: ComponentProps<typeof Dialog.Description>): import("react/jsx-runtime").JSX.Element;
19
+ export declare function SheetBody({ className, ...props }: ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
20
+ export declare function SheetFooter({ className, ...props }: ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
21
+ /** Local sheet controls for custom headers and forms. */
22
+ export declare function useSheet(): {
23
+ open: boolean;
24
+ pinned: boolean;
25
+ docked: boolean;
26
+ close: (reason?: import("./types.js").SheetCloseReason) => void;
27
+ pin: () => void;
28
+ unpin: () => void;
29
+ };
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useContext, useId, useLayoutEffect, useMemo } from "react";
4
+ import * as Dialog from "@radix-ui/react-dialog";
5
+ import { Pin, PinOff, X } from "lucide-react";
6
+ import { Button } from "../customization.js";
7
+ import { useMendyLocale } from "../locale-context.js";
8
+ import { cn } from "../utils.js";
9
+ import { SheetControlsContext, useSheetInstance } from "./context.js";
10
+ export function SheetTrigger({ ref, ...props }) {
11
+ const { triggerRef } = useSheetInstance();
12
+ return (_jsx(Dialog.Trigger, { ...props, ref: (node) => {
13
+ triggerRef.current = node;
14
+ if (typeof ref === "function")
15
+ return ref(node);
16
+ if (ref)
17
+ ref.current = node;
18
+ } }));
19
+ }
20
+ export { SheetContent } from "./content.js";
21
+ export function SheetClose({ onClick, ...props }) {
22
+ const instance = useSheetInstance();
23
+ return (_jsx(Dialog.Close, { ...props, onClick: (event) => {
24
+ onClick?.(event);
25
+ if (event.defaultPrevented)
26
+ return;
27
+ event.preventDefault();
28
+ instance.requestClose("close-button");
29
+ } }));
30
+ }
31
+ export function SheetPin({ onClick, ...props }) {
32
+ const instance = useSheetInstance();
33
+ const { t } = useMendyLocale();
34
+ if (!instance.pinned && !instance.layout?.canPin)
35
+ return null;
36
+ return (_jsx(Button, { type: "button", variant: "ghost", size: "icon", ...props, "aria-label": props["aria-label"] ?? t(instance.pinned ? "sheetUnpin" : "sheetPin"), "aria-pressed": instance.pinned, "aria-keyshortcuts": instance.pinned ? undefined : "P", title: props.title ?? (instance.pinned ? t("sheetUnpin") : `${t("sheetPin")} (P)`), onClick: (event) => {
37
+ onClick?.(event);
38
+ if (!event.defaultPrevented)
39
+ instance.setPinned(!instance.pinned);
40
+ }, children: props.children ??
41
+ (instance.pinned ? _jsx(PinOff, { "aria-hidden": "true" }) : _jsx(Pin, { "aria-hidden": "true" })) }));
42
+ }
43
+ export function SheetHeader({ title, description, actions, controls = true, children, className, ...props }) {
44
+ const { t } = useMendyLocale();
45
+ return (_jsxs("div", { ...props, className: cn("mui-222f930b8752 mui-27ead27a81df mui-b9677bd1cb66 mui-d7db3451d154 mui-bbe39cfb5cc6 mui-014b941a7774", className), children: [_jsxs("div", { className: "mui-184ddc11e5f9 mui-7bd5bab6d7f4 mui-27e6c432192f", children: [title !== undefined && _jsx(SheetTitle, { children: title }), description !== undefined && _jsx(SheetDescription, { children: description }), children] }), (actions || controls) && (_jsxs("div", { className: "mui-222f930b8752 mui-27ead27a81df mui-71556df3b421 mui-19e97f3f40e6", children: [actions, controls && (_jsxs(_Fragment, { children: [_jsx(SheetPin, {}), _jsx(SheetClose, { asChild: true, children: _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": t("sheetClose"), children: _jsx(X, { "aria-hidden": "true" }) }) })] }))] }))] }));
46
+ }
47
+ export function SheetTitle({ className, ...props }) {
48
+ return _jsx(Dialog.Title, { ...props, className: cn("mui-035bd245837f mui-87e86ce38eaf", className) });
49
+ }
50
+ export function SheetDescription({ className, ...props }) {
51
+ const instance = useSheetInstance();
52
+ const generatedId = useId();
53
+ const id = props.id ?? generatedId;
54
+ useLayoutEffect(() => instance.registerDescription(id), [instance.registerDescription, id]);
55
+ return (_jsx(Dialog.Description, { ...props, id: id, className: cn("mui-c74ab393b96d mui-35f35c41d134", className) }));
56
+ }
57
+ export function SheetBody({ className, ...props }) {
58
+ return (_jsx("div", { ...props, className: cn("mui-410da8dfa8ac mui-7bd5bab6d7f4 mui-2368e909f3a5 mui-998780cdef87 mui-014b941a7774", className) }));
59
+ }
60
+ export function SheetFooter({ className, ...props }) {
61
+ return (_jsx("div", { ...props, className: cn("mui-222f930b8752 mui-27ead27a81df mui-faa8a23c68f6 mui-71556df3b421 mui-307644c34db6 mui-074569488cca mui-894c3815a57f mui-014b941a7774", className) }));
62
+ }
63
+ /** Local sheet controls for custom headers and forms. */
64
+ export function useSheet() {
65
+ const value = useContext(SheetControlsContext);
66
+ if (!value)
67
+ throw new Error("useSheet must be inside a Sheet.");
68
+ return useMemo(() => ({
69
+ open: value.open,
70
+ pinned: value.pinned,
71
+ docked: value.docked,
72
+ close: value.close,
73
+ pin: value.pin,
74
+ unpin: value.unpin,
75
+ }), [value]);
76
+ }
@@ -0,0 +1,8 @@
1
+ import type { SheetRecord, SheetSide } from "./types.js";
2
+ interface StoredSheetRecord extends SheetRecord {
3
+ side?: SheetSide;
4
+ width?: number;
5
+ }
6
+ /** Treat storage as untrusted input. Resolvers still validate their own payloads. */
7
+ export declare function readSheetRecords(value: string | null): StoredSheetRecord[];
8
+ export {};