@underverse-ui/underverse 1.0.98 → 1.0.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -2633,8 +2633,6 @@ interface LanguageSwitcherHeadlessProps {
2633
2633
  }
2634
2634
  declare function LanguageSwitcherHeadless({ locales, currentLocale, onSwitch, labels, className, }: LanguageSwitcherHeadlessProps): react_jsx_runtime.JSX.Element;
2635
2635
 
2636
- declare function cn$1(...inputs: ClassValue[]): string;
2637
-
2638
2636
  /**
2639
2637
  * Utility function to merge Tailwind CSS classes.
2640
2638
  * Combines clsx for conditional classes and tailwind-merge for deduplication.
@@ -5094,4 +5092,4 @@ declare function getUnderverseMessages(locale?: UnderverseLocale): {
5094
5092
  };
5095
5093
  };
5096
5094
 
5097
- export { AccessDenied, type AccessDeniedProps, Alert, Avatar, Badge, Badge as BadgeBase, BatteryProgress, BottomSheet, Breadcrumb, Button, ButtonLoading, type ButtonProps, Calendar, type CalendarEvent, type CalendarHoliday, type CalendarProps, CalendarTimeline, type CalendarTimelineDateInput, type CalendarTimelineDayRangeMode, type CalendarTimelineEvent, type CalendarTimelineFormatters, type CalendarTimelineGroup, type CalendarTimelineInteractions, type CalendarTimelineLabels, type CalendarTimelineProps, type CalendarTimelineResource, type CalendarTimelineSize, type CalendarTimelineView, type CalendarTimelineVirtualization, Card, type CardProps, Carousel, type CarouselEffectOptions, type CarouselEffectPreset, type Category, CategoryTreeSelect, type CategoryTreeSelectBaseProps, type CategoryTreeSelectLabels, type CategoryTreeSelectMultiProps, type CategoryTreeSelectProps, type CategoryTreeSelectSingleProps, Checkbox, type CheckboxProps, CircularProgress, ClientOnly, ColorPicker, type ColorPickerProps, Combobox, type ComboboxOption, type ComboboxProps, CompactDatePicker, CompactPagination, type CompactPaginationProps, DataTable, type DataTableColumn, type DataTableDensity, type DataTableLabels, type DataTableProps, type DataTableQuery, type DataTableSize, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, date as DateUtils, Drawer, DropdownMenu, DropdownMenuItem, DropdownMenuSeparator, EmojiPicker, type EmojiPickerProps, FallingIcons, FileUpload, type FileUploadProps, type FilterType, ForceInternalTranslationsProvider, Form, FormActions, FormCheckbox, FormControl, FormDescription, FormField, FormInput, FormItem, FormLabel, FormMessage, FormSubmitButton, GlobalLoading, GradientBadge, Grid, GridItem, type GridItemProps, type GridProps, ImageUpload, type ImageUploadProps, InlineLoading, Input, type InputProps, InteractiveBadge, Label, type LanguageOption, LanguageSwitcherHeadless as LanguageSwitcher, LanguageSwitcherHeadless, type LanguageSwitcherHeadlessProps, type LanguageSwitcherHeadlessProps as LanguageSwitcherProps, List, ListItem, LoadingBar, LoadingDots, LoadingProgress, LoadingSpinner, type LoadingState, type Locale, MiniProgress, Modal, MonthYearPicker, MonthYearPicker as MonthYearPickerBase, type MonthYearPickerProps, MultiCombobox, type MultiComboboxOption, type MultiComboboxProps, MusicPlayer, MusicPlayer as MusicPlayerDefault, type MusicPlayerProps, NextIntlAdapter, NotificationBadge, NotificationModal, NumberInput, type NumberInputProps, OverlayControls, type OverlayControlsProps, OverlayScrollArea, type OverlayScrollAreaProps, OverlayScrollbarProvider, type OverlayScrollbarProviderProps, PageLoading, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PillTabs, Popover, Progress, PulseBadge, RadioGroup, RadioGroupItem, SIZE_STYLES_BTN, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Section, SegmentedProgress, SelectDropdown, Sheet, SidebarSheet, SimplePagination, type SimplePaginationProps, SimpleTabs, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, SkeletonList, SkeletonMessage, SkeletonPost, SkeletonTable, SkeletonText, SlideOver, Slider, type SliderProps, SmartImage, type Song, type Sorter, StatusBadge, StepProgress, type SupportedLocale, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, Tabs, TagBadge, TagInput, TagInput as TagInputBase, type TagInputProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggleHeadless as ThemeToggle, ThemeToggleHeadless, type ThemeToggleHeadlessProps, type ThemeToggleHeadlessProps as ThemeToggleProps, TimePicker, type TimePickerProps, Timeline, TimelineItem, ToastProvider, Tooltip, TranslationProvider, type TranslationProviderProps, type Translations, UEditor, type UEditorFontFamilyOption, type UEditorFontSizeOption, type UEditorInlineUploadedItem, type UEditorLetterSpacingOption, type UEditorLineHeightOption, UEditorPrepareContentForSaveError, type UEditorPrepareContentForSaveOptions, type UEditorPrepareContentForSaveResult, type UEditorProps, type UEditorRef, type UEditorUploadImageForSave, type UEditorUploadImageForSaveResult, type UEditorVariant, type UnderverseLocale, UnderverseNextIntlProvider, UnderverseProvider, type UnderverseProviderProps, type UploadedFile, type UploadedImage, type UseOverlayScrollbarTargetOptions, VARIANT_STYLES_ALERT, VARIANT_STYLES_BTN, VIETNAM_HOLIDAYS, VerticalTabs, Watermark, type WatermarkProps, cn$1 as cn, cn as cnLocal, extractImageSrcsFromHtml, getAnimationStyles, getUnderverseMessages, injectAnimationStyles, loading, normalizeImageUrl, prepareUEditorContentForSave, shadcnAnimationStyles, underverseMessages, useFormField, useOverlayScrollbarTarget, useShadCNAnimations, useSmartLocale, useSmartTranslations, useToast, useTranslations as useUnderverseI18n, useLocale as useUnderverseI18nLocale, useUnderverseLocale, useUnderverseTranslations };
5095
+ export { AccessDenied, type AccessDeniedProps, Alert, Avatar, Badge, Badge as BadgeBase, BatteryProgress, BottomSheet, Breadcrumb, Button, ButtonLoading, type ButtonProps, Calendar, type CalendarEvent, type CalendarHoliday, type CalendarProps, CalendarTimeline, type CalendarTimelineDateInput, type CalendarTimelineDayRangeMode, type CalendarTimelineEvent, type CalendarTimelineFormatters, type CalendarTimelineGroup, type CalendarTimelineInteractions, type CalendarTimelineLabels, type CalendarTimelineProps, type CalendarTimelineResource, type CalendarTimelineSize, type CalendarTimelineView, type CalendarTimelineVirtualization, Card, type CardProps, Carousel, type CarouselEffectOptions, type CarouselEffectPreset, type Category, CategoryTreeSelect, type CategoryTreeSelectBaseProps, type CategoryTreeSelectLabels, type CategoryTreeSelectMultiProps, type CategoryTreeSelectProps, type CategoryTreeSelectSingleProps, Checkbox, type CheckboxProps, CircularProgress, ClientOnly, ColorPicker, type ColorPickerProps, Combobox, type ComboboxOption, type ComboboxProps, CompactDatePicker, CompactPagination, type CompactPaginationProps, DataTable, type DataTableColumn, type DataTableDensity, type DataTableLabels, type DataTableProps, type DataTableQuery, type DataTableSize, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, date as DateUtils, Drawer, DropdownMenu, DropdownMenuItem, DropdownMenuSeparator, EmojiPicker, type EmojiPickerProps, FallingIcons, FileUpload, type FileUploadProps, type FilterType, ForceInternalTranslationsProvider, Form, FormActions, FormCheckbox, FormControl, FormDescription, FormField, FormInput, FormItem, FormLabel, FormMessage, FormSubmitButton, GlobalLoading, GradientBadge, Grid, GridItem, type GridItemProps, type GridProps, ImageUpload, type ImageUploadProps, InlineLoading, Input, type InputProps, InteractiveBadge, Label, type LanguageOption, LanguageSwitcherHeadless as LanguageSwitcher, LanguageSwitcherHeadless, type LanguageSwitcherHeadlessProps, type LanguageSwitcherHeadlessProps as LanguageSwitcherProps, List, ListItem, LoadingBar, LoadingDots, LoadingProgress, LoadingSpinner, type LoadingState, type Locale, MiniProgress, Modal, MonthYearPicker, MonthYearPicker as MonthYearPickerBase, type MonthYearPickerProps, MultiCombobox, type MultiComboboxOption, type MultiComboboxProps, MusicPlayer, MusicPlayer as MusicPlayerDefault, type MusicPlayerProps, NextIntlAdapter, NotificationBadge, NotificationModal, NumberInput, type NumberInputProps, OverlayControls, type OverlayControlsProps, OverlayScrollArea, type OverlayScrollAreaProps, OverlayScrollbarProvider, type OverlayScrollbarProviderProps, PageLoading, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PillTabs, Popover, Progress, PulseBadge, RadioGroup, RadioGroupItem, SIZE_STYLES_BTN, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Section, SegmentedProgress, SelectDropdown, Sheet, SidebarSheet, SimplePagination, type SimplePaginationProps, SimpleTabs, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, SkeletonList, SkeletonMessage, SkeletonPost, SkeletonTable, SkeletonText, SlideOver, Slider, type SliderProps, SmartImage, type Song, type Sorter, StatusBadge, StepProgress, type SupportedLocale, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, Tabs, TagBadge, TagInput, TagInput as TagInputBase, type TagInputProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggleHeadless as ThemeToggle, ThemeToggleHeadless, type ThemeToggleHeadlessProps, type ThemeToggleHeadlessProps as ThemeToggleProps, TimePicker, type TimePickerProps, Timeline, TimelineItem, ToastProvider, Tooltip, TranslationProvider, type TranslationProviderProps, type Translations, UEditor, type UEditorFontFamilyOption, type UEditorFontSizeOption, type UEditorInlineUploadedItem, type UEditorLetterSpacingOption, type UEditorLineHeightOption, UEditorPrepareContentForSaveError, type UEditorPrepareContentForSaveOptions, type UEditorPrepareContentForSaveResult, type UEditorProps, type UEditorRef, type UEditorUploadImageForSave, type UEditorUploadImageForSaveResult, type UEditorVariant, type UnderverseLocale, UnderverseNextIntlProvider, UnderverseProvider, type UnderverseProviderProps, type UploadedFile, type UploadedImage, type UseOverlayScrollbarTargetOptions, VARIANT_STYLES_ALERT, VARIANT_STYLES_BTN, VIETNAM_HOLIDAYS, VerticalTabs, Watermark, type WatermarkProps, cn, cn as cnLocal, extractImageSrcsFromHtml, getAnimationStyles, getUnderverseMessages, injectAnimationStyles, loading, normalizeImageUrl, prepareUEditorContentForSave, shadcnAnimationStyles, underverseMessages, useFormField, useOverlayScrollbarTarget, useShadCNAnimations, useSmartLocale, useSmartTranslations, useToast, useTranslations as useUnderverseI18n, useLocale as useUnderverseI18nLocale, useUnderverseLocale, useUnderverseTranslations };
package/dist/index.d.ts CHANGED
@@ -2633,8 +2633,6 @@ interface LanguageSwitcherHeadlessProps {
2633
2633
  }
2634
2634
  declare function LanguageSwitcherHeadless({ locales, currentLocale, onSwitch, labels, className, }: LanguageSwitcherHeadlessProps): react_jsx_runtime.JSX.Element;
2635
2635
 
2636
- declare function cn$1(...inputs: ClassValue[]): string;
2637
-
2638
2636
  /**
2639
2637
  * Utility function to merge Tailwind CSS classes.
2640
2638
  * Combines clsx for conditional classes and tailwind-merge for deduplication.
@@ -5094,4 +5092,4 @@ declare function getUnderverseMessages(locale?: UnderverseLocale): {
5094
5092
  };
5095
5093
  };
5096
5094
 
5097
- export { AccessDenied, type AccessDeniedProps, Alert, Avatar, Badge, Badge as BadgeBase, BatteryProgress, BottomSheet, Breadcrumb, Button, ButtonLoading, type ButtonProps, Calendar, type CalendarEvent, type CalendarHoliday, type CalendarProps, CalendarTimeline, type CalendarTimelineDateInput, type CalendarTimelineDayRangeMode, type CalendarTimelineEvent, type CalendarTimelineFormatters, type CalendarTimelineGroup, type CalendarTimelineInteractions, type CalendarTimelineLabels, type CalendarTimelineProps, type CalendarTimelineResource, type CalendarTimelineSize, type CalendarTimelineView, type CalendarTimelineVirtualization, Card, type CardProps, Carousel, type CarouselEffectOptions, type CarouselEffectPreset, type Category, CategoryTreeSelect, type CategoryTreeSelectBaseProps, type CategoryTreeSelectLabels, type CategoryTreeSelectMultiProps, type CategoryTreeSelectProps, type CategoryTreeSelectSingleProps, Checkbox, type CheckboxProps, CircularProgress, ClientOnly, ColorPicker, type ColorPickerProps, Combobox, type ComboboxOption, type ComboboxProps, CompactDatePicker, CompactPagination, type CompactPaginationProps, DataTable, type DataTableColumn, type DataTableDensity, type DataTableLabels, type DataTableProps, type DataTableQuery, type DataTableSize, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, date as DateUtils, Drawer, DropdownMenu, DropdownMenuItem, DropdownMenuSeparator, EmojiPicker, type EmojiPickerProps, FallingIcons, FileUpload, type FileUploadProps, type FilterType, ForceInternalTranslationsProvider, Form, FormActions, FormCheckbox, FormControl, FormDescription, FormField, FormInput, FormItem, FormLabel, FormMessage, FormSubmitButton, GlobalLoading, GradientBadge, Grid, GridItem, type GridItemProps, type GridProps, ImageUpload, type ImageUploadProps, InlineLoading, Input, type InputProps, InteractiveBadge, Label, type LanguageOption, LanguageSwitcherHeadless as LanguageSwitcher, LanguageSwitcherHeadless, type LanguageSwitcherHeadlessProps, type LanguageSwitcherHeadlessProps as LanguageSwitcherProps, List, ListItem, LoadingBar, LoadingDots, LoadingProgress, LoadingSpinner, type LoadingState, type Locale, MiniProgress, Modal, MonthYearPicker, MonthYearPicker as MonthYearPickerBase, type MonthYearPickerProps, MultiCombobox, type MultiComboboxOption, type MultiComboboxProps, MusicPlayer, MusicPlayer as MusicPlayerDefault, type MusicPlayerProps, NextIntlAdapter, NotificationBadge, NotificationModal, NumberInput, type NumberInputProps, OverlayControls, type OverlayControlsProps, OverlayScrollArea, type OverlayScrollAreaProps, OverlayScrollbarProvider, type OverlayScrollbarProviderProps, PageLoading, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PillTabs, Popover, Progress, PulseBadge, RadioGroup, RadioGroupItem, SIZE_STYLES_BTN, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Section, SegmentedProgress, SelectDropdown, Sheet, SidebarSheet, SimplePagination, type SimplePaginationProps, SimpleTabs, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, SkeletonList, SkeletonMessage, SkeletonPost, SkeletonTable, SkeletonText, SlideOver, Slider, type SliderProps, SmartImage, type Song, type Sorter, StatusBadge, StepProgress, type SupportedLocale, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, Tabs, TagBadge, TagInput, TagInput as TagInputBase, type TagInputProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggleHeadless as ThemeToggle, ThemeToggleHeadless, type ThemeToggleHeadlessProps, type ThemeToggleHeadlessProps as ThemeToggleProps, TimePicker, type TimePickerProps, Timeline, TimelineItem, ToastProvider, Tooltip, TranslationProvider, type TranslationProviderProps, type Translations, UEditor, type UEditorFontFamilyOption, type UEditorFontSizeOption, type UEditorInlineUploadedItem, type UEditorLetterSpacingOption, type UEditorLineHeightOption, UEditorPrepareContentForSaveError, type UEditorPrepareContentForSaveOptions, type UEditorPrepareContentForSaveResult, type UEditorProps, type UEditorRef, type UEditorUploadImageForSave, type UEditorUploadImageForSaveResult, type UEditorVariant, type UnderverseLocale, UnderverseNextIntlProvider, UnderverseProvider, type UnderverseProviderProps, type UploadedFile, type UploadedImage, type UseOverlayScrollbarTargetOptions, VARIANT_STYLES_ALERT, VARIANT_STYLES_BTN, VIETNAM_HOLIDAYS, VerticalTabs, Watermark, type WatermarkProps, cn$1 as cn, cn as cnLocal, extractImageSrcsFromHtml, getAnimationStyles, getUnderverseMessages, injectAnimationStyles, loading, normalizeImageUrl, prepareUEditorContentForSave, shadcnAnimationStyles, underverseMessages, useFormField, useOverlayScrollbarTarget, useShadCNAnimations, useSmartLocale, useSmartTranslations, useToast, useTranslations as useUnderverseI18n, useLocale as useUnderverseI18nLocale, useUnderverseLocale, useUnderverseTranslations };
5095
+ export { AccessDenied, type AccessDeniedProps, Alert, Avatar, Badge, Badge as BadgeBase, BatteryProgress, BottomSheet, Breadcrumb, Button, ButtonLoading, type ButtonProps, Calendar, type CalendarEvent, type CalendarHoliday, type CalendarProps, CalendarTimeline, type CalendarTimelineDateInput, type CalendarTimelineDayRangeMode, type CalendarTimelineEvent, type CalendarTimelineFormatters, type CalendarTimelineGroup, type CalendarTimelineInteractions, type CalendarTimelineLabels, type CalendarTimelineProps, type CalendarTimelineResource, type CalendarTimelineSize, type CalendarTimelineView, type CalendarTimelineVirtualization, Card, type CardProps, Carousel, type CarouselEffectOptions, type CarouselEffectPreset, type Category, CategoryTreeSelect, type CategoryTreeSelectBaseProps, type CategoryTreeSelectLabels, type CategoryTreeSelectMultiProps, type CategoryTreeSelectProps, type CategoryTreeSelectSingleProps, Checkbox, type CheckboxProps, CircularProgress, ClientOnly, ColorPicker, type ColorPickerProps, Combobox, type ComboboxOption, type ComboboxProps, CompactDatePicker, CompactPagination, type CompactPaginationProps, DataTable, type DataTableColumn, type DataTableDensity, type DataTableLabels, type DataTableProps, type DataTableQuery, type DataTableSize, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, date as DateUtils, Drawer, DropdownMenu, DropdownMenuItem, DropdownMenuSeparator, EmojiPicker, type EmojiPickerProps, FallingIcons, FileUpload, type FileUploadProps, type FilterType, ForceInternalTranslationsProvider, Form, FormActions, FormCheckbox, FormControl, FormDescription, FormField, FormInput, FormItem, FormLabel, FormMessage, FormSubmitButton, GlobalLoading, GradientBadge, Grid, GridItem, type GridItemProps, type GridProps, ImageUpload, type ImageUploadProps, InlineLoading, Input, type InputProps, InteractiveBadge, Label, type LanguageOption, LanguageSwitcherHeadless as LanguageSwitcher, LanguageSwitcherHeadless, type LanguageSwitcherHeadlessProps, type LanguageSwitcherHeadlessProps as LanguageSwitcherProps, List, ListItem, LoadingBar, LoadingDots, LoadingProgress, LoadingSpinner, type LoadingState, type Locale, MiniProgress, Modal, MonthYearPicker, MonthYearPicker as MonthYearPickerBase, type MonthYearPickerProps, MultiCombobox, type MultiComboboxOption, type MultiComboboxProps, MusicPlayer, MusicPlayer as MusicPlayerDefault, type MusicPlayerProps, NextIntlAdapter, NotificationBadge, NotificationModal, NumberInput, type NumberInputProps, OverlayControls, type OverlayControlsProps, OverlayScrollArea, type OverlayScrollAreaProps, OverlayScrollbarProvider, type OverlayScrollbarProviderProps, PageLoading, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PillTabs, Popover, Progress, PulseBadge, RadioGroup, RadioGroupItem, SIZE_STYLES_BTN, ScrollArea, type ScrollAreaProps, SearchInput, type SearchInputProps, Section, SegmentedProgress, SelectDropdown, Sheet, SidebarSheet, SimplePagination, type SimplePaginationProps, SimpleTabs, Skeleton, SkeletonAvatar, SkeletonButton, SkeletonCard, SkeletonList, SkeletonMessage, SkeletonPost, SkeletonTable, SkeletonText, SlideOver, Slider, type SliderProps, SmartImage, type Song, type Sorter, StatusBadge, StepProgress, type SupportedLocale, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, Tabs, TagBadge, TagInput, TagInput as TagInputBase, type TagInputProps, Textarea, type TextareaProps, type ThemeMode, ThemeToggleHeadless as ThemeToggle, ThemeToggleHeadless, type ThemeToggleHeadlessProps, type ThemeToggleHeadlessProps as ThemeToggleProps, TimePicker, type TimePickerProps, Timeline, TimelineItem, ToastProvider, Tooltip, TranslationProvider, type TranslationProviderProps, type Translations, UEditor, type UEditorFontFamilyOption, type UEditorFontSizeOption, type UEditorInlineUploadedItem, type UEditorLetterSpacingOption, type UEditorLineHeightOption, UEditorPrepareContentForSaveError, type UEditorPrepareContentForSaveOptions, type UEditorPrepareContentForSaveResult, type UEditorProps, type UEditorRef, type UEditorUploadImageForSave, type UEditorUploadImageForSaveResult, type UEditorVariant, type UnderverseLocale, UnderverseNextIntlProvider, UnderverseProvider, type UnderverseProviderProps, type UploadedFile, type UploadedImage, type UseOverlayScrollbarTargetOptions, VARIANT_STYLES_ALERT, VARIANT_STYLES_BTN, VIETNAM_HOLIDAYS, VerticalTabs, Watermark, type WatermarkProps, cn, cn as cnLocal, extractImageSrcsFromHtml, getAnimationStyles, getUnderverseMessages, injectAnimationStyles, loading, normalizeImageUrl, prepareUEditorContentForSave, shadcnAnimationStyles, underverseMessages, useFormField, useOverlayScrollbarTarget, useShadCNAnimations, useSmartLocale, useSmartTranslations, useToast, useTranslations as useUnderverseI18n, useLocale as useUnderverseI18nLocale, useUnderverseLocale, useUnderverseTranslations };
package/dist/index.js CHANGED
@@ -1815,8 +1815,9 @@ function useSmartTranslations(namespace) {
1815
1815
  return internalT;
1816
1816
  }
1817
1817
  return (key) => {
1818
- const primaryLocale = nextIntlBridge?.locale ?? internalLocale;
1819
- const fallbackLocale = environmentLocale && environmentLocale !== primaryLocale ? environmentLocale : null;
1818
+ const resolvedEnvironmentLocale = environmentLocale && environmentLocale !== internalLocale ? environmentLocale : null;
1819
+ const primaryLocale = nextIntlBridge?.locale ?? resolvedEnvironmentLocale ?? internalLocale;
1820
+ const fallbackLocale = resolvedEnvironmentLocale && resolvedEnvironmentLocale !== primaryLocale ? resolvedEnvironmentLocale : null;
1820
1821
  let translated = null;
1821
1822
  if (nextIntlBridge) {
1822
1823
  const nextIntlResult = nextIntlBridge.translate(namespace, key);
@@ -1848,10 +1849,20 @@ function useSmartLocale() {
1848
1849
  const forceInternal = React6.useContext(ForceInternalContext);
1849
1850
  const nextIntlBridge = useNextIntlBridge();
1850
1851
  const internalLocale = useUnderverseLocale();
1852
+ const [environmentLocale, setEnvironmentLocale] = React6.useState(null);
1853
+ React6.useEffect(() => {
1854
+ if (forceInternal) return;
1855
+ if (nextIntlBridge) return;
1856
+ if (internalLocale !== "en") return;
1857
+ const detected = getEnvironmentLocale(internalLocale);
1858
+ if (detected !== internalLocale) {
1859
+ setEnvironmentLocale(detected);
1860
+ }
1861
+ }, [forceInternal, internalLocale, nextIntlBridge]);
1851
1862
  if (forceInternal) {
1852
1863
  return internalLocale;
1853
1864
  }
1854
- return nextIntlBridge?.locale ?? internalLocale;
1865
+ return nextIntlBridge?.locale ?? environmentLocale ?? internalLocale;
1855
1866
  }
1856
1867
 
1857
1868
  // src/components/Input.tsx
@@ -7196,9 +7207,10 @@ var Combobox = ({
7196
7207
  {
7197
7208
  id: `combobox-item-${index}`,
7198
7209
  type: "button",
7210
+ role: "option",
7199
7211
  tabIndex: -1,
7200
7212
  disabled: itemDisabled,
7201
- "aria-pressed": isSelected,
7213
+ "aria-selected": isSelected,
7202
7214
  onClick: () => handleSelect(item),
7203
7215
  style: {
7204
7216
  animationDelay: open ? `${Math.min(index * 15, 150)}ms` : "0ms"
@@ -7303,40 +7315,50 @@ var Combobox = ({
7303
7315
  }
7304
7316
  )
7305
7317
  ] }) }),
7306
- /* @__PURE__ */ jsx29("div", { ref: optionsViewportRef, className: "overflow-y-auto overscroll-contain", style: { maxHeight }, children: /* @__PURE__ */ jsx29("div", { className: cn(size === "sm" ? "p-1" : size === "lg" ? "p-2" : "p-1.5"), children: loading2 ? /* @__PURE__ */ jsx29("div", { className: "px-3 py-10 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
7307
- /* @__PURE__ */ jsx29("div", { className: "relative", children: /* @__PURE__ */ jsx29("div", { className: "w-10 h-10 rounded-full border-2 border-primary/20 border-t-primary animate-spin" }) }),
7308
- /* @__PURE__ */ jsx29("span", { className: "text-sm text-muted-foreground", children: loadingText })
7309
- ] }) }) : filteredOptions.length > 0 ? groupedOptions ? (
7310
- // Render grouped options with global index tracking
7311
- (() => {
7312
- let globalIndex = 0;
7313
- return Object.entries(groupedOptions).map(([group, items]) => /* @__PURE__ */ jsxs22("div", { className: cn(globalIndex > 0 && "mt-2 pt-2 border-t border-border/30"), children: [
7314
- /* @__PURE__ */ jsx29("div", { className: "px-3 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: group }),
7315
- /* @__PURE__ */ jsx29("ul", { className: "space-y-0.5", children: items.map((item) => {
7316
- const index = globalIndex++;
7317
- return renderOptionItem(item, index);
7318
- }) })
7319
- ] }, group));
7320
- })()
7321
- ) : (
7322
- // Render flat options
7323
- /* @__PURE__ */ jsx29("ul", { className: "space-y-0.5", children: filteredOptions.map((item, index) => renderOptionItem(item, index)) })
7324
- ) : /* @__PURE__ */ jsx29("div", { className: "px-3 py-10 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
7325
- /* @__PURE__ */ jsx29("div", { className: "w-12 h-12 rounded-full bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx29(SearchX, { className: "h-6 w-6 text-muted-foreground/60" }) }),
7326
- /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
7327
- /* @__PURE__ */ jsx29("span", { className: "block text-sm font-medium text-foreground", children: emptyText }),
7328
- query && /* @__PURE__ */ jsx29("span", { className: "block text-xs text-muted-foreground", children: "Try a different search term" })
7329
- ] }),
7330
- query && /* @__PURE__ */ jsx29(
7331
- "button",
7332
- {
7333
- type: "button",
7334
- onClick: () => setQuery(""),
7335
- className: "px-3 py-1.5 text-xs font-medium text-primary bg-primary/10 rounded-full hover:bg-primary/20 transition-colors",
7336
- children: "Clear search"
7337
- }
7338
- )
7339
- ] }) }) }) })
7318
+ /* @__PURE__ */ jsx29(
7319
+ "div",
7320
+ {
7321
+ ref: optionsViewportRef,
7322
+ role: "listbox",
7323
+ "aria-labelledby": labelId,
7324
+ className: "overflow-y-auto overscroll-contain",
7325
+ style: { maxHeight },
7326
+ children: /* @__PURE__ */ jsx29("div", { className: cn(size === "sm" ? "p-1" : size === "lg" ? "p-2" : "p-1.5"), children: loading2 ? /* @__PURE__ */ jsx29("div", { className: "px-3 py-10 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
7327
+ /* @__PURE__ */ jsx29("div", { className: "relative", children: /* @__PURE__ */ jsx29("div", { className: "w-10 h-10 rounded-full border-2 border-primary/20 border-t-primary animate-spin" }) }),
7328
+ /* @__PURE__ */ jsx29("span", { className: "text-sm text-muted-foreground", children: loadingText })
7329
+ ] }) }) : filteredOptions.length > 0 ? groupedOptions ? (
7330
+ // Render grouped options with global index tracking
7331
+ (() => {
7332
+ let globalIndex = 0;
7333
+ return Object.entries(groupedOptions).map(([group, items]) => /* @__PURE__ */ jsxs22("div", { className: cn(globalIndex > 0 && "mt-2 pt-2 border-t border-border/30"), children: [
7334
+ /* @__PURE__ */ jsx29("div", { className: "px-3 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: group }),
7335
+ /* @__PURE__ */ jsx29("ul", { className: "space-y-0.5", children: items.map((item) => {
7336
+ const index = globalIndex++;
7337
+ return renderOptionItem(item, index);
7338
+ }) })
7339
+ ] }, group));
7340
+ })()
7341
+ ) : (
7342
+ // Render flat options
7343
+ /* @__PURE__ */ jsx29("ul", { className: "space-y-0.5", children: filteredOptions.map((item, index) => renderOptionItem(item, index)) })
7344
+ ) : /* @__PURE__ */ jsx29("div", { className: "px-3 py-10 text-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col items-center gap-3 animate-in fade-in-0 zoom-in-95 duration-300", children: [
7345
+ /* @__PURE__ */ jsx29("div", { className: "w-12 h-12 rounded-full bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx29(SearchX, { className: "h-6 w-6 text-muted-foreground/60" }) }),
7346
+ /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
7347
+ /* @__PURE__ */ jsx29("span", { className: "block text-sm font-medium text-foreground", children: emptyText }),
7348
+ query && /* @__PURE__ */ jsx29("span", { className: "block text-xs text-muted-foreground", children: "Try a different search term" })
7349
+ ] }),
7350
+ query && /* @__PURE__ */ jsx29(
7351
+ "button",
7352
+ {
7353
+ type: "button",
7354
+ onClick: () => setQuery(""),
7355
+ className: "px-3 py-1.5 text-xs font-medium text-primary bg-primary/10 rounded-full hover:bg-primary/20 transition-colors",
7356
+ children: "Clear search"
7357
+ }
7358
+ )
7359
+ ] }) }) })
7360
+ }
7361
+ )
7340
7362
  ]
7341
7363
  }
7342
7364
  );
@@ -16976,6 +16998,42 @@ function getInitialExpandedNodes(categories, {
16976
16998
  function getExpandedNodesState(expandedIds, uncontrolledExpandedNodes) {
16977
16999
  return expandedIds !== void 0 ? new Set(expandedIds) : uncontrolledExpandedNodes;
16978
17000
  }
17001
+ function collectAncestorIds(categories, categoryId) {
17002
+ const ancestorIds = getAncestorPathIds(categories, categoryId);
17003
+ ancestorIds.delete(categoryId);
17004
+ return ancestorIds;
17005
+ }
17006
+ function collectDescendantIds(childrenMap, categoryId) {
17007
+ const descendants = /* @__PURE__ */ new Set();
17008
+ const stack = [categoryId];
17009
+ while (stack.length > 0) {
17010
+ const currentId = stack.pop();
17011
+ for (const child of childrenMap.get(currentId) ?? []) {
17012
+ if (descendants.has(child.id)) continue;
17013
+ descendants.add(child.id);
17014
+ stack.push(child.id);
17015
+ }
17016
+ }
17017
+ return descendants;
17018
+ }
17019
+ function pruneAncestorSelection(categories, childrenMap, selected, fromCategoryId) {
17020
+ const byId = new Map(categories.map((category) => [category.id, category]));
17021
+ let current = byId.get(fromCategoryId);
17022
+ let guard = 0;
17023
+ while (current && typeof current.parent_id === "number" && guard++ < categories.length) {
17024
+ const parent = byId.get(current.parent_id);
17025
+ if (!parent) break;
17026
+ const descendantIds = collectDescendantIds(childrenMap, parent.id);
17027
+ const hasSelectedDescendant = Array.from(descendantIds).some((id) => selected.has(id));
17028
+ if (!hasSelectedDescendant) {
17029
+ selected.delete(parent.id);
17030
+ }
17031
+ current = parent;
17032
+ }
17033
+ }
17034
+ function toCategoryOrderSelection(categories, selected) {
17035
+ return categories.map((category) => category.id).filter((categoryId) => selected.has(categoryId));
17036
+ }
16979
17037
  function CategoryTreeSelect(props) {
16980
17038
  const tv = useSmartTranslations("ValidationInput");
16981
17039
  const {
@@ -17136,15 +17194,17 @@ function CategoryTreeSelect(props) {
17136
17194
  const newSelected = new Set(valueArray);
17137
17195
  if (newSelected.has(categoryId)) {
17138
17196
  newSelected.delete(categoryId);
17139
- const children = childrenMap.get(categoryId) || [];
17140
- children.forEach((child) => newSelected.delete(child.id));
17197
+ for (const descendantId of collectDescendantIds(childrenMap, categoryId)) {
17198
+ newSelected.delete(descendantId);
17199
+ }
17200
+ pruneAncestorSelection(categories, childrenMap, newSelected, categoryId);
17141
17201
  } else {
17142
17202
  newSelected.add(categoryId);
17143
- if (category.parent_id) {
17144
- newSelected.add(category.parent_id);
17203
+ for (const ancestorId of collectAncestorIds(categories, categoryId)) {
17204
+ newSelected.add(ancestorId);
17145
17205
  }
17146
17206
  }
17147
- onChange(Array.from(newSelected));
17207
+ onChange(toCategoryOrderSelection(categories, newSelected));
17148
17208
  }
17149
17209
  };
17150
17210
  const renderCategory = (category, level = 0) => {
@@ -17498,11 +17558,10 @@ function CategoryTreeSelect(props) {
17498
17558
  "shadow-2xl backdrop-blur-xl"
17499
17559
  ),
17500
17560
  trigger: /* @__PURE__ */ jsxs39(
17501
- "button",
17561
+ "div",
17502
17562
  {
17503
17563
  id: resolvedId,
17504
- type: "button",
17505
- disabled,
17564
+ tabIndex: disabled ? -1 : 0,
17506
17565
  role: "combobox",
17507
17566
  "aria-haspopup": "tree",
17508
17567
  "aria-expanded": isOpen,
@@ -17511,6 +17570,13 @@ function CategoryTreeSelect(props) {
17511
17570
  "aria-describedby": describedBy,
17512
17571
  "aria-required": required,
17513
17572
  "aria-invalid": !!effectiveError,
17573
+ onKeyDown: (event) => {
17574
+ if (disabled) return;
17575
+ if (event.key === "Enter" || event.key === " " || event.key === "ArrowDown") {
17576
+ event.preventDefault();
17577
+ handleOpenChange(!isOpen);
17578
+ }
17579
+ },
17514
17580
  className: cn(
17515
17581
  "group flex w-full items-center justify-between rounded-full transition-all duration-200",
17516
17582
  "backdrop-blur-sm",
@@ -17549,13 +17615,11 @@ function CategoryTreeSelect(props) {
17549
17615
  ] }),
17550
17616
  /* @__PURE__ */ jsxs39("div", { className: "ml-2 flex shrink-0 items-center gap-1.5", children: [
17551
17617
  allowClear && selectedCount > 0 && !disabled && /* @__PURE__ */ jsx49(
17552
- "div",
17618
+ "button",
17553
17619
  {
17554
- role: "button",
17555
- tabIndex: 0,
17620
+ type: "button",
17556
17621
  "aria-label": "Clear selection",
17557
17622
  onClick: handleClear,
17558
- onKeyDown: (event) => (event.key === "Enter" || event.key === " ") && handleClear(event),
17559
17623
  className: cn(
17560
17624
  "opacity-0 group-hover:opacity-100 transition-all duration-200",
17561
17625
  "p-1 rounded-lg hover:bg-destructive/10 text-muted-foreground hover:text-destructive",
@@ -21278,6 +21342,18 @@ function DataTableBodyRows({
21278
21342
  import React54 from "react";
21279
21343
  import { Filter as FilterIcon } from "lucide-react";
21280
21344
  import { Fragment as Fragment22, jsx as jsx64, jsxs as jsxs53 } from "react/jsx-runtime";
21345
+ function getColumnLabel(title) {
21346
+ if (typeof title === "string" || typeof title === "number") {
21347
+ return String(title).replace(/\s+/g, " ").trim();
21348
+ }
21349
+ if (Array.isArray(title)) {
21350
+ return title.map((item) => getColumnLabel(item)).filter(Boolean).join(" ").replace(/\s+/g, " ").trim();
21351
+ }
21352
+ if (React54.isValidElement(title)) {
21353
+ return getColumnLabel(title.props.children);
21354
+ }
21355
+ return "";
21356
+ }
21281
21357
  function DataTableHeader({
21282
21358
  headerRows,
21283
21359
  headerAlign,
@@ -21302,12 +21378,13 @@ function DataTableHeader({
21302
21378
  if (!col.filter) return null;
21303
21379
  const key = col.key;
21304
21380
  const commonProps = { className: "w-full", size };
21381
+ const columnLabel = getColumnLabel(col.title) || key;
21305
21382
  if (col.filter.type === "text") {
21306
21383
  return /* @__PURE__ */ jsx64(
21307
21384
  Input_default,
21308
21385
  {
21309
21386
  ...commonProps,
21310
- placeholder: col.filter.placeholder || `Search ${String(col.title)}`,
21387
+ placeholder: col.filter.placeholder || `Search ${columnLabel}`,
21311
21388
  value: filters[key] || "",
21312
21389
  onChange: (e) => {
21313
21390
  setCurPage(1);
@@ -21328,7 +21405,7 @@ function DataTableHeader({
21328
21405
  setCurPage(1);
21329
21406
  setFilters((prev) => ({ ...prev, [key]: value || void 0 }));
21330
21407
  },
21331
- placeholder: col.filter.placeholder || `Select ${String(col.title)}`
21408
+ placeholder: col.filter.placeholder || `Select ${columnLabel}`
21332
21409
  }
21333
21410
  );
21334
21411
  }
@@ -21337,7 +21414,7 @@ function DataTableHeader({
21337
21414
  DatePicker,
21338
21415
  {
21339
21416
  size,
21340
- placeholder: col.filter.placeholder || `Select ${String(col.title)}`,
21417
+ placeholder: col.filter.placeholder || `Select ${columnLabel}`,
21341
21418
  value: filters[key] || null,
21342
21419
  onChange: (date) => {
21343
21420
  setCurPage(1);
@@ -21369,16 +21446,19 @@ function DataTableHeader({
21369
21446
  }
21370
21447
  const isRightAlign = col.align === "right" || !col.align && headerAlign === "right";
21371
21448
  const isCenterAlign = col.align === "center" || !col.align && headerAlign === "center";
21449
+ const columnLabel = getColumnLabel(col.title) || col.key;
21372
21450
  const titleContent = /* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-1", children: [
21373
21451
  /* @__PURE__ */ jsx64("span", { className: cn("font-medium whitespace-nowrap select-text", headerTitleClass), children: col.title }),
21374
21452
  col.sortable && /* @__PURE__ */ jsx64(
21375
21453
  Tooltip,
21376
21454
  {
21377
21455
  placement: "top",
21378
- content: /* @__PURE__ */ jsx64("span", { className: "text-xs font-medium", children: `Sort by ${String(col.title)}` }),
21456
+ content: /* @__PURE__ */ jsx64("span", { className: "text-xs font-medium", children: `Sort by ${columnLabel}` }),
21379
21457
  children: /* @__PURE__ */ jsx64(
21380
21458
  "button",
21381
21459
  {
21460
+ type: "button",
21461
+ title: `Sort by ${columnLabel}`,
21382
21462
  className: cn(
21383
21463
  "p-1 rounded-lg transition-all duration-200 hover:bg-accent",
21384
21464
  sort?.key === col.key ? "opacity-100 bg-accent" : "opacity-60 hover:opacity-100"
@@ -21391,7 +21471,7 @@ function DataTableHeader({
21391
21471
  return null;
21392
21472
  });
21393
21473
  },
21394
- "aria-label": "Sort",
21474
+ "aria-label": `Sort by ${columnLabel}`,
21395
21475
  children: /* @__PURE__ */ jsxs53("svg", { viewBox: "0 0 20 20", fill: "none", className: cn("inline-block", sortIconClass), children: [
21396
21476
  /* @__PURE__ */ jsx64(
21397
21477
  "path",
@@ -21429,15 +21509,17 @@ function DataTableHeader({
21429
21509
  Tooltip,
21430
21510
  {
21431
21511
  placement: "top",
21432
- content: /* @__PURE__ */ jsx64("span", { className: "text-xs font-medium", children: `Filter by ${String(col.title)}` }),
21512
+ content: /* @__PURE__ */ jsx64("span", { className: "text-xs font-medium", children: `Filter by ${columnLabel}` }),
21433
21513
  children: /* @__PURE__ */ jsx64(
21434
21514
  "button",
21435
21515
  {
21516
+ type: "button",
21517
+ title: `Filter by ${columnLabel}`,
21436
21518
  className: cn(
21437
21519
  "p-1.5 rounded-lg transition-all duration-200 hover:bg-accent",
21438
21520
  filters[col.key] ? "bg-accent text-primary" : "text-muted-foreground"
21439
21521
  ),
21440
- "aria-label": "Filter",
21522
+ "aria-label": `Filter by ${columnLabel}`,
21441
21523
  children: /* @__PURE__ */ jsx64(FilterIcon, { className: "w-4 h-4" })
21442
21524
  }
21443
21525
  )
@@ -22593,7 +22675,7 @@ var useFormField = () => {
22593
22675
  var FormItemContext = React63.createContext({});
22594
22676
  var FormItem = React63.forwardRef(({ className, ...props }, ref) => {
22595
22677
  const id = React63.useId();
22596
- return /* @__PURE__ */ jsx68(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx68("div", { ref, className: cn("space-y-2", className), ...props }) });
22678
+ return /* @__PURE__ */ jsx68(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx68("div", { ref, className: cn("group space-y-2", className), ...props }) });
22597
22679
  });
22598
22680
  FormItem.displayName = "FormItem";
22599
22681
  var FormLabel = React63.forwardRef(
@@ -22601,10 +22683,24 @@ var FormLabel = React63.forwardRef(
22601
22683
  const { error, formItemId } = useFormField();
22602
22684
  const config = React63.useContext(FormConfigContext);
22603
22685
  const sizeClass = config.size === "sm" ? "text-xs" : config.size === "lg" ? "text-base" : "text-sm";
22604
- return /* @__PURE__ */ jsxs57(Label, { ref, className: cn(sizeClass, error && "text-destructive", className), htmlFor: formItemId, ...props, children: [
22605
- children,
22606
- required && /* @__PURE__ */ jsx68("span", { className: "text-destructive ml-1", children: "*" })
22607
- ] });
22686
+ return /* @__PURE__ */ jsxs57(
22687
+ Label,
22688
+ {
22689
+ ref,
22690
+ className: cn(
22691
+ sizeClass,
22692
+ "transition-colors duration-200",
22693
+ error ? "text-destructive" : "group-focus-within:text-primary",
22694
+ className
22695
+ ),
22696
+ htmlFor: formItemId,
22697
+ ...props,
22698
+ children: [
22699
+ children,
22700
+ required && /* @__PURE__ */ jsx68("span", { className: "text-destructive ml-1", children: "*" })
22701
+ ]
22702
+ }
22703
+ );
22608
22704
  }
22609
22705
  );
22610
22706
  FormLabel.displayName = "FormLabel";
@@ -22953,16 +23049,8 @@ function LanguageSwitcherHeadless({
22953
23049
  ] });
22954
23050
  }
22955
23051
 
22956
- // ../../lib/utils/cn.ts
22957
- import { clsx as clsx2 } from "clsx";
22958
- import { twMerge as twMerge2 } from "tailwind-merge";
22959
- function cn2(...inputs) {
22960
- return twMerge2(clsx2(...inputs));
22961
- }
22962
-
22963
- // ../../lib/constants/constants-ui/alert.ts
23052
+ // src/constants/alert.ts
22964
23053
  var VARIANT_STYLES_ALERT = {
22965
- // Use system colors for background + border; leave text colors to content
22966
23054
  default: "border border-border bg-card/60 backdrop-blur-sm",
22967
23055
  info: "border border-info/30 bg-info/10 backdrop-blur-sm",
22968
23056
  success: "border border-success/30 bg-success/10 backdrop-blur-sm",
@@ -22970,7 +23058,7 @@ var VARIANT_STYLES_ALERT = {
22970
23058
  error: "border border-destructive/30 bg-destructive/10 backdrop-blur-sm"
22971
23059
  };
22972
23060
 
22973
- // ../../lib/i18n/translation-adapter.tsx
23061
+ // src/contexts/translation-adapter.tsx
22974
23062
  import * as React65 from "react";
22975
23063
  import { jsx as jsx73 } from "react/jsx-runtime";
22976
23064
  function isUnresolvedTranslation2(value, namespace, key) {
@@ -31697,6 +31785,7 @@ var UEditor = React74.forwardRef(({
31697
31785
  const t = useSmartTranslations("UEditor");
31698
31786
  const effectivePlaceholder = placeholder ?? t("placeholder");
31699
31787
  const inFlightPrepareRef = useRef31(null);
31788
+ const lastAppliedContentRef = useRef31(content ?? "");
31700
31789
  const editorContentRef = useRef31(null);
31701
31790
  const tableColumnGuideRef = useRef31(null);
31702
31791
  const tableRowGuideRef = useRef31(null);
@@ -31999,10 +32088,12 @@ var UEditor = React74.forwardRef(({
31999
32088
  [content, editor, uploadImageForSave]
32000
32089
  );
32001
32090
  useEffect35(() => {
32002
- if (editor && content !== editor.getHTML()) {
32003
- if (editor.isEmpty && content) {
32004
- editor.commands.setContent(content);
32005
- }
32091
+ if (!editor) return;
32092
+ const nextContent = content ?? "";
32093
+ if (lastAppliedContentRef.current === nextContent) return;
32094
+ lastAppliedContentRef.current = nextContent;
32095
+ if (editor.getHTML() !== nextContent) {
32096
+ editor.commands.setContent(nextContent, { emitUpdate: false });
32006
32097
  }
32007
32098
  }, [content, editor]);
32008
32099
  useEffect35(() => {
@@ -32452,7 +32543,7 @@ export {
32452
32543
  VIETNAM_HOLIDAYS,
32453
32544
  VerticalTabs,
32454
32545
  Watermark_default as Watermark,
32455
- cn2 as cn,
32546
+ cn,
32456
32547
  cn as cnLocal,
32457
32548
  extractImageSrcsFromHtml,
32458
32549
  getAnimationStyles,