@mendylanda/ui 0.3.2-dev.56.581b055ea0a9 → 0.3.2-dev.58.0ef9785a4046
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 +15 -0
- package/dist/calendar-locale.d.ts +7 -0
- package/dist/calendar-locale.js +31 -0
- package/dist/class-names.js +1 -1
- package/dist/customization.d.ts +6 -1
- package/dist/customization.js +20 -2
- package/dist/filters/filter-bar.d.ts +1 -1
- package/dist/filters/filter-bar.js +56 -30
- package/dist/filters/filter-collection.js +3 -1
- package/dist/filters/filter-date-editor.js +5 -3
- package/dist/filters/filter-definition.d.ts +3 -2
- package/dist/filters/filter-definition.js +5 -6
- package/dist/filters/filter-menu-focus.js +1 -1
- package/dist/filters/filter-menu-panel.js +13 -9
- package/dist/filters/filter-select-editor.js +6 -4
- package/dist/filters/filter-text-editor.js +5 -3
- package/dist/filters/filters.js +8 -5
- package/dist/filters/index.d.ts +3 -0
- package/dist/filters/index.js +2 -0
- package/dist/filters/use-filter-options.d.ts +1 -1
- package/dist/filters/use-filter-options.js +13 -7
- package/dist/filters/use-filters.js +6 -2
- package/dist/filters/use-url-filters.js +9 -7
- package/dist/locale-context.d.ts +29 -0
- package/dist/locale-context.js +8 -0
- package/dist/locale.d.ts +37 -0
- package/dist/locale.js +26 -0
- package/dist/locales/en.d.ts +113 -0
- package/dist/locales/en.js +112 -0
- package/dist/locales/he.d.ts +116 -0
- package/dist/locales/he.js +116 -0
- package/dist/primitives/calendar.d.ts +1 -1
- package/dist/primitives/calendar.js +15 -10
- package/dist/primitives/dropdown-menu.js +7 -5
- package/dist/primitives/popover.js +3 -1
- package/dist/styles.css +39 -39
- package/dist/styles.tailwind3.css +39 -39
- package/dist/table/table-column-settings.js +27 -13
- package/dist/table/table-controls.js +21 -8
- package/dist/table/table-feedback.js +6 -3
- package/dist/table/table-frame.js +3 -1
- package/dist/table/table-layout.d.ts +1 -1
- package/dist/table/table-layout.js +5 -5
- package/dist/table/table-loading.js +3 -1
- package/dist/table/table-parts.js +15 -11
- package/dist/table/table-view.js +6 -4
- package/dist/table/use-column-window.js +1 -1
- package/dist/table/use-data-table.js +3 -0
- package/dist/table/use-table-interaction.js +12 -8
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -128,3 +128,18 @@ Opening the menu shows the category list without choosing a filter. Focusing a c
|
|
|
128
128
|
`FilterBar` and composed `FilterList` show Clear all after the chips when a removable filter is active. It clears filters and search. Search-only bars use the input’s clear control and hide the filter menu when no menu fields are available. Set `showClear={false}` to opt out. Choice search is enabled by default; use `searchable: false` for short lists. Menu selections keep the menu open, and selecting the current single choice again clears it. Chip editor popups open instantly; `editorAnimation` opts into their animation.
|
|
129
129
|
|
|
130
130
|
See [defaults and app configuration](https://ui.mendylanda.com/docs/defaults) for the full behavior and [system reference](https://ui.mendylanda.com/docs/system) for query adapters, selected-label loading, grouped fields, and custom editors.
|
|
131
|
+
|
|
132
|
+
## Localization
|
|
133
|
+
|
|
134
|
+
English is the default for Table and Filters. Set Hebrew once for built-in text, calendar labels, accessible announcements, and RTL behavior:
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
import { MendyUIProvider } from "@mendylanda/ui";
|
|
138
|
+
import { he } from "@mendylanda/ui/locales/he";
|
|
139
|
+
|
|
140
|
+
<MendyUIProvider locale={he}>
|
|
141
|
+
<YourTablesAndFilters />
|
|
142
|
+
</MendyUIProvider>;
|
|
143
|
+
```
|
|
144
|
+
|
|
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.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Formatters, Labels } from "react-day-picker";
|
|
2
|
+
import type { createLocale } from "./locale.js";
|
|
3
|
+
/** Gregorian dates remain the data contract; Intl only changes their presentation. */
|
|
4
|
+
export declare function calendarLocale(locale: ReturnType<typeof createLocale>, timeZone?: string): {
|
|
5
|
+
formatters: Partial<Formatters>;
|
|
6
|
+
labels: Partial<Labels>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Gregorian dates remain the data contract; Intl only changes their presentation. */
|
|
2
|
+
export function calendarLocale(locale, timeZone) {
|
|
3
|
+
const format = (options) => new Intl.DateTimeFormat(locale.code, { calendar: "gregory", timeZone, ...options }).format;
|
|
4
|
+
const caption = format({ month: "long", year: "numeric" });
|
|
5
|
+
const day = format({ dateStyle: "full" });
|
|
6
|
+
const { t } = locale;
|
|
7
|
+
const formatters = {
|
|
8
|
+
formatCaption: caption,
|
|
9
|
+
formatMonthDropdown: format({ month: "long" }),
|
|
10
|
+
formatYearDropdown: format({ year: "numeric" }),
|
|
11
|
+
formatDay: format({ day: "numeric" }),
|
|
12
|
+
formatWeekdayName: format({ weekday: "short" }),
|
|
13
|
+
formatWeekNumber: (week) => locale.number(week),
|
|
14
|
+
formatWeekNumberHeader: () => t("weekNumberHeader"),
|
|
15
|
+
};
|
|
16
|
+
const labels = {
|
|
17
|
+
labelNext: () => t("nextMonth"),
|
|
18
|
+
labelPrevious: () => t("previousMonth"),
|
|
19
|
+
labelMonthDropdown: () => t("monthDropdown"),
|
|
20
|
+
labelYearDropdown: () => t("yearDropdown"),
|
|
21
|
+
labelGrid: caption,
|
|
22
|
+
labelGridcell: day,
|
|
23
|
+
labelDayButton: (date, modifiers) => [modifiers.today && t("today"), day(date), modifiers.selected && t("selected")]
|
|
24
|
+
.filter(Boolean)
|
|
25
|
+
.join(", "),
|
|
26
|
+
labelWeekday: format({ weekday: "long" }),
|
|
27
|
+
labelWeekNumber: (week) => t("weekNumber", { week }),
|
|
28
|
+
labelWeekNumberHeader: () => t("weekNumberHeader"),
|
|
29
|
+
};
|
|
30
|
+
return { formatters, labels };
|
|
31
|
+
}
|
package/dist/class-names.js
CHANGED
|
@@ -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-d2d9e1f13413":"relative","mui-964a9431ff49":"sticky","mui-ce13093ad8c9":"inset-0","mui-3ba24c062d55":"inset-x-0","mui-eb9e48c5dda9":"inset-y-0","mui-cced28c6dc3f":"start","mui-207bd0b3f259":"start-2","mui-cea70f23972e":"start-3","mui-361e48d0308f":"end","mui-13422ddc8d83":"end-1","mui-585f4729f611":"end-9","mui-98599e4ee250":"top-0","mui-4e45f4841abb":"top-1/2","mui-a74c4477017c":"right-0","mui-30150dd033ab":"bottom-0","mui-a5c36273c0f0":"bottom-2","mui-635702706586":"left-0","mui-014aadadffad":"isolate","mui-d7efd1b0b0f9":"z-1","mui-418e44ad4f9e":"z-10","mui-4e8f0a87a0dc":"z-20","mui-fbb62f5cb6fe":"z-30","mui-3eef1ce97dba":"z-50","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-8cc46fa87f41":"-me-1.5","mui-477d8f4dfce9":"me-1","mui-68d781378b03":"me-2","mui-f28fea81a5cd":"mt-2","mui-cc51bda60e7e":"ml-auto","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-b31810dbd8a9":"rounded-s-none","mui-10c0bae8cba9":"rounded-l-md","mui-34bbd346e74c":"rounded-r-md","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-078d945937da":"ps-8","mui-b2100041c585":"ps-9","mui-05d4103bd67f":"pe-2","mui-a202804a1738":"pe-3","mui-0e14c365f9e8":"pe-9","mui-559069d2c2e5":"pe-16","mui-0a702d97ed7d":"pt-3","mui-1a52da5bc88c":"pr-1","mui-f5d8e661d857":"pl-2","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-6fa6a8ade7c4":"data-[inset]:pl-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-a55dbe6f3eec":"data-[range-end=true]:rounded-r-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-ab65911baf1d":"data-[range-start=true]:rounded-l-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-74ab31abd804":"[&:first-child[data-selected=true]_button]:rounded-l-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-6ee0c74de40c":"[&:last-child[data-selected=true]_button]:rounded-r-md","mui-6162ab70efb5":"[&:nth-child(2)[data-selected=true]_button]:rounded-l-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-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-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-b31810dbd8a9":"rounded-s-none","mui-7f3780751c2e":"rounded-e-md","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"};
|
package/dist/customization.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ComponentProps, ComponentType, ReactNode } from "react";
|
|
2
|
+
import type { MendyLocale, MendyMessages } from "./locale.js";
|
|
2
3
|
import { Button as DefaultButton } from "./primitives/button.js";
|
|
3
4
|
import { Input as DefaultInput } from "./primitives/input.js";
|
|
4
5
|
import { Textarea as DefaultTextarea } from "./primitives/textarea.js";
|
|
@@ -14,6 +15,10 @@ export interface MendyUIComponents {
|
|
|
14
15
|
export type FilterPart = "root" | "search" | "searchInput" | "menuTrigger" | "menu" | "menuList" | "menuRow" | "menuHeader" | "editor" | "chip" | "chipTrigger" | "chipRemove" | "option" | "clear";
|
|
15
16
|
export type FilterClassNames = Partial<Record<FilterPart, string>>;
|
|
16
17
|
export interface MendyUIOptions {
|
|
18
|
+
locale?: MendyLocale;
|
|
19
|
+
/** Override individual messages, inheriting the surrounding locale. */
|
|
20
|
+
messages?: Partial<MendyMessages>;
|
|
21
|
+
dir?: "ltr" | "rtl";
|
|
17
22
|
/** Desktop editor placement. Phones always use one panel with Back. */
|
|
18
23
|
menuLayout?: "connected" | "anchored";
|
|
19
24
|
/** Animate chip editor popups. Off by default; chip entrance motion is independent. */
|
|
@@ -24,7 +29,7 @@ export interface MendyUIOptions {
|
|
|
24
29
|
portalContainer?: HTMLElement | null;
|
|
25
30
|
}
|
|
26
31
|
/** Nested providers inherit defaults; local settings override matching keys. */
|
|
27
|
-
export declare function MendyUIProvider({ children, components, classNames, portalContainer, menuLayout, editorAnimation, }: MendyUIOptions & {
|
|
32
|
+
export declare function MendyUIProvider({ children, components, classNames, portalContainer, menuLayout, editorAnimation, locale, messages, dir, }: MendyUIOptions & {
|
|
28
33
|
children: ReactNode;
|
|
29
34
|
}): import("react/jsx-runtime").JSX.Element;
|
|
30
35
|
export declare function useMendyUI(): MendyUIOptions;
|
package/dist/customization.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useContext, useMemo } from "react";
|
|
4
|
+
import { DirectionProvider } from "@radix-ui/react-direction";
|
|
5
|
+
import { createLocale } from "./locale.js";
|
|
6
|
+
import { LocaleContext, useMendyLocale } from "./locale-context.js";
|
|
4
7
|
import { Button as DefaultButton } from "./primitives/button.js";
|
|
5
8
|
import { Input as DefaultInput } from "./primitives/input.js";
|
|
6
9
|
import { Textarea as DefaultTextarea } from "./primitives/textarea.js";
|
|
@@ -8,8 +11,23 @@ import { Label as DefaultLabel } from "./primitives/label.js";
|
|
|
8
11
|
import { Calendar as DefaultCalendar } from "./primitives/calendar.js";
|
|
9
12
|
const Context = createContext({ menuLayout: "anchored" });
|
|
10
13
|
/** Nested providers inherit defaults; local settings override matching keys. */
|
|
11
|
-
export function MendyUIProvider({ children, components, classNames, portalContainer, menuLayout, editorAnimation, }) {
|
|
14
|
+
export function MendyUIProvider({ children, components, classNames, portalContainer, menuLayout, editorAnimation, locale, messages, dir, }) {
|
|
12
15
|
const parent = useContext(Context);
|
|
16
|
+
const parentLocale = useMendyLocale();
|
|
17
|
+
const localized = useMemo(() => !locale && !messages && !dir
|
|
18
|
+
? parentLocale
|
|
19
|
+
: {
|
|
20
|
+
...createLocale({
|
|
21
|
+
code: locale?.code ?? parentLocale.code,
|
|
22
|
+
weekStartsOn: locale ? locale.weekStartsOn : parentLocale.weekStartsOn,
|
|
23
|
+
firstWeekContainsDate: locale
|
|
24
|
+
? locale.firstWeekContainsDate
|
|
25
|
+
: parentLocale.firstWeekContainsDate,
|
|
26
|
+
direction: dir ?? locale?.direction ?? parentLocale.direction,
|
|
27
|
+
messages: { ...(locale?.messages ?? parentLocale.messages), ...messages },
|
|
28
|
+
}),
|
|
29
|
+
configured: Boolean(locale || messages || dir || parentLocale.configured),
|
|
30
|
+
}, [locale, messages, dir, parentLocale]);
|
|
13
31
|
const value = useMemo(() => ({
|
|
14
32
|
menuLayout: menuLayout ?? parent.menuLayout,
|
|
15
33
|
editorAnimation: editorAnimation ?? parent.editorAnimation,
|
|
@@ -17,7 +35,7 @@ export function MendyUIProvider({ children, components, classNames, portalContai
|
|
|
17
35
|
classNames: { ...parent.classNames, ...classNames },
|
|
18
36
|
portalContainer: portalContainer === undefined ? parent.portalContainer : portalContainer,
|
|
19
37
|
}), [parent, components, classNames, portalContainer, menuLayout, editorAnimation]);
|
|
20
|
-
return _jsx(Context.Provider, { value: value, children: children });
|
|
38
|
+
return (_jsx(LocaleContext.Provider, { value: localized, children: _jsx(DirectionProvider, { dir: localized.direction, children: _jsx(Context.Provider, { value: value, children: children }) }) }));
|
|
21
39
|
}
|
|
22
40
|
export function useMendyUI() {
|
|
23
41
|
return useContext(Context);
|
|
@@ -28,7 +28,7 @@ export declare function FilterBar({ showClear, ...props }: Omit<FilterRootProps,
|
|
|
28
28
|
/** Show Clear all after the applied chips. */
|
|
29
29
|
showClear?: boolean;
|
|
30
30
|
}): import("react/jsx-runtime").JSX.Element;
|
|
31
|
-
export declare function FilterSearch({ label, placeholder
|
|
31
|
+
export declare function FilterSearch({ label, placeholder }: {
|
|
32
32
|
label?: string;
|
|
33
33
|
placeholder?: string;
|
|
34
34
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useMendyLocale } from "../locale-context.js";
|
|
3
4
|
import { FilterCollection } from "./filter-collection.js";
|
|
4
5
|
import { createContext, useContext, useEffect, useLayoutEffect, useMemo, useId, useRef, useState, useSyncExternalStore, } from "react";
|
|
5
6
|
import { ListFilter, Search, X, Circle, ListChecks, Type, Hash, CalendarDays, SlidersHorizontal, Layers, } from "lucide-react";
|
|
@@ -40,6 +41,7 @@ export function FilterRoot({ classNames, ...props }) {
|
|
|
40
41
|
}
|
|
41
42
|
function FilterRootContent({ filters, summary = defaultSummary, suggestions = "always", closeMenuOnApply = false, groups = defaultGroups, disabled: disabledProp = false, className, children, }) {
|
|
42
43
|
const { classNames } = useMendyUI();
|
|
44
|
+
const locale = useMendyLocale();
|
|
43
45
|
// Server HTML must not accept edits that React cannot handle yet. Client-only
|
|
44
46
|
// renders are ready immediately; hydration enables the existing controls.
|
|
45
47
|
const hydrated = useSyncExternalStore(subscribeHydration, clientHydrated, serverHydrated);
|
|
@@ -69,13 +71,14 @@ function FilterRootContent({ filters, summary = defaultSummary, suggestions = "a
|
|
|
69
71
|
ambiguous,
|
|
70
72
|
setAmbiguous,
|
|
71
73
|
}), [filters, summary, suggestions, closeMenuOnApply, groups, disabled, ambiguous, direction]);
|
|
72
|
-
return (_jsx(FilterOptionCache.Provider, { value: cache, children: _jsx(Context.Provider, { value: context, children: _jsx("div", { "data-mendy-ui": "", "aria-busy": !hydrated || undefined, className: cn("mui-222f930b8752 mui-faa8a23c68f6 mui-71556df3b421 mui-074569488cca", classNames?.root, className), children: children }) }) }));
|
|
74
|
+
return (_jsx(FilterOptionCache.Provider, { value: cache, children: _jsx(Context.Provider, { value: context, children: _jsx("div", { "data-mendy-ui": "", dir: locale.configured ? locale.direction : undefined, lang: locale.code, "aria-busy": !hydrated || undefined, className: cn("mui-222f930b8752 mui-faa8a23c68f6 mui-71556df3b421 mui-074569488cca", classNames?.root, className), children: children }) }) }));
|
|
73
75
|
}
|
|
74
76
|
export function FilterBar({ showClear = true, ...props }) {
|
|
75
77
|
return (_jsxs(FilterRoot, { ...props, children: [_jsx(FilterSearch, { label: props.searchLabel, placeholder: props.searchPlaceholder }), _jsx(FilterList, { showClear: showClear }), _jsx(FilterFeedback, {})] }));
|
|
76
78
|
}
|
|
77
|
-
export function FilterSearch({ label
|
|
79
|
+
export function FilterSearch({ label, placeholder }) {
|
|
78
80
|
const { filters, trigger, disabled, setAmbiguous, direction } = useRoot();
|
|
81
|
+
const { t } = useMendyLocale();
|
|
79
82
|
const { classNames } = useMendyUI();
|
|
80
83
|
const anchor = useRef(null);
|
|
81
84
|
const input = useRef(null);
|
|
@@ -95,7 +98,7 @@ export function FilterSearch({ label = "Search", placeholder = "Search or filter
|
|
|
95
98
|
if (!hasMenu && filters.menuOpen)
|
|
96
99
|
filters.setMenuOpen(false);
|
|
97
100
|
}, [filters, hasMenu]);
|
|
98
|
-
return (_jsxs(DropdownMenu, { dir: direction, modal: false, open: hasMenu && filters.menuOpen, onOpenChange: filters.setMenuOpen, children: [_jsxs("div", { ref: anchor, className: cn("mui-d2d9e1f13413 mui-58d0413dd93c mui-81b198a2db84 mui-27ead27a81df mui-0cc20f4e20c8", classNames?.search), children: [_jsx(Search, { className: "mui-33228ff7d583 mui-747355bdc2a2 mui-cea70f23972e mui-4e45f4841abb mui-100c22d5776b mui-5dde0fd996f0", "aria-hidden": "true" }), _jsx(Input, { ref: input, type: "text", role: "searchbox", disabled: disabled, "aria-label": label, placeholder: placeholder, value: filters.search, autoComplete: "off", autoCapitalize: "none", autoCorrect: "off", spellCheck: false, className: cn("mui-58d0413dd93c mui-b2100041c585 mui-c74ab393b96d mui-4f05a238500e", filters.search ? (hasMenu ? "mui-559069d2c2e5" : "mui-0e14c365f9e8") : hasMenu ? "mui-0e14c365f9e8" : "mui-a202804a1738", classNames?.searchInput), onKeyDown: (event) => {
|
|
101
|
+
return (_jsxs(DropdownMenu, { dir: direction, modal: false, open: hasMenu && filters.menuOpen, onOpenChange: filters.setMenuOpen, children: [_jsxs("div", { ref: anchor, className: cn("mui-d2d9e1f13413 mui-58d0413dd93c mui-81b198a2db84 mui-27ead27a81df mui-0cc20f4e20c8", classNames?.search), children: [_jsx(Search, { className: "mui-33228ff7d583 mui-747355bdc2a2 mui-cea70f23972e mui-4e45f4841abb mui-100c22d5776b mui-5dde0fd996f0", "aria-hidden": "true" }), _jsx(Input, { ref: input, type: "text", role: "searchbox", disabled: disabled, "aria-label": label ?? t("search"), placeholder: placeholder ?? t("searchOrFilter"), value: filters.search, autoComplete: "off", autoCapitalize: "none", autoCorrect: "off", spellCheck: false, className: cn("mui-58d0413dd93c mui-b2100041c585 mui-c74ab393b96d mui-4f05a238500e", filters.search ? (hasMenu ? "mui-559069d2c2e5" : "mui-0e14c365f9e8") : hasMenu ? "mui-0e14c365f9e8" : "mui-a202804a1738", classNames?.searchInput), onKeyDown: (event) => {
|
|
99
102
|
shift.current = event.shiftKey;
|
|
100
103
|
if (event.key === "Enter" && !event.nativeEvent.isComposing && !event.shiftKey) {
|
|
101
104
|
const classified = classifyPaste(event.currentTarget.value, filters.entries);
|
|
@@ -131,17 +134,18 @@ export function FilterSearch({ label = "Search", placeholder = "Search or filter
|
|
|
131
134
|
after: element.value.slice(end),
|
|
132
135
|
});
|
|
133
136
|
setAmbiguous(result.ambiguous);
|
|
134
|
-
} }), filters.search && (_jsx(Button, { variant: "ghost", size: "icon", type: "button", disabled: disabled, "aria-label": "
|
|
137
|
+
} }), filters.search && (_jsx(Button, { variant: "ghost", size: "icon", type: "button", disabled: disabled, "aria-label": t("clearSearch"), className: cn("mui-747355bdc2a2 mui-4e45f4841abb mui-222f930b8752 mui-0712570dcc9f mui-5dde0fd996f0 mui-71556df3b421 mui-a503dd374cca mui-02e603944040 mui-0b5a4d1257ab mui-8da02faac748 mui-2e357972fc10 mui-39be5a15b766 mui-db549d38ff19", hasMenu ? "mui-585f4729f611" : "mui-13422ddc8d83"), onClick: () => {
|
|
135
138
|
setAmbiguous([]);
|
|
136
139
|
filters.setSearch("");
|
|
137
140
|
input.current?.focus();
|
|
138
141
|
}, children: _jsx(X, { className: "mui-61c000c8a98a", "aria-hidden": "true" }) })), hasMenu && (_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", ref: (element) => {
|
|
139
142
|
trigger.current = element;
|
|
140
|
-
}, type: "button", disabled: disabled, "aria-label": "
|
|
143
|
+
}, type: "button", disabled: disabled, "aria-label": t("openFilters"), "aria-haspopup": "dialog", className: cn("mui-747355bdc2a2 mui-13422ddc8d83 mui-4e45f4841abb mui-79ede756e761 mui-5dde0fd996f0 mui-2cdd01663c76 mui-8da02faac748 mui-2e357972fc10 mui-39be5a15b766 mui-db549d38ff19 mui-790ed041a953", filters.active.length ? "mui-65694092f002" : "mui-0b5a4d1257ab", classNames?.menuTrigger), children: _jsx(ListFilter, { className: "mui-100c22d5776b", "aria-hidden": "true" }) }) }))] }), hasMenu && filters.menuOpen && _jsx(FilterMenuContent, { anchor: anchor })] }));
|
|
141
144
|
}
|
|
142
145
|
/** A standalone menu button for layouts without a search field. */
|
|
143
|
-
export function FilterMenu({ children
|
|
146
|
+
export function FilterMenu({ children, asChild = false, anchor, }) {
|
|
144
147
|
const { filters, trigger, disabled, direction } = useRoot();
|
|
148
|
+
const { t } = useMendyLocale();
|
|
145
149
|
const { classNames } = useMendyUI();
|
|
146
150
|
const hasMenu = availableMenuEntries(filters).length > 0;
|
|
147
151
|
useEffect(() => {
|
|
@@ -152,7 +156,7 @@ export function FilterMenu({ children = "Add filter", asChild = false, anchor, }
|
|
|
152
156
|
return null;
|
|
153
157
|
return (_jsxs(DropdownMenu, { dir: direction, modal: false, open: filters.menuOpen, onOpenChange: filters.setMenuOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { ref: (element) => {
|
|
154
158
|
trigger.current = element;
|
|
155
|
-
}, asChild: asChild, className: classNames?.menuTrigger, variant: "outline", disabled: disabled, "aria-haspopup": "dialog", children: children }) }), filters.menuOpen && _jsx(FilterMenuContent, { anchor: anchor })] }));
|
|
159
|
+
}, asChild: asChild, className: classNames?.menuTrigger, variant: "outline", disabled: disabled, "aria-haspopup": "dialog", children: children ?? t("addFilter") }) }), filters.menuOpen && _jsx(FilterMenuContent, { anchor: anchor })] }));
|
|
156
160
|
}
|
|
157
161
|
const fieldIcons = {
|
|
158
162
|
single: Circle,
|
|
@@ -165,6 +169,7 @@ const fieldIcons = {
|
|
|
165
169
|
};
|
|
166
170
|
function FilterMenuContent({ anchor }) {
|
|
167
171
|
const { filters, groups, disabled, trigger } = useRoot();
|
|
172
|
+
const { t, code } = useMendyLocale();
|
|
168
173
|
const [clearEpoch, setClearEpoch] = useState(0);
|
|
169
174
|
const [drafts] = useState(() => new Map());
|
|
170
175
|
const grouped = new Set(groups.flatMap((group) => group.fields));
|
|
@@ -199,8 +204,8 @@ function FilterMenuContent({ anchor }) {
|
|
|
199
204
|
icon: section.icon ?? _jsx(Icon, {}),
|
|
200
205
|
editorLabel: single?.editorLabel ??
|
|
201
206
|
(single?.kind === "text" || single?.kind === "tokens"
|
|
202
|
-
?
|
|
203
|
-
:
|
|
207
|
+
? t("setFilter", { label: section.label.toLocaleLowerCase(code) })
|
|
208
|
+
: t("choose", { label: section.label.toLocaleLowerCase(code) })),
|
|
204
209
|
disabled: disabled || section.entries.every((entry) => entry.field.disabled),
|
|
205
210
|
active,
|
|
206
211
|
clear: !disabled && clearable.length
|
|
@@ -229,15 +234,22 @@ export function FilterList({ showClear = true }) {
|
|
|
229
234
|
? [_jsx(FieldChip, { entry: entry }, entry.id)]
|
|
230
235
|
: []), showClear && hasClearableActiveField(filters) && _jsx(FilterClear, {})] }));
|
|
231
236
|
}
|
|
232
|
-
function summarize(field, value, choices) {
|
|
237
|
+
function summarize(field, value, choices, locale) {
|
|
238
|
+
const { t, number, date } = locale;
|
|
233
239
|
if (field.kind === "numberRange" && Array.isArray(value))
|
|
234
|
-
return `${value[0]
|
|
240
|
+
return `${value[0] == null ? t("any") : number(value[0])} – ${value[1] == null ? t("any") : number(value[1])}`;
|
|
235
241
|
if (Array.isArray(value)) {
|
|
236
242
|
const labels = new Map(choices.map((choice) => [choice.value, choice.label]));
|
|
237
|
-
return value.map((item) => labels.get(item) ?? String(item ?? "
|
|
243
|
+
return value.map((item) => labels.get(item) ?? String(item ?? t("any"))).join(", ");
|
|
238
244
|
}
|
|
245
|
+
if (field.kind === "dateRange" &&
|
|
246
|
+
value &&
|
|
247
|
+
typeof value === "object" &&
|
|
248
|
+
"from" in value &&
|
|
249
|
+
"to" in value)
|
|
250
|
+
return `${value.from ? date(new Date(`${value.from}T12:00:00`)) : t("any")} – ${value.to ? date(new Date(`${value.to}T12:00:00`)) : t("any")}`;
|
|
239
251
|
if (value && typeof value === "object" && "from" in value && "to" in value)
|
|
240
|
-
return `${value.from ?? "
|
|
252
|
+
return `${value.from ?? t("any")} – ${value.to ?? t("any")}`;
|
|
241
253
|
return choices.find((choice) => choice.value === value)?.label ?? String(value ?? "");
|
|
242
254
|
}
|
|
243
255
|
export function FilterField({ id }) {
|
|
@@ -252,6 +264,7 @@ export function FilterFieldEditor({ id, autoFocus = true }) {
|
|
|
252
264
|
return entry ? (_jsx(FieldEditor, { entry: entry, active: true, autoFocus: autoFocus, disabled: disabled || entry.field.disabled, close: () => filters.edit(null), location: "inline" }, id)) : null;
|
|
253
265
|
}
|
|
254
266
|
function FieldChip({ entry }) {
|
|
267
|
+
const { t } = useMendyLocale();
|
|
255
268
|
const { classNames } = useMendyUI();
|
|
256
269
|
const { filters, summary, suggestions, disabled, trigger } = useRoot();
|
|
257
270
|
const { id, field, value } = entry;
|
|
@@ -269,7 +282,7 @@ function FieldChip({ entry }) {
|
|
|
269
282
|
"aria-describedby": descriptionId,
|
|
270
283
|
"aria-busy": options.resolving || undefined,
|
|
271
284
|
className: classNames?.chipTrigger,
|
|
272
|
-
}, editLabel:
|
|
285
|
+
}, editLabel: t(active ? "editFilter" : "applyFilter", { label: field.label }), open: filters.editField === id, onOpenChange: chipEditor.onOpenChange, onRemove: active && field.removable !== false
|
|
273
286
|
? () => {
|
|
274
287
|
filters.remove(id);
|
|
275
288
|
requestAnimationFrame(() => trigger.current?.focus());
|
|
@@ -322,13 +335,18 @@ function chipDisabled(field, active, disabled) {
|
|
|
322
335
|
field.disabled ||
|
|
323
336
|
(!active && (field.suggestion?.disabled || field.suggestion?.loading)));
|
|
324
337
|
}
|
|
325
|
-
function summaryText(field, shownValue, choices, policy) {
|
|
326
|
-
const full = summarize(field, shownValue, choices);
|
|
338
|
+
function summaryText(field, shownValue, choices, policy, locale) {
|
|
339
|
+
const full = summarize(field, shownValue, choices, locale);
|
|
327
340
|
let text = full;
|
|
328
341
|
if (policy.mode === "count" && field.kind !== "numberRange" && Array.isArray(shownValue)) {
|
|
329
342
|
const limit = Math.max(0, policy.limit ?? 3);
|
|
330
343
|
if (shownValue.length > limit)
|
|
331
|
-
text =
|
|
344
|
+
text = limit
|
|
345
|
+
? locale.t("andMore", {
|
|
346
|
+
values: summarize(field, shownValue.slice(0, limit), choices, locale),
|
|
347
|
+
count: shownValue.length - limit,
|
|
348
|
+
})
|
|
349
|
+
: locale.t("more", { count: shownValue.length });
|
|
332
350
|
}
|
|
333
351
|
return text;
|
|
334
352
|
}
|
|
@@ -341,12 +359,15 @@ function ChipLabel({ field, active, hasValue, }) {
|
|
|
341
359
|
}
|
|
342
360
|
function ChipSummary({ descriptionId, field, value, active, options, summary, }) {
|
|
343
361
|
const policy = field.summary ?? summary;
|
|
362
|
+
const locale = useMendyLocale();
|
|
363
|
+
const { t } = locale;
|
|
344
364
|
const shownValue = active ? value : field.suggestion?.value;
|
|
345
|
-
const full = summarize(field, shownValue, options.selected);
|
|
346
|
-
const text = summaryText(field, shownValue, options.selected, policy);
|
|
347
|
-
return (_jsxs(_Fragment, { children: [_jsx("span", { id: descriptionId, className: "mui-32fb090591d9", children: options.resolving ? "
|
|
365
|
+
const full = summarize(field, shownValue, options.selected, locale);
|
|
366
|
+
const text = summaryText(field, shownValue, options.selected, policy, locale);
|
|
367
|
+
return (_jsxs(_Fragment, { children: [_jsx("span", { id: descriptionId, className: "mui-32fb090591d9", children: options.resolving ? t("loadingSelected") : full }), _jsx(ChipLabel, { field: field, active: active, hasValue: Boolean(full) }), options.resolving ? (_jsx("span", { "data-slot": "filter-summary-skeleton", "aria-hidden": "true", className: "mui-099be97e1fa4 mui-81b198a2db84 mui-27ead27a81df mui-7b3cd77eb999 mui-02e603944040 mui-810ae775809b mui-237747164b60", style: { width: Math.min(180, 100 + Math.max(0, options.selected.length - 1) * 40) } })) : field.renderSummary ? (field.renderSummary(shownValue, options.selected)) : (_jsx("span", { title: full, dir: "auto", className: cn("mui-184ddc11e5f9 mui-957a109f887f mui-393883c1db68 mui-14bd99410890", policy.mode !== "all" && "mui-5a3a4ee420c2", policy.mode === "all" && "mui-726fca123972 mui-37cf9655f30a mui-1fcf28756bb1"), style: policy.mode === "ellipsis" ? { maxWidth: policy.maxWidth ?? 180 } : undefined, children: text }))] }));
|
|
348
368
|
}
|
|
349
|
-
export function FilterClear({ children
|
|
369
|
+
export function FilterClear({ children }) {
|
|
370
|
+
const { t } = useMendyLocale();
|
|
350
371
|
const { classNames } = useMendyUI();
|
|
351
372
|
const { filters, disabled, trigger, setAmbiguous } = useRoot();
|
|
352
373
|
if (!filters.active.length && !filters.search)
|
|
@@ -355,17 +376,18 @@ export function FilterClear({ children = "Clear all" }) {
|
|
|
355
376
|
setAmbiguous([]);
|
|
356
377
|
filters.clear();
|
|
357
378
|
requestAnimationFrame(() => trigger.current?.focus());
|
|
358
|
-
}, children: children }));
|
|
379
|
+
}, children: children ?? t("clearAll") }));
|
|
359
380
|
}
|
|
360
381
|
export function FilterFeedback() {
|
|
382
|
+
const { t } = useMendyLocale();
|
|
361
383
|
const { filters, ambiguous, setAmbiguous } = useRoot();
|
|
362
|
-
return (_jsxs(_Fragment, { children: [filters.error && !filters.menuOpen && !filters.editField && (_jsx("p", { role: "alert", className: "mui-58d0413dd93c mui-c74ab393b96d mui-887b9502d5c7", children: filters.error })), filters.persistenceMessage && (_jsx("p", { role: "status", className: "mui-58d0413dd93c mui-3992de70b033 mui-35f35c41d134", children: filters.persistenceMessage })), ambiguous.map((item) => (_jsxs("div", { "data-mendy-ui": "", className: "mui-222f930b8752 mui-58d0413dd93c mui-faa8a23c68f6 mui-71556df3b421 mui-074569488cca mui-3fa8c572949b mui-4f1a55de40bc mui-b97db4a9f432 mui-c74ab393b96d", children: [
|
|
384
|
+
return (_jsxs(_Fragment, { children: [filters.error && !filters.menuOpen && !filters.editField && (_jsx("p", { role: "alert", className: "mui-58d0413dd93c mui-c74ab393b96d mui-887b9502d5c7", children: filters.error })), filters.persistenceMessage && (_jsx("p", { role: "status", className: "mui-58d0413dd93c mui-3992de70b033 mui-35f35c41d134", children: filters.persistenceMessage })), ambiguous.map((item) => (_jsxs("div", { "data-mendy-ui": "", className: "mui-222f930b8752 mui-58d0413dd93c mui-faa8a23c68f6 mui-71556df3b421 mui-074569488cca mui-3fa8c572949b mui-4f1a55de40bc mui-b97db4a9f432 mui-c74ab393b96d", children: [_jsx("span", { children: t("useToken", { token: item.token }) }), item.candidates.map((candidate) => (_jsx(Button, { size: "sm", variant: "outline", onClick: () => {
|
|
363
385
|
const entry = filters.entries.find((entry) => entry.id === candidate.id);
|
|
364
386
|
const resolved = resolvePasteAmbiguity(filters.search, item, ambiguous);
|
|
365
387
|
const error = filters.batch({ [candidate.id]: entry.field.merge(entry.value, candidate.value) }, resolved.search, "paste");
|
|
366
388
|
if (!error)
|
|
367
389
|
setAmbiguous(resolved.remaining);
|
|
368
|
-
}, children: candidate.label }, candidate.id))), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => setAmbiguous(ambiguous.filter((other) => other !== item)), children: "
|
|
390
|
+
}, children: candidate.label }, candidate.id))), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => setAmbiguous(ambiguous.filter((other) => other !== item)), children: t("keepInSearch") })] }, item.token)))] }));
|
|
369
391
|
}
|
|
370
392
|
function FieldEditor({ entry, active, disabled, close, location, autoFocus = true, showDateLabel = true, }) {
|
|
371
393
|
const { filters, trigger, closeMenuOnApply } = useRoot();
|
|
@@ -440,10 +462,11 @@ function FieldEditor({ entry, active, disabled, close, location, autoFocus = tru
|
|
|
440
462
|
}
|
|
441
463
|
function ChoiceEditor({ field, value, input, options, disabled, apply, location, error, }) {
|
|
442
464
|
const searchable = field.searchable !== false;
|
|
465
|
+
const { t, code } = useMendyLocale();
|
|
443
466
|
const collection = useRef(null);
|
|
444
467
|
const selected = Array.isArray(value) ? value : value === null ? [] : [value];
|
|
445
468
|
const selectedSet = new Set(selected);
|
|
446
|
-
const searchLabel = field.searchLabel ??
|
|
469
|
+
const searchLabel = field.searchLabel ?? t("searchField", { label: field.label.toLocaleLowerCase(code) });
|
|
447
470
|
if (location === "menu" && field.menuLayout === "inline" && field.kind === "single")
|
|
448
471
|
return (_jsxs("div", { "data-mendy-ui": "", className: "mui-184ddc11e5f9", children: [_jsx("div", { role: "group", "aria-label": field.label, className: "mui-123306850fe1 mui-81b198a2db84 mui-faa8a23c68f6 mui-d5111d0e9f48 mui-3fa8c572949b mui-4f1a55de40bc", children: options.items.map((choice) => (_jsx(Button, { type: "button", variant: "ghost", size: "sm", disabled: disabled || choice.disabled, "aria-pressed": selectedSet.has(choice.value), className: "mui-1fb07b38c63b mui-52417259a4f5 mui-55860251be20 mui-3deb00079b4c mui-0f9e6672913a mui-52101fc7d8bb mui-35f35c41d134 mui-2d6703b5473b mui-ff2dcda51a27", onClick: () => apply(singleChoiceValue(field, value, choice.value), false), children: field.renderOption?.(choice, { selected: selectedSet.has(choice.value) }) ??
|
|
449
472
|
choice.label }, choice.value))) }), _jsx(OptionFeedback, { options: options, error: error })] }));
|
|
@@ -509,10 +532,12 @@ function singleChoiceValue(field, current, next) {
|
|
|
509
532
|
: next || field.clearValue;
|
|
510
533
|
}
|
|
511
534
|
function OptionFeedback({ options, error, }) {
|
|
512
|
-
|
|
535
|
+
const { t } = useMendyLocale();
|
|
536
|
+
return (_jsxs(_Fragment, { children: [error && (_jsx("p", { role: "alert", className: "mui-0f9e6672913a mui-b5edc3ea7c91 mui-c74ab393b96d mui-887b9502d5c7", children: error })), options.loading && (_jsx("p", { role: "status", className: "mui-0f9e6672913a mui-b5edc3ea7c91 mui-c74ab393b96d mui-35f35c41d134", children: t("loadingOptions") })), !options.loading && !options.error && options.items.length === 0 && (_jsx("p", { role: "status", className: "mui-094f5333853b mui-c74ab393b96d mui-35f35c41d134", children: t("noOptions") })), options.error && (_jsxs("div", { "data-mendy-ui": "", className: "mui-267171770524 mui-094f5333853b", children: [_jsx("p", { role: "alert", className: "mui-c74ab393b96d mui-887b9502d5c7", children: options.error }), _jsx(Button, { size: "sm", variant: "outline", onClick: options.retry, children: t("retry") })] })), options.hasMore && (_jsx(Button, { variant: "ghost", className: "mui-58d0413dd93c", disabled: options.loading, onClick: options.loadMore, children: t("loadMore") }))] }));
|
|
513
537
|
}
|
|
514
538
|
function ValueEditor({ location, field, draft, setDraft, text, setText, input, error, id, disabled, apply, }) {
|
|
515
539
|
const [attempted, setAttempted] = useState(false);
|
|
540
|
+
const { t, messages } = useMendyLocale();
|
|
516
541
|
const candidate = field.kind === "tokens"
|
|
517
542
|
? text.split(/[\r\n\t,]+/).flatMap((item) => (item.trim() ? [item.trim()] : []))
|
|
518
543
|
: field.kind === "text"
|
|
@@ -520,10 +545,10 @@ function ValueEditor({ location, field, draft, setDraft, text, setText, input, e
|
|
|
520
545
|
: draft;
|
|
521
546
|
let validation;
|
|
522
547
|
try {
|
|
523
|
-
validation = field.validate(field.normalize(candidate));
|
|
548
|
+
validation = field.validate(field.normalize(candidate), messages);
|
|
524
549
|
}
|
|
525
550
|
catch {
|
|
526
|
-
validation = "
|
|
551
|
+
validation = t("invalidValue");
|
|
527
552
|
}
|
|
528
553
|
const message = (text.length > 0 || attempted || field.kind === "numberRange" ? validation : undefined) ??
|
|
529
554
|
error;
|
|
@@ -533,7 +558,7 @@ function ValueEditor({ location, field, draft, setDraft, text, setText, input, e
|
|
|
533
558
|
}, children: [field.kind === "numberRange" ? (_jsxs("fieldset", { disabled: disabled, className: "mui-a2526bc2efa3 mui-184ddc11e5f9 mui-267171770524 mui-dad556abfe15 mui-04760bcd507f", children: [_jsx("legend", { className: cn("mui-04760bcd507f mui-c74ab393b96d mui-daaac3fbf55e", location === "menu" && "mui-32fb090591d9"), children: field.label }), [0, 1].map((index) => {
|
|
534
559
|
const key = index === 0 ? "from" : "to";
|
|
535
560
|
const rangeValue = draft?.[index];
|
|
536
|
-
return (_jsxs(Label, { className: "mui-496aca80e4d8 mui-27e6c432192f mui-3992de70b033", children: [index === 0 ? "
|
|
561
|
+
return (_jsxs(Label, { className: "mui-496aca80e4d8 mui-27e6c432192f mui-3992de70b033", children: [t(index === 0 ? "minimum" : "maximum"), _jsx(Input, { ref: index === 0
|
|
537
562
|
? (node) => {
|
|
538
563
|
input.current = node;
|
|
539
564
|
}
|
|
@@ -567,9 +592,10 @@ function ValueEditor({ location, field, draft, setDraft, text, setText, input, e
|
|
|
567
592
|
} })] })), _jsx(ValueEditorFeedback, { message: message, id: id, hasHint: field.kind !== "numberRange" })] }));
|
|
568
593
|
}
|
|
569
594
|
function ValueEditorFeedback({ message, id, hasHint, }) {
|
|
595
|
+
const { t } = useMendyLocale();
|
|
570
596
|
if (message)
|
|
571
597
|
return (_jsx("p", { role: "alert", id: `${id}-error`, className: "mui-3992de70b033 mui-887b9502d5c7", children: message }));
|
|
572
598
|
if (!hasHint)
|
|
573
599
|
return null;
|
|
574
|
-
return (_jsx("p", { id: `${id}-hint`, className: "mui-3992de70b033 mui-35f35c41d134", children: "
|
|
600
|
+
return (_jsx("p", { id: `${id}-hint`, className: "mui-3992de70b033 mui-35f35c41d134", children: t("saveHint") }));
|
|
575
601
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useMendyLocale } from "../locale-context.js";
|
|
3
4
|
import { useCallback, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
4
5
|
import { defaultRangeExtractor, useVirtualizer } from "@tanstack/react-virtual";
|
|
5
6
|
import { cn } from "../utils.js";
|
|
@@ -10,6 +11,7 @@ export function FilterCollection({ items, children, renderBefore, className, rol
|
|
|
10
11
|
const pending = useRef(null);
|
|
11
12
|
const ownsFocus = useRef(false);
|
|
12
13
|
const previousIndex = useRef(0);
|
|
14
|
+
const { code } = useMendyLocale();
|
|
13
15
|
const [focused, setFocused] = useState(initialKey ?? items.find((item) => !item.disabled)?.key);
|
|
14
16
|
const typeahead = useRef({ text: "", at: 0 });
|
|
15
17
|
const virtual = items.length > 100;
|
|
@@ -180,7 +182,7 @@ export function FilterCollection({ items, children, renderBefore, className, rol
|
|
|
180
182
|
typeahead.current = { text, at: now };
|
|
181
183
|
const term = [...text].every((char) => char === text[0]) ? text[0] : text;
|
|
182
184
|
const order = [...enabled.slice(index + 1), ...enabled.slice(0, index + 1)];
|
|
183
|
-
next = order.find((item) => item.label.toLocaleLowerCase().startsWith(term.toLocaleLowerCase()));
|
|
185
|
+
next = order.find((item) => item.label.toLocaleLowerCase(code).startsWith(term.toLocaleLowerCase(code)));
|
|
184
186
|
}
|
|
185
187
|
}
|
|
186
188
|
event.preventDefault();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMendyLocale } from "../locale-context.js";
|
|
3
4
|
import { useValueDraft } from "./use-value-draft.js";
|
|
4
5
|
import { Calendar } from "../customization.js";
|
|
5
6
|
import { Button } from "../customization.js";
|
|
@@ -13,8 +14,9 @@ function dateString(value) {
|
|
|
13
14
|
return `${value.getFullYear()}-${String(value.getMonth() + 1).padStart(2, "0")}-${String(value.getDate()).padStart(2, "0")}`;
|
|
14
15
|
}
|
|
15
16
|
export function FilterDateEditor({ field, value, disabled, apply, error, draftKey, autoFocus = true, showLabel = true, showClear = true, }) {
|
|
17
|
+
const { t, direction, code, configured } = useMendyLocale();
|
|
16
18
|
const [range, setRange] = useValueDraft(value, (current) => current ? { from: calendarDate(current.from), to: calendarDate(current.to) } : undefined, draftKey);
|
|
17
|
-
return (_jsxs("div", { "data-mendy-ui": "", onKeyDown: (event) => {
|
|
19
|
+
return (_jsxs("div", { "data-mendy-ui": "", dir: configured ? direction : undefined, lang: code, onKeyDown: (event) => {
|
|
18
20
|
// Calendar arrows navigate days. Escape still dismisses the surrounding editor.
|
|
19
21
|
if (event.key !== "Escape")
|
|
20
22
|
event.stopPropagation();
|
|
@@ -24,8 +26,8 @@ export function FilterDateEditor({ field, value, disabled, apply, error, draftKe
|
|
|
24
26
|
apply(selected
|
|
25
27
|
? { from: dateString(selected.from), to: dateString(selected.to) }
|
|
26
28
|
: field.clearValue, false);
|
|
27
|
-
}, defaultMonth: range?.from ?? range?.to, disabled: disabled }), _jsxs("div", { "data-mendy-ui": "", className: "mui-267171770524 mui-894c3815a57f mui-094f5333853b", children: [_jsx("p", { className: "mui-3992de70b033 mui-35f35c41d134", children: "
|
|
29
|
+
}, defaultMonth: range?.from ?? range?.to, disabled: disabled }), _jsxs("div", { "data-mendy-ui": "", className: "mui-267171770524 mui-894c3815a57f mui-094f5333853b", children: [_jsx("p", { className: "mui-3992de70b033 mui-35f35c41d134", children: t("dateHint") }), error && (_jsx("p", { role: "alert", className: "mui-c74ab393b96d mui-887b9502d5c7", children: error })), showClear && (_jsx("div", { "data-mendy-ui": "", className: "mui-222f930b8752 mui-074569488cca", children: _jsx(Button, { type: "button", size: "sm", variant: "ghost", className: "mui-958e2cfcf5b6 mui-e7e01cc7f4df", disabled: disabled || !range, onClick: () => {
|
|
28
30
|
setRange(undefined);
|
|
29
31
|
apply(field.clearValue);
|
|
30
|
-
}, children: "
|
|
32
|
+
}, children: t("clearDate") }) }))] })] }));
|
|
31
33
|
}
|