@underverse-ui/underverse 2.0.35 → 2.0.36

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.
Files changed (38) hide show
  1. package/api-reference.json +1 -1
  2. package/dist/DatePicker-FDOTQMNL.js +15 -0
  3. package/dist/{EmojiPicker-6H52Q4YE.js → EmojiPicker-Z7QPW4DA.js} +5 -4
  4. package/dist/EmojiPicker-Z7QPW4DA.js.map +1 -0
  5. package/dist/chunk-5GMQ23IU.js +719 -0
  6. package/dist/chunk-5GMQ23IU.js.map +1 -0
  7. package/dist/{chunk-L73HBI6E.js → chunk-5VCM2Z7M.js} +6 -4
  8. package/dist/{chunk-L73HBI6E.js.map → chunk-5VCM2Z7M.js.map} +1 -1
  9. package/dist/{chunk-6FAHXNDQ.js → chunk-6XQTRIP6.js} +10 -349
  10. package/dist/chunk-6XQTRIP6.js.map +1 -0
  11. package/dist/chunk-EN33T3LJ.js +358 -0
  12. package/dist/chunk-EN33T3LJ.js.map +1 -0
  13. package/dist/{chunk-WFQV7XFC.js → chunk-JABD2ONI.js} +3 -3
  14. package/dist/chunk-JG3U26V6.js +1692 -0
  15. package/dist/chunk-JG3U26V6.js.map +1 -0
  16. package/dist/{chunk-H4AVZA4K.js → chunk-SCW2XGCE.js} +462 -353
  17. package/dist/chunk-SCW2XGCE.js.map +1 -0
  18. package/dist/{chunk-W3QTP2DM.js → chunk-TSBKJELM.js} +2 -2
  19. package/dist/{chunk-F2P3DJSC.js → chunk-V4VZZHV7.js} +322 -1029
  20. package/dist/chunk-V4VZZHV7.js.map +1 -0
  21. package/dist/index.cjs +13472 -13308
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +20 -0
  24. package/dist/index.d.ts +20 -0
  25. package/dist/index.js +1942 -3569
  26. package/dist/index.js.map +1 -1
  27. package/dist/{menu-bar-MUISXLMR.js → menu-bar-MX3LXG6T.js} +6 -4
  28. package/dist/{menu-bar-MUISXLMR.js.map → menu-bar-MX3LXG6T.js.map} +1 -1
  29. package/dist/ueditor.cjs +2777 -1098
  30. package/dist/ueditor.cjs.map +1 -1
  31. package/dist/ueditor.js +6 -4
  32. package/package.json +1 -1
  33. package/dist/chunk-6FAHXNDQ.js.map +0 -1
  34. package/dist/chunk-F2P3DJSC.js.map +0 -1
  35. package/dist/chunk-H4AVZA4K.js.map +0 -1
  36. /package/dist/{EmojiPicker-6H52Q4YE.js.map → DatePicker-FDOTQMNL.js.map} +0 -0
  37. /package/dist/{chunk-WFQV7XFC.js.map → chunk-JABD2ONI.js.map} +0 -0
  38. /package/dist/{chunk-W3QTP2DM.js.map → chunk-TSBKJELM.js.map} +0 -0
package/dist/ueditor.js CHANGED
@@ -5,10 +5,12 @@ import {
5
5
  extractImageSrcsFromHtml,
6
6
  normalizeImageUrl,
7
7
  prepareUEditorContentForSave
8
- } from "./chunk-H4AVZA4K.js";
9
- import "./chunk-W3QTP2DM.js";
10
- import "./chunk-F2P3DJSC.js";
11
- import "./chunk-6FAHXNDQ.js";
8
+ } from "./chunk-SCW2XGCE.js";
9
+ import "./chunk-TSBKJELM.js";
10
+ import "./chunk-V4VZZHV7.js";
11
+ import "./chunk-EN33T3LJ.js";
12
+ import "./chunk-5GMQ23IU.js";
13
+ import "./chunk-6XQTRIP6.js";
12
14
  import "./chunk-NSBPE2FW.js";
13
15
  export {
14
16
  UEditorPrepareContentForSaveError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@underverse-ui/underverse",
3
- "version": "2.0.35",
3
+ "version": "2.0.36",
4
4
  "description": "Private internal React/Next.js UI component library",
5
5
  "type": "module",
6
6
  "author": "Tran Van Bach",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/constants/form-control-size.ts","../src/utils/cn.ts","../src/contexts/GlobalI18nContext.tsx","../locales/en.json","../locales/vi.json","../locales/ko.json","../locales/ja.json","../src/contexts/TranslationContext.tsx","../src/contexts/NextIntlAdapter.tsx","../src/hooks/useSmartTranslations.tsx","../src/components/UEditor/portal-context.tsx","../src/components/Tooltip.tsx","../src/hooks/useHydrated.ts","../src/utils/react-compose.ts"],"sourcesContent":["export const formControlSizeStyles = {\n xs: {\n control: \"h-6 px-2 text-xs leading-none\",\n compactControl: \"h-6 px-2 text-xs leading-none\",\n input: \"h-6 px-2 text-xs leading-none\",\n label: \"text-xs\",\n icon: \"h-3.5 w-3.5\",\n iconButton: \"h-6 w-6\",\n tag: \"h-4 max-w-20 px-1.5 text-[10px] leading-none\",\n },\n sm: {\n control: \"h-8 px-3 text-sm leading-none\",\n compactControl: \"h-8 px-2.5 text-sm leading-none\",\n input: \"h-8 px-3 text-sm leading-none\",\n label: \"text-xs\",\n icon: \"h-4 w-4 md:h-3.5 md:w-3.5\",\n iconButton: \"h-7 w-7 md:h-6 md:w-6\",\n tag: \"h-5 max-w-24 px-2 text-[10px] leading-none\",\n },\n md: {\n control: \"h-10 px-4 text-sm leading-none\",\n compactControl: \"h-10 px-3 text-sm leading-none\",\n input: \"h-10 px-4 text-sm leading-none\",\n label: \"text-sm\",\n icon: \"h-4 w-4\",\n iconButton: \"h-8 w-8\",\n tag: \"h-6 max-w-28 px-2 text-xs leading-none\",\n },\n lg: {\n control: \"h-12 px-6 text-base leading-none\",\n compactControl: \"h-12 px-4 text-base leading-none\",\n input: \"h-12 px-5 text-base leading-none\",\n label: \"text-base\",\n icon: \"h-5 w-5\",\n iconButton: \"h-10 w-10\",\n tag: \"h-7 max-w-32 px-2.5 text-sm leading-none\",\n },\n xl: {\n control: \"h-14 px-8 text-base leading-none\",\n compactControl: \"h-14 px-5 text-base leading-none\",\n input: \"h-14 px-6 text-base leading-none\",\n label: \"text-base\",\n icon: \"h-5 w-5\",\n iconButton: \"h-12 w-12\",\n tag: \"h-8 max-w-36 px-3 text-sm leading-none\",\n },\n} as const;\n\nexport type FormControlSize = keyof typeof formControlSizeStyles;\n\n/**\n * Shared visual weight for labels attached to form controls.\n *\n * Keep this separate from the size map so every label renderer—including\n * inline control labels that cannot render the shared `<Label>` primitive—\n * follows the same typography contract.\n */\nexport const formControlLabelClass = \"font-medium\";\n\nexport const formControlFixedClass = \"min-h-0 overflow-hidden\";\nexport const formControlValueClass = \"flex h-full items-center min-w-0 flex-1 truncate whitespace-nowrap\";\nexport const formControlOutlineClass = \"border border-input hover:border-primary/40 focus-visible:outline-none focus-visible:border-ring\";\nexport const formControlGroupOutlineClass = \"border border-input hover:border-primary/40 focus-within:border-ring\";\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes.\n * Combines clsx for conditional classes and tailwind-merge for deduplication.\n *\n * @param inputs - Class values to merge\n * @returns Merged class string\n *\n * @example\n * ```tsx\n * cn(\"px-4 py-2\", isActive && \"bg-primary\", className)\n * // => \"px-4 py-2 bg-primary your-custom-class\"\n * ```\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\n/**\n * Flat i18n config for overriding built-in English labels across all components.\n * Pass this via the `i18n` prop on `UnderverseNextIntlProvider` or `TranslationProvider`.\n *\n * Component-level props (e.g. `searchPlaceholder` on `<Combobox />`) still take\n * precedence over this global config — this only sets the global default.\n *\n * @example\n * ```tsx\n * <UnderverseNextIntlProvider\n * i18n={{\n * searchPlaceholder: \"Tìm kiếm...\",\n * selectPlaceholder: \"Chọn...\",\n * noResults: \"Không có kết quả\",\n * clearAll: \"Xóa tất cả\",\n * selectedCount: (n) => `Đã chọn ${n}`,\n * moreCount: (n) => `+${n} khác`,\n * }}\n * >\n * <App />\n * </UnderverseNextIntlProvider>\n * ```\n */\nexport interface GlobalI18nConfig {\n // ── Inputs / search ──────────────────────────────────────────────────────\n /** Placeholder for search inputs inside dropdowns. Default: \"Search...\" */\n searchPlaceholder?: string;\n /** Placeholder shown on trigger button/input when nothing is selected. Default: \"Select...\" */\n selectPlaceholder?: string;\n /** Placeholder for CategoryTreeSelect trigger when nothing is selected. Falls back to `selectPlaceholder`. */\n selectCategoryPlaceholder?: string;\n\n // ── Empty / loading states ────────────────────────────────────────────────\n /** Text shown when a search returns no results. Default: \"No results found\" */\n noResults?: string;\n /** Text shown when a category tree has no items. Default: \"No categories\" */\n noCategories?: string;\n /** Loading indicator text. Default: \"Loading...\" */\n loading?: string;\n\n // ── Actions ───────────────────────────────────────────────────────────────\n /** \"Clear all\" button label (MultiCombobox dropdown header + trigger). Default: \"Clear all\" */\n clearAll?: string;\n /** aria-label for the × button that clears a search input. Default: \"Clear search\" */\n clearSearch?: string;\n /** aria-label for the × button that clears the current selection. Default: \"Clear selection\" */\n clearSelection?: string;\n /** Suggestion shown in empty search state. Default: \"Try a different keyword\" */\n tryDifferentSearch?: string;\n\n // ── Date / time ───────────────────────────────────────────────────────────\n /** \"Today\" button label in DatePicker / CalendarTimeline. Default: \"Today\" */\n today?: string;\n /** \"Clear\" button label in DatePicker / TimePicker. Default: \"Clear\" */\n clear?: string;\n /** aria-label announced when a valid time is selected in TimePicker. Default: \"Valid time selected\" */\n validTimeSelected?: string;\n\n // ── Dynamic / count labels ────────────────────────────────────────────────\n /**\n * Summary shown in the MultiCombobox trigger when items are selected and\n * there is no `maxSelected` limit. Default: `(n) => \\`${n} items selected\\``\n */\n selectedCount?: (count: number) => string;\n /**\n * Summary shown in the MultiCombobox trigger when `maxSelected` is set.\n * Default: `(count, max) => \\`${count}/${max} selected\\``\n */\n selectedCountWithMax?: (count: number, max: number) => string;\n /**\n * Compact summary used in the MultiCombobox dropdown header.\n * Default: `(n) => \\`${n} selected\\``\n */\n itemSelectedCount?: (count: number) => string;\n /**\n * Overflow pill shown when visible tags exceed `maxTagsVisible`.\n * Default: `(n) => \\`+${n} more\\``\n */\n moreCount?: (count: number) => string;\n\n // ── Close / dismiss ───────────────────────────────────────────────────────\n /** aria-label for the × button that closes a modal. Default: \"Close modal\" */\n closeModal?: string;\n /** aria-label for the × button that dismisses a toast. Default: \"Close toast\" */\n closeToast?: string;\n\n // ── Input field actions ───────────────────────────────────────────────────\n /** aria-label for the × button inside a text input. Default: \"Clear input\" */\n clearInput?: string;\n /** aria-label for the eye button when password is hidden. Default: \"Show password\" */\n showPassword?: string;\n /** aria-label for the eye button when password is visible. Default: \"Hide password\" */\n hidePassword?: string;\n /** aria-label for the + stepper button on a number input. Default: \"Increase value\" */\n increaseValue?: string;\n /** aria-label for the − stepper button on a number input. Default: \"Decrease value\" */\n decreaseValue?: string;\n\n // ── TimePicker ────────────────────────────────────────────────────────────\n /** aria-label for the TimePicker trigger button. Default: \"Select time\" */\n selectTime?: string;\n /** aria-label for the inline time text input. Default: \"Edit time value\" */\n editTimeValue?: string;\n /** aria-label for the editable selected-time display. Default: \"Edit selected time\" */\n editSelectedTime?: string;\n /** aria-label for the AM/PM toggle. Default: \"Select AM or PM\" */\n selectAmPm?: string;\n /** aria-label for the \"now\" button in TimePicker. Default: \"Set current time\" */\n setCurrentTime?: string;\n /** aria-label for the clear button in TimePicker. Default: \"Clear selected time\" */\n clearTime?: string;\n\n // ── FileUpload ────────────────────────────────────────────────────────────\n /** title/aria-label for the download button on an uploaded file. Default: \"Download\" */\n download?: string;\n /** title/aria-label for the remove button on an uploaded file. Default: \"Remove\" */\n removeFile?: string;\n\n // ── Tags / Badge ──────────────────────────────────────────────────────────\n /**\n * aria-label for the × button that removes a tag from TagInput.\n * Default: `(tag) => \\`Remove ${tag}\\``\n */\n removeTag?: (tag: string) => string;\n /** aria-label for the × button that removes a dismissible Badge. Default: \"Remove badge\" */\n removeBadge?: string;\n\n // ── Carousel ─────────────────────────────────────────────────────────────\n /** aria-label for the ‹ button that goes to the previous slide. Default: \"Previous slide\" */\n prevSlide?: string;\n /** aria-label for the › button that goes to the next slide. Default: \"Next slide\" */\n nextSlide?: string;\n /**\n * aria-label for a dot/tab button in the Carousel pagination strip.\n * Default: `(n) => \\`Go to slide ${n}\\``\n */\n goToSlide?: (n: number) => string;\n /**\n * aria-label for a thumbnail button in the Carousel thumbnail strip.\n * Default: `(n) => \\`Thumbnail ${n}\\``\n */\n carouselThumbnail?: (n: number) => string;\n\n // ── DataTable ─────────────────────────────────────────────────────────────\n /**\n * aria-label for the filter icon in a DataTable column header.\n * Default: `(column) => \\`Filter by ${column}\\``\n */\n filterByColumn?: (column: string) => string;\n /**\n * aria-label for the auto-fit icon in a DataTable column header.\n * Default: `(column) => \\`Auto fit ${column}\\``\n */\n autoFitColumn?: (column: string) => string;\n /** Fallback label for the \"Sort by\" button when no `sortByLabel` prop is provided. Default: \"Sort by\" */\n sortBy?: string;\n\n // ── Misc component labels ─────────────────────────────────────────────────\n /** aria-label for the ColorPicker trigger button. Default: \"Open color picker\" */\n openColorPicker?: string;\n /** aria-label for the MonthYearPicker trigger button. Default: \"Select month and year\" */\n selectMonthYear?: string;\n /** aria-label for the minimum-value thumb on a Slider. Default: \"Minimum value\" */\n minimumValue?: string;\n /** aria-label for the maximum-value thumb on a Slider. Default: \"Maximum value\" */\n maximumValue?: string;\n /** aria-label for the \"show all\" button inside a collapsed Breadcrumb. Default: \"Show all breadcrumb items\" */\n showAllBreadcrumbs?: string;\n /** aria-label for the Carousel dots / pagination nav. Default: \"Carousel pagination\" */\n carouselPagination?: string;\n /** aria-label for the resize handle on a Sheet panel. Default: \"Resize sheet\" */\n resizeSheet?: string;\n /** aria-label for the row-height resize handle in CalendarTimeline. Default: \"Resize row height\" */\n resizeRowHeight?: string;\n /** aria-label for the resource-column resize handle in CalendarTimeline. Default: \"Resize resource column\" */\n resizeResourceColumn?: string;\n /** aria-label for the battery-level Progress bar. Default: \"Battery level\" */\n batteryLevel?: string;\n /** aria-label for the Breadcrumb `<nav>` landmark. Default: \"Breadcrumb navigation\" */\n breadcrumbNavigation?: string;\n /** aria-label for the step-list container in a Progress component. Default: \"Progress steps\" */\n progressSteps?: string;\n /** title for the preview button on an uploaded file. Default: \"Preview\" */\n previewFile?: string;\n /** title for the retry button on a failed upload. Default: \"Retry\" */\n retryUpload?: string;\n /**\n * aria-label for the expand/collapse button on a CategoryTreeSelect item.\n * Receives the category name and the current expanded state.\n * Default: `(name, expanded) => expanded ? \\`Collapse ${name}\\` : \\`Expand ${name}\\``\n */\n toggleCategory?: (name: string, expanded: boolean) => string;\n /** Column header label for the \"Hour\" spinner in TimePicker. Default: \"Hour\" */\n hourLabel?: string;\n /** Column header label for the \"Min\" spinner in TimePicker. Default: \"Min\" */\n minuteLabel?: string;\n /** Column header label for the \"Sec\" spinner in TimePicker. Default: \"Sec\" */\n secondLabel?: string;\n /** Label for the alpha (opacity) slider in ColorPicker. Default: \"Alpha\" */\n alphaLabel?: string;\n\n // ── Calendar names ────────────────────────────────────────────────────────\n /** 12 full month names starting from January. */\n monthNames?: [string, string, string, string, string, string, string, string, string, string, string, string];\n /** 7 weekday names starting from Sunday. */\n weekdayNames?: [string, string, string, string, string, string, string];\n}\n\nconst GlobalI18nContext = React.createContext<GlobalI18nConfig | null>(null);\n\n/** Read the nearest `GlobalI18nConfig`. Returns `{}` when no provider is present. */\nexport function useGlobalI18n(): GlobalI18nConfig {\n return React.useContext(GlobalI18nContext) ?? {};\n}\n\nexport interface GlobalI18nProviderProps {\n children: React.ReactNode;\n i18n?: GlobalI18nConfig;\n}\n\nexport function GlobalI18nProvider({ children, i18n }: GlobalI18nProviderProps) {\n if (!i18n) return <>{children}</>;\n return <GlobalI18nContext.Provider value={i18n}>{children}</GlobalI18nContext.Provider>;\n}\n","{\n \"Common\": {\n \"close\": \"Close\",\n \"closeAlert\": \"Close alert\",\n \"notifications\": \"Notifications\",\n \"newNotification\": \"New\",\n \"readStatus\": \"Read\",\n \"openLink\": \"Open link\",\n \"theme\": \"Theme\",\n \"lightTheme\": \"Light\",\n \"darkTheme\": \"Dark\",\n \"systemTheme\": \"System\",\n \"density\": \"Density\",\n \"compact\": \"Compact\",\n \"normal\": \"Normal\",\n \"comfortable\": \"Comfortable\",\n \"columns\": \"Columns\",\n \"loading\": \"Loading\",\n \"noData\": \"No data\",\n \"clearFilter\": \"Clear filter\",\n \"selectAll\": \"Select all\",\n \"default\": \"Default\",\n \"other\": \"Other\",\n \"headerAlign\": \"Header alignment\",\n \"alignLeft\": \"Align left\",\n \"alignCenter\": \"Align center\",\n \"alignRight\": \"Align right\"\n },\n \"ValidationInput\": {\n \"required\": \"This field is required\",\n \"typeMismatch\": \"Invalid format\",\n \"pattern\": \"Invalid pattern\",\n \"tooShort\": \"Too short\",\n \"tooLong\": \"Too long\",\n \"rangeUnderflow\": \"Below minimum\",\n \"rangeOverflow\": \"Above maximum\",\n \"stepMismatch\": \"Step mismatch\",\n \"badInput\": \"Bad input\",\n \"invalid\": \"Invalid value\"\n },\n \"Loading\": {\n \"loadingPage\": \"Loading page\",\n \"pleaseWait\": \"Please wait\"\n },\n \"DatePicker\": {\n \"placeholder\": \"Select date\",\n \"today\": \"Today\",\n \"clear\": \"Clear\",\n \"lunarFormat\": \"Month {month} {day}, {year}\",\n \"lunarLeapFormat\": \"Month {month} {day}, {year} (Leap)\",\n \"lunarMonth\": \"Month {month}\",\n \"lunarLeap\": \"Leap\"\n },\n \"DateTimePicker\": {\n \"time\": \"Time\",\n \"clear\": \"Clear\",\n \"done\": \"Done\"\n },\n \"CalendarTimeline\": {\n \"today\": \"Today\",\n \"prev\": \"Previous\",\n \"next\": \"Next\",\n \"month\": \"Month\",\n \"week\": \"Week\",\n \"day\": \"Day\",\n \"sprint\": \"Sprint\",\n \"newEvent\": \"New event\",\n \"createEventTitle\": \"Create event\",\n \"create\": \"Create\",\n \"cancel\": \"Cancel\",\n \"resource\": \"Resource\",\n \"start\": \"Start\",\n \"end\": \"End\",\n \"resourcesHeader\": \"Resources\",\n \"expandGroup\": \"Expand group\",\n \"collapseGroup\": \"Collapse group\",\n \"more\": \"+{n} more\",\n \"sprints\": \"{n} sprints\",\n \"deleteConfirm\": \"Delete?\"\n },\n \"Pagination\": {\n \"navigationLabel\": \"Pagination navigation\",\n \"showingResults\": \"Showing {startItem}–{endItem} of {totalItems}\",\n \"firstPage\": \"First page\",\n \"previousPage\": \"Previous page\",\n \"previous\": \"Previous\",\n \"nextPage\": \"Next page\",\n \"next\": \"Next\",\n \"lastPage\": \"Last page\",\n \"pageNumber\": \"Page {page}\",\n \"itemsPerPage\": \"Items per page\",\n \"search\": \"Search\",\n \"noOptions\": \"No options\"\n },\n \"OCR\": {\n \"imageUpload\": {\n \"dragDropText\": \"Drag & drop files here\",\n \"browseFiles\": \"Browse files\",\n \"supportedFormats\": \"Supported formats: images\"\n }\n },\n \"FileUpload\": {\n \"dragDropText\": \"Drag & drop files here\",\n \"browseFiles\": \"Browse files\",\n \"uploadFiles\": \"Upload files\",\n \"supportedFormats\": \"All file types supported\",\n \"uploadedFiles\": \"Uploaded files\",\n \"clearAll\": \"Clear all\",\n \"fileTooLarge\": \"exceeds size limit\",\n \"maxFilesReached\": \"Maximum file limit reached\",\n \"uploadSuccess\": \"uploaded successfully\",\n \"uploadFailed\": \"upload failed\"\n },\n \"UEditor\": {\n \"placeholder\": \"Type '/' for commands, or just start writing...\",\n \"loading\": \"Loading editor...\",\n \"words\": \"words\",\n \"characters\": \"characters\",\n \"accessibility\": {\n \"editorLabel\": \"Rich text editor\"\n },\n \"colors\": {\n \"default\": \"Default\",\n \"muted\": \"Muted\",\n \"primary\": \"Primary\",\n \"secondary\": \"Secondary\",\n \"success\": \"Success\",\n \"warning\": \"Warning\",\n \"destructive\": \"Destructive\",\n \"info\": \"Info\",\n \"accent\": \"Accent\",\n \"textColor\": \"Text Color\",\n \"highlight\": \"Highlight\",\n \"automatic\": \"Automatic\",\n \"moreColors\": \"More Colors...\",\n \"color\": \"Color\",\n \"done\": \"Done\"\n },\n \"toolbar\": {\n \"bold\": \"Bold\",\n \"boldShortcut\": \"Bold (Ctrl+B)\",\n \"italic\": \"Italic\",\n \"italicShortcut\": \"Italic (Ctrl+I)\",\n \"underline\": \"Underline\",\n \"underlineShortcut\": \"Underline (Ctrl+U)\",\n \"strike\": \"Strikethrough\",\n \"code\": \"Inline Code\",\n \"subscript\": \"Subscript\",\n \"superscript\": \"Superscript\",\n \"link\": \"Link\",\n \"removeLink\": \"Remove Link\",\n \"image\": \"Insert Image\",\n \"table\": \"Insert Table\",\n \"alignment\": \"Alignment\",\n \"alignLeft\": \"Align Left\",\n \"alignCenter\": \"Align Center\",\n \"alignRight\": \"Align Right\",\n \"justify\": \"Justify\",\n \"decreaseIndent\": \"Decrease Indent\",\n \"increaseIndent\": \"Increase Indent\",\n \"bulletList\": \"Bullet List\",\n \"orderedList\": \"Numbered List\",\n \"taskList\": \"Task List\",\n \"quote\": \"Quote\",\n \"codeBlock\": \"Code Block\",\n \"undo\": \"Undo (Ctrl+Z)\",\n \"redo\": \"Redo (Ctrl+Y)\",\n \"textStyle\": \"Text Style\",\n \"fontFamily\": \"Font Family\",\n \"fontSize\": \"Font Size\",\n \"lineHeight\": \"Line Height\",\n \"fontDefault\": \"Default Font\",\n \"sizeDefault\": \"Default Size\",\n \"lineHeightDefault\": \"Default Leading\",\n \"letterSpacing\": \"Letter Spacing\",\n \"letterSpacingDefault\": \"Default Tracking\",\n \"fontSans\": \"Sans\",\n \"fontSerif\": \"Serif\",\n \"fontMono\": \"Mono\",\n \"normal\": \"Normal text\",\n \"heading1\": \"Heading 1\",\n \"heading2\": \"Heading 2\",\n \"heading3\": \"Heading 3\",\n \"emoji\": \"Insert Emoji\",\n \"imageLayoutBlock\": \"Image Block\",\n \"imageLayoutLeft\": \"Wrap Text Right\",\n \"imageLayoutRight\": \"Wrap Text Left\",\n \"imageWidthSm\": \"Image Width Small\",\n \"imageWidthMd\": \"Image Width Medium\",\n \"imageWidthLg\": \"Image Width Large\",\n \"imageResetSize\": \"Reset Image Size\",\n \"imageDelete\": \"Delete Image\",\n \"hideMenuBar\": \"Hide menu bar\",\n \"showMenuBar\": \"Show menu bar\"\n },\n \"slashCommand\": {\n \"basicBlocks\": \"Basic Blocks\",\n \"text\": \"Text\",\n \"textDesc\": \"Plain text block\",\n \"heading1\": \"Heading 1\",\n \"heading1Desc\": \"Large section heading\",\n \"heading2\": \"Heading 2\",\n \"heading2Desc\": \"Medium section heading\",\n \"heading3\": \"Heading 3\",\n \"heading3Desc\": \"Small section heading\",\n \"bulletList\": \"Bullet List\",\n \"bulletListDesc\": \"Simple bulleted list\",\n \"orderedList\": \"Numbered List\",\n \"orderedListDesc\": \"Numbered list\",\n \"todoList\": \"To-do List\",\n \"todoListDesc\": \"Checkboxes for tasks\",\n \"quote\": \"Quote\",\n \"quoteDesc\": \"Capture a quote\",\n \"codeBlock\": \"Code Block\",\n \"codeBlockDesc\": \"Code with syntax highlighting\",\n \"divider\": \"Divider\",\n \"dividerDesc\": \"Visual divider\",\n \"table\": \"Table\",\n \"tableDesc\": \"Add a table\",\n \"noResults\": \"No matching blocks found\",\n \"callout\": \"Callout\",\n \"calloutDesc\": \"Highlight key info with a callout block\",\n \"bookmark\": \"Bookmark Card\",\n \"bookmarkDesc\": \"Embed a link as a bookmark card\",\n \"fileCard\": \"File Attachment\",\n \"fileCardDesc\": \"Upload a file card attachment\",\n \"formCheckbox\": \"Form Checkbox\",\n \"formCheckboxDesc\": \"Insert an interactive checkbox field\",\n \"roundCheckbox\": \"Round Checkbox\",\n \"roundCheckboxDesc\": \"Insert a circular interactive checkbox\",\n \"formRadio\": \"Form Radio Button\",\n \"formRadioDesc\": \"Insert an interactive radio button field\"\n },\n \"floatingMenu\": {\n \"addBlock\": \"Add block\"\n },\n \"linkInput\": {\n \"placeholder\": \"Paste or type a link...\",\n \"invalid\": \"Enter a valid link, such as https://example.com.\"\n },\n \"imageInput\": {\n \"urlTab\": \"URL\",\n \"uploadTab\": \"Upload\",\n \"urlLabel\": \"Image URL\",\n \"urlPlaceholder\": \"https://example.com/image.jpg\",\n \"invalid\": \"Enter a valid image URL, such as https://example.com/image.jpg.\",\n \"uploadLabel\": \"Choose Image\",\n \"uploadPlaceholder\": \"Click to upload image\",\n \"uploading\": \"Uploading...\",\n \"uploadError\": \"Upload failed. Please try again.\",\n \"altLabel\": \"Alt text (optional)\",\n \"altPlaceholder\": \"Describe the image...\",\n \"addBtn\": \"Add Image\",\n \"cancelBtn\": \"Cancel\",\n \"addFromUrl\": \"Add from URL\"\n },\n \"emojiPicker\": {\n \"searchPlaceholder\": \"Search emoji\",\n \"noResults\": \"No emoji found\",\n \"tryDifferentSearch\": \"Try a different keyword\"\n },\n \"stickerPicker\": {\n \"searchPlaceholder\": \"Search stickers\",\n \"noResults\": \"No stickers found\",\n \"tryDifferentSearch\": \"Try a different keyword\"\n },\n \"emojiSuggestion\": {\n \"title\": \"Emoji\",\n \"noResults\": \"No emoji found\",\n \"showingCount\": \"Showing first {shown} of {total} emojis\"\n },\n \"formulaSuggestion\": {\n \"title\": \"Functions\",\n \"noResults\": \"No function found\",\n \"sum\": \"Add values in a range\",\n \"avg\": \"Average values in a range\",\n \"min\": \"Smallest value in a range\",\n \"max\": \"Largest value in a range\",\n \"count\": \"Count numeric cells in a range\"\n },\n \"tableMenu\": {\n \"insert3x3\": \"Insert 3×3 Table\",\n \"insertTable\": \"Insert Table\",\n \"gridPreview\": \"Insert {rows}×{cols} Table\",\n \"addColumnBefore\": \"Add Column Before\",\n \"addColumnAfter\": \"Add Column After\",\n \"addRowBefore\": \"Add Row Before\",\n \"addRowAfter\": \"Add Row After\",\n \"duplicateColumn\": \"Duplicate Column\",\n \"duplicateRow\": \"Duplicate Row\",\n \"clearColumnContents\": \"Clear Column Contents\",\n \"clearRowContents\": \"Clear Row Contents\",\n \"deleteColumn\": \"Delete Column\",\n \"deleteRow\": \"Delete Row\",\n \"deleteTable\": \"Delete Table\",\n \"toggleHeaderRow\": \"Toggle Header Row\",\n \"toggleHeaderColumn\": \"Toggle Header Column\",\n \"mergeCells\": \"Merge Cells\",\n \"splitCell\": \"Split Cell\",\n \"openControls\": \"Open Table Controls\",\n \"cellFormatting\": \"Cell Formatting\",\n \"quickAddColumnAfter\": \"Quick Add Column After\",\n \"quickAddRowAfter\": \"Quick Add Row After\",\n \"expandTable\": \"Expand Table\",\n \"dragRow\": \"Drag Row\",\n \"dragColumn\": \"Drag Column\",\n \"resizeBoth\": \"Resize Table\",\n \"resizeCtrlHint\": \"Drag freely. Hold Ctrl to lock to one axis; hold Ctrl+Shift to preserve proportions\",\n \"fitToEditorWidth\": \"Fit to Editor Width\",\n \"alignLeft\": \"Align Table Left\",\n \"alignCenter\": \"Align Table Center\",\n \"alignRight\": \"Align Table Right\",\n \"cellBackground\": \"Cell Background\",\n \"cellBorder\": \"Cell Border\",\n \"borderStyle\": \"Border Style\",\n \"borderWidth\": \"Border Width\",\n \"borderColor\": \"Border Color\",\n \"borderPosition\": \"Border placement\",\n \"borderMode\": \"Border mode\",\n \"borderDraw\": \"Draw borders\",\n \"borderErase\": \"Hide borders\",\n \"borderAll\": \"All borders\",\n \"borderOuter\": \"Outer borders\",\n \"borderInner\": \"Inner borders\",\n \"borderHorizontal\": \"Inner horizontal borders\",\n \"borderVertical\": \"Inner vertical borders\",\n \"borderTop\": \"Top border\",\n \"borderRight\": \"Right border\",\n \"borderBottom\": \"Bottom border\",\n \"borderLeft\": \"Left border\",\n \"clearBorder\": \"Clear Border\",\n \"formula\": \"Formula\",\n \"formulaBar\": \"Formula bar\",\n \"formulaError\": \"Formula error\",\n \"editFormula\": \"Edit formula\",\n \"clearCell\": \"Clear cell\",\n \"convertToValue\": \"Convert to value\",\n \"numberFormat\": \"Number Format\",\n \"formatText\": \"Text\",\n \"formatDate\": \"Date\",\n \"apply\": \"Apply\",\n \"clear\": \"Clear\",\n \"recalculate\": \"Recalculate\",\n \"done\": \"Done\",\n \"alignVertical\": \"Vertical Alignment\",\n \"alignVerticalTop\": \"Top Align\",\n \"alignVerticalMiddle\": \"Middle Align\",\n \"alignVerticalBottom\": \"Bottom Align\",\n \"textDirection\": \"Text Direction\",\n \"horizontalText\": \"Horizontal Text\",\n \"verticalText\": \"Vertical Text\",\n \"wrapText\": \"Wrap Text\",\n \"noWrapText\": \"Don't Wrap Text\"\n },\n \"callout\": {\n \"selectEmoji\": \"Select Emoji\",\n \"backgroundColor\": \"Background Color\"\n },\n \"radio\": {\n \"groupName\": \"Group Name\",\n \"editGroup\": \"Edit Group Name\"\n },\n \"bookmark\": {\n \"clickToOpenNewTab\": \"Click to open this link in a new tab.\",\n \"clickToOpenLink\": \"Click to open link.\",\n \"noDescription\": \"No description available.\",\n \"failedToLoad\": \"Failed to load link preview. Click to open link.\",\n \"previewFailed\": \"Preview failed to load\",\n \"retryPreview\": \"Retry preview\"\n },\n \"fileCard\": {\n \"unnamed\": \"Unnamed file\",\n \"uploading\": \"(Uploading...)\",\n \"uploadFailed\": \"Upload failed\",\n \"retryUpload\": \"Retry upload\",\n \"download\": \"Download {name}\"\n },\n \"menubar\": {\n \"file\": \"File\",\n \"edit\": \"Edit\",\n \"view\": \"View\",\n \"insert\": \"Insert\",\n \"format\": \"Format\",\n \"tools\": \"Tools\",\n \"table\": \"Table\",\n \"save\": \"Save\",\n \"exportHtml\": \"Export HTML\",\n \"undo\": \"Undo\",\n \"undoShortcut\": \"Ctrl+Z\",\n \"redo\": \"Redo\",\n \"redoShortcut\": \"Ctrl+Y\",\n \"cut\": \"Cut\",\n \"cutShortcut\": \"Ctrl+X\",\n \"copy\": \"Copy\",\n \"copyShortcut\": \"Ctrl+C\",\n \"paste\": \"Paste\",\n \"pasteShortcut\": \"Ctrl+V\",\n \"pasteAsText\": \"Paste as plain text\",\n \"selectAll\": \"Select All\",\n \"selectAllShortcut\": \"Ctrl+A\",\n \"sourceCode\": \"Source code\",\n \"preview\": \"Preview\",\n \"fullscreen\": \"Fullscreen\",\n \"fullscreenShortcut\": \"Ctrl+Shift+F\",\n \"image\": \"Image\",\n \"link\": \"Link\",\n \"linkShortcut\": \"Ctrl+K\",\n \"insertTable\": \"Table\",\n \"horizontalRule\": \"Horizontal line\",\n \"bold\": \"Bold\",\n \"boldShortcut\": \"Ctrl+B\",\n \"italic\": \"Italic\",\n \"italicShortcut\": \"Ctrl+I\",\n \"underline\": \"Underline\",\n \"underlineShortcut\": \"Ctrl+U\",\n \"strike\": \"Strikethrough\",\n \"superscript\": \"Superscript\",\n \"subscript\": \"Subscript\",\n \"code\": \"Code\",\n \"wrap\": \"Block\",\n \"align\": \"Align\",\n \"clearFormatting\": \"Clear formatting\",\n \"paragraph\": \"Paragraph\",\n \"heading1\": \"Heading 1\",\n \"heading2\": \"Heading 2\",\n \"heading3\": \"Heading 3\",\n \"blockquote\": \"Blockquote\",\n \"codeBlock\": \"Code block\",\n \"taskList\": \"Task list\",\n \"alignLeft\": \"Left\",\n \"alignCenter\": \"Center\",\n \"alignRight\": \"Right\",\n \"alignJustify\": \"Justify\",\n \"tableProperties\": \"Table properties\",\n \"deleteTable\": \"Delete table\",\n \"row\": \"Row\",\n \"column\": \"Column\",\n \"cell\": \"Cell\",\n \"addRowBefore\": \"Insert row above\",\n \"addRowAfter\": \"Insert row below\",\n \"deleteRow\": \"Delete row\",\n \"addColumnBefore\": \"Insert column left\",\n \"addColumnAfter\": \"Insert column right\",\n \"deleteColumn\": \"Delete column\",\n \"mergeCells\": \"Merge cells\",\n \"splitCell\": \"Split cell\",\n \"imageUpload\": \"Upload Image\",\n \"formFields\": \"Form Fields\",\n \"formCheckbox\": \"Form Checkbox\",\n \"formRadio\": \"Form Radio Button\",\n \"applySource\": \"Apply\",\n \"closeDialog\": \"Close\",\n \"copyHtml\": \"Copy HTML\",\n \"exportDefault\": \"Export HTML\",\n \"previewEmpty\": \"Nothing to preview.\",\n \"sourceCodeHint\": \"Edit HTML directly and click Apply to update the editor.\",\n \"invalidSource\": \"The HTML contains content this editor cannot read. Fix it and try again.\"\n }\n }\n}\n","{\n \"Common\": {\n \"close\": \"Đóng\",\n \"closeAlert\": \"Đóng cảnh báo\",\n \"notifications\": \"Thông báo\",\n \"newNotification\": \"Mới\",\n \"readStatus\": \"Đã đọc\",\n \"openLink\": \"Mở liên kết\",\n \"theme\": \"Chủ đề\",\n \"lightTheme\": \"Giao diện sáng\",\n \"darkTheme\": \"Giao diện tối\",\n \"systemTheme\": \"Theo hệ thống\",\n \"density\": \"Mật độ\",\n \"compact\": \"Gọn\",\n \"normal\": \"Thường\",\n \"comfortable\": \"Thoải mái\",\n \"columns\": \"Cột\",\n \"loading\": \"Đang tải\",\n \"noData\": \"Không có dữ liệu\",\n \"clearFilter\": \"Xóa bộ lọc\",\n \"selectAll\": \"Chọn tất cả\",\n \"default\": \"Mặc định\",\n \"other\": \"Khác\",\n \"headerAlign\": \"Căn chỉnh tiêu đề\",\n \"alignLeft\": \"Căn trái\",\n \"alignCenter\": \"Căn giữa\",\n \"alignRight\": \"Căn phải\"\n },\n \"ValidationInput\": {\n \"required\": \"Trường này là bắt buộc.\",\n \"typeMismatch\": \"Định dạng không hợp lệ.\",\n \"pattern\": \"Sai mẫu\",\n \"tooShort\": \"Quá ngắn\",\n \"tooLong\": \"Quá dài\",\n \"rangeUnderflow\": \"Giá trị nhỏ hơn mức tối thiểu.\",\n \"rangeOverflow\": \"Giá trị vượt quá mức tối đa.\",\n \"stepMismatch\": \"Sai bước\",\n \"badInput\": \"Giá trị không hợp lệ\",\n \"invalid\": \"Giá trị không hợp lệ\"\n },\n \"Loading\": {\n \"loadingPage\": \"Đang tải trang\",\n \"pleaseWait\": \"Vui lòng chờ\"\n },\n \"DatePicker\": {\n \"placeholder\": \"Chọn ngày\",\n \"today\": \"Hôm nay\",\n \"clear\": \"Xóa\",\n \"lunarFormat\": \"{day} tháng {month}, {year}\",\n \"lunarLeapFormat\": \"{day} tháng {month}, {year} (Nhuận)\",\n \"lunarMonth\": \"Tháng {month}\",\n \"lunarLeap\": \"Nhuận\"\n },\n \"DateTimePicker\": {\n \"time\": \"Thời gian\",\n \"clear\": \"Xóa\",\n \"done\": \"Xong\"\n },\n \"CalendarTimeline\": {\n \"today\": \"Hôm nay\",\n \"prev\": \"Trước\",\n \"next\": \"Sau\",\n \"month\": \"Tháng\",\n \"week\": \"Tuần\",\n \"day\": \"Ngày\",\n \"sprint\": \"Sprint\",\n \"newEvent\": \"Thêm sự kiện\",\n \"createEventTitle\": \"Tạo sự kiện\",\n \"create\": \"Tạo\",\n \"cancel\": \"Hủy\",\n \"resource\": \"Tài nguyên\",\n \"start\": \"Bắt đầu\",\n \"end\": \"Kết thúc\",\n \"resourcesHeader\": \"Tài nguyên\",\n \"expandGroup\": \"Mở rộng nhóm\",\n \"collapseGroup\": \"Thu gọn nhóm\",\n \"more\": \"+{n} thêm\",\n \"sprints\": \"{n} sprint\",\n \"deleteConfirm\": \"Xóa?\"\n },\n \"Pagination\": {\n \"navigationLabel\": \"Điều hướng phân trang\",\n \"showingResults\": \"Hiển thị {startItem}–{endItem} trong tổng {totalItems}\",\n \"firstPage\": \"Trang đầu\",\n \"previousPage\": \"Trang trước\",\n \"previous\": \"Trước\",\n \"nextPage\": \"Trang sau\",\n \"next\": \"Sau\",\n \"lastPage\": \"Trang cuối\",\n \"pageNumber\": \"Trang {page}\",\n \"itemsPerPage\": \"Số mục/trang\",\n \"search\": \"Tìm kiếm\",\n \"noOptions\": \"Không có lựa chọn\"\n },\n \"OCR\": {\n \"imageUpload\": {\n \"dragDropText\": \"Kéo & thả ảnh vào đây\",\n \"browseFiles\": \"Chọn tệp\",\n \"supportedFormats\": \"Hỗ trợ các định dạng ảnh\"\n }\n },\n \"FileUpload\": {\n \"dragDropText\": \"Kéo & thả tệp vào đây\",\n \"browseFiles\": \"Chọn tệp\",\n \"uploadFiles\": \"Tải tệp lên\",\n \"supportedFormats\": \"Hỗ trợ mọi định dạng tệp\",\n \"uploadedFiles\": \"Tệp đã tải lên\",\n \"clearAll\": \"Xóa tất cả\",\n \"fileTooLarge\": \"vượt quá giới hạn kích thước\",\n \"maxFilesReached\": \"Đã đạt giới hạn số tệp.\",\n \"uploadSuccess\": \"Đã tải lên thành công.\",\n \"uploadFailed\": \"Tải lên thất bại.\"\n },\n \"UEditor\": {\n \"placeholder\": \"Nhập '/' để mở lệnh, hoặc bắt đầu viết...\",\n \"loading\": \"Đang tải trình soạn thảo...\",\n \"words\": \"từ\",\n \"characters\": \"ký tự\",\n \"accessibility\": {\n \"editorLabel\": \"Trình soạn thảo văn bản\"\n },\n \"colors\": {\n \"default\": \"Mặc định\",\n \"muted\": \"Mờ\",\n \"primary\": \"Chính\",\n \"secondary\": \"Phụ\",\n \"success\": \"Thành công\",\n \"warning\": \"Cảnh báo\",\n \"destructive\": \"Nguy hiểm\",\n \"info\": \"Thông tin\",\n \"accent\": \"Nhấn\",\n \"textColor\": \"Màu chữ\",\n \"highlight\": \"Nổi bật\",\n \"automatic\": \"Tự động\",\n \"moreColors\": \"Thêm màu...\",\n \"color\": \"Màu\",\n \"done\": \"Xong\"\n },\n \"toolbar\": {\n \"bold\": \"In đậm\",\n \"boldShortcut\": \"In đậm (Ctrl+B)\",\n \"italic\": \"In nghiêng\",\n \"italicShortcut\": \"In nghiêng (Ctrl+I)\",\n \"underline\": \"Gạch chân\",\n \"underlineShortcut\": \"Gạch chân (Ctrl+U)\",\n \"strike\": \"Gạch ngang\",\n \"code\": \"Code nội dòng\",\n \"subscript\": \"Chỉ số dưới\",\n \"superscript\": \"Chỉ số trên\",\n \"link\": \"Liên kết\",\n \"removeLink\": \"Gỡ liên kết\",\n \"image\": \"Chèn ảnh\",\n \"table\": \"Chèn bảng\",\n \"alignment\": \"Căn chỉnh\",\n \"alignLeft\": \"Căn trái\",\n \"alignCenter\": \"Căn giữa\",\n \"alignRight\": \"Căn phải\",\n \"justify\": \"Căn đều\",\n \"decreaseIndent\": \"Giảm lề\",\n \"increaseIndent\": \"Tăng lề\",\n \"bulletList\": \"Danh sách dấu chấm\",\n \"orderedList\": \"Danh sách số\",\n \"taskList\": \"Danh sách công việc\",\n \"quote\": \"Trích dẫn\",\n \"codeBlock\": \"Khối mã\",\n \"undo\": \"Hoàn tác (Ctrl+Z)\",\n \"redo\": \"Làm lại (Ctrl+Y)\",\n \"textStyle\": \"Kiểu chữ\",\n \"fontFamily\": \"Phông chữ\",\n \"fontSize\": \"Cỡ chữ\",\n \"lineHeight\": \"Giãn dòng\",\n \"fontDefault\": \"Phông mặc định\",\n \"sizeDefault\": \"Cỡ mặc định\",\n \"lineHeightDefault\": \"Giãn dòng mặc định\",\n \"letterSpacing\": \"Giãn chữ\",\n \"letterSpacingDefault\": \"Giãn chữ mặc định\",\n \"fontSans\": \"Sans\",\n \"fontSerif\": \"Serif\",\n \"fontMono\": \"Mono\",\n \"normal\": \"Văn bản thường\",\n \"heading1\": \"Tiêu đề 1\",\n \"heading2\": \"Tiêu đề 2\",\n \"heading3\": \"Tiêu đề 3\",\n \"emoji\": \"Chèn Emoji\",\n \"imageLayoutBlock\": \"Ảnh Dạng Khối\",\n \"imageLayoutLeft\": \"Ảnh Trái, Chữ Phải\",\n \"imageLayoutRight\": \"Ảnh Phải, Chữ Trái\",\n \"imageWidthSm\": \"Ảnh Nhỏ\",\n \"imageWidthMd\": \"Ảnh Vừa\",\n \"imageWidthLg\": \"Ảnh Lớn\",\n \"imageResetSize\": \"Đặt Lại Kích Thước Ảnh\",\n \"imageDelete\": \"Xóa Ảnh\",\n \"hideMenuBar\": \"Ẩn thanh menu\",\n \"showMenuBar\": \"Hiện thanh menu\"\n },\n \"slashCommand\": {\n \"basicBlocks\": \"Khối cơ bản\",\n \"text\": \"Văn bản\",\n \"textDesc\": \"Khối văn bản thuần\",\n \"heading1\": \"Tiêu đề 1\",\n \"heading1Desc\": \"Tiêu đề phần lớn\",\n \"heading2\": \"Tiêu đề 2\",\n \"heading2Desc\": \"Tiêu đề phần vừa\",\n \"heading3\": \"Tiêu đề 3\",\n \"heading3Desc\": \"Tiêu đề phần nhỏ\",\n \"bulletList\": \"Danh sách dấu chấm\",\n \"bulletListDesc\": \"Danh sách liệt kê đơn giản\",\n \"orderedList\": \"Danh sách số\",\n \"orderedListDesc\": \"Danh sách có thứ tự\",\n \"todoList\": \"Danh sách công việc\",\n \"todoListDesc\": \"Checkbox công việc\",\n \"quote\": \"Trích dẫn\",\n \"quoteDesc\": \"Tạo trích dẫn\",\n \"codeBlock\": \"Khối mã\",\n \"codeBlockDesc\": \"Mã với tô màu cú pháp\",\n \"divider\": \"Phân cách\",\n \"dividerDesc\": \"Đường kẻ ngang\",\n \"table\": \"Bảng\",\n \"tableDesc\": \"Thêm bảng\",\n \"noResults\": \"Không tìm thấy khối phù hợp\",\n \"callout\": \"Hộp thông tin\",\n \"calloutDesc\": \"Làm nổi bật thông tin chính bằng hộp chú thích\",\n \"bookmark\": \"Thẻ liên kết\",\n \"bookmarkDesc\": \"Nhúng một liên kết dưới dạng thẻ xem trước\",\n \"fileCard\": \"Tệp đính kèm\",\n \"fileCardDesc\": \"Tải lên tệp tin đính kèm\",\n \"formCheckbox\": \"Checkbox biểu mẫu\",\n \"formCheckboxDesc\": \"Thêm ô checkbox biểu mẫu\",\n \"roundCheckbox\": \"Checkbox tròn\",\n \"roundCheckboxDesc\": \"Thêm checkbox tương tác hình tròn\",\n \"formRadio\": \"Radio biểu mẫu\",\n \"formRadioDesc\": \"Thêm nút chọn một (Radio) biểu mẫu\"\n },\n \"floatingMenu\": {\n \"addBlock\": \"Thêm khối\"\n },\n \"linkInput\": {\n \"placeholder\": \"Dán hoặc nhập liên kết...\",\n \"invalid\": \"Vui lòng nhập liên kết hợp lệ, ví dụ: https://example.com.\"\n },\n \"imageInput\": {\n \"urlTab\": \"URL\",\n \"uploadTab\": \"Tải lên\",\n \"urlLabel\": \"URL hình ảnh\",\n \"urlPlaceholder\": \"https://example.com/image.jpg\",\n \"invalid\": \"Nhập URL ảnh hợp lệ, ví dụ https://example.com/image.jpg.\",\n \"uploadLabel\": \"Chọn hình ảnh\",\n \"uploadPlaceholder\": \"Nhấn để tải ảnh lên\",\n \"uploading\": \"Đang tải lên...\",\n \"uploadError\": \"Tải lên thất bại. Vui lòng thử lại.\",\n \"altLabel\": \"Mô tả ảnh (tuỳ chọn)\",\n \"altPlaceholder\": \"Mô tả hình ảnh...\",\n \"addBtn\": \"Thêm ảnh\",\n \"cancelBtn\": \"Hủy\",\n \"addFromUrl\": \"Thêm từ URL\"\n },\n \"emojiPicker\": {\n \"searchPlaceholder\": \"Tìm kiếm biểu tượng cảm xúc\",\n \"noResults\": \"Không tìm thấy emoji\",\n \"tryDifferentSearch\": \"Thử từ khóa khác\"\n },\n \"stickerPicker\": {\n \"searchPlaceholder\": \"Tìm kiếm nhãn dán\",\n \"noResults\": \"Không tìm thấy nhãn dán nào\",\n \"tryDifferentSearch\": \"Thử từ khóa khác\"\n },\n \"emojiSuggestion\": {\n \"title\": \"Emoji\",\n \"noResults\": \"Không tìm thấy emoji\",\n \"showingCount\": \"Hiển thị {shown} trong tổng số {total} emoji\"\n },\n \"formulaSuggestion\": {\n \"title\": \"Hàm\",\n \"noResults\": \"Không tìm thấy hàm\",\n \"sum\": \"Cộng các giá trị trong vùng\",\n \"avg\": \"Tính trung bình các giá trị trong vùng\",\n \"min\": \"Giá trị nhỏ nhất trong vùng\",\n \"max\": \"Giá trị lớn nhất trong vùng\",\n \"count\": \"Đếm các ô dạng số trong vùng\"\n },\n \"tableMenu\": {\n \"insert3x3\": \"Chèn bảng 3×3\",\n \"insertTable\": \"Chèn bảng\",\n \"gridPreview\": \"Chèn bảng {rows}×{cols}\",\n \"addColumnBefore\": \"Thêm cột trước\",\n \"addColumnAfter\": \"Thêm cột sau\",\n \"addRowBefore\": \"Thêm hàng trước\",\n \"addRowAfter\": \"Thêm hàng sau\",\n \"duplicateColumn\": \"Nhân đôi cột\",\n \"duplicateRow\": \"Nhân đôi hàng\",\n \"clearColumnContents\": \"Xóa nội dung cột\",\n \"clearRowContents\": \"Xóa nội dung hàng\",\n \"deleteColumn\": \"Xóa cột\",\n \"deleteRow\": \"Xóa hàng\",\n \"deleteTable\": \"Xóa bảng\",\n \"toggleHeaderRow\": \"Bật/tắt hàng tiêu đề\",\n \"toggleHeaderColumn\": \"Bật/tắt cột tiêu đề\",\n \"mergeCells\": \"Gộp ô\",\n \"splitCell\": \"Tách ô\",\n \"openControls\": \"Mở điều khiển bảng\",\n \"cellFormatting\": \"Định dạng ô\",\n \"quickAddColumnAfter\": \"Thêm nhanh cột sau\",\n \"quickAddRowAfter\": \"Thêm nhanh hàng sau\",\n \"expandTable\": \"Mở rộng bảng\",\n \"dragRow\": \"Kéo hàng\",\n \"dragColumn\": \"Kéo cột\",\n \"resizeBoth\": \"Đổi kích thước bảng\",\n \"resizeCtrlHint\": \"Kéo tự do; giữ Ctrl để khóa một chiều, hoặc Ctrl+Shift để giữ nguyên tỷ lệ\",\n \"fitToEditorWidth\": \"Vừa chiều rộng trình soạn thảo\",\n \"alignLeft\": \"Căn bảng trái\",\n \"alignCenter\": \"Căn bảng giữa\",\n \"alignRight\": \"Căn bảng phải\",\n \"cellBackground\": \"Màu nền ô\",\n \"cellBorder\": \"Viền ô\",\n \"borderStyle\": \"Kiểu viền\",\n \"borderWidth\": \"Độ dày viền\",\n \"borderColor\": \"Màu viền\",\n \"borderPosition\": \"Vị trí viền\",\n \"borderMode\": \"Chế độ viền\",\n \"borderDraw\": \"Vẽ viền\",\n \"borderErase\": \"Ẩn cạnh\",\n \"borderAll\": \"Tất cả viền\",\n \"borderOuter\": \"Viền ngoài\",\n \"borderInner\": \"Viền trong\",\n \"borderHorizontal\": \"Viền ngang bên trong\",\n \"borderVertical\": \"Viền dọc bên trong\",\n \"borderTop\": \"Viền trên\",\n \"borderRight\": \"Viền phải\",\n \"borderBottom\": \"Viền dưới\",\n \"borderLeft\": \"Viền trái\",\n \"clearBorder\": \"Xóa viền\",\n \"formula\": \"Công thức\",\n \"formulaBar\": \"Thanh công thức\",\n \"formulaError\": \"Lỗi công thức\",\n \"editFormula\": \"Sửa công thức\",\n \"clearCell\": \"Xóa nội dung ô\",\n \"convertToValue\": \"Chuyển thành giá trị\",\n \"numberFormat\": \"Định dạng số\",\n \"formatText\": \"Chữ\",\n \"formatDate\": \"Ngày\",\n \"apply\": \"Áp dụng\",\n \"clear\": \"Xóa\",\n \"recalculate\": \"Tính lại\",\n \"done\": \"Xong\",\n \"alignVertical\": \"Căn lề dọc\",\n \"alignVerticalTop\": \"Căn trên\",\n \"alignVerticalMiddle\": \"Căn giữa\",\n \"alignVerticalBottom\": \"Căn dưới\",\n \"textDirection\": \"Hướng chữ\",\n \"horizontalText\": \"Chữ ngang\",\n \"verticalText\": \"Chữ dọc\",\n \"wrapText\": \"Tự xuống dòng\",\n \"noWrapText\": \"Không xuống dòng\"\n },\n \"callout\": {\n \"selectEmoji\": \"Chọn Biểu tượng\",\n \"backgroundColor\": \"Màu nền\"\n },\n \"radio\": {\n \"groupName\": \"Tên nhóm\",\n \"editGroup\": \"Sửa tên nhóm\"\n },\n \"bookmark\": {\n \"clickToOpenNewTab\": \"Bấm để mở liên kết này trong tab mới.\",\n \"clickToOpenLink\": \"Bấm để mở liên kết.\",\n \"noDescription\": \"Không có mô tả.\",\n \"failedToLoad\": \"Tải bản xem trước thất bại. Bấm để mở liên kết.\",\n \"previewFailed\": \"Không tải được bản xem trước\",\n \"retryPreview\": \"Thử lại\"\n },\n \"fileCard\": {\n \"unnamed\": \"Tệp không tên\",\n \"uploading\": \"(Đang tải lên...)\",\n \"uploadFailed\": \"Tải lên thất bại\",\n \"retryUpload\": \"Tải lại\",\n \"download\": \"Tải xuống {name}\"\n },\n \"menubar\": {\n \"file\": \"Tập tin\",\n \"edit\": \"Sửa\",\n \"view\": \"Xem\",\n \"insert\": \"Thêm\",\n \"format\": \"Định dạng\",\n \"tools\": \"Công cụ\",\n \"table\": \"Bảng\",\n \"save\": \"Lưu\",\n \"exportHtml\": \"Xuất HTML\",\n \"undo\": \"Hoàn tác\",\n \"undoShortcut\": \"Ctrl+Z\",\n \"redo\": \"Làm lại\",\n \"redoShortcut\": \"Ctrl+Y\",\n \"cut\": \"Cắt\",\n \"cutShortcut\": \"Ctrl+X\",\n \"copy\": \"Chép\",\n \"copyShortcut\": \"Ctrl+C\",\n \"paste\": \"Dán\",\n \"pasteShortcut\": \"Ctrl+V\",\n \"pasteAsText\": \"Dán như văn bản\",\n \"selectAll\": \"Chọn tất cả\",\n \"selectAllShortcut\": \"Ctrl+A\",\n \"sourceCode\": \"Mã nguồn\",\n \"preview\": \"Xem trước\",\n \"fullscreen\": \"Đầy màn hình\",\n \"fullscreenShortcut\": \"Ctrl+Shift+F\",\n \"image\": \"Hình ảnh\",\n \"link\": \"Liên kết\",\n \"linkShortcut\": \"Ctrl+K\",\n \"insertTable\": \"Bảng\",\n \"horizontalRule\": \"Đường kẻ ngang\",\n \"bold\": \"Tô đậm\",\n \"boldShortcut\": \"Ctrl+B\",\n \"italic\": \"In nghiêng\",\n \"italicShortcut\": \"Ctrl+I\",\n \"underline\": \"Gạch dưới\",\n \"underlineShortcut\": \"Ctrl+U\",\n \"strike\": \"Gạch ngang\",\n \"superscript\": \"Trên dòng\",\n \"subscript\": \"Dưới dòng\",\n \"code\": \"Mã\",\n \"wrap\": \"Ngắt dòng\",\n \"align\": \"Căn chỉnh\",\n \"clearFormatting\": \"Xoá định dạng\",\n \"paragraph\": \"Đoạn văn\",\n \"heading1\": \"Tiêu đề 1\",\n \"heading2\": \"Tiêu đề 2\",\n \"heading3\": \"Tiêu đề 3\",\n \"blockquote\": \"Trích dẫn\",\n \"codeBlock\": \"Khối mã\",\n \"taskList\": \"Danh sách việc\",\n \"alignLeft\": \"Trái\",\n \"alignCenter\": \"Giữa\",\n \"alignRight\": \"Phải\",\n \"alignJustify\": \"Đều\",\n \"tableProperties\": \"Thuộc tính bảng\",\n \"deleteTable\": \"Xoá bảng\",\n \"row\": \"Dòng\",\n \"column\": \"Cột\",\n \"cell\": \"Ô\",\n \"addRowBefore\": \"Thêm hàng phía trên\",\n \"addRowAfter\": \"Thêm hàng phía dưới\",\n \"deleteRow\": \"Xoá hàng\",\n \"addColumnBefore\": \"Thêm cột bên trái\",\n \"addColumnAfter\": \"Thêm cột bên phải\",\n \"deleteColumn\": \"Xoá cột\",\n \"mergeCells\": \"Gộp ô\",\n \"splitCell\": \"Tách ô\",\n \"imageUpload\": \"Tải ảnh lên\",\n \"formFields\": \"Trường biểu mẫu\",\n \"formCheckbox\": \"Checkbox biểu mẫu\",\n \"formRadio\": \"Nút chọn một (Radio)\",\n \"applySource\": \"Áp dụng\",\n \"closeDialog\": \"Đóng\",\n \"copyHtml\": \"Sao chép HTML\",\n \"exportDefault\": \"Xuất HTML\",\n \"previewEmpty\": \"Không có nội dung để xem trước.\",\n \"sourceCodeHint\": \"Chỉnh sửa HTML trực tiếp và nhấn Áp dụng để cập nhật nội dung.\",\n \"invalidSource\": \"HTML chứa nội dung mà trình soạn thảo không thể đọc. Vui lòng sửa rồi thử lại.\"\n }\n }\n}\n","{\n \"Common\": {\n \"close\": \"닫기\",\n \"closeAlert\": \"알림 닫기\",\n \"notifications\": \"알림\",\n \"newNotification\": \"새로운\",\n \"readStatus\": \"읽음\",\n \"openLink\": \"링크 열기\",\n \"theme\": \"테마\",\n \"lightTheme\": \"라이트\",\n \"darkTheme\": \"다크\",\n \"systemTheme\": \"시스템\",\n \"density\": \"밀도\",\n \"compact\": \"컴팩트\",\n \"normal\": \"보통\",\n \"comfortable\": \"여유\",\n \"columns\": \"열\",\n \"loading\": \"로딩 중\",\n \"noData\": \"데이터 없음\",\n \"clearFilter\": \"필터 지우기\",\n \"selectAll\": \"전체 선택\",\n \"default\": \"기본값\",\n \"other\": \"기타\",\n \"headerAlign\": \"헤더 정렬\",\n \"alignLeft\": \"왼쪽 정렬\",\n \"alignCenter\": \"가운데 정렬\",\n \"alignRight\": \"오른쪽 정렬\"\n },\n \"ValidationInput\": {\n \"required\": \"필수 입력 항목입니다\",\n \"typeMismatch\": \"형식이 올바르지 않습니다\",\n \"pattern\": \"패턴이 일치하지 않습니다\",\n \"tooShort\": \"너무 짧습니다\",\n \"tooLong\": \"너무 깁니다\",\n \"rangeUnderflow\": \"최솟값보다 작습니다\",\n \"rangeOverflow\": \"최댓값을 초과했습니다\",\n \"stepMismatch\": \"단계가 일치하지 않습니다\",\n \"badInput\": \"잘못된 입력입니다\",\n \"invalid\": \"유효하지 않은 값입니다\"\n },\n \"Loading\": {\n \"loadingPage\": \"페이지 로딩 중\",\n \"pleaseWait\": \"잠시만 기다려 주세요\"\n },\n \"DatePicker\": {\n \"placeholder\": \"날짜 선택\",\n \"today\": \"오늘\",\n \"clear\": \"지우기\",\n \"lunarFormat\": \"{year}년 {month}월 {day}일\",\n \"lunarLeapFormat\": \"{year}년 윤{month}월 {day}일\",\n \"lunarMonth\": \"{month}월\",\n \"lunarLeap\": \"윤달\"\n },\n \"DateTimePicker\": {\n \"time\": \"시간\",\n \"clear\": \"지우기\",\n \"done\": \"완료\"\n },\n \"CalendarTimeline\": {\n \"today\": \"오늘\",\n \"prev\": \"이전\",\n \"next\": \"다음\",\n \"month\": \"월\",\n \"week\": \"주\",\n \"day\": \"일\",\n \"sprint\": \"스프린트\",\n \"newEvent\": \"새 이벤트\",\n \"createEventTitle\": \"이벤트 생성\",\n \"create\": \"생성\",\n \"cancel\": \"취소\",\n \"resource\": \"리소스\",\n \"start\": \"시작\",\n \"end\": \"종료\",\n \"resourcesHeader\": \"리소스\",\n \"expandGroup\": \"그룹 펼치기\",\n \"collapseGroup\": \"그룹 접기\",\n \"more\": \"+{n}개 더\",\n \"sprints\": \"{n} 스프린트\",\n \"deleteConfirm\": \"삭제하시겠습니까?\"\n },\n \"Pagination\": {\n \"navigationLabel\": \"페이지 네비게이션\",\n \"showingResults\": \"{startItem}–{endItem} / 총 {totalItems}개\",\n \"firstPage\": \"첫 페이지\",\n \"previousPage\": \"이전 페이지\",\n \"previous\": \"이전\",\n \"nextPage\": \"다음 페이지\",\n \"next\": \"다음\",\n \"lastPage\": \"마지막 페이지\",\n \"pageNumber\": \"{page}페이지\",\n \"itemsPerPage\": \"페이지당 항목 수\",\n \"search\": \"검색\",\n \"noOptions\": \"옵션 없음\"\n },\n \"OCR\": {\n \"imageUpload\": {\n \"dragDropText\": \"여기에 파일을 드래그 앤 드롭하세요\",\n \"browseFiles\": \"파일 찾아보기\",\n \"supportedFormats\": \"지원 형식: 이미지\"\n }\n },\n \"FileUpload\": {\n \"dragDropText\": \"여기에 파일을 드래그 앤 드롭하세요\",\n \"browseFiles\": \"파일 선택\",\n \"uploadFiles\": \"파일 업로드\",\n \"supportedFormats\": \"모든 파일 형식 지원\",\n \"uploadedFiles\": \"업로드된 파일\",\n \"clearAll\": \"모두 지우기\",\n \"fileTooLarge\": \"파일 크기가 제한을 초과했습니다.\",\n \"maxFilesReached\": \"최대 파일 수에 도달했습니다.\",\n \"uploadSuccess\": \"업로드되었습니다.\",\n \"uploadFailed\": \"업로드에 실패했습니다.\"\n },\n \"UEditor\": {\n \"placeholder\": \"명령어는 '/'를 입력하거나 입력을 시작하세요...\",\n \"loading\": \"에디터 로딩 중...\",\n \"words\": \"단어\",\n \"characters\": \"자\",\n \"accessibility\": {\n \"editorLabel\": \"서식 있는 텍스트 편집기\"\n },\n \"colors\": {\n \"default\": \"기본\",\n \"muted\": \"흐림\",\n \"primary\": \"기본\",\n \"secondary\": \"보조\",\n \"success\": \"성공\",\n \"warning\": \"경고\",\n \"destructive\": \"위험\",\n \"info\": \"정보\",\n \"accent\": \"강조\",\n \"textColor\": \"텍스트 색상\",\n \"highlight\": \"형광펜\",\n \"automatic\": \"자동\",\n \"moreColors\": \"다른 색...\",\n \"color\": \"색상\",\n \"done\": \"완료\"\n },\n \"toolbar\": {\n \"bold\": \"굵게\",\n \"boldShortcut\": \"굵게 (Ctrl+B)\",\n \"italic\": \"기울임\",\n \"italicShortcut\": \"기울임 (Ctrl+I)\",\n \"underline\": \"밑줄\",\n \"underlineShortcut\": \"밑줄 (Ctrl+U)\",\n \"strike\": \"취소선\",\n \"code\": \"코드\",\n \"subscript\": \"아래 첨자\",\n \"superscript\": \"위 첨자\",\n \"link\": \"링크\",\n \"removeLink\": \"링크 제거\",\n \"image\": \"이미지\",\n \"table\": \"표\",\n \"alignment\": \"정렬\",\n \"alignLeft\": \"왼쪽 정렬\",\n \"alignCenter\": \"가운데 정렬\",\n \"alignRight\": \"오른쪽 정렬\",\n \"justify\": \"양쪽 맞춤\",\n \"decreaseIndent\": \"내어쓰기\",\n \"increaseIndent\": \"들여쓰기\",\n \"bulletList\": \"글머리 기호 목록\",\n \"orderedList\": \"번호 매기기 목록\",\n \"taskList\": \"할 일 목록\",\n \"quote\": \"인용구\",\n \"codeBlock\": \"코드 블록\",\n \"undo\": \"실행 취소\",\n \"redo\": \"다시 실행\",\n \"textStyle\": \"텍스트 스타일\",\n \"fontFamily\": \"글꼴\",\n \"fontSize\": \"글자 크기\",\n \"lineHeight\": \"줄 간격\",\n \"fontDefault\": \"기본 글꼴\",\n \"sizeDefault\": \"기본 크기\",\n \"lineHeightDefault\": \"기본 줄 간격\",\n \"letterSpacing\": \"자간\",\n \"letterSpacingDefault\": \"기본 자간\",\n \"fontSans\": \"Sans\",\n \"fontSerif\": \"Serif\",\n \"fontMono\": \"Mono\",\n \"normal\": \"일반 텍스트\",\n \"heading1\": \"제목 1\",\n \"heading2\": \"제목 2\",\n \"heading3\": \"제목 3\",\n \"emoji\": \"이모지 삽입\",\n \"imageLayoutBlock\": \"이미지 블록\",\n \"imageLayoutLeft\": \"왼쪽 이미지, 오른쪽 텍스트\",\n \"imageLayoutRight\": \"오른쪽 이미지, 왼쪽 텍스트\",\n \"imageWidthSm\": \"작은 이미지\",\n \"imageWidthMd\": \"중간 이미지\",\n \"imageWidthLg\": \"큰 이미지\",\n \"imageResetSize\": \"이미지 크기 초기화\",\n \"imageDelete\": \"이미지 삭제\",\n \"hideMenuBar\": \"메뉴 모음 숨기기\",\n \"showMenuBar\": \"메뉴 모음 표시\"\n },\n \"slashCommand\": {\n \"basicBlocks\": \"기본 블록\",\n \"text\": \"텍스트\",\n \"textDesc\": \"일반 텍스트 블록\",\n \"heading1\": \"제목 1\",\n \"heading1Desc\": \"대형 섹션 제목\",\n \"heading2\": \"제목 2\",\n \"heading2Desc\": \"중형 섹션 제목\",\n \"heading3\": \"제목 3\",\n \"heading3Desc\": \"소형 섹션 제목\",\n \"bulletList\": \"글머리 기호 목록\",\n \"bulletListDesc\": \"간단한 글머리 기호 목록\",\n \"orderedList\": \"번호 매기기 목록\",\n \"orderedListDesc\": \"번호가 매겨진 목록\",\n \"todoList\": \"할 일 목록\",\n \"todoListDesc\": \"체크박스가 있는 할 일 목록\",\n \"quote\": \"인용구\",\n \"quoteDesc\": \"인용문 블록\",\n \"codeBlock\": \"코드 블록\",\n \"codeBlockDesc\": \"구문 강조가 있는 코드\",\n \"divider\": \"구분선\",\n \"dividerDesc\": \"시각적 구분선\",\n \"table\": \"표\",\n \"tableDesc\": \"표 추가\",\n \"noResults\": \"일치하는 블록이 없습니다\",\n \"callout\": \"콜아웃\",\n \"calloutDesc\": \"중요한 정보를 콜아웃 블록으로 강조합니다\",\n \"bookmark\": \"북마크 카드\",\n \"bookmarkDesc\": \"링크를 북마크 카드로 삽입합니다\",\n \"fileCard\": \"파일 첨부\",\n \"fileCardDesc\": \"파일 카드 첨부 파일을 업로드합니다\",\n \"formCheckbox\": \"양식 체크박스\",\n \"formCheckboxDesc\": \"대화형 체크박스 필드 삽입\",\n \"roundCheckbox\": \"원형 체크박스\",\n \"roundCheckboxDesc\": \"원형 대화형 체크박스 삽입\",\n \"formRadio\": \"양식 라디오 버튼\",\n \"formRadioDesc\": \"대화형 라디오 버튼 필드 삽입\"\n },\n \"floatingMenu\": {\n \"addBlock\": \"블록 추가\"\n },\n \"linkInput\": {\n \"placeholder\": \"링크 붙여넣기 또는 입력...\",\n \"invalid\": \"https://example.com과 같은 올바른 링크를 입력해 주세요.\"\n },\n \"imageInput\": {\n \"urlTab\": \"URL\",\n \"uploadTab\": \"업로드\",\n \"urlLabel\": \"이미지 URL\",\n \"urlPlaceholder\": \"https://example.com/image.jpg\",\n \"invalid\": \"https://example.com/image.jpg와 같은 올바른 이미지 URL을 입력해 주세요.\",\n \"uploadLabel\": \"이미지 선택\",\n \"uploadPlaceholder\": \"클릭하여 이미지 업로드\",\n \"uploading\": \"업로드 중...\",\n \"uploadError\": \"업로드 실패. 다시 시도해 주세요.\",\n \"altLabel\": \"대체 텍스트 (선택 사항)\",\n \"altPlaceholder\": \"이미지에 대한 설명...\",\n \"addBtn\": \"이미지 추가\",\n \"cancelBtn\": \"취소\",\n \"addFromUrl\": \"URL에서 추가\"\n },\n \"emojiPicker\": {\n \"searchPlaceholder\": \"이모지 검색\",\n \"noResults\": \"이모지를 찾을 수 없습니다\",\n \"tryDifferentSearch\": \"다른 검색어를 시도해 보세요\"\n },\n \"stickerPicker\": {\n \"searchPlaceholder\": \"스티커 검색\",\n \"noResults\": \"검색된 스티커가 없습니다.\",\n \"tryDifferentSearch\": \"다른 검색어를 시도해 보세요\"\n },\n \"emojiSuggestion\": {\n \"title\": \"이모지\",\n \"noResults\": \"이모지를 찾을 수 없습니다\",\n \"showingCount\": \"총 {total}개 중 처음 {shown}개의 이모지를 표시 중\"\n },\n \"formulaSuggestion\": {\n \"title\": \"함수\",\n \"noResults\": \"함수를 찾을 수 없습니다\",\n \"sum\": \"범위의 값을 합산\",\n \"avg\": \"범위의 값 평균\",\n \"min\": \"범위의 최솟값\",\n \"max\": \"범위의 최댓값\",\n \"count\": \"범위의 숫자 셀 개수\"\n },\n \"tableMenu\": {\n \"insert3x3\": \"3x3 표 삽입\",\n \"insertTable\": \"표 삽입\",\n \"gridPreview\": \"{rows}×{cols} 표 삽입\",\n \"addColumnBefore\": \"앞에 열 추가\",\n \"addColumnAfter\": \"뒤에 열 추가\",\n \"addRowBefore\": \"위에 행 추가\",\n \"addRowAfter\": \"아래에 행 추가\",\n \"duplicateColumn\": \"열 복제\",\n \"duplicateRow\": \"행 복제\",\n \"clearColumnContents\": \"열 내용 지우기\",\n \"clearRowContents\": \"행 내용 지우기\",\n \"deleteColumn\": \"열 삭제\",\n \"deleteRow\": \"행 삭제\",\n \"deleteTable\": \"표 삭제\",\n \"toggleHeaderRow\": \"헤더 행 전환\",\n \"toggleHeaderColumn\": \"헤더 열 전환\",\n \"mergeCells\": \"셀 병합\",\n \"splitCell\": \"셀 분할\",\n \"openControls\": \"표 컨트롤 열기\",\n \"cellFormatting\": \"셀 서식\",\n \"quickAddColumnAfter\": \"오른쪽 열 빠르게 추가\",\n \"quickAddRowAfter\": \"아래 행 빠르게 추가\",\n \"expandTable\": \"표 확장\",\n \"dragRow\": \"행 드래그\",\n \"dragColumn\": \"열 드래그\",\n \"resizeBoth\": \"표 크기 조절\",\n \"resizeCtrlHint\": \"자유롭게 드래그합니다. Ctrl 키를 누르면 한 축으로 고정되고, Ctrl+Shift 키를 누르면 비율이 유지됩니다\",\n \"fitToEditorWidth\": \"편집기 너비에 맞추기\",\n \"alignLeft\": \"표 왼쪽 정렬\",\n \"alignCenter\": \"표 가운데 정렬\",\n \"alignRight\": \"표 오른쪽 정렬\",\n \"cellBackground\": \"셀 배경색\",\n \"cellBorder\": \"셀 테두리\",\n \"borderStyle\": \"테두리 스타일\",\n \"borderWidth\": \"테두리 두께\",\n \"borderColor\": \"테두리 색상\",\n \"borderPosition\": \"테두리 위치\",\n \"borderMode\": \"테두리 모드\",\n \"borderDraw\": \"테두리 그리기\",\n \"borderErase\": \"테두리 숨기기\",\n \"borderAll\": \"모든 테두리\",\n \"borderOuter\": \"바깥쪽 테두리\",\n \"borderInner\": \"안쪽 테두리\",\n \"borderHorizontal\": \"안쪽 가로 테두리\",\n \"borderVertical\": \"안쪽 세로 테두리\",\n \"borderTop\": \"위쪽 테두리\",\n \"borderRight\": \"오른쪽 테두리\",\n \"borderBottom\": \"아래쪽 테두리\",\n \"borderLeft\": \"왼쪽 테두리\",\n \"clearBorder\": \"테두리 지우기\",\n \"formula\": \"수식\",\n \"formulaBar\": \"수식 입력줄\",\n \"formulaError\": \"수식 오류\",\n \"editFormula\": \"수식 편집\",\n \"clearCell\": \"셀 내용 삭제\",\n \"convertToValue\": \"값으로 변환\",\n \"numberFormat\": \"표시 형식\",\n \"formatText\": \"텍스트\",\n \"formatDate\": \"날짜\",\n \"apply\": \"적용\",\n \"clear\": \"지우기\",\n \"recalculate\": \"다시 계산\",\n \"done\": \"완료\",\n \"alignVertical\": \"세로 맞춤\",\n \"alignVerticalTop\": \"위쪽 맞춤\",\n \"alignVerticalMiddle\": \"가운데 맞춤\",\n \"alignVerticalBottom\": \"아래쪽 맞춤\",\n \"textDirection\": \"텍스트 방향\",\n \"horizontalText\": \"가로쓰기\",\n \"verticalText\": \"세로쓰기\",\n \"wrapText\": \"텍스트 줄 바꿈\",\n \"noWrapText\": \"줄 바꿈 안 함\"\n },\n \"callout\": {\n \"selectEmoji\": \"이모지 선택\",\n \"backgroundColor\": \"배경 색상\"\n },\n \"radio\": {\n \"groupName\": \"그룹 이름\",\n \"editGroup\": \"그룹 이름 편집\"\n },\n \"bookmark\": {\n \"clickToOpenNewTab\": \"클릭하여 이 링크를 새 탭에서 엽니다.\",\n \"clickToOpenLink\": \"클릭하여 링크를 엽니다.\",\n \"noDescription\": \"설명이 없습니다.\",\n \"failedToLoad\": \"링크 미리보기를 불러오지 못했습니다. 클릭하여 링크를 엽니다.\",\n \"previewFailed\": \"미리보기를 불러오지 못했습니다\",\n \"retryPreview\": \"다시 시도\"\n },\n \"fileCard\": {\n \"unnamed\": \"이름 없는 파일\",\n \"uploading\": \"(업로드 중...)\",\n \"uploadFailed\": \"업로드에 실패했습니다.\",\n \"retryUpload\": \"다시 업로드\",\n \"download\": \"{name} 다운로드\"\n },\n \"menubar\": {\n \"file\": \"파일\",\n \"edit\": \"편집\",\n \"view\": \"보기\",\n \"insert\": \"삽입\",\n \"format\": \"서식\",\n \"tools\": \"도구\",\n \"table\": \"표\",\n \"save\": \"저장\",\n \"exportHtml\": \"HTML 추출\",\n \"undo\": \"실행 취소\",\n \"undoShortcut\": \"Ctrl+Z\",\n \"redo\": \"다시 실행\",\n \"redoShortcut\": \"Ctrl+Y\",\n \"cut\": \"잘라내기\",\n \"cutShortcut\": \"Ctrl+X\",\n \"copy\": \"복사\",\n \"copyShortcut\": \"Ctrl+C\",\n \"paste\": \"붙여넣기\",\n \"pasteShortcut\": \"Ctrl+V\",\n \"pasteAsText\": \"일반 텍스트로 붙여넣기\",\n \"selectAll\": \"전체 선택\",\n \"selectAllShortcut\": \"Ctrl+A\",\n \"sourceCode\": \"소스 코드\",\n \"preview\": \"미리보기\",\n \"fullscreen\": \"전체 화면\",\n \"fullscreenShortcut\": \"Ctrl+Shift+F\",\n \"image\": \"이미지\",\n \"link\": \"링크\",\n \"linkShortcut\": \"Ctrl+K\",\n \"insertTable\": \"표\",\n \"horizontalRule\": \"가로줄\",\n \"bold\": \"굵게\",\n \"boldShortcut\": \"Ctrl+B\",\n \"italic\": \"기울임꼴\",\n \"italicShortcut\": \"Ctrl+I\",\n \"underline\": \"밑줄\",\n \"underlineShortcut\": \"Ctrl+U\",\n \"strike\": \"취소선\",\n \"superscript\": \"위 첨자\",\n \"subscript\": \"아래 첨자\",\n \"code\": \"코드\",\n \"wrap\": \"블록\",\n \"align\": \"정렬\",\n \"clearFormatting\": \"서식 지우기\",\n \"paragraph\": \"단락\",\n \"heading1\": \"제목 1\",\n \"heading2\": \"제목 2\",\n \"heading3\": \"제목 3\",\n \"blockquote\": \"인용\",\n \"codeBlock\": \"코드 블록\",\n \"taskList\": \"작업 목록\",\n \"alignLeft\": \"왼쪽\",\n \"alignCenter\": \"가운데\",\n \"alignRight\": \"오른쪽\",\n \"alignJustify\": \"양쪽\",\n \"tableProperties\": \"표 속성\",\n \"deleteTable\": \"표 삭제\",\n \"row\": \"행\",\n \"column\": \"열\",\n \"cell\": \"셀\",\n \"addRowBefore\": \"위에 행 삽입\",\n \"addRowAfter\": \"아래에 행 삽입\",\n \"deleteRow\": \"행 삭제\",\n \"addColumnBefore\": \"왼쪽에 열 삽입\",\n \"addColumnAfter\": \"오른쪽에 열 삽입\",\n \"deleteColumn\": \"열 삭제\",\n \"mergeCells\": \"셀 병합\",\n \"splitCell\": \"셀 분할\",\n \"imageUpload\": \"이미지 업로드\",\n \"formFields\": \"양식 필드\",\n \"formCheckbox\": \"양식 체크박스\",\n \"formRadio\": \"양식 라디오 버튼\",\n \"applySource\": \"적용\",\n \"closeDialog\": \"닫기\",\n \"copyHtml\": \"HTML 복사\",\n \"exportDefault\": \"HTML 추출\",\n \"previewEmpty\": \"미리볼 내용이 없습니다.\",\n \"sourceCodeHint\": \"HTML을 직접 편집하고 적용을 클릭하여 에디터를 업데이트하세요.\",\n \"invalidSource\": \"편집기에서 읽을 수 없는 내용이 HTML에 포함되어 있습니다. 수정한 후 다시 시도해 주세요.\"\n }\n }\n}\n","{\n \"Common\": {\n \"close\": \"閉じる\",\n \"closeAlert\": \"アラートを閉じる\",\n \"notifications\": \"通知\",\n \"newNotification\": \"新規\",\n \"readStatus\": \"既読\",\n \"openLink\": \"リンクを開く\",\n \"theme\": \"テーマ\",\n \"lightTheme\": \"ライト\",\n \"darkTheme\": \"ダーク\",\n \"systemTheme\": \"システム\",\n \"density\": \"密度\",\n \"compact\": \"コンパクト\",\n \"normal\": \"通常\",\n \"comfortable\": \"ゆったり\",\n \"columns\": \"列\",\n \"loading\": \"読み込み中\",\n \"noData\": \"データがありません\",\n \"clearFilter\": \"フィルターをクリア\",\n \"selectAll\": \"すべて選択\",\n \"default\": \"デフォルト\",\n \"other\": \"その他\",\n \"headerAlign\": \"ヘッダー配置\",\n \"alignLeft\": \"左揃え\",\n \"alignCenter\": \"中央揃え\",\n \"alignRight\": \"右揃え\"\n },\n \"ValidationInput\": {\n \"required\": \"この項目は必須です\",\n \"typeMismatch\": \"形式が正しくありません\",\n \"pattern\": \"パターンが一致しません\",\n \"tooShort\": \"短すぎます\",\n \"tooLong\": \"長すぎます\",\n \"rangeUnderflow\": \"最小値より小さいです\",\n \"rangeOverflow\": \"最大値を超えています\",\n \"stepMismatch\": \"ステップが一致しません\",\n \"badInput\": \"入力が無効です\",\n \"invalid\": \"無効な値です\"\n },\n \"Loading\": {\n \"loadingPage\": \"ページを読み込み中\",\n \"pleaseWait\": \"しばらくお待ちください\"\n },\n \"DatePicker\": {\n \"placeholder\": \"日付を選択\",\n \"today\": \"今日\",\n \"clear\": \"クリア\",\n \"lunarFormat\": \"{year}年{month}月{day}日\",\n \"lunarLeapFormat\": \"{year}年閏{month}月{day}日\",\n \"lunarMonth\": \"{month}月\",\n \"lunarLeap\": \"閏月\"\n },\n \"DateTimePicker\": {\n \"time\": \"時間\",\n \"clear\": \"クリア\",\n \"done\": \"完了\"\n },\n \"CalendarTimeline\": {\n \"today\": \"今日\",\n \"prev\": \"前へ\",\n \"next\": \"次へ\",\n \"month\": \"月\",\n \"week\": \"週\",\n \"day\": \"日\",\n \"sprint\": \"スプリント\",\n \"newEvent\": \"新規イベント\",\n \"createEventTitle\": \"イベント作成\",\n \"create\": \"作成\",\n \"cancel\": \"キャンセル\",\n \"resource\": \"リソース\",\n \"start\": \"開始\",\n \"end\": \"終了\",\n \"resourcesHeader\": \"リソース\",\n \"expandGroup\": \"グループを展開\",\n \"collapseGroup\": \"グループを折りたたむ\",\n \"more\": \"+{n}件\",\n \"sprints\": \"{n} スプリント\",\n \"deleteConfirm\": \"削除しますか?\"\n },\n \"Pagination\": {\n \"navigationLabel\": \"ページナビゲーション\",\n \"showingResults\": \"{startItem}–{endItem} / 全{totalItems}件\",\n \"firstPage\": \"最初のページ\",\n \"previousPage\": \"前のページ\",\n \"previous\": \"前へ\",\n \"nextPage\": \"次のページ\",\n \"next\": \"次へ\",\n \"lastPage\": \"最後のページ\",\n \"pageNumber\": \"{page}ページ\",\n \"itemsPerPage\": \"1ページあたりの項目数\",\n \"search\": \"検索\",\n \"noOptions\": \"オプションなし\"\n },\n \"OCR\": {\n \"imageUpload\": {\n \"dragDropText\": \"ここにファイルをドラッグ&ドロップ\",\n \"browseFiles\": \"ファイルを参照\",\n \"supportedFormats\": \"対応形式:画像\"\n }\n },\n \"FileUpload\": {\n \"dragDropText\": \"ここにファイルをドラッグ&ドロップ\",\n \"browseFiles\": \"ファイルを選択\",\n \"uploadFiles\": \"ファイルをアップロード\",\n \"supportedFormats\": \"すべてのファイル形式に対応\",\n \"uploadedFiles\": \"アップロードされたファイル\",\n \"clearAll\": \"すべてクリア\",\n \"fileTooLarge\": \"サイズ制限を超えています。\",\n \"maxFilesReached\": \"最大ファイル数に達しました。\",\n \"uploadSuccess\": \"アップロードしました。\",\n \"uploadFailed\": \"アップロードに失敗しました。\"\n },\n \"UEditor\": {\n \"placeholder\": \"コマンドを使用するには '/' を入力、または入力を開始...\",\n \"loading\": \"エディタを読み込み中...\",\n \"words\": \"単語\",\n \"characters\": \"文字\",\n \"accessibility\": {\n \"editorLabel\": \"リッチテキストエディター\"\n },\n \"colors\": {\n \"default\": \"デフォルト\",\n \"muted\": \"ミュート\",\n \"primary\": \"プライマリ\",\n \"secondary\": \"セカンダリ\",\n \"success\": \"成功\",\n \"warning\": \"警告\",\n \"destructive\": \"破壊的\",\n \"info\": \"情報\",\n \"accent\": \"アクセント\",\n \"textColor\": \"テキスト色\",\n \"highlight\": \"ハイライト\",\n \"automatic\": \"自動\",\n \"moreColors\": \"その他の色...\",\n \"color\": \"色\",\n \"done\": \"完了\"\n },\n \"toolbar\": {\n \"bold\": \"太字\",\n \"boldShortcut\": \"太字 (Ctrl+B)\",\n \"italic\": \"斜体\",\n \"italicShortcut\": \"斜体 (Ctrl+I)\",\n \"underline\": \"下線\",\n \"underlineShortcut\": \"下線 (Ctrl+U)\",\n \"strike\": \"取り消し線\",\n \"code\": \"コード\",\n \"subscript\": \"下付き\",\n \"superscript\": \"上付き\",\n \"link\": \"リンク\",\n \"removeLink\": \"リンクを解除\",\n \"image\": \"画像\",\n \"table\": \"表\",\n \"alignment\": \"配置\",\n \"alignLeft\": \"左揃え\",\n \"alignCenter\": \"中央揃え\",\n \"alignRight\": \"右揃え\",\n \"justify\": \"両端揃え\",\n \"decreaseIndent\": \"インデントを減らす\",\n \"increaseIndent\": \"インデントを増やす\",\n \"bulletList\": \"箇条書き\",\n \"orderedList\": \"番号付きリスト\",\n \"taskList\": \"タスクリスト\",\n \"quote\": \"引用\",\n \"codeBlock\": \"コードブロック\",\n \"undo\": \"元に戻す\",\n \"redo\": \"やり直し\",\n \"textStyle\": \"テキストスタイル\",\n \"fontFamily\": \"フォント\",\n \"fontSize\": \"文字サイズ\",\n \"lineHeight\": \"行間\",\n \"fontDefault\": \"標準フォント\",\n \"sizeDefault\": \"標準サイズ\",\n \"lineHeightDefault\": \"標準の行間\",\n \"letterSpacing\": \"文字間隔\",\n \"letterSpacingDefault\": \"標準の字間\",\n \"fontSans\": \"Sans\",\n \"fontSerif\": \"Serif\",\n \"fontMono\": \"Mono\",\n \"normal\": \"標準テキスト\",\n \"heading1\": \"見出し 1\",\n \"heading2\": \"見出し 2\",\n \"heading3\": \"見出し 3\",\n \"emoji\": \"絵文字を挿入\",\n \"imageLayoutBlock\": \"画像ブロック\",\n \"imageLayoutLeft\": \"画像を左、文字を右に回り込み\",\n \"imageLayoutRight\": \"画像を右、文字を左に回り込み\",\n \"imageWidthSm\": \"画像(小)\",\n \"imageWidthMd\": \"画像(中)\",\n \"imageWidthLg\": \"画像(大)\",\n \"imageResetSize\": \"画像サイズをリセット\",\n \"imageDelete\": \"画像を削除\",\n \"hideMenuBar\": \"メニューバーを非表示\",\n \"showMenuBar\": \"メニューバーを表示\"\n },\n \"slashCommand\": {\n \"basicBlocks\": \"基本ブロック\",\n \"text\": \"テキスト\",\n \"textDesc\": \"プレーンテキストブロック\",\n \"heading1\": \"見出し 1\",\n \"heading1Desc\": \"大見出し\",\n \"heading2\": \"見出し 2\",\n \"heading2Desc\": \"中見出し\",\n \"heading3\": \"見出し 3\",\n \"heading3Desc\": \"小見出し\",\n \"bulletList\": \"箇条書き\",\n \"bulletListDesc\": \"シンプルな箇条書きリスト\",\n \"orderedList\": \"番号付きリスト\",\n \"orderedListDesc\": \"番号順のリスト\",\n \"todoList\": \"タスクリスト\",\n \"todoListDesc\": \"チェックボックス付きリスト\",\n \"quote\": \"引用\",\n \"quoteDesc\": \"引用ブロック\",\n \"codeBlock\": \"コードブロック\",\n \"codeBlockDesc\": \"シンタックスハイライト付きコード\",\n \"divider\": \"区切り線\",\n \"dividerDesc\": \"視覚的な区切り線\",\n \"table\": \"表\",\n \"tableDesc\": \"表を追加\",\n \"noResults\": \"一致するブロックが見つかりません\",\n \"callout\": \"コールアウト\",\n \"calloutDesc\": \"重要な情報をコールアウトブロックで強調します\",\n \"bookmark\": \"ブックマークカード\",\n \"bookmarkDesc\": \"リンクをブックマークカードとして埋め込みます\",\n \"fileCard\": \"ファイル添付\",\n \"fileCardDesc\": \"ファイルカードの添付ファイルをアップロードします\",\n \"formCheckbox\": \"フォームチェックボックス\",\n \"formCheckboxDesc\": \"インタラクティブなチェックボックスを挿入します\",\n \"roundCheckbox\": \"丸型チェックボックス\",\n \"roundCheckboxDesc\": \"丸型のインタラクティブなチェックボックスを挿入します\",\n \"formRadio\": \"フォームラジオボタン\",\n \"formRadioDesc\": \"インタラクティブなラジオボタンを挿入します\"\n },\n \"floatingMenu\": {\n \"addBlock\": \"ブロックを追加\"\n },\n \"linkInput\": {\n \"placeholder\": \"リンクを貼り付けまたは入力...\",\n \"invalid\": \"https://example.com のような有効なリンクを入力してください。\"\n },\n \"imageInput\": {\n \"urlTab\": \"URL\",\n \"uploadTab\": \"アップロード\",\n \"urlLabel\": \"画像 URL\",\n \"urlPlaceholder\": \"https://example.com/image.jpg\",\n \"invalid\": \"https://example.com/image.jpg のような有効な画像 URL を入力してください。\",\n \"uploadLabel\": \"画像を選択\",\n \"uploadPlaceholder\": \"クリックして画像をアップロード\",\n \"uploading\": \"アップロード中...\",\n \"uploadError\": \"アップロード失敗。もう一度お試しください。\",\n \"altLabel\": \"代替テキスト (任意)\",\n \"altPlaceholder\": \"画像の説明...\",\n \"addBtn\": \"画像を追加\",\n \"cancelBtn\": \"キャンセル\",\n \"addFromUrl\": \"URLから追加\"\n },\n \"emojiPicker\": {\n \"searchPlaceholder\": \"絵文字を検索\",\n \"noResults\": \"絵文字が見つかりません\",\n \"tryDifferentSearch\": \"別のキーワードでお試しください\"\n },\n \"stickerPicker\": {\n \"searchPlaceholder\": \"ステッカーを検索\",\n \"noResults\": \"ステッカーが見つかりません\",\n \"tryDifferentSearch\": \"別のキーワードでお試しください\"\n },\n \"emojiSuggestion\": {\n \"title\": \"絵文字\",\n \"noResults\": \"絵文字が見つかりません\",\n \"showingCount\": \"{total} 件中 {shown} 件の絵文字を表示中\"\n },\n \"formulaSuggestion\": {\n \"title\": \"関数\",\n \"noResults\": \"関数が見つかりません\",\n \"sum\": \"範囲内の値を合計\",\n \"avg\": \"範囲内の値の平均\",\n \"min\": \"範囲内の最小値\",\n \"max\": \"範囲内の最大値\",\n \"count\": \"範囲内の数値セルをカウント\"\n },\n \"tableMenu\": {\n \"insert3x3\": \"3x3 表を挿入\",\n \"insertTable\": \"表を挿入\",\n \"gridPreview\": \"{rows}×{cols} の表を挿入\",\n \"addColumnBefore\": \"前に列を追加\",\n \"addColumnAfter\": \"後に列を追加\",\n \"addRowBefore\": \"前に行を追加\",\n \"addRowAfter\": \"後に行を追加\",\n \"duplicateColumn\": \"列を複製\",\n \"duplicateRow\": \"行を複製\",\n \"clearColumnContents\": \"列の内容をクリア\",\n \"clearRowContents\": \"行の内容をクリア\",\n \"deleteColumn\": \"列を削除\",\n \"deleteRow\": \"行を削除\",\n \"deleteTable\": \"表を削除\",\n \"toggleHeaderRow\": \"ヘッダー行を切り替え\",\n \"toggleHeaderColumn\": \"ヘッダー列を切り替え\",\n \"mergeCells\": \"セルを結合\",\n \"splitCell\": \"セルを分割\",\n \"openControls\": \"表コントロールを開く\",\n \"cellFormatting\": \"セルの書式設定\",\n \"quickAddColumnAfter\": \"右側に列をすばやく追加\",\n \"quickAddRowAfter\": \"下に行をすばやく追加\",\n \"expandTable\": \"表を拡張\",\n \"dragRow\": \"行をドラッグ\",\n \"dragColumn\": \"列をドラッグ\",\n \"resizeBoth\": \"表のサイズを変更\",\n \"resizeCtrlHint\": \"自由にドラッグできます。Ctrlキーで1方向に固定し、Ctrl+Shiftキーで縦横比を維持します\",\n \"fitToEditorWidth\": \"エディターの幅に合わせる\",\n \"alignLeft\": \"表を左寄せ\",\n \"alignCenter\": \"表を中央揃え\",\n \"alignRight\": \"表を右寄せ\",\n \"cellBackground\": \"セル背景色\",\n \"cellBorder\": \"セルの枠線\",\n \"borderStyle\": \"枠線スタイル\",\n \"borderWidth\": \"枠線の太さ\",\n \"borderColor\": \"枠線の色\",\n \"borderPosition\": \"枠線の位置\",\n \"borderMode\": \"枠線モード\",\n \"borderDraw\": \"枠線を引く\",\n \"borderErase\": \"枠線を非表示\",\n \"borderAll\": \"すべての枠線\",\n \"borderOuter\": \"外枠\",\n \"borderInner\": \"内側の枠線\",\n \"borderHorizontal\": \"内側の横罫線\",\n \"borderVertical\": \"内側の縦罫線\",\n \"borderTop\": \"上罫線\",\n \"borderRight\": \"右罫線\",\n \"borderBottom\": \"下罫線\",\n \"borderLeft\": \"左罫線\",\n \"clearBorder\": \"枠線をクリア\",\n \"formula\": \"数式\",\n \"formulaBar\": \"数式バー\",\n \"formulaError\": \"数式エラー\",\n \"editFormula\": \"数式を編集\",\n \"clearCell\": \"セルをクリア\",\n \"convertToValue\": \"値に変換\",\n \"numberFormat\": \"表示形式\",\n \"formatText\": \"テキスト\",\n \"formatDate\": \"日付\",\n \"apply\": \"適用\",\n \"clear\": \"クリア\",\n \"recalculate\": \"再計算\",\n \"done\": \"完了\",\n \"alignVertical\": \"垂直揃え\",\n \"alignVerticalTop\": \"上揃え\",\n \"alignVerticalMiddle\": \"上下中央揃え\",\n \"alignVerticalBottom\": \"下揃え\",\n \"textDirection\": \"文字方向\",\n \"horizontalText\": \"横書き\",\n \"verticalText\": \"縦書き\",\n \"wrapText\": \"テキストを折り返す\",\n \"noWrapText\": \"折り返さない\"\n },\n \"callout\": {\n \"selectEmoji\": \"絵文字を選択\",\n \"backgroundColor\": \"背景色\"\n },\n \"radio\": {\n \"groupName\": \"グループ名\",\n \"editGroup\": \"グループ名編集\"\n },\n \"bookmark\": {\n \"clickToOpenNewTab\": \"クリックしてこのリンクを新しいタブで開く。\",\n \"clickToOpenLink\": \"クリックしてリンクを開く。\",\n \"noDescription\": \"説明はありません。\",\n \"failedToLoad\": \"プレビューの読み込みに失敗しました。クリックしてリンクを開く。\",\n \"previewFailed\": \"プレビューを読み込めませんでした\",\n \"retryPreview\": \"再試行\"\n },\n \"fileCard\": {\n \"unnamed\": \"名前なしファイル\",\n \"uploading\": \"(アップロード中...)\",\n \"uploadFailed\": \"アップロード失敗\",\n \"retryUpload\": \"再アップロード\",\n \"download\": \"{name}をダウンロード\"\n },\n \"menubar\": {\n \"file\": \"ファイル\",\n \"edit\": \"編集\",\n \"view\": \"表示\",\n \"insert\": \"挿入\",\n \"format\": \"書式\",\n \"tools\": \"ツール\",\n \"table\": \"表\",\n \"save\": \"保存\",\n \"exportHtml\": \"HTMLエクスポート\",\n \"undo\": \"元に戻す\",\n \"undoShortcut\": \"Ctrl+Z\",\n \"redo\": \"やり直し\",\n \"redoShortcut\": \"Ctrl+Y\",\n \"cut\": \"切り取り\",\n \"cutShortcut\": \"Ctrl+X\",\n \"copy\": \"コピー\",\n \"copyShortcut\": \"Ctrl+C\",\n \"paste\": \"貼り付け\",\n \"pasteShortcut\": \"Ctrl+V\",\n \"pasteAsText\": \"テキストとして貼り付け\",\n \"selectAll\": \"すべて選択\",\n \"selectAllShortcut\": \"Ctrl+A\",\n \"sourceCode\": \"ソースコード\",\n \"preview\": \"プレビュー\",\n \"fullscreen\": \"フルスクリーン\",\n \"fullscreenShortcut\": \"Ctrl+Shift+F\",\n \"image\": \"画像\",\n \"link\": \"リンク\",\n \"linkShortcut\": \"Ctrl+K\",\n \"insertTable\": \"表\",\n \"horizontalRule\": \"水平線\",\n \"bold\": \"太字\",\n \"boldShortcut\": \"Ctrl+B\",\n \"italic\": \"斜体\",\n \"italicShortcut\": \"Ctrl+I\",\n \"underline\": \"下線\",\n \"underlineShortcut\": \"Ctrl+U\",\n \"strike\": \"取り消し線\",\n \"superscript\": \"上付き文字\",\n \"subscript\": \"下付き文字\",\n \"code\": \"コード\",\n \"wrap\": \"ブロック\",\n \"align\": \"配置\",\n \"clearFormatting\": \"書式をクリア\",\n \"paragraph\": \"段落\",\n \"heading1\": \"見出し 1\",\n \"heading2\": \"見出し 2\",\n \"heading3\": \"見出し 3\",\n \"blockquote\": \"引用\",\n \"codeBlock\": \"コードブロック\",\n \"taskList\": \"タスクリスト\",\n \"alignLeft\": \"左揃え\",\n \"alignCenter\": \"中央揃え\",\n \"alignRight\": \"右揃え\",\n \"alignJustify\": \"両端揃え\",\n \"tableProperties\": \"表のプロパティ\",\n \"deleteTable\": \"表を削除\",\n \"row\": \"行\",\n \"column\": \"列\",\n \"cell\": \"セル\",\n \"addRowBefore\": \"上に行を挿入\",\n \"addRowAfter\": \"下に行を挿入\",\n \"deleteRow\": \"行を削除\",\n \"addColumnBefore\": \"左に列を挿入\",\n \"addColumnAfter\": \"右に列を挿入\",\n \"deleteColumn\": \"列を削除\",\n \"mergeCells\": \"セルを結合\",\n \"splitCell\": \"セルを分割\",\n \"imageUpload\": \"画像をアップロード\",\n \"formFields\": \"フォームフィールド\",\n \"formCheckbox\": \"フォームチェックボックス\",\n \"formRadio\": \"フォームラジオボタン\",\n \"applySource\": \"適用\",\n \"closeDialog\": \"閉じる\",\n \"copyHtml\": \"HTMLをコピー\",\n \"exportDefault\": \"HTMLエクスポート\",\n \"previewEmpty\": \"プレビューするコンテンツがありません。\",\n \"sourceCodeHint\": \"HTMLを直接編集し、適用をクリックしてエディターを更新します。\",\n \"invalidSource\": \"エディターで読み込めない内容が HTML に含まれています。修正してもう一度お試しください。\"\n }\n }\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport enLocale from \"../../locales/en.json\";\nimport viLocale from \"../../locales/vi.json\";\nimport koLocale from \"../../locales/ko.json\";\nimport jaLocale from \"../../locales/ja.json\";\nimport { GlobalI18nProvider, type GlobalI18nConfig } from \"./GlobalI18nContext\";\n\nexport type Locale = \"en\" | \"vi\" | \"ko\" | \"ja\";\nexport type Translations = Record<string, Record<string, string | Record<string, string>>>;\n\ninterface TranslationContextType {\n locale: Locale;\n t: (namespace: string) => (key: string) => string;\n}\n\nconst defaultTranslations: Record<Locale, Translations> = {\n en: enLocale as Translations,\n vi: viLocale as Translations,\n ko: koLocale as Translations,\n ja: jaLocale as Translations,\n};\n\nfunction resolveObjectPath(input: unknown, path: string): unknown {\n const parts = path.split(\".\");\n let current: unknown = input;\n\n for (const part of parts) {\n if (current && typeof current === \"object\" && part in current) {\n current = (current as Record<string, unknown>)[part];\n } else {\n return null;\n }\n }\n\n return current;\n}\n\nfunction resolveTranslationValue(translations: Translations, namespace: string, key: string): string | null {\n const namespaceValue = resolveObjectPath(translations, namespace);\n const value = resolveObjectPath(namespaceValue, key);\n\n return typeof value === \"string\" ? value : null;\n}\n\nexport function getUnderverseDefaultTranslation(locale: Locale, namespace: string, key: string): string {\n return resolveTranslationValue(defaultTranslations[locale] ?? defaultTranslations.en, namespace, key)\n ?? resolveTranslationValue(defaultTranslations.en, namespace, key)\n ?? key;\n}\n\nconst TranslationContext = React.createContext<TranslationContextType | null>(null);\n\n/** Public props for the `TranslationProvider` component. */\nexport interface TranslationProviderProps {\n children: React.ReactNode;\n /** Current locale. Defaults to \"en\" */\n locale?: Locale;\n /** Custom translations to merge with defaults */\n translations?: Partial<Record<Locale, Translations>>;\n /** Global flat label overrides — lets callers skip per-component prop drilling for common strings. */\n i18n?: GlobalI18nConfig;\n}\n\nexport type { GlobalI18nConfig };\n\n/**\n * TranslationProvider for Underverse UI components.\n *\n * This provider is OPTIONAL. Components will use English fallback texts\n * when no provider is available.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TranslationProvider locale=\"vi\">\n * <App />\n * </TranslationProvider>\n *\n * // With custom translations\n * <TranslationProvider\n * locale=\"vi\"\n * translations={{\n * vi: { DatePicker: { clear: \"Xóa ngay\" } }\n * }}\n * >\n * <App />\n * </TranslationProvider>\n * ```\n */\nexport const TranslationProvider: React.FC<TranslationProviderProps> = ({ children, locale = \"en\", translations, i18n }) => {\n const t = React.useCallback(\n (namespace: string) => {\n return (key: string): string => {\n // Merge custom translations with defaults\n const mergedTranslations = {\n ...defaultTranslations[locale],\n ...translations?.[locale],\n };\n\n return resolveTranslationValue(mergedTranslations, namespace, key) ?? key;\n };\n },\n [locale, translations]\n );\n const value = React.useMemo<TranslationContextType>(() => ({ locale, t }), [locale, t]);\n\n return (\n <GlobalI18nProvider i18n={i18n}>\n <TranslationContext.Provider value={value}>{children}</TranslationContext.Provider>\n </GlobalI18nProvider>\n );\n};\n\n/**\n * Hook to get translations for a specific namespace.\n * Falls back to the key itself when TranslationProvider is not available.\n *\n * @param namespace - The translation namespace (e.g., \"DatePicker\", \"Common\")\n * @returns A function that takes a key and returns the translated string\n *\n * @example\n * ```tsx\n * const t = useTranslations(\"DatePicker\");\n * console.log(t(\"clear\")); // \"Clear\" or \"Xóa\" depending on locale\n * ```\n */\nexport const useUnderverseTranslations = (namespace: string) => {\n const context = React.useContext(TranslationContext);\n\n return React.useMemo(() => {\n // Fallback for when provider is not available - use English defaults.\n if (!context) {\n return (key: string): string => {\n return getUnderverseDefaultTranslation(\"en\", namespace, key);\n };\n }\n\n return context.t(namespace);\n }, [context, namespace]);\n};\n\n/**\n * Hook to get the current locale.\n * Falls back to \"en\" when TranslationProvider is not available.\n *\n * @returns The current locale (\"en\" or \"vi\")\n */\nexport const useUnderverseLocale = (): Locale => {\n const context = React.useContext(TranslationContext);\n return context?.locale || \"en\";\n};\n\nexport default TranslationProvider;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { createTranslator, useLocale, useMessages } from \"next-intl\";\nimport type { Locale } from \"./TranslationContext\";\nimport { GlobalI18nProvider, type GlobalI18nConfig } from \"./GlobalI18nContext\";\n\nfunction normalizeLocale(locale: string | null | undefined, fallback: Locale): Locale {\n const normalized = locale?.toLowerCase().split(\"-\")[0];\n if (normalized === \"en\" || normalized === \"vi\" || normalized === \"ko\" || normalized === \"ja\") {\n return normalized;\n }\n\n return fallback;\n}\n\nexport type NextIntlTranslationResult = {\n locale: Locale;\n translated: string | null;\n};\n\ntype NextIntlBridgeContextValue = {\n locale: Locale;\n translate: (namespace: string, key: string, values?: Record<string, unknown>) => NextIntlTranslationResult;\n};\n\nconst NextIntlBridgeContext = React.createContext<NextIntlBridgeContextValue | null>(null);\n\n/** Public props for the `NextIntlAdapter` component. */\nexport interface NextIntlAdapterProps {\n children: React.ReactNode;\n locale?: string | null;\n messages?: Record<string, unknown> | null;\n /** Global flat label overrides — lets callers skip per-component prop drilling for common strings. */\n i18n?: GlobalI18nConfig;\n}\n\nfunction isMissingIntlContextError(error: unknown) {\n if (!(error instanceof Error)) return false;\n const message = error.message || \"\";\n const stack = error.stack || \"\";\n\n return (\n message.includes(\"No intl context found.\")\n || (\n !message\n && stack.includes(\"use-intl/dist/esm/\")\n && stack.includes(\"NextIntlAdapterWithContext\")\n )\n );\n}\n\nclass NextIntlAdapterBoundary extends React.Component<\n { children: React.ReactNode; fallback: React.ReactNode },\n { error: Error | null }\n> {\n state: { error: Error | null } = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidUpdate(prevProps: Readonly<{ children: React.ReactNode; fallback: React.ReactNode }>) {\n if (this.state.error && prevProps.children !== this.props.children) {\n this.setState({ error: null });\n }\n }\n\n render() {\n if (!this.state.error) {\n return this.props.children;\n }\n\n if (isMissingIntlContextError(this.state.error)) {\n return this.props.fallback;\n }\n\n throw this.state.error;\n }\n}\n\nfunction NextIntlAdapterProvider({\n children,\n locale,\n messages,\n}: {\n children: React.ReactNode;\n locale: string;\n messages: Record<string, unknown>;\n}) {\n const normalizedLocale = normalizeLocale(locale, \"en\");\n const runtimeTranslator = React.useMemo(() => createTranslator({\n locale: normalizedLocale,\n messages,\n onError: () => {},\n }), [messages, normalizedLocale]);\n\n const translate = React.useCallback(\n (namespace: string, key: string, values?: Record<string, unknown>): NextIntlTranslationResult => {\n const namespacedKey = namespace ? `${namespace}.${key}` : key;\n\n try {\n return {\n locale: normalizedLocale,\n translated: runtimeTranslator(namespacedKey as never, values as never),\n };\n } catch {\n return {\n locale: normalizedLocale,\n translated: null,\n };\n }\n },\n [normalizedLocale, runtimeTranslator],\n );\n\n const value = React.useMemo<NextIntlBridgeContextValue>(() => ({\n locale: normalizedLocale,\n translate,\n }), [normalizedLocale, translate]);\n\n return <NextIntlBridgeContext.Provider value={value}>{children}</NextIntlBridgeContext.Provider>;\n}\n\nfunction NextIntlAdapterWithContext({ children }: { children: React.ReactNode }) {\n const locale = useLocale();\n const messages = useMessages();\n return (\n <NextIntlAdapterProvider locale={locale} messages={messages}>\n {children}\n </NextIntlAdapterProvider>\n );\n}\n\nexport function NextIntlAdapter({ children, locale, messages, i18n }: NextIntlAdapterProps) {\n const inner = locale && messages\n ? (\n <NextIntlAdapterProvider locale={locale} messages={messages}>\n {children}\n </NextIntlAdapterProvider>\n )\n : (\n <NextIntlAdapterBoundary fallback={children}>\n <NextIntlAdapterWithContext>{children}</NextIntlAdapterWithContext>\n </NextIntlAdapterBoundary>\n );\n\n return <GlobalI18nProvider i18n={i18n}>{inner}</GlobalI18nProvider>;\n}\n\nexport const UnderverseNextIntlProvider = NextIntlAdapter;\n\nexport function useNextIntlBridge() {\n return React.useContext(NextIntlBridgeContext);\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n getUnderverseDefaultTranslation,\n useUnderverseTranslations,\n useUnderverseLocale,\n type Locale,\n} from \"../contexts/TranslationContext\";\nimport { useNextIntlBridge } from \"../contexts/NextIntlAdapter\";\n\n/**\n * Context to force using internal translations even when next-intl is available.\n * Useful for testing or when you want to use the package's built-in translations.\n */\nconst ForceInternalContext = React.createContext(false);\n\nexport const ForceInternalTranslationsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <ForceInternalContext.Provider value={true}>{children}</ForceInternalContext.Provider>;\n};\n\nfunction normalizeLocale(locale: string | null | undefined, fallback: Locale): Locale {\n const normalized = locale?.toLowerCase().split(\"-\")[0];\n if (normalized === \"en\" || normalized === \"vi\" || normalized === \"ko\" || normalized === \"ja\") {\n return normalized;\n }\n\n return fallback;\n}\n\nfunction isUnresolvedTranslation(value: string, namespace: string, key: string) {\n return value === key || value === `${namespace}.${key}`;\n}\n\nfunction getEnvironmentLocale(fallback: Locale): Locale {\n if (typeof document !== \"undefined\") {\n const documentLocale = document.documentElement?.lang?.trim();\n if (documentLocale) {\n return normalizeLocale(documentLocale, fallback);\n }\n }\n\n if (typeof navigator !== \"undefined\") {\n const navigatorLocale = navigator.language?.trim();\n if (navigatorLocale) {\n return normalizeLocale(navigatorLocale, fallback);\n }\n }\n\n return fallback;\n}\n\n/**\n * Smart translation hook that:\n * 1. Uses NextIntlAdapter if available and not forced to use internal\n * 2. Falls back to internal TranslationContext\n * 3. Falls back to English defaults if no provider is available\n *\n * @param namespace - The translation namespace (e.g., \"DatePicker\", \"Common\")\n * @returns A function that takes a key and returns the translated string\n *\n * @example\n * ```tsx\n * // Works in Next.js with <NextIntlAdapter />\n * // Works in React without next-intl\n * // Works without any provider (English fallback)\n * const t = useSmartTranslations(\"DatePicker\");\n * console.log(t(\"clear\")); // \"Clear\" or translated value\n * ```\n */\nexport function useSmartTranslations(namespace: string): (key: string) => string {\n const forceInternal = React.useContext(ForceInternalContext);\n const nextIntlBridge = useNextIntlBridge();\n const internalT = useUnderverseTranslations(namespace);\n const internalLocale = useUnderverseLocale();\n const [environmentLocale, setEnvironmentLocale] = React.useState<Locale | null>(null);\n\n React.useEffect(() => {\n if (forceInternal) return;\n if (nextIntlBridge) return;\n if (internalLocale !== \"en\") return;\n const detected = getEnvironmentLocale(internalLocale);\n if (detected !== internalLocale) {\n setEnvironmentLocale(detected);\n }\n }, [forceInternal, internalLocale, nextIntlBridge]);\n\n return React.useCallback((key: string) => {\n if (forceInternal) {\n return internalT(key);\n }\n\n const resolvedEnvironmentLocale = environmentLocale && environmentLocale !== internalLocale ? environmentLocale : null;\n const primaryLocale = nextIntlBridge?.locale ?? resolvedEnvironmentLocale ?? internalLocale;\n const fallbackLocale = resolvedEnvironmentLocale && resolvedEnvironmentLocale !== primaryLocale ? resolvedEnvironmentLocale : null;\n let translated: string | null = null;\n\n if (nextIntlBridge) {\n const nextIntlResult = nextIntlBridge.translate(namespace, key);\n translated = nextIntlResult.translated;\n }\n\n const localizedDefault = getUnderverseDefaultTranslation(primaryLocale, namespace, key);\n const fallbackLocalizedDefault = fallbackLocale ? getUnderverseDefaultTranslation(fallbackLocale, namespace, key) : key;\n const englishDefault = getUnderverseDefaultTranslation(\"en\", namespace, key);\n const internalValue = internalT(key);\n\n if (\n translated\n && !isUnresolvedTranslation(translated, namespace, key)\n && !(primaryLocale !== \"en\" && localizedDefault !== englishDefault && translated === englishDefault)\n ) {\n return translated;\n }\n\n // Only trust internal translations ahead of locale defaults when the\n // internal provider is actually aligned with the resolved locale.\n if (internalLocale === primaryLocale && internalValue !== key) {\n return internalValue;\n }\n\n if (localizedDefault !== key) {\n return localizedDefault;\n }\n\n if (fallbackLocalizedDefault !== key) {\n return fallbackLocalizedDefault;\n }\n\n if (internalValue !== key) {\n return internalValue;\n }\n\n return key;\n }, [environmentLocale, forceInternal, internalLocale, internalT, namespace, nextIntlBridge]);\n}\n\n/**\n * Smart locale hook that:\n * 1. Uses NextIntlAdapter if available\n * 2. Falls back to internal TranslationContext\n * 3. Falls back to \"en\" if no provider is available\n *\n * @returns The current locale\n */\nexport function useSmartLocale(): Locale {\n const forceInternal = React.useContext(ForceInternalContext);\n const nextIntlBridge = useNextIntlBridge();\n const internalLocale = useUnderverseLocale();\n const [environmentLocale, setEnvironmentLocale] = React.useState<Locale | null>(null);\n\n React.useEffect(() => {\n if (forceInternal) return;\n if (nextIntlBridge) return;\n if (internalLocale !== \"en\") return;\n const detected = getEnvironmentLocale(internalLocale);\n if (detected !== internalLocale) {\n setEnvironmentLocale(detected);\n }\n }, [forceInternal, internalLocale, nextIntlBridge]);\n\n if (forceInternal) {\n return internalLocale;\n }\n\n return nextIntlBridge?.locale ?? environmentLocale ?? internalLocale;\n}\n\nexport default useSmartTranslations;\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport type UEditorPortalContainerGetter = () => HTMLElement | null;\n\nconst UEditorPortalContext = React.createContext<UEditorPortalContainerGetter | undefined>(undefined);\n\nexport function UEditorPortalProvider({\n children,\n getPortalContainer,\n}: {\n children: React.ReactNode;\n getPortalContainer?: UEditorPortalContainerGetter;\n}) {\n return (\n <UEditorPortalContext.Provider value={getPortalContainer}>\n {children}\n </UEditorPortalContext.Provider>\n );\n}\n\nexport function useUEditorPortalContainerGetter() {\n return React.useContext(UEditorPortalContext);\n}\n\n/** Resolve lazily while an overlay is opening. Never call this during SSR. */\nexport function resolveUEditorPortalContainer(\n getPortalContainer?: UEditorPortalContainerGetter,\n fallbackGetPortalContainer?: UEditorPortalContainerGetter,\n fallbackDocument?: Document | null,\n) {\n const getters = [getPortalContainer, fallbackGetPortalContainer];\n for (const getter of getters) {\n if (!getter) continue;\n try {\n const container = getter();\n if (container) return container;\n } catch {\n // A popup may have been closed between the interaction and this render.\n }\n }\n\n if (fallbackDocument) return fallbackDocument.body;\n return typeof document !== \"undefined\" ? document.body : null;\n}\n","\"use client\";\n\n/* eslint-disable react-hooks/refs -- Tooltip composes child refs and updates them only from ref/event callbacks; the compiler cannot prove that cloneElement defers those callbacks. */\n\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../utils/cn\";\nimport { useHydrated } from \"../hooks/useHydrated\";\nimport { chainEventHandlers, mergeRefs } from \"../utils/react-compose\";\nimport { resolveUEditorPortalContainer, useUEditorPortalContainerGetter } from \"./UEditor/portal-context\";\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\";\ntype TooltipPlacement = Side;\n\n/** Public props for the `Tooltip` component. */\ntype TooltipProps = Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"content\"> & {\n children: React.ReactElement;\n content: React.ReactNode;\n placement?: TooltipPlacement;\n delay?: number | { open?: number; close?: number };\n className?: string;\n disabled?: boolean;\n variant?: \"default\" | \"info\" | \"warning\" | \"error\" | \"success\";\n /** When true, augment the child directly instead of adding a wrapper. Default: true */\n asChild?: boolean;\n};\n\nconst variantStyles = {\n default: \"bg-popover text-popover-foreground border-border/50\",\n info: \"bg-info text-info-foreground border-info/20\",\n warning: \"bg-warning text-warning-foreground border-warning/20\",\n error: \"bg-destructive text-destructive-foreground border-destructive/20\",\n success: \"bg-success text-success-foreground border-success/20\",\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\nfunction getTransformOrigin(side: Side) {\n switch (side) {\n case \"top\":\n return \"center bottom\";\n case \"bottom\":\n return \"center top\";\n case \"left\":\n return \"right center\";\n case \"right\":\n return \"left center\";\n }\n}\n\nfunction computeTooltipPosition(args: {\n triggerRect: DOMRect;\n contentSize: { width: number; height: number };\n placement: TooltipPlacement;\n offset: number;\n padding: number;\n viewport: { width: number; height: number };\n}): { top: number; left: number; side: Side } {\n const { triggerRect, contentSize, placement, offset, padding, viewport } = args;\n let side: Side = placement;\n\n const fitsTop = triggerRect.top - offset - contentSize.height >= padding;\n const fitsBottom = triggerRect.bottom + offset + contentSize.height <= viewport.height - padding;\n const fitsLeft = triggerRect.left - offset - contentSize.width >= padding;\n const fitsRight = triggerRect.right + offset + contentSize.width <= viewport.width - padding;\n\n if (side === \"top\" && !fitsTop && fitsBottom) side = \"bottom\";\n if (side === \"bottom\" && !fitsBottom && fitsTop) side = \"top\";\n if (side === \"left\" && !fitsLeft && fitsRight) side = \"right\";\n if (side === \"right\" && !fitsRight && fitsLeft) side = \"left\";\n\n const centerX = triggerRect.left + triggerRect.width / 2;\n const centerY = triggerRect.top + triggerRect.height / 2;\n\n let left = 0;\n let top = 0;\n\n if (side === \"top\") {\n top = triggerRect.top - offset - contentSize.height;\n left = centerX - contentSize.width / 2;\n } else if (side === \"bottom\") {\n top = triggerRect.bottom + offset;\n left = centerX - contentSize.width / 2;\n } else if (side === \"left\") {\n top = centerY - contentSize.height / 2;\n left = triggerRect.left - offset - contentSize.width;\n } else {\n top = centerY - contentSize.height / 2;\n left = triggerRect.right + offset;\n }\n\n left = clamp(left, padding, viewport.width - contentSize.width - padding);\n top = clamp(top, padding, viewport.height - contentSize.height - padding);\n\n return { top, left, side };\n}\n\nexport const Tooltip = React.forwardRef<HTMLElement, TooltipProps>(({\n children,\n content,\n placement = \"top\",\n delay = { open: 200, close: 300 },\n className,\n disabled = false,\n variant = \"default\",\n asChild = true,\n ...triggerPassthroughProps\n}, forwardedRef) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const isMounted = useHydrated();\n const triggerRef = React.useRef<HTMLElement>(null);\n const positionerRef = React.useRef<HTMLDivElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const timeoutRef = React.useRef<NodeJS.Timeout | undefined>(undefined);\n const lastAppliedRef = React.useRef<{ top: number; left: number; side: Side } | null>(null);\n const openedByPointerRef = React.useRef(false);\n const triggerSelector = React.useId();\n const tooltipId = React.useId();\n const getPortalContainer = useUEditorPortalContainerGetter();\n const portalContainer = isOpen ? resolveUEditorPortalContainer(getPortalContainer) : null;\n const portalDocument = portalContainer?.ownerDocument ?? null;\n const portalWindow = portalDocument?.defaultView ?? null;\n\n const delayOpen = typeof delay === \"object\" ? delay.open || 700 : delay;\n const delayClose = typeof delay === \"object\" ? delay.close || 300 : delay;\n\n const offset = 8;\n const padding = 8;\n\n const updatePosition = React.useCallback(() => {\n const triggerEl = triggerRef.current;\n const positionerEl = positionerRef.current;\n const panelEl = panelRef.current;\n if (!triggerEl || !positionerEl || !panelEl) return;\n\n const triggerRect = triggerEl.getBoundingClientRect();\n const measuredWidth = panelEl.offsetWidth;\n const measuredHeight = panelEl.offsetHeight;\n const rect = panelEl.getBoundingClientRect();\n\n const contentWidth = measuredWidth || rect.width;\n const contentHeight = measuredHeight || rect.height;\n\n const next = computeTooltipPosition({\n triggerRect,\n contentSize: { width: contentWidth, height: contentHeight },\n placement,\n offset,\n padding,\n viewport: {\n width: portalWindow?.innerWidth ?? window.innerWidth,\n height: portalWindow?.innerHeight ?? window.innerHeight,\n },\n });\n\n const top = Math.round(next.top);\n const left = Math.round(next.left);\n\n const prev = lastAppliedRef.current;\n const same = prev && Math.abs(prev.top - top) < 0.5 && Math.abs(prev.left - left) < 0.5 && prev.side === next.side;\n if (same) return;\n\n lastAppliedRef.current = { top, left, side: next.side };\n positionerEl.style.transform = `translate3d(${left}px, ${top}px, 0)`;\n panelEl.style.transformOrigin = getTransformOrigin(next.side);\n if (positionerEl.style.visibility !== \"visible\") positionerEl.style.visibility = \"visible\";\n }, [placement, portalWindow]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n openedByPointerRef.current = true;\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setIsOpen(true);\n }, delayOpen);\n };\n\n const handleMouseLeave = () => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, delayClose);\n };\n\n const closeNow = React.useCallback(() => {\n clearTimeout(timeoutRef.current);\n openedByPointerRef.current = false;\n setIsOpen(false);\n }, []);\n\n const handleFocus = () => {\n if (disabled) return;\n openedByPointerRef.current = false;\n setIsOpen(true);\n };\n\n const handleBlur = () => {\n openedByPointerRef.current = false;\n setIsOpen(false);\n };\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, []);\n\n React.useEffect(() => {\n if (isOpen) return;\n clearTimeout(timeoutRef.current);\n }, [isOpen]);\n\n // Compute a stable position right after opening (before paint), then re-check a couple frames later.\n React.useLayoutEffect(() => {\n if (!isOpen || !portalWindow) {\n lastAppliedRef.current = null;\n return;\n }\n updatePosition();\n let raf1 = 0;\n let raf2 = 0;\n raf1 = portalWindow.requestAnimationFrame(() => {\n updatePosition();\n raf2 = portalWindow.requestAnimationFrame(() => updatePosition());\n });\n return () => {\n portalWindow.cancelAnimationFrame(raf1);\n portalWindow.cancelAnimationFrame(raf2);\n };\n }, [isOpen, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalDocument || !portalWindow) return;\n let raf = 0;\n const handler = () => {\n portalWindow.cancelAnimationFrame(raf);\n raf = portalWindow.requestAnimationFrame(() => updatePosition());\n };\n handler();\n portalWindow.addEventListener(\"resize\", handler);\n portalWindow.addEventListener(\"scroll\", handler, true);\n portalDocument.addEventListener(\"scroll\", handler, true);\n return () => {\n portalWindow.cancelAnimationFrame(raf);\n portalWindow.removeEventListener(\"resize\", handler);\n portalWindow.removeEventListener(\"scroll\", handler, true);\n portalDocument.removeEventListener(\"scroll\", handler, true);\n };\n }, [isOpen, portalDocument, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalWindow) return;\n const ResizeObserverCtor = portalWindow.ResizeObserver;\n if (!ResizeObserverCtor) return;\n const ro = new ResizeObserverCtor(() => updatePosition());\n if (triggerRef.current) ro.observe(triggerRef.current);\n if (panelRef.current) ro.observe(panelRef.current);\n return () => ro.disconnect();\n }, [isOpen, portalWindow, updatePosition]);\n\n React.useEffect(() => {\n if (!isOpen || !portalDocument) return;\n\n const handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") closeNow();\n };\n\n const handleDocumentPointerMove = (event: PointerEvent) => {\n if (!openedByPointerRef.current) return;\n\n const triggerEl = triggerRef.current;\n if (!triggerEl) {\n closeNow();\n return;\n }\n\n const rect = triggerEl.getBoundingClientRect();\n const tolerance = 2;\n const insideTrigger =\n event.clientX >= rect.left - tolerance &&\n event.clientX <= rect.right + tolerance &&\n event.clientY >= rect.top - tolerance &&\n event.clientY <= rect.bottom + tolerance;\n\n if (!insideTrigger) closeNow();\n };\n\n portalDocument.addEventListener(\"pointerdown\", closeNow, true);\n portalDocument.addEventListener(\"keydown\", handleDocumentKeyDown);\n portalDocument.addEventListener(\"pointermove\", handleDocumentPointerMove, true);\n\n return () => {\n portalDocument.removeEventListener(\"pointerdown\", closeNow, true);\n portalDocument.removeEventListener(\"keydown\", handleDocumentKeyDown);\n portalDocument.removeEventListener(\"pointermove\", handleDocumentPointerMove, true);\n };\n }, [closeNow, isOpen, portalDocument]);\n\n const childProps = children.props as React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> };\n const childRef = childProps.ref;\n const passthroughRef = mergeRefs<HTMLElement>(forwardedRef, childRef, (node) => {\n triggerRef.current = node;\n });\n\n if (disabled || !content) {\n if (!asChild) return children;\n return React.cloneElement(children as React.ReactElement<any>, {\n ...triggerPassthroughProps,\n ref: passthroughRef,\n });\n }\n\n const triggerProps = {\n ...triggerPassthroughProps,\n ref: passthroughRef,\n \"data-underverse-tooltip-trigger\": triggerSelector,\n \"aria-describedby\": isOpen\n ? [childProps[\"aria-describedby\"], triggerPassthroughProps[\"aria-describedby\"], tooltipId].filter(Boolean).join(\" \")\n : childProps[\"aria-describedby\"] ?? triggerPassthroughProps[\"aria-describedby\"],\n onMouseEnter: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onMouseEnter,\n childProps.onMouseEnter,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleMouseEnter();\n },\n ),\n onMouseLeave: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onMouseLeave,\n childProps.onMouseLeave,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleMouseLeave();\n },\n ),\n onPointerDown: chainEventHandlers<React.PointerEvent<HTMLElement>>(\n triggerPassthroughProps.onPointerDown,\n childProps.onPointerDown,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n closeNow();\n },\n ),\n onClick: chainEventHandlers<React.MouseEvent<HTMLElement>>(\n triggerPassthroughProps.onClick,\n childProps.onClick,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n closeNow();\n },\n ),\n onFocus: chainEventHandlers<React.FocusEvent<HTMLElement>>(\n triggerPassthroughProps.onFocus,\n childProps.onFocus,\n (e) => {\n triggerRef.current = e.currentTarget as HTMLElement;\n handleFocus();\n },\n ),\n onBlur: chainEventHandlers<React.FocusEvent<HTMLElement>>(\n triggerPassthroughProps.onBlur,\n childProps.onBlur,\n () => {\n handleBlur();\n },\n ),\n } satisfies React.HTMLAttributes<HTMLElement> & {\n ref: React.Ref<HTMLElement>;\n \"data-underverse-tooltip-trigger\": string;\n };\n\n const trigger = asChild ? (\n React.cloneElement(children, triggerProps)\n ) : (\n <span {...triggerProps}>{children}</span>\n );\n\n return (\n <>\n {trigger}\n {isMounted &&\n isOpen &&\n portalContainer &&\n createPortal(\n <div\n ref={positionerRef}\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n transform: \"translate3d(0, 0, 0)\",\n zIndex: 99999,\n visibility: \"hidden\",\n pointerEvents: \"none\",\n willChange: \"transform\",\n }}\n >\n <div\n ref={panelRef}\n id={tooltipId}\n role=\"tooltip\"\n style={{\n opacity: 1,\n transition: \"opacity 150ms\",\n transformOrigin: getTransformOrigin(placement),\n }}\n className={cn(\n \"px-3 py-2 text-sm font-medium rounded-xl shadow-lg border\",\n \"max-w-xs wrap-break-word backdrop-blur-sm\",\n variantStyles[variant],\n className,\n )}\n >\n {content}\n </div>\n </div>,\n portalContainer,\n )}\n </>\n );\n});\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst subscribe = () => () => {};\nconst getSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport function useHydrated() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import * as React from \"react\";\n\nexport function chainEventHandlers<EventType>(\n ...handlers: Array<((event: EventType) => void) | undefined>\n) {\n return (event: EventType) => {\n handlers.forEach((handler) => handler?.(event));\n };\n}\n\nexport function setRefValue<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n (ref as React.MutableRefObject<T | null>).current = value;\n}\n\nexport function mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (value: T | null) => {\n refs.forEach((ref) => setRefValue(ref, value));\n };\n}\n"],"mappings":"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","names":["React","jsx","React","jsx","React","jsx","normalizeLocale","React","jsx","React","Fragment","jsx"]}