@intlayer/design-system 9.4.1 → 9.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/esm/api/index.mjs +2 -2
- package/dist/esm/api/useUser/index.mjs +1 -1
- package/dist/esm/components/Avatar/index.mjs +1 -1
- package/dist/esm/components/Avatar/index.mjs.map +1 -1
- package/dist/esm/components/Badge/index.mjs +3 -3
- package/dist/esm/components/Badge/index.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/index.mjs +5 -5
- package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/esm/components/Browser/Browser.mjs +4 -4
- package/dist/esm/components/Browser/Browser.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs +1 -0
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Carousel/index.mjs +5 -5
- package/dist/esm/components/Carousel/index.mjs.map +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +5 -5
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
- package/dist/esm/components/Container/index.mjs +2 -2
- package/dist/esm/components/Container/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +1 -1
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +7 -7
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +9 -9
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +4 -4
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/{ContentEditor.mjs → NodeEditor.mjs} +9 -9
- package/dist/esm/components/DictionaryFieldEditor/NodeEditor.mjs.map +1 -0
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +3 -3
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/index.mjs +3 -3
- package/dist/esm/components/Footer/index.mjs +5 -3
- package/dist/esm/components/Footer/index.mjs.map +1 -1
- package/dist/esm/components/HeightResizer/index.mjs +1 -1
- package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
- package/dist/esm/components/IDE/Code.mjs +1 -1
- package/dist/esm/components/IDE/Code.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockHighlight.mjs +1 -1
- package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockServer.mjs +1 -1
- package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockShiki.mjs +6 -48
- package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
- package/dist/esm/components/IDE/FileList.mjs +1 -1
- package/dist/esm/components/IDE/FileList.mjs.map +1 -1
- package/dist/esm/components/IDE/FileTree.mjs +1 -1
- package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
- package/dist/esm/components/IDE/IDE.mjs +10 -7
- package/dist/esm/components/IDE/IDE.mjs.map +1 -1
- package/dist/esm/components/IDE/MarkDownRender.mjs +4 -3
- package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/IDE/shikiBundle.mjs +61 -0
- package/dist/esm/components/IDE/shikiBundle.mjs.map +1 -0
- package/dist/esm/components/IDE/shikiLanguages.mjs +2 -39
- package/dist/esm/components/IDE/shikiLanguages.mjs.map +1 -1
- package/dist/esm/components/IDE/shikiThemes.mjs.map +1 -1
- package/dist/esm/components/Input/Checkbox.mjs +4 -4
- package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
- package/dist/esm/components/Input/Input.mjs +2 -2
- package/dist/esm/components/Input/Input.mjs.map +1 -1
- package/dist/esm/components/Input/OTPInput.mjs +1 -1
- package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
- package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +2 -2
- package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/LanguageSection.mjs +6 -8
- package/dist/esm/components/LanguageBackground/LanguageSection.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/index.mjs +2 -2
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -2
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs +8 -3
- package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +9 -8
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs +2 -2
- package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/extensions.mjs +1 -1
- package/dist/esm/components/MarkdownEditor/extensions.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs +3 -3
- package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs +2 -2
- package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs +2 -2
- package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/novel/extensions/code-block-shiki.mjs +197 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/code-block-shiki.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs +2 -1
- package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/novel/index.mjs +2 -1
- package/dist/esm/components/Modal/Modal.mjs +0 -1
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/Navbar/DesktopNavbar.mjs +3 -3
- package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
- package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
- package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridDistortionPattern.mjs +2 -2
- package/dist/esm/components/Pattern/GridDistortionPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/RightDrawer.mjs +2 -2
- package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
- package/dist/esm/components/Select/Multiselect.mjs +2 -2
- package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
- package/dist/esm/components/Select/Select.mjs +2 -2
- package/dist/esm/components/Select/Select.mjs.map +1 -1
- package/dist/esm/components/Status/index.mjs +28 -0
- package/dist/esm/components/Status/index.mjs.map +1 -0
- package/dist/esm/components/Steps/index.mjs +3 -3
- package/dist/esm/components/Steps/index.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/SwitchSelector.mjs +12 -11
- package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs +6 -6
- package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
- package/dist/esm/components/Tab/Tab.mjs +1 -1
- package/dist/esm/components/Tab/Tab.mjs.map +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs +5 -5
- package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
- package/dist/esm/components/Table/SmartTable.mjs +2 -2
- package/dist/esm/components/Table/SmartTable.mjs.map +1 -1
- package/dist/esm/components/Table/Table.mjs +1 -1
- package/dist/esm/components/Table/Table.mjs.map +1 -1
- package/dist/esm/components/Table/TableElements.mjs +2 -2
- package/dist/esm/components/Table/TableElements.mjs.map +1 -1
- package/dist/esm/components/Tag/index.mjs +1 -1
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/TechLogo/TechLogo.mjs +2 -0
- package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
- package/dist/esm/components/TechLogo/logos/HTMX.mjs +31 -0
- package/dist/esm/components/TechLogo/logos/HTMX.mjs.map +1 -0
- package/dist/esm/components/TechLogo/logos/Remix.mjs +22 -0
- package/dist/esm/components/TechLogo/logos/Remix.mjs.map +1 -0
- package/dist/esm/components/TechLogo/techLogos.mjs +5 -1
- package/dist/esm/components/TechLogo/techLogos.mjs.map +1 -1
- package/dist/esm/components/Terminal/Terminal.mjs +4 -4
- package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +4 -4
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/index.mjs +8 -7
- package/dist/esm/hooks/usePersistedStore.mjs +6 -18
- package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
- package/dist/esm/providers/ReactQueryProvider.mjs +10 -2
- package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
- package/dist/esm/providers/ThemeProvider.mjs +27 -15
- package/dist/esm/providers/ThemeProvider.mjs.map +1 -1
- package/dist/esm/routes.mjs +24 -6
- package/dist/esm/routes.mjs.map +1 -1
- package/dist/esm/structured-data/buildItemListJsonLd.mjs +27 -0
- package/dist/esm/structured-data/buildItemListJsonLd.mjs.map +1 -0
- package/dist/esm/structured-data/index.mjs +2 -1
- package/dist/types/components/Badge/index.d.ts.map +1 -1
- package/dist/types/components/Button/Button.d.ts +2 -2
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Container/index.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts +10 -0
- package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts.map +1 -0
- package/dist/types/components/DictionaryFieldEditor/index.d.ts +2 -2
- package/dist/types/components/Footer/index.d.ts.map +1 -1
- package/dist/types/components/Form/FormBase.d.ts +1 -1
- package/dist/types/components/IDE/CodeBlockServer.d.ts +1 -1
- package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
- package/dist/types/components/IDE/MarkDownRender.d.ts +1 -0
- package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
- package/dist/types/components/IDE/shikiBundle.d.ts +74 -0
- package/dist/types/components/IDE/shikiBundle.d.ts.map +1 -0
- package/dist/types/components/IDE/shikiLanguages.d.ts +2 -39
- package/dist/types/components/IDE/shikiLanguages.d.ts.map +1 -1
- package/dist/types/components/IDE/shikiThemes.d.ts +3 -1
- package/dist/types/components/IDE/shikiThemes.d.ts.map +1 -1
- package/dist/types/components/LanguageBackground/LanguageSection.d.ts +5 -1
- package/dist/types/components/LanguageBackground/LanguageSection.d.ts.map +1 -1
- package/dist/types/components/LanguageBackground/index.d.ts +2 -2
- package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
- package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts +15 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts +2 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/index.d.ts +2 -1
- package/dist/types/components/Status/index.d.ts +8 -0
- package/dist/types/components/Status/index.d.ts.map +1 -0
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +3 -3
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
- package/dist/types/components/Table/TableElements.d.ts.map +1 -1
- package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/HTMX.d.ts +6 -0
- package/dist/types/components/TechLogo/logos/HTMX.d.ts.map +1 -0
- package/dist/types/components/TechLogo/logos/Remix.d.ts +6 -0
- package/dist/types/components/TechLogo/logos/Remix.d.ts.map +1 -0
- package/dist/types/components/TechLogo/techLogos.d.ts +4 -2
- package/dist/types/components/TechLogo/types.d.ts +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts +1 -1
- package/dist/types/components/index.d.ts +3 -2
- package/dist/types/providers/ThemeProvider.d.ts.map +1 -1
- package/dist/types/routes.d.ts +21 -3
- package/dist/types/routes.d.ts.map +1 -1
- package/dist/types/structured-data/buildItemListJsonLd.d.ts +36 -0
- package/dist/types/structured-data/buildItemListJsonLd.d.ts.map +1 -0
- package/dist/types/structured-data/index.d.ts +2 -1
- package/package.json +68 -54
- package/src/components/MarkdownEditor/markdown-editor.css +17 -17
- package/styles/globals.css +71 -0
- package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +0 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts +0 -10
- package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +0 -1
- package/tailwind.css +0 -269
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.mjs","names":[],"sources":["../../../../src/components/Toaster/Toast.tsx"],"sourcesContent":["'use client';\n\nimport * as ToastPrimitives from '@radix-ui/react-toast';\nimport { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport type { ComponentProps, FC, ReactElement } from 'react';\n\nexport const ToastProvider = ToastPrimitives;\n\nexport const ToastViewport: FC<\n ComponentProps<typeof ToastPrimitives.Viewport>\n> = ({ className, ...props }) => (\n <ToastPrimitives.Viewport\n className={cn(\n 'fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-105',\n className\n )}\n {...props}\n />\n);\n\n/**\n * Toast variant styles using class-variance-authority.\n *\n * Defines visual styles for different toast types with semantic colors,\n * animations, and responsive behavior.\n *\n * @example\n * ```tsx\n * // Error toast with red background\n * <Toast variant=\"error\">Error message</Toast>\n *\n * // Success toast with green background\n * <Toast variant=\"success\">Success message</Toast>\n *\n * // Default toast with neutral styling\n * <Toast variant=\"default\">Info message</Toast>\n * ```\n */\nexport const toastVariants = cva(\n 'group data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-xl p-4 pr-6 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur transition-all [corner-shape:squircle] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=end]:animate-out data-[swipe=move]:transition-none supports-[corner-shape:squircle]:rounded-3xl',\n {\n variants: {\n /** Toast visual variants for different message types */\n variant: {\n /** Error state with red styling for failures and warnings */\n error: 'bg-error/40 text-text',\n /** Success state with green styling for confirmations */\n success: 'bg-success/30 text-text',\n /** Default neutral styling for general information */\n default: 'bg-card/80 text-text',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n/**\n * Toast Component\n *\n * A notification component that displays temporary messages to users using Radix UI primitives.\n * Supports different visual variants, animations, and user interactions including swipe-to-dismiss.\n *\n * ## Features\n * - **Visual Variants**: Error, success, and default styling themes\n * - **Animations**: Smooth slide-in/slide-out transitions with fade effects\n * - **Swipe Gestures**: Touch-friendly swipe-to-dismiss functionality\n * - **Accessibility**: Full screen reader support and keyboard navigation\n * - **Positioning**: Smart positioning with responsive viewport handling\n * - **Auto-dismiss**: Configurable automatic dismissal timing\n *\n * ## Technical Implementation\n * - Built on Radix UI Toast primitives for accessibility compliance\n * - Uses Framer Motion for smooth animations and gestures\n * - CVA (class-variance-authority) for consistent styling variants\n * - Backdrop blur effects for modern visual appeal\n * - CSS transforms for hardware-accelerated animations\n *\n * @example\n * ```tsx\n * // Basic toast with title and description\n * <Toast variant=\"default\">\n * <ToastTitle>Notification</ToastTitle>\n * <ToastDescription>Your action was completed successfully.</ToastDescription>\n * <ToastClose />\n * </Toast>\n *\n * // Error toast with action button\n * <Toast variant=\"error\">\n * <ToastTitle>Upload Failed</ToastTitle>\n * <ToastDescription>Could not upload file. Please try again.</ToastDescription>\n * <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * <ToastClose />\n * </Toast>\n * ```\n */\nexport const Toast: FC<\n ComponentProps<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n> = ({ className, variant, ...props }) => {\n return (\n <ToastPrimitives.Root\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n};\n\n/**\n * ToastAction Component\n *\n * An interactive button component for toast notifications that allows users to take\n * actions related to the notification message.\n *\n * ## Features\n * - **Accessibility**: Requires `altText` prop for screen readers\n * - **Visual States**: Hover, focus, and disabled state styling\n * - **Theme Integration**: Supports error and default themes\n * - **Keyboard Navigation**: Full keyboard accessibility support\n *\n * ## Usage Guidelines\n * - Use for actionable notifications (retry, undo, view details)\n * - Keep action text short and descriptive\n * - Provide meaningful `altText` for accessibility\n * - Limit to one primary action per toast\n *\n * @example\n * ```tsx\n * // Retry action for failed operations\n * <ToastAction altText=\"Retry the failed operation\">\n * Retry\n * </ToastAction>\n *\n * // Undo action for reversible operations\n * <ToastAction altText=\"Undo the last action\">\n * Undo\n * </ToastAction>\n *\n * // Navigation action\n * <ToastAction altText=\"View the uploaded file\">\n * View File\n * </ToastAction>\n * ```\n */\nexport const ToastAction: FC<ComponentProps<typeof ToastPrimitives.Action>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Action\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 font-medium text-sm transition-colors hover:bg-text focus:outline-hidden focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.error]:border-card/40 group-[.error]:focus:ring-error group-[.error]:hover:border-error/30 group-[.error]:hover:bg-error group-[.error]:hover:text-error-foreground',\n className\n )}\n {...props}\n />\n);\n\nexport const ToastClose: FC<ComponentProps<typeof ToastPrimitives.Close>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Close\n className={cn(\n 'absolute top-1 right-1 rounded-md p-1 text-text/50 opacity-0 transition-opacity hover:text-text/80 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.error]:text-red-300 group-[.error]:focus:ring-red-400 group-[.error]:focus:ring-offset-red-600 group-[.error]:hover:text-red-50',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"size-5\" />\n </ToastPrimitives.Close>\n);\n/**\n * ToastTitle Component\n *\n * The primary heading text for toast notifications. Provides semantic structure\n * and proper typography hierarchy within the toast.\n *\n * ## Styling Features\n * - Semi-bold font weight for emphasis\n * - Automatic text sizing adjustments for descriptions\n * - Proper spacing relationships with other toast elements\n *\n * @example\n * ```tsx\n * <ToastTitle>File Upload Complete</ToastTitle>\n * <ToastTitle>Error: Connection Failed</ToastTitle>\n * <ToastTitle>Settings Saved</ToastTitle>\n * ```\n */\nexport const ToastTitle: FC<ComponentProps<typeof ToastPrimitives.Title>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Title\n className={cn('font-semibold text-sm [&+div]:text-xs', className)}\n {...props}\n />\n);\n\n/**\n * ToastDescription Component\n *\n * Supporting text that provides additional context or details for the toast notification.\n * Complements the ToastTitle with more detailed information.\n *\n * ## Styling Features\n * - Slightly reduced opacity for visual hierarchy\n * - Smaller text size than title\n * - Optimal line height for readability\n *\n * ## Content Guidelines\n * - Keep descriptions concise but informative\n * - Provide actionable information when possible\n * - Use plain language for better accessibility\n *\n * @example\n * ```tsx\n * <ToastDescription>\n * Your document has been uploaded successfully and is now available for sharing.\n * </ToastDescription>\n *\n * <ToastDescription>\n * Please check your internet connection and try again.\n * </ToastDescription>\n * ```\n */\nexport const ToastDescription: FC<\n ComponentProps<typeof ToastPrimitives.Description>\n> = ({ className, ...props }) => (\n <ToastPrimitives.Description\n className={cn('overflow-scroll text-sm opacity-90', className)}\n {...props}\n />\n);\n/**\n * Props type for Toast component including all Radix UI Toast.Root props\n * and variant styling options.\n */\nexport type ToastProps = ComponentProps<typeof Toast>;\n\n/**\n * Type for ToastAction elements used in toast configurations.\n * Ensures type safety when passing action elements to toast functions.\n */\nexport type ToastActionElement = ReactElement<typeof ToastAction>;\n"],"mappings":";;;;;;;;;AAQA,MAAa,gBAAgB;AAE7B,MAAa,iBAER,EAAE,WAAW,GAAG,YACnB,oBAAC,gBAAgB,UAAjB;CACE,WAAW,GACT,+HACA,SACF;CACA,GAAI;AACL;;;;;;;;;;;;;;;;;;;AAqBH,MAAa,gBAAgB,IAC3B,usBACA;CACE,UAAU;;AAER,SAAS;;EAEP,OAAO;;EAEP,SAAS;;EAET,SAAS;CACX,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAa,SAGR,EAAE,WAAW,SAAS,GAAG,YAAY;CACxC,OACE,oBAAC,gBAAgB,MAAjB;EACE,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAa,eAAkE,EAC7E,WACA,GAAG,YAEH,oBAAC,gBAAgB,QAAjB;CACE,WAAW,GACT,iaACA,SACF;CACA,GAAI;AACL;AAGH,MAAa,cAAgE,EAC3E,WACA,GAAG,YAEH,oBAAC,gBAAgB,OAAjB;CACE,WAAW,GACT,0TACA,SACF;CACA,eAAY;CACZ,GAAI;WAEJ,oBAAC,GAAD,EAAG,WAAU,SAAU;AACF;;;;;;;;;;;;;;;;;;;AAoBzB,MAAa,cAAgE,EAC3E,WACA,GAAG,YAEH,oBAAC,gBAAgB,OAAjB;CACE,WAAW,GAAG,yCAAyC,SAAS;CAChE,GAAI;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BH,MAAa,oBAER,EAAE,WAAW,GAAG,YACnB,oBAAC,gBAAgB,aAAjB;CACE,WAAW,GAAG,sCAAsC,SAAS;CAC7D,GAAI;AACL"}
|
|
1
|
+
{"version":3,"file":"Toast.mjs","names":[],"sources":["../../../../src/components/Toaster/Toast.tsx"],"sourcesContent":["'use client';\n\nimport * as ToastPrimitives from '@radix-ui/react-toast';\nimport { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport type { ComponentProps, FC, ReactElement } from 'react';\n\nexport const ToastProvider = ToastPrimitives;\n\nexport const ToastViewport: FC<\n ComponentProps<typeof ToastPrimitives.Viewport>\n> = ({ className, ...props }) => (\n <ToastPrimitives.Viewport\n className={cn(\n 'fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-105',\n className\n )}\n {...props}\n />\n);\n\n/**\n * Toast variant styles using class-variance-authority.\n *\n * Defines visual styles for different toast types with semantic colors,\n * animations, and responsive behavior.\n *\n * @example\n * ```tsx\n * // Error toast with red background\n * <Toast variant=\"error\">Error message</Toast>\n *\n * // Success toast with green background\n * <Toast variant=\"success\">Success message</Toast>\n *\n * // Default toast with neutral styling\n * <Toast variant=\"default\">Info message</Toast>\n * ```\n */\nexport const toastVariants = cva(\n 'group data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-xl p-4 pr-6 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur transition-all [corner-shape:squircle] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=end]:animate-out data-[swipe=move]:transition-none supports-[corner-shape:squircle]:rounded-3xl',\n {\n variants: {\n /** Toast visual variants for different message types */\n variant: {\n /** Error state with red styling for failures and warnings */\n error: 'bg-error/40 text-foreground',\n /** Success state with green styling for confirmations */\n success: 'bg-success/30 text-foreground',\n /** Default neutral styling for general information */\n default: 'bg-card/80 text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n/**\n * Toast Component\n *\n * A notification component that displays temporary messages to users using Radix UI primitives.\n * Supports different visual variants, animations, and user interactions including swipe-to-dismiss.\n *\n * ## Features\n * - **Visual Variants**: Error, success, and default styling themes\n * - **Animations**: Smooth slide-in/slide-out transitions with fade effects\n * - **Swipe Gestures**: Touch-friendly swipe-to-dismiss functionality\n * - **Accessibility**: Full screen reader support and keyboard navigation\n * - **Positioning**: Smart positioning with responsive viewport handling\n * - **Auto-dismiss**: Configurable automatic dismissal timing\n *\n * ## Technical Implementation\n * - Built on Radix UI Toast primitives for accessibility compliance\n * - Uses Framer Motion for smooth animations and gestures\n * - CVA (class-variance-authority) for consistent styling variants\n * - Backdrop blur effects for modern visual appeal\n * - CSS transforms for hardware-accelerated animations\n *\n * @example\n * ```tsx\n * // Basic toast with title and description\n * <Toast variant=\"default\">\n * <ToastTitle>Notification</ToastTitle>\n * <ToastDescription>Your action was completed successfully.</ToastDescription>\n * <ToastClose />\n * </Toast>\n *\n * // Error toast with action button\n * <Toast variant=\"error\">\n * <ToastTitle>Upload Failed</ToastTitle>\n * <ToastDescription>Could not upload file. Please try again.</ToastDescription>\n * <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * <ToastClose />\n * </Toast>\n * ```\n */\nexport const Toast: FC<\n ComponentProps<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n> = ({ className, variant, ...props }) => {\n return (\n <ToastPrimitives.Root\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n};\n\n/**\n * ToastAction Component\n *\n * An interactive button component for toast notifications that allows users to take\n * actions related to the notification message.\n *\n * ## Features\n * - **Accessibility**: Requires `altText` prop for screen readers\n * - **Visual States**: Hover, focus, and disabled state styling\n * - **Theme Integration**: Supports error and default themes\n * - **Keyboard Navigation**: Full keyboard accessibility support\n *\n * ## Usage Guidelines\n * - Use for actionable notifications (retry, undo, view details)\n * - Keep action text short and descriptive\n * - Provide meaningful `altText` for accessibility\n * - Limit to one primary action per toast\n *\n * @example\n * ```tsx\n * // Retry action for failed operations\n * <ToastAction altText=\"Retry the failed operation\">\n * Retry\n * </ToastAction>\n *\n * // Undo action for reversible operations\n * <ToastAction altText=\"Undo the last action\">\n * Undo\n * </ToastAction>\n *\n * // Navigation action\n * <ToastAction altText=\"View the uploaded file\">\n * View File\n * </ToastAction>\n * ```\n */\nexport const ToastAction: FC<ComponentProps<typeof ToastPrimitives.Action>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Action\n className={cn(\n 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 font-medium text-sm transition-colors hover:bg-text focus:outline-hidden focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.error]:border-card/40 group-[.error]:focus:ring-error group-[.error]:hover:border-error/30 group-[.error]:hover:bg-error group-[.error]:hover:text-error-foreground',\n className\n )}\n {...props}\n />\n);\n\nexport const ToastClose: FC<ComponentProps<typeof ToastPrimitives.Close>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Close\n className={cn(\n 'absolute top-1 right-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground/80 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.error]:text-red-300 group-[.error]:focus:ring-red-400 group-[.error]:focus:ring-offset-red-600 group-[.error]:hover:text-red-50',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"size-5\" />\n </ToastPrimitives.Close>\n);\n/**\n * ToastTitle Component\n *\n * The primary heading text for toast notifications. Provides semantic structure\n * and proper typography hierarchy within the toast.\n *\n * ## Styling Features\n * - Semi-bold font weight for emphasis\n * - Automatic text sizing adjustments for descriptions\n * - Proper spacing relationships with other toast elements\n *\n * @example\n * ```tsx\n * <ToastTitle>File Upload Complete</ToastTitle>\n * <ToastTitle>Error: Connection Failed</ToastTitle>\n * <ToastTitle>Settings Saved</ToastTitle>\n * ```\n */\nexport const ToastTitle: FC<ComponentProps<typeof ToastPrimitives.Title>> = ({\n className,\n ...props\n}) => (\n <ToastPrimitives.Title\n className={cn('font-semibold text-sm [&+div]:text-xs', className)}\n {...props}\n />\n);\n\n/**\n * ToastDescription Component\n *\n * Supporting text that provides additional context or details for the toast notification.\n * Complements the ToastTitle with more detailed information.\n *\n * ## Styling Features\n * - Slightly reduced opacity for visual hierarchy\n * - Smaller text size than title\n * - Optimal line height for readability\n *\n * ## Content Guidelines\n * - Keep descriptions concise but informative\n * - Provide actionable information when possible\n * - Use plain language for better accessibility\n *\n * @example\n * ```tsx\n * <ToastDescription>\n * Your document has been uploaded successfully and is now available for sharing.\n * </ToastDescription>\n *\n * <ToastDescription>\n * Please check your internet connection and try again.\n * </ToastDescription>\n * ```\n */\nexport const ToastDescription: FC<\n ComponentProps<typeof ToastPrimitives.Description>\n> = ({ className, ...props }) => (\n <ToastPrimitives.Description\n className={cn('overflow-scroll text-sm opacity-90', className)}\n {...props}\n />\n);\n/**\n * Props type for Toast component including all Radix UI Toast.Root props\n * and variant styling options.\n */\nexport type ToastProps = ComponentProps<typeof Toast>;\n\n/**\n * Type for ToastAction elements used in toast configurations.\n * Ensures type safety when passing action elements to toast functions.\n */\nexport type ToastActionElement = ReactElement<typeof ToastAction>;\n"],"mappings":";;;;;;;;;AAQA,MAAa,gBAAgB;AAE7B,MAAa,iBAER,EAAE,WAAW,GAAG,YACnB,oBAAC,gBAAgB,UAAjB;CACE,WAAW,GACT,+HACA,SACF;CACA,GAAI;AACL;;;;;;;;;;;;;;;;;;;AAqBH,MAAa,gBAAgB,IAC3B,usBACA;CACE,UAAU;;AAER,SAAS;;EAEP,OAAO;;EAEP,SAAS;;EAET,SAAS;CACX,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAa,SAGR,EAAE,WAAW,SAAS,GAAG,YAAY;CACxC,OACE,oBAAC,gBAAgB,MAAjB;EACE,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAa,eAAkE,EAC7E,WACA,GAAG,YAEH,oBAAC,gBAAgB,QAAjB;CACE,WAAW,GACT,iaACA,SACF;CACA,GAAI;AACL;AAGH,MAAa,cAAgE,EAC3E,WACA,GAAG,YAEH,oBAAC,gBAAgB,OAAjB;CACE,WAAW,GACT,sUACA,SACF;CACA,eAAY;CACZ,GAAI;WAEJ,oBAAC,GAAD,EAAG,WAAU,SAAU;AACF;;;;;;;;;;;;;;;;;;;AAoBzB,MAAa,cAAgE,EAC3E,WACA,GAAG,YAEH,oBAAC,gBAAgB,OAAjB;CACE,WAAW,GAAG,yCAAyC,SAAS;CAChE,GAAI;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BH,MAAa,oBAER,EAAE,WAAW,GAAG,YACnB,oBAAC,gBAAgB,aAAjB;CACE,WAAW,GAAG,sCAAsC,SAAS;CAC7D,GAAI;AACL"}
|
|
@@ -41,16 +41,12 @@ import { VerticalSwitchSelector } from "./SwitchSelector/VerticalSwitchSelector.
|
|
|
41
41
|
import { EditableFieldInput } from "./EditableField/EditableFieldInput.mjs";
|
|
42
42
|
import { EditableFieldTextArea } from "./EditableField/EditableFieldTextArea.mjs";
|
|
43
43
|
import { DictionaryEditor } from "./DictionaryEditor/DictionaryEditor.mjs";
|
|
44
|
+
import { Label } from "./Label/index.mjs";
|
|
44
45
|
import { LocaleSwitcherContentProvider, useLocaleSwitcherContent } from "./LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
|
|
45
46
|
import { LocaleSwitcherContent } from "./LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs";
|
|
46
47
|
import { MultiSelect } from "./Select/Multiselect.mjs";
|
|
47
48
|
import { Select, SelectContent, SelectLabel, SelectSeparator } from "./Select/Select.mjs";
|
|
48
|
-
import { NumberItemsSelector } from "./Pagination/NumberItemsSelector.mjs";
|
|
49
|
-
import { Pagination, paginationVariants } from "./Pagination/Pagination.mjs";
|
|
50
|
-
import { ShowingResultsNumberItems } from "./Pagination/ShowingResultsNumberItems.mjs";
|
|
51
|
-
import { Label } from "./Label/index.mjs";
|
|
52
49
|
import { TextEditor, TextEditorContainer, traceKeys } from "./DictionaryFieldEditor/ContentEditorView/TextEditor.mjs";
|
|
53
|
-
import { KeyPathBreadcrumb } from "./DictionaryFieldEditor/KeyPathBreadcrumb.mjs";
|
|
54
50
|
import { FormItem } from "./Form/FormItem.mjs";
|
|
55
51
|
import { FormField, useFormField } from "./Form/FormField.mjs";
|
|
56
52
|
import { FormControl } from "./Form/FormControl.mjs";
|
|
@@ -75,6 +71,11 @@ import { useForm } from "./Form/FormBase.mjs";
|
|
|
75
71
|
import { Form } from "./Form/Form.mjs";
|
|
76
72
|
import { DictionaryCreationForm } from "./DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs";
|
|
77
73
|
import { TabSelector } from "./TabSelector/TabSelector.mjs";
|
|
74
|
+
import { NumberItemsSelector } from "./Pagination/NumberItemsSelector.mjs";
|
|
75
|
+
import { Pagination, paginationVariants } from "./Pagination/Pagination.mjs";
|
|
76
|
+
import { ShowingResultsNumberItems } from "./Pagination/ShowingResultsNumberItems.mjs";
|
|
77
|
+
import { KeyPathBreadcrumb } from "./DictionaryFieldEditor/KeyPathBreadcrumb.mjs";
|
|
78
|
+
import { NodeEditor } from "./DictionaryFieldEditor/NodeEditor.mjs";
|
|
78
79
|
import { H1, H2, H3, H4, H5, H6 } from "./Headers/index.mjs";
|
|
79
80
|
import { Modal } from "./Modal/Modal.mjs";
|
|
80
81
|
import { SaveForm } from "./DictionaryFieldEditor/SaveForm/SaveForm.mjs";
|
|
@@ -112,7 +113,7 @@ import { WithResizer } from "./WithResizer/index.mjs";
|
|
|
112
113
|
import { IDE } from "./IDE/IDE.mjs";
|
|
113
114
|
import { KeyboardScreenAdapter } from "./KeyboardScreenAdapter/index.mjs";
|
|
114
115
|
import { LanguageBackground } from "./LanguageBackground/LanguageBackground.mjs";
|
|
115
|
-
import { LanguageSection } from "./LanguageBackground/LanguageSection.mjs";
|
|
116
|
+
import { LanguageSection, LocalCardList } from "./LanguageBackground/LanguageSection.mjs";
|
|
116
117
|
import { LocaleSwitcher } from "./LocaleSwitcherDropDown/LocaleSwitcher.mjs";
|
|
117
118
|
import { MarkDownIframe } from "./MarkDownRender/MarkDownIframe.mjs";
|
|
118
119
|
import { Tab } from "./Tab/Tab.mjs";
|
|
@@ -141,4 +142,4 @@ import { Terminal } from "./Terminal/Terminal.mjs";
|
|
|
141
142
|
import { DesktopThemeSwitcher } from "./ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs";
|
|
142
143
|
import { MobileThemeSwitcher } from "./ThemeSwitcherDropDown/MobileThemeSwitcher.mjs";
|
|
143
144
|
|
|
144
|
-
export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BitbucketLogo, Breadcrumb, Browser, Burger, Button, Carousel, Checkbox, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CodeHighlighted, CollapsibleTable, Command, CommandRoot, Container, ContentEditableTextArea, ContentEditorInput, ContentEditorTextArea, ContentSelector, CopyButton, CopyToClipboard, DesktopNavbar, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, AutoSizedTextAreaElement as FormAutoSizedTextArea, Button as FormButton, CheckboxElement as FormCheckbox, FormControl, FormDescription, EditableFieldInputElement as FormEditableFieldInput, EditableFieldTextAreaElement as FormEditableFieldTextArea, FormElement, FormField, InputElement as FormInput, InputPasswordElement as FormInputPassword, FormItem, FormLabelLayout as FormLabel, FormMessage, MultiSelectElement as FormMultiSelect, OTPElement as FormOTP, SearchInputElement as FormSearchInput, SelectElement as FormSelect, SwitchSelectorElement as FormSwitchSelector, TextAreaElement as FormTextArea, GitHubLogo, GitLabLogo, GoogleLogo, GridDistortionPattern, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, Hr, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InstagramLogo, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkedInLogo, Loader, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkDownIframe, MarkdownEditor, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileNavbar, MobileThemeSwitcher, Modal, MultiSelect, Navbar, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, Popover, PopoverStatic, PressableSpan, ProductHuntLogo, Radio, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SmartTable, SocialNetworks, Spotlight, Step, Steps, SwitchSelector, Tab, TabSelector, Table, Tag, Td, TechLogo, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, Th, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tr, VersionSwitcher, VersionSwitcherProvider, VerticalSwitchSelector, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, choiceVariant, containerVariants, createEditorUploadFn, defaultChoices, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, indicatorVariant, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, radioVariants, reducer, shikiWrapperClassName, switchSelectorVariant, toast, toastVariants, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useIsRightDrawerOpen, useLocaleSwitcherContent, usePasswordManagerBadge, usePopoverIds, usePrevious, useRightDrawer, useRightDrawerActions, useToast, useVersionSwitcher };
|
|
145
|
+
export { Accordion, AutoCompleteTextarea, AutoSizedTextArea, Avatar, Badge, BitbucketLogo, Breadcrumb, Browser, Burger, Button, Carousel, Checkbox, ClickOutsideDiv, Code, CodeBlock, CodeDefault, CodeHighlighted, CollapsibleTable, Command, CommandRoot, Container, ContentEditableTextArea, ContentEditor, ContentEditorInput, ContentEditorTextArea, ContentSelector, CopyButton, CopyToClipboard, DesktopNavbar, DesktopThemeSwitcher, Detail, DictionaryCreationForm, DictionaryEditor, DictionaryFieldEditor, DiscordLogo, DotPattern, DropDown, EditableFieldInput, EditableFieldTextArea, ExpandCollapse, FacebookLogo, FileList, Flag, flags_exports as Flags, Footer, Form, AutoSizedTextAreaElement as FormAutoSizedTextArea, Button as FormButton, CheckboxElement as FormCheckbox, FormControl, FormDescription, EditableFieldInputElement as FormEditableFieldInput, EditableFieldTextAreaElement as FormEditableFieldTextArea, FormElement, FormField, InputElement as FormInput, InputPasswordElement as FormInputPassword, FormItem, FormLabelLayout as FormLabel, FormMessage, MultiSelectElement as FormMultiSelect, OTPElement as FormOTP, SearchInputElement as FormSearchInput, SelectElement as FormSelect, SwitchSelectorElement as FormSwitchSelector, TextAreaElement as FormTextArea, GitHubLogo, GitLabLogo, GoogleLogo, GridDistortionPattern, GridPattern, H1, H2, H3, H4, H5, H6, HTMLRenderer, HeightResizer, HideShow, Hr, IDE, InformationTag, Input, InputIndicator, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPassword, InstagramLogo, KeyPathBreadcrumb, KeyboardScreenAdapter, KeyboardShortcut, Label, LanguageBackground, LanguageSection, Link, LinkedInLogo, Loader, LocalCardList, LocaleSwitcher, LocaleSwitcherContent, LocaleSwitcherContentProvider, Logo, LogoTextOnly, LogoWithText, LogoWithTextBelow, MarkDownIframe, MarkdownEditor, MarkdownRenderer, MaxHeightSmoother, MaxWidthSmoother, MobileNavbar, MobileThemeSwitcher, Modal, MultiSelect, Navbar, NodeEditor, NumberItemsSelector, OTPInput, OTPInputContext, Pagination, Popover, PopoverStatic, PressableSpan, ProductHuntLogo, Radio, RightDrawer, SaveForm, SearchInput, Select, SelectContent, SelectLabel, SelectSeparator, ShowingResultsNumberItems, SmartTable, SocialNetworks, Spotlight, Step, Steps, SwitchSelector, Tab, TabSelector, Table, Tag, Td, TechLogo, techLogos_exports as TechLogos, Terminal, TextArea, TextEditor, TextEditorContainer, Th, TiktokLogo, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tr, VersionSwitcher, VersionSwitcherProvider, VerticalSwitchSelector, WithResizer, XLogo, YoutubeLogo, badgeVariants, baseMarkdownComponents, buttonVariants, checkIsExternalLink, checkboxVariants, choiceVariant, containerVariants, createEditorUploadFn, defaultChoices, drawerManager, getCapitals, getIntlayerHTMLOptions, getIntlayerMarkdownOptions, indicatorVariant, inputSlotVariants, inputVariants, isTextChildren, linkVariants, paginationVariants, radioVariants, reducer, shikiWrapperClassName, switchSelectorVariant, toast, toastVariants, traceKeys, useContentEditable, useCopyToClipboard, useForm, useFormField, useIsRightDrawerOpen, useLocaleSwitcherContent, usePasswordManagerBadge, usePopoverIds, usePrevious, useRightDrawer, useRightDrawerActions, useToast, useVersionSwitcher };
|
|
@@ -4,28 +4,16 @@ import { useCallback, useEffect, useMemo, useState } from "react";
|
|
|
4
4
|
|
|
5
5
|
//#region src/hooks/usePersistedStore.ts
|
|
6
6
|
const usePersistedStore = (key, initialState) => {
|
|
7
|
-
const [state, setState] = useState(() =>
|
|
8
|
-
if (initialState !== void 0) {
|
|
9
|
-
const result = typeof initialState === "function" ? initialState() : initialState;
|
|
10
|
-
if (typeof window === "undefined") return result;
|
|
11
|
-
const persistedState = localStorage?.getItem(key);
|
|
12
|
-
if (persistedState) try {
|
|
13
|
-
return JSON.parse(persistedState);
|
|
14
|
-
} catch (e) {
|
|
15
|
-
console.error(e);
|
|
16
|
-
}
|
|
17
|
-
return result;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
7
|
+
const [state, setState] = useState(() => typeof initialState === "function" ? initialState() : initialState);
|
|
20
8
|
useEffect(() => {
|
|
21
9
|
const persistedState = localStorage?.getItem(key);
|
|
22
|
-
if (persistedState
|
|
10
|
+
if (!persistedState || persistedState === "undefined") return;
|
|
11
|
+
try {
|
|
23
12
|
setState(JSON.parse(persistedState));
|
|
24
|
-
} catch (
|
|
25
|
-
console.error(
|
|
13
|
+
} catch (error) {
|
|
14
|
+
console.error(error);
|
|
26
15
|
}
|
|
27
|
-
|
|
28
|
-
}, [key, state]);
|
|
16
|
+
}, [key]);
|
|
29
17
|
/**
|
|
30
18
|
* Allows setting state either directly or via a functional update.
|
|
31
19
|
* If passed a function, we merge/update based on the previous state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n
|
|
1
|
+
{"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n // The persisted value is deliberately not read here. A lazy initializer runs\n // during render, so the previous `typeof window === 'undefined'` branch gave\n // the server the initial state and the first client render whatever was in\n // `localStorage` — a guaranteed hydration mismatch for anyone who had used\n // the app before. It is loaded in the effect below instead, one render later.\n const [state, setState] = useState<S>(() =>\n typeof initialState === 'function'\n ? (initialState as () => S)()\n : (initialState as S)\n );\n\n useEffect(() => {\n const persistedState = localStorage?.getItem(key);\n\n if (!persistedState || persistedState === 'undefined') return;\n\n try {\n setState(JSON.parse(persistedState));\n } catch (error) {\n console.error(error);\n }\n }, [key]);\n\n /**\n * Allows setting state either directly or via a functional update.\n * If passed a function, we merge/update based on the previous state.\n */\n const setStateWrapper: typeof setState = useCallback(\n (valueOrUpdater: SetStateAction<S>) => {\n setState((prev) => {\n const newValue: S =\n typeof valueOrUpdater === 'function'\n ? (valueOrUpdater as (prevVal: S) => S)(prev)\n : valueOrUpdater;\n\n if (typeof newValue !== 'undefined') {\n localStorage?.setItem(key, JSON.stringify(newValue));\n return newValue;\n }\n\n return prev;\n });\n },\n [key, setState]\n );\n\n const loadState = useCallback(() => {\n const savedState = localStorage?.getItem(key);\n if (savedState) {\n setState(JSON.parse(savedState));\n }\n }, [key, setState]);\n\n const clearState = useCallback(() => {\n localStorage?.removeItem(key);\n setState(undefined as S);\n }, [key]);\n\n return useMemo(\n () => [state, setStateWrapper, loadState, clearState],\n [state, setStateWrapper, loadState, clearState]\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,qBACX,KACA,iBAC6D;CAM7D,MAAM,CAAC,OAAO,YAAY,eACxB,OAAO,iBAAiB,aACnB,aAAyB,IACzB,YACP;CAEA,gBAAgB;EACd,MAAM,iBAAiB,cAAc,QAAQ,GAAG;EAEhD,IAAI,CAAC,kBAAkB,mBAAmB,aAAa;EAEvD,IAAI;GACF,SAAS,KAAK,MAAM,cAAc,CAAC;EACrC,SAAS,OAAO;GACd,QAAQ,MAAM,KAAK;EACrB;CACF,GAAG,CAAC,GAAG,CAAC;;;;;CAMR,MAAM,kBAAmC,aACtC,mBAAsC;EACrC,UAAU,SAAS;GACjB,MAAM,WACJ,OAAO,mBAAmB,aACrB,eAAqC,IAAI,IAC1C;GAEN,IAAI,OAAO,aAAa,aAAa;IACnC,cAAc,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;IACnD,OAAO;GACT;GAEA,OAAO;EACT,CAAC;CACH,GACA,CAAC,KAAK,QAAQ,CAChB;CAEA,MAAM,YAAY,kBAAkB;EAClC,MAAM,aAAa,cAAc,QAAQ,GAAG;EAC5C,IAAI,YACF,SAAS,KAAK,MAAM,UAAU,CAAC;CAEnC,GAAG,CAAC,KAAK,QAAQ,CAAC;CAElB,MAAM,aAAa,kBAAkB;EACnC,cAAc,WAAW,GAAG;EAC5B,SAAS,MAAc;CACzB,GAAG,CAAC,GAAG,CAAC;CAER,OAAO,cACC;EAAC;EAAO;EAAiB;EAAW;CAAU,GACpD;EAAC;EAAO;EAAiB;EAAW;CAAU,CAChD;AACF"}
|
|
@@ -118,8 +118,16 @@ const ReactQueryProvider = ({ children, client }) => {
|
|
|
118
118
|
if (!wiredRef.current) {
|
|
119
119
|
wiredRef.current = true;
|
|
120
120
|
const cache = clientRef.current.getMutationCache();
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
const previousOnSuccess = cache.config.onSuccess;
|
|
122
|
+
const previousOnError = cache.config.onError;
|
|
123
|
+
cache.config.onSuccess = (data, variables, onMutateResult, mutation, context) => {
|
|
124
|
+
previousOnSuccess?.(data, variables, onMutateResult, mutation, context);
|
|
125
|
+
handlersRef.current.onSuccess?.(data, variables, onMutateResult, mutation, context);
|
|
126
|
+
};
|
|
127
|
+
cache.config.onError = (error, variables, onMutateResult, mutation, context) => {
|
|
128
|
+
previousOnError?.(error, variables, onMutateResult, mutation, context);
|
|
129
|
+
handlersRef.current.onError?.(error, variables, onMutateResult, mutation, context);
|
|
130
|
+
};
|
|
123
131
|
cache.config.onSettled = (_data, _error, _variables, _onMutateResult, mutation) => {
|
|
124
132
|
if (mutation.meta?.invalidateQueries) mutation.meta.invalidateQueries.forEach((queryKey) => {
|
|
125
133
|
clientRef.current?.invalidateQueries({ queryKey });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n // Chain rather than replace: an externally created client may already carry\n // handlers, e.g. the router SSR-query integration wraps `onError` to turn a\n // `redirect()` thrown inside a mutation into a navigation.\n const previousOnSuccess = cache.config.onSuccess;\n const previousOnError = cache.config.onError;\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) => {\n previousOnSuccess?.(data, variables, onMutateResult, mutation, context);\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n };\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) => {\n previousOnError?.(error, variables, onMutateResult, mutation, context);\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n };\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -12,23 +12,34 @@ const isServer = typeof window === "undefined";
|
|
|
12
12
|
/**
|
|
13
13
|
* Inline bootstrap applying the persisted theme before the first paint.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* Held as source text rather than serialized from a real function through
|
|
16
|
+
* `Function.prototype.toString()`: that echoes whatever formatting the bundler
|
|
17
|
+
* emitted, and the SSR and browser bundles do not agree on it (tabs versus
|
|
18
|
+
* spaces), so the two renders produced different script bodies and hydration
|
|
19
|
+
* failed. A string literal is copied verbatim by every bundler.
|
|
20
|
+
*
|
|
21
|
+
* It runs before hydration, so it must stay self-contained: no import, no
|
|
22
|
+
* module-scope binding. Every value it needs is passed as an argument.
|
|
19
23
|
*/
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
const THEME_SCRIPT_SOURCE = `(function (storageKey, themeAttribute, darkMediaQuery) {
|
|
25
|
+
var storedTheme = null;
|
|
26
|
+
try {
|
|
27
|
+
storedTheme = localStorage.getItem(storageKey);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
/* Storage can throw (private mode, blocked cookies) — fall back to the OS. */
|
|
30
|
+
}
|
|
31
|
+
var theme =
|
|
32
|
+
storedTheme === 'light' || storedTheme === 'dark'
|
|
33
|
+
? storedTheme
|
|
34
|
+
: window.matchMedia(darkMediaQuery).matches
|
|
35
|
+
? 'dark'
|
|
36
|
+
: 'light';
|
|
37
|
+
var element = document.documentElement;
|
|
38
|
+
element.setAttribute(themeAttribute, theme);
|
|
39
|
+
element.style.colorScheme = theme;
|
|
40
|
+
})`;
|
|
30
41
|
/** Serializes the bootstrap and its arguments into inline script source. */
|
|
31
|
-
const buildBootstrap = (storageKey) =>
|
|
42
|
+
const buildBootstrap = (storageKey) => `${THEME_SCRIPT_SOURCE}(${JSON.stringify(storageKey)},${JSON.stringify(THEME_ATTRIBUTE)},${JSON.stringify(DARK_MEDIA_QUERY)})`;
|
|
32
43
|
/** Reads the persisted preference, discarding unknown values. */
|
|
33
44
|
const getStoredTheme = (storageKey) => {
|
|
34
45
|
try {
|
|
@@ -117,6 +128,7 @@ const Theme = ({ storageKey = "theme", nonce, children }) => {
|
|
|
117
128
|
return /* @__PURE__ */ jsxs(ThemeContext.Provider, {
|
|
118
129
|
value,
|
|
119
130
|
children: [/* @__PURE__ */ jsx("script", {
|
|
131
|
+
suppressHydrationWarning: true,
|
|
120
132
|
nonce: isServer ? nonce : "",
|
|
121
133
|
dangerouslySetInnerHTML: { __html: buildBootstrap(storageKey) }
|
|
122
134
|
}), children]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.mjs","names":[],"sources":["../../../src/providers/ThemeProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\n/** Theme actually painted — the OS preference once `system` is resolved. */\nexport type ResolvedTheme = 'light' | 'dark';\n\n/** Theme stored as the user preference. `system` follows the OS setting. */\nexport type Theme = ResolvedTheme | 'system';\n\n/** Attribute mirrored on `<html>`; the Tailwind dark variant keys on it. */\nconst THEME_ATTRIBUTE = 'data-theme';\n\n/** Media query resolving the OS colour scheme. */\nconst DARK_MEDIA_QUERY = '(prefers-color-scheme: dark)';\n\nconst isServer = typeof window === 'undefined';\n\n/**\n * Inline bootstrap applying the persisted theme before the first paint.\n *\n * Serialized through `Function.prototype.toString()` and injected as an inline\n * `<script>`, so it must stay self-contained: no import, no module-scope\n * binding, no reference the bundler could rewrite into a helper call. Every\n * value it needs is passed as an argument.\n */\nconst themeScript = (\n storageKey: string,\n themeAttribute: string,\n darkMediaQuery: string\n): void => {\n let storedTheme: string | null = null;\n\n try {\n storedTheme = localStorage.getItem(storageKey);\n } catch {\n // Storage can throw (private mode, blocked cookies) — fall back to the OS.\n }\n\n const theme =\n storedTheme === 'light' || storedTheme === 'dark'\n ? storedTheme\n : window.matchMedia(darkMediaQuery).matches\n ? 'dark'\n : 'light';\n\n const element = document.documentElement;\n\n element.setAttribute(themeAttribute, theme);\n element.style.colorScheme = theme;\n};\n\n/** Serializes the bootstrap and its arguments into inline script source. */\nconst buildBootstrap = (storageKey: string): string =>\n `(${themeScript})(${JSON.stringify(storageKey)},${JSON.stringify(THEME_ATTRIBUTE)},${JSON.stringify(DARK_MEDIA_QUERY)})`;\n\n/** Reads the persisted preference, discarding unknown values. */\nconst getStoredTheme = (storageKey: string): Theme => {\n try {\n const storedTheme = localStorage.getItem(storageKey);\n\n if (\n storedTheme === 'light' ||\n storedTheme === 'dark' ||\n storedTheme === 'system'\n ) {\n return storedTheme;\n }\n } catch {\n // Storage can throw (private mode, blocked cookies).\n }\n\n return 'system';\n};\n\n/**\n * Suppresses CSS transitions while the theme attribute flips, so every themed\n * element repaints at once instead of animating between palettes.\n *\n * @returns Callback restoring transitions, to call once the theme is applied.\n */\nconst suppressTransitions = (nonce?: string): (() => void) => {\n const style = document.createElement('style');\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n style.appendChild(\n document.createTextNode('*,*::before,*::after{transition:none!important}')\n );\n document.head.appendChild(style);\n\n return () => {\n // Reading a computed value forces a synchronous style recalculation, so\n // the new theme is committed while transitions are still suppressed.\n getComputedStyle(document.body).getPropertyValue('transition');\n style.remove();\n };\n};\n\nconst useIsomorphicLayoutEffect = isServer ? useEffect : useLayoutEffect;\n\ntype ThemeContextValue = {\n /** Persisted preference — `system` while following the OS. */\n theme: Theme;\n /** Theme applied to `<html>`. `undefined` until the client resolves it. */\n resolvedTheme: ResolvedTheme | undefined;\n /** Persists a preference and applies it. */\n setTheme: (theme: Theme) => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/** Served outside of a provider, so consumers render light instead of crashing. */\nconst fallbackThemeContext: ThemeContextValue = {\n theme: 'system',\n resolvedTheme: undefined,\n setTheme: () => undefined,\n};\n\n/**\n * Reads and updates the current theme.\n *\n * @example\n * ```tsx\n * const { resolvedTheme, setTheme } = useTheme();\n * ```\n */\nexport const useTheme = (): ThemeContextValue =>\n useContext(ThemeContext) ?? fallbackThemeContext;\n\nexport type ThemeProviderProps = {\n /** `localStorage` key holding the preference. Defaults to `theme`. */\n storageKey?: string;\n /** CSP nonce, required when the page forbids unsafe inline scripts. */\n nonce?: string;\n};\n\nconst Theme: FC<PropsWithChildren<ThemeProviderProps>> = ({\n storageKey = 'theme',\n nonce,\n children,\n}) => {\n // Both the server render and the first client one start from `system`, so\n // the hydrated markup matches; the browser state is read back before paint.\n const [theme, setThemeState] = useState<Theme>('system');\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme | undefined>(\n undefined\n );\n\n const resolvedTheme = theme === 'system' ? systemTheme : theme;\n\n // Read the browser state back before the first paint, then keep following\n // the OS preference and the other tabs.\n useIsomorphicLayoutEffect(() => {\n const media = window.matchMedia(DARK_MEDIA_QUERY);\n\n setThemeState(getStoredTheme(storageKey));\n setSystemTheme(media.matches ? 'dark' : 'light');\n\n const handleSystemChange = (event: MediaQueryListEvent) =>\n setSystemTheme(event.matches ? 'dark' : 'light');\n\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key !== storageKey) return;\n\n setThemeState(getStoredTheme(storageKey));\n };\n\n media.addEventListener('change', handleSystemChange);\n window.addEventListener('storage', handleStorageChange);\n\n return () => {\n media.removeEventListener('change', handleSystemChange);\n window.removeEventListener('storage', handleStorageChange);\n };\n }, [storageKey]);\n\n // Mirror the resolved theme onto `<html>`.\n useIsomorphicLayoutEffect(() => {\n if (!resolvedTheme) return;\n\n const element = document.documentElement;\n\n // The inline bootstrap already applied it on the initial load.\n if (element.getAttribute(THEME_ATTRIBUTE) === resolvedTheme) return;\n\n const restoreTransitions = suppressTransitions(nonce);\n\n element.setAttribute(THEME_ATTRIBUTE, resolvedTheme);\n element.style.colorScheme = resolvedTheme;\n\n restoreTransitions();\n }, [resolvedTheme, nonce]);\n\n const setTheme = useCallback(\n (nextTheme: Theme) => {\n setThemeState(nextTheme);\n\n try {\n localStorage.setItem(storageKey, nextTheme);\n } catch {\n // Storage can throw — the choice then only lasts for this page.\n }\n },\n [storageKey]\n );\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme]\n );\n\n return (\n <ThemeContext.Provider value={value}>\n <script\n // Browsers hide the nonce value from the DOM API, so echoing it while\n // hydrating would mismatch the server markup.\n nonce={isServer ? nonce : ''}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: the bootstrap has to run before hydration, and its content is built from literals\n dangerouslySetInnerHTML={{ __html: buildBootstrap(storageKey) }}\n />\n {children}\n </ThemeContext.Provider>\n );\n};\n\n/**\n * Applies the persisted theme to `<html>` before the first paint, keeps it in\n * sync with the OS preference and with the other tabs, and exposes it through\n * {@link useTheme}.\n *\n * Nested providers pass through, so a layout can mount one without fighting an\n * outer provider over the `<html>` attribute.\n */\nexport const ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>> = ({\n children,\n ...props\n}) => {\n const parentTheme = useContext(ThemeContext);\n\n if (parentTheme) return <>{children}</>;\n\n return <Theme {...props}>{children}</Theme>;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeProvider.mjs","names":[],"sources":["../../../src/providers/ThemeProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\n/** Theme actually painted — the OS preference once `system` is resolved. */\nexport type ResolvedTheme = 'light' | 'dark';\n\n/** Theme stored as the user preference. `system` follows the OS setting. */\nexport type Theme = ResolvedTheme | 'system';\n\n/** Attribute mirrored on `<html>`; the Tailwind dark variant keys on it. */\nconst THEME_ATTRIBUTE = 'data-theme';\n\n/** Media query resolving the OS colour scheme. */\nconst DARK_MEDIA_QUERY = '(prefers-color-scheme: dark)';\n\nconst isServer = typeof window === 'undefined';\n\n/**\n * Inline bootstrap applying the persisted theme before the first paint.\n *\n * Held as source text rather than serialized from a real function through\n * `Function.prototype.toString()`: that echoes whatever formatting the bundler\n * emitted, and the SSR and browser bundles do not agree on it (tabs versus\n * spaces), so the two renders produced different script bodies and hydration\n * failed. A string literal is copied verbatim by every bundler.\n *\n * It runs before hydration, so it must stay self-contained: no import, no\n * module-scope binding. Every value it needs is passed as an argument.\n */\nconst THEME_SCRIPT_SOURCE = `(function (storageKey, themeAttribute, darkMediaQuery) {\n var storedTheme = null;\n try {\n storedTheme = localStorage.getItem(storageKey);\n } catch (error) {\n /* Storage can throw (private mode, blocked cookies) — fall back to the OS. */\n }\n var theme =\n storedTheme === 'light' || storedTheme === 'dark'\n ? storedTheme\n : window.matchMedia(darkMediaQuery).matches\n ? 'dark'\n : 'light';\n var element = document.documentElement;\n element.setAttribute(themeAttribute, theme);\n element.style.colorScheme = theme;\n})`;\n\n/** Serializes the bootstrap and its arguments into inline script source. */\nconst buildBootstrap = (storageKey: string): string =>\n `${THEME_SCRIPT_SOURCE}(${JSON.stringify(storageKey)},${JSON.stringify(THEME_ATTRIBUTE)},${JSON.stringify(DARK_MEDIA_QUERY)})`;\n\n/** Reads the persisted preference, discarding unknown values. */\nconst getStoredTheme = (storageKey: string): Theme => {\n try {\n const storedTheme = localStorage.getItem(storageKey);\n\n if (\n storedTheme === 'light' ||\n storedTheme === 'dark' ||\n storedTheme === 'system'\n ) {\n return storedTheme;\n }\n } catch {\n // Storage can throw (private mode, blocked cookies).\n }\n\n return 'system';\n};\n\n/**\n * Suppresses CSS transitions while the theme attribute flips, so every themed\n * element repaints at once instead of animating between palettes.\n *\n * @returns Callback restoring transitions, to call once the theme is applied.\n */\nconst suppressTransitions = (nonce?: string): (() => void) => {\n const style = document.createElement('style');\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n style.appendChild(\n document.createTextNode('*,*::before,*::after{transition:none!important}')\n );\n document.head.appendChild(style);\n\n return () => {\n // Reading a computed value forces a synchronous style recalculation, so\n // the new theme is committed while transitions are still suppressed.\n getComputedStyle(document.body).getPropertyValue('transition');\n style.remove();\n };\n};\n\nconst useIsomorphicLayoutEffect = isServer ? useEffect : useLayoutEffect;\n\ntype ThemeContextValue = {\n /** Persisted preference — `system` while following the OS. */\n theme: Theme;\n /** Theme applied to `<html>`. `undefined` until the client resolves it. */\n resolvedTheme: ResolvedTheme | undefined;\n /** Persists a preference and applies it. */\n setTheme: (theme: Theme) => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/** Served outside of a provider, so consumers render light instead of crashing. */\nconst fallbackThemeContext: ThemeContextValue = {\n theme: 'system',\n resolvedTheme: undefined,\n setTheme: () => undefined,\n};\n\n/**\n * Reads and updates the current theme.\n *\n * @example\n * ```tsx\n * const { resolvedTheme, setTheme } = useTheme();\n * ```\n */\nexport const useTheme = (): ThemeContextValue =>\n useContext(ThemeContext) ?? fallbackThemeContext;\n\nexport type ThemeProviderProps = {\n /** `localStorage` key holding the preference. Defaults to `theme`. */\n storageKey?: string;\n /** CSP nonce, required when the page forbids unsafe inline scripts. */\n nonce?: string;\n};\n\nconst Theme: FC<PropsWithChildren<ThemeProviderProps>> = ({\n storageKey = 'theme',\n nonce,\n children,\n}) => {\n // Both the server render and the first client one start from `system`, so\n // the hydrated markup matches; the browser state is read back before paint.\n const [theme, setThemeState] = useState<Theme>('system');\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme | undefined>(\n undefined\n );\n\n const resolvedTheme = theme === 'system' ? systemTheme : theme;\n\n // Read the browser state back before the first paint, then keep following\n // the OS preference and the other tabs.\n useIsomorphicLayoutEffect(() => {\n const media = window.matchMedia(DARK_MEDIA_QUERY);\n\n setThemeState(getStoredTheme(storageKey));\n setSystemTheme(media.matches ? 'dark' : 'light');\n\n const handleSystemChange = (event: MediaQueryListEvent) =>\n setSystemTheme(event.matches ? 'dark' : 'light');\n\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key !== storageKey) return;\n\n setThemeState(getStoredTheme(storageKey));\n };\n\n media.addEventListener('change', handleSystemChange);\n window.addEventListener('storage', handleStorageChange);\n\n return () => {\n media.removeEventListener('change', handleSystemChange);\n window.removeEventListener('storage', handleStorageChange);\n };\n }, [storageKey]);\n\n // Mirror the resolved theme onto `<html>`.\n useIsomorphicLayoutEffect(() => {\n if (!resolvedTheme) return;\n\n const element = document.documentElement;\n\n // The inline bootstrap already applied it on the initial load.\n if (element.getAttribute(THEME_ATTRIBUTE) === resolvedTheme) return;\n\n const restoreTransitions = suppressTransitions(nonce);\n\n element.setAttribute(THEME_ATTRIBUTE, resolvedTheme);\n element.style.colorScheme = resolvedTheme;\n\n restoreTransitions();\n }, [resolvedTheme, nonce]);\n\n const setTheme = useCallback(\n (nextTheme: Theme) => {\n setThemeState(nextTheme);\n\n try {\n localStorage.setItem(storageKey, nextTheme);\n } catch {\n // Storage can throw — the choice then only lasts for this page.\n }\n },\n [storageKey]\n );\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme]\n );\n\n return (\n <ThemeContext.Provider value={value}>\n <script\n // Browsers hide the nonce value from the DOM API, so echoing it while\n // hydrating would mismatch the server markup — hence the suppression.\n // The script has already run by then; React never patches it.\n suppressHydrationWarning\n nonce={isServer ? nonce : ''}\n // biome-ignore lint/security/noDangerouslySetInnerHtml: the bootstrap has to run before hydration, and its content is built from literals\n dangerouslySetInnerHTML={{ __html: buildBootstrap(storageKey) }}\n />\n {children}\n </ThemeContext.Provider>\n );\n};\n\n/**\n * Applies the persisted theme to `<html>` before the first paint, keeps it in\n * sync with the OS preference and with the other tabs, and exposes it through\n * {@link useTheme}.\n *\n * Nested providers pass through, so a layout can mount one without fighting an\n * outer provider over the `<html>` attribute.\n */\nexport const ThemeProvider: FC<PropsWithChildren<ThemeProviderProps>> = ({\n children,\n ...props\n}) => {\n const parentTheme = useContext(ThemeContext);\n\n if (parentTheme) return <>{children}</>;\n\n return <Theme {...props}>{children}</Theme>;\n};\n"],"mappings":";;;;;;;AAqBA,MAAM,kBAAkB;;AAGxB,MAAM,mBAAmB;AAEzB,MAAM,WAAW,OAAO,WAAW;;;;;;;;;;;;;AAcnC,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;AAmB5B,MAAM,kBAAkB,eACtB,GAAG,oBAAoB,GAAG,KAAK,UAAU,UAAU,EAAE,GAAG,KAAK,UAAU,eAAe,EAAE,GAAG,KAAK,UAAU,gBAAgB,EAAE;;AAG9H,MAAM,kBAAkB,eAA8B;CACpD,IAAI;EACF,MAAM,cAAc,aAAa,QAAQ,UAAU;EAEnD,IACE,gBAAgB,WAChB,gBAAgB,UAChB,gBAAgB,UAEhB,OAAO;CAEX,QAAQ,CAER;CAEA,OAAO;AACT;;;;;;;AAQA,MAAM,uBAAuB,UAAiC;CAC5D,MAAM,QAAQ,SAAS,cAAc,OAAO;CAE5C,IAAI,OAAO,MAAM,aAAa,SAAS,KAAK;CAE5C,MAAM,YACJ,SAAS,eAAe,iDAAiD,CAC3E;CACA,SAAS,KAAK,YAAY,KAAK;CAE/B,aAAa;EAGX,iBAAiB,SAAS,IAAI,CAAC,CAAC,iBAAiB,YAAY;EAC7D,MAAM,OAAO;CACf;AACF;AAEA,MAAM,4BAA4B,WAAW,YAAY;AAWzD,MAAM,eAAe,cAA6C,MAAS;;AAG3E,MAAM,uBAA0C;CAC9C,OAAO;CACP,eAAe;CACf,gBAAgB;AAClB;;;;;;;;;AAUA,MAAa,iBACX,WAAW,YAAY,KAAK;AAS9B,MAAM,SAAoD,EACxD,aAAa,SACb,OACA,eACI;CAGJ,MAAM,CAAC,OAAO,iBAAiB,SAAgB,QAAQ;CACvD,MAAM,CAAC,aAAa,kBAAkB,SACpC,MACF;CAEA,MAAM,gBAAgB,UAAU,WAAW,cAAc;CAIzD,gCAAgC;EAC9B,MAAM,QAAQ,OAAO,WAAW,gBAAgB;EAEhD,cAAc,eAAe,UAAU,CAAC;EACxC,eAAe,MAAM,UAAU,SAAS,OAAO;EAE/C,MAAM,sBAAsB,UAC1B,eAAe,MAAM,UAAU,SAAS,OAAO;EAEjD,MAAM,uBAAuB,UAAwB;GACnD,IAAI,MAAM,QAAQ,YAAY;GAE9B,cAAc,eAAe,UAAU,CAAC;EAC1C;EAEA,MAAM,iBAAiB,UAAU,kBAAkB;EACnD,OAAO,iBAAiB,WAAW,mBAAmB;EAEtD,aAAa;GACX,MAAM,oBAAoB,UAAU,kBAAkB;GACtD,OAAO,oBAAoB,WAAW,mBAAmB;EAC3D;CACF,GAAG,CAAC,UAAU,CAAC;CAGf,gCAAgC;EAC9B,IAAI,CAAC,eAAe;EAEpB,MAAM,UAAU,SAAS;EAGzB,IAAI,QAAQ,aAAa,eAAe,MAAM,eAAe;EAE7D,MAAM,qBAAqB,oBAAoB,KAAK;EAEpD,QAAQ,aAAa,iBAAiB,aAAa;EACnD,QAAQ,MAAM,cAAc;EAE5B,mBAAmB;CACrB,GAAG,CAAC,eAAe,KAAK,CAAC;CAEzB,MAAM,WAAW,aACd,cAAqB;EACpB,cAAc,SAAS;EAEvB,IAAI;GACF,aAAa,QAAQ,YAAY,SAAS;EAC5C,QAAQ,CAER;CACF,GACA,CAAC,UAAU,CACb;CAEA,MAAM,QAAQ,eACL;EAAE;EAAO;EAAe;CAAS,IACxC;EAAC;EAAO;EAAe;CAAQ,CACjC;CAEA,OACE,qBAAC,aAAa,UAAd;EAA8B;YAA9B,CACE,oBAAC,UAAD;GAIE;GACA,OAAO,WAAW,QAAQ;GAE1B,yBAAyB,EAAE,QAAQ,eAAe,UAAU,EAAE;EAC/D,IACA,QACoB;;AAE3B;;;;;;;;;AAUA,MAAa,iBAA4D,EACvE,UACA,GAAG,YACC;CAGJ,IAFoB,WAAW,YAEjB,GAAG,OAAO,kCAAG,SAAW;CAEtC,OAAO,oBAAC,OAAD;EAAO,GAAI;EAAQ;CAAgB;AAC5C"}
|
package/dist/esm/routes.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//#region src/routes.ts
|
|
2
|
-
const App_Domain = "app.intlayer.org";
|
|
3
|
-
const Website_Domain = "intlayer.
|
|
2
|
+
const App_Domain = import.meta.env.VITE_CMS_URL ?? "app.intlayer.org";
|
|
3
|
+
const Website_Domain = import.meta.env.VITE_WEBSITE_URL ?? "intlayer.cn";
|
|
4
4
|
const Showcase_Domain = "showcase.intlayer.org";
|
|
5
|
-
const Backend_Domain = "back.intlayer.org";
|
|
5
|
+
const Backend_Domain = import.meta.env.VITE_BACKEND_URL ?? "back.intlayer.org";
|
|
6
6
|
const Mcp_Domain = "mcp.intlayer.org";
|
|
7
7
|
const App_Home_Path = "/";
|
|
8
8
|
const App_NotFound_Path = "/404";
|
|
@@ -95,12 +95,18 @@ const Website_Home_Path = "/";
|
|
|
95
95
|
const Website_CMS_Path = "/cms";
|
|
96
96
|
const Website_TMS_Path = "/tms";
|
|
97
97
|
const Website_Translate_Path = "/translate";
|
|
98
|
-
const
|
|
98
|
+
const Website_Markdown_Path = "/markdown";
|
|
99
99
|
const Website_Demo_Path = "/demo";
|
|
100
100
|
const Website_Playground_Path = "/playground";
|
|
101
101
|
const Website_NotFound_Path = "/404";
|
|
102
102
|
const Website_Changelog_Path = "/changelog";
|
|
103
103
|
const Website_Scanner_Path = "/i18n-seo-scanner";
|
|
104
|
+
const Website_MessageConverter_Path = "/i18n-message-converter";
|
|
105
|
+
const Website_IntlayerFormatter_Path = "/intlayer-message-formatter";
|
|
106
|
+
const Website_ICUFormatter_Path = "/icu-message-formatter";
|
|
107
|
+
const Website_I18nextFormatter_Path = "/i18next-message-formatter";
|
|
108
|
+
const Website_VueI18nFormatter_Path = "/vue-i18n-message-formatter";
|
|
109
|
+
const Website_POFormatter_Path = "/po-file-message-formatter";
|
|
104
110
|
const Website_Doc_Root_Path = "/doc";
|
|
105
111
|
const Website_Doc_Path = "/doc/get-started";
|
|
106
112
|
const Website_Doc_Why_Path = "/doc/why";
|
|
@@ -109,6 +115,8 @@ const Website_Doc_Chat_Path = "/doc/chat";
|
|
|
109
115
|
const Website_Doc_IntlayerVisualEditor_Path = "/doc/concept/editor";
|
|
110
116
|
const Website_Doc_IntlayerCMS_Path = "/doc/concept/cms";
|
|
111
117
|
const Website_Doc_SelfHosting_Path = "/doc/self-hosting";
|
|
118
|
+
const Website_Doc_Markdown_Path = "/doc/concept/content/markdown";
|
|
119
|
+
const Website_Doc_HTML_Path = "/doc/concept/content/html";
|
|
112
120
|
const Website_ReleasesV6_Path = "/doc/releases/v6";
|
|
113
121
|
const Website_ReleasesV7_Path = "/doc/releases/v7";
|
|
114
122
|
const Website_ReleasesV8_Path = "/doc/releases/v8";
|
|
@@ -139,6 +147,7 @@ const Website_Doc_Environment_Express_Path = "/doc/environment/express";
|
|
|
139
147
|
const Website_Doc_Environment_NestJS_Path = "/doc/environment/nest";
|
|
140
148
|
const Website_Doc_Environment_Fastify_Path = "/doc/environment/fastify";
|
|
141
149
|
const Website_Doc_Environment_Hono_Path = "/doc/environment/hono";
|
|
150
|
+
const Website_Doc_Environment_Htmx_Path = "/doc/environment/htmx";
|
|
142
151
|
const Website_Doc_CLI_Fill_Path = "/doc/concept/cli/fill";
|
|
143
152
|
const Website_Doc_CLI_Translate_Path = "/doc/concept/cli/doc-translate";
|
|
144
153
|
const Website_Doc_CLI_Review_Path = "/doc/concept/cli/doc-review";
|
|
@@ -158,12 +167,18 @@ const Website_Home = `https://${Website_Domain}${"/"}`;
|
|
|
158
167
|
const Website_CMS = `https://${Website_Domain}${Website_CMS_Path}`;
|
|
159
168
|
const Website_TMS = `https://${Website_Domain}${Website_TMS_Path}`;
|
|
160
169
|
const Website_Translate = `https://${Website_Domain}${Website_Translate_Path}`;
|
|
161
|
-
const
|
|
170
|
+
const Website_Markdown = `https://${Website_Domain}${Website_Markdown_Path}`;
|
|
162
171
|
const Website_Demo = `https://${Website_Domain}${Website_Demo_Path}`;
|
|
163
172
|
const Website_Playground = `https://${Website_Domain}${Website_Playground_Path}`;
|
|
164
173
|
const Website_NotFound = `https://${Website_Domain}${Website_NotFound_Path}`;
|
|
165
174
|
const Website_Changelog = `https://${Website_Domain}${Website_Changelog_Path}`;
|
|
166
175
|
const Website_Scanner = `https://${Website_Domain}${Website_Scanner_Path}`;
|
|
176
|
+
const Website_MessageConverter = `https://${Website_Domain}${Website_MessageConverter_Path}`;
|
|
177
|
+
const Website_IntlayerFormatter = `https://${Website_Domain}${Website_IntlayerFormatter_Path}`;
|
|
178
|
+
const Website_ICUFormatter = `https://${Website_Domain}${Website_ICUFormatter_Path}`;
|
|
179
|
+
const Website_I18nextFormatter = `https://${Website_Domain}${Website_I18nextFormatter_Path}`;
|
|
180
|
+
const Website_VueI18nFormatter = `https://${Website_Domain}${Website_VueI18nFormatter_Path}`;
|
|
181
|
+
const Website_POFormatter = `https://${Website_Domain}${Website_POFormatter_Path}`;
|
|
167
182
|
const Website_Benchmark = `https://${Website_Domain}${Website_Benchmark_Path}`;
|
|
168
183
|
const Website_Benchmark_NextJS = `https://${Website_Domain}${Website_Benchmark_NextJS_Path}`;
|
|
169
184
|
const Website_Benchmark_Tanstack = `https://${Website_Domain}${Website_Benchmark_Tanstack_Path}`;
|
|
@@ -175,6 +190,8 @@ const Website_Doc_Chat = `https://${Website_Domain}${Website_Doc_Chat_Path}`;
|
|
|
175
190
|
const Website_Doc_IntlayerVisualEditor = `https://${Website_Domain}${Website_Doc_IntlayerVisualEditor_Path}`;
|
|
176
191
|
const Website_Doc_IntlayerCMS = `https://${Website_Domain}${Website_Doc_IntlayerCMS_Path}`;
|
|
177
192
|
const Website_Doc_SelfHosting = `https://${Website_Domain}${Website_Doc_SelfHosting_Path}`;
|
|
193
|
+
const Website_Doc_Markdown = `https://${Website_Domain}${Website_Doc_Markdown_Path}`;
|
|
194
|
+
const Website_Doc_HTML = `https://${Website_Domain}${Website_Doc_HTML_Path}`;
|
|
178
195
|
const Website_ReleasesV6 = `https://${Website_Domain}${Website_ReleasesV6_Path}`;
|
|
179
196
|
const Website_ReleasesV7 = `https://${Website_Domain}${Website_ReleasesV7_Path}`;
|
|
180
197
|
const Website_ReleasesV8 = `https://${Website_Domain}${Website_ReleasesV8_Path}`;
|
|
@@ -204,6 +221,7 @@ const Website_Doc_Environment_Express = `https://${Website_Domain}${Website_Doc_
|
|
|
204
221
|
const Website_Doc_Environment_NestJS = `https://${Website_Domain}${Website_Doc_Environment_NestJS_Path}`;
|
|
205
222
|
const Website_Doc_Environment_Fastify = `https://${Website_Domain}${Website_Doc_Environment_Fastify_Path}`;
|
|
206
223
|
const Website_Doc_Environment_Hono = `https://${Website_Domain}${Website_Doc_Environment_Hono_Path}`;
|
|
224
|
+
const Website_Doc_Environment_Htmx = `https://${Website_Domain}${Website_Doc_Environment_Htmx_Path}`;
|
|
207
225
|
const Website_Doc_CLI_Fill = `https://${Website_Domain}${Website_Doc_CLI_Fill_Path}`;
|
|
208
226
|
const Website_Doc_CLI_Translate = `https://${Website_Domain}${Website_Doc_CLI_Translate_Path}`;
|
|
209
227
|
const Website_Doc_CLI_Review = `https://${Website_Domain}${Website_Doc_CLI_Review_Path}`;
|
|
@@ -303,5 +321,5 @@ const External_ExampleIntlayerWithReactNative = "https://github.com/aymericzip/i
|
|
|
303
321
|
const External_ExampleIntlayerWithExpress = "https://github.com/aymericzip/intlayer/tree/main/examples/express-app";
|
|
304
322
|
|
|
305
323
|
//#endregion
|
|
306
|
-
export { App_Admin, App_Admin_Affiliate, App_Admin_Affiliate_Path, App_Admin_Dashboard, App_Admin_Dashboard_Path, App_Admin_Discussions, App_Admin_Discussions_Path, App_Admin_Management, App_Admin_Management_Path, App_Admin_Organizations, App_Admin_Organizations_Path, App_Admin_Path, App_Admin_Projects, App_Admin_Projects_Path, App_Admin_PromoCodes, App_Admin_PromoCodes_Path, App_Admin_Reviewers, App_Admin_Reviewers_Path, App_Admin_Users, App_Admin_Users_Path, App_Affiliation, App_Affiliation_Path, App_Auth_AskResetPassword, App_Auth_AskResetPassword_Path, App_Auth_ChangePassword, App_Auth_ChangePassword_Path, App_Auth_Demo_Path, App_Auth_Path, App_Auth_ResetPassword, App_Auth_ResetPassword_Path, App_Auth_SignIn, App_Auth_SignIn_Path, App_Auth_SignUp, App_Auth_SignUp_Path, App_Auth_TwoFactor, App_Auth_TwoFactor_Path, App_Dashboard, App_Dashboard_Analytics, App_Dashboard_Analytics_Path, App_Dashboard_Assets_Path, App_Dashboard_Dictionaries, App_Dashboard_Dictionaries_Path, App_Dashboard_Editor, App_Dashboard_Editor_Path, App_Dashboard_IDE, App_Dashboard_IDE_Path, App_Dashboard_Organization, App_Dashboard_Organization_Path, App_Dashboard_Profile, App_Dashboard_Profile_Path, App_Dashboard_Projects, App_Dashboard_Projects_Path, App_Dashboard_Scanner, App_Dashboard_Scanner_Path, App_Dashboard_Tags, App_Dashboard_Tags_Path, App_Dashboard_Translate, App_Dashboard_Translate_Path, App_Demo, App_Demo_Path, App_Domain, App_Home_Path, App_Init_Path, App_NotFound_Path, App_Onboarding, App_Onboarding_Path, App_Pricing, App_Pricing_Path, App_ReviewerMarketplace, App_ReviewerMarketplace_Dashboard, App_ReviewerMarketplace_Dashboard_Mission_Path, App_ReviewerMarketplace_Dashboard_Path, App_ReviewerMarketplace_Path, App_ReviewerMarketplace_Reviewer_Path, AuthMd_Path, Backend_Domain, Backend_Health, Backend_OAuth2_Token, Backend_Root, Doc_Blog_Path, Doc_Blog_Root_Path, Doc_Blog_Search_Path, Doc_Blog_What_is_i18n_Path, Doc_CLI_Fill_Path, Doc_CLI_Review_Path, Doc_CLI_Translate_Path, Doc_Chat_Path, Doc_Contributors_Path, Doc_Environment_Adonis_Path, Doc_Environment_Angular_Path, Doc_Environment_Astro_Path, Doc_Environment_CRA_Path, Doc_Environment_Express_Path, Doc_Environment_Fastify_Path, Doc_Environment_Hono_Path, Doc_Environment_Lit_Path, Doc_Environment_Lynx_Path, Doc_Environment_NestJS_Path, Doc_Environment_NextJS_14_Path, Doc_Environment_NextJS_15_Path, Doc_Environment_NextJS_16_Path, Doc_Environment_NextJS_Path, Doc_Environment_Nodejs_Path, Doc_Environment_NuxtAndVue_Path, Doc_Environment_ReactNativeAndExpo_Path, Doc_Environment_Tanstack_Path, Doc_Environment_ViteAndPreact_Path, Doc_Environment_ViteAndReact_Path, Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Doc_Environment_ViteAndReact_ReactRouterV7_Path, Doc_Environment_ViteAndSolid_Path, Doc_Environment_ViteAndSvelte_Path, Doc_Environment_ViteAndVue_Path, Doc_FrequentQuestions_Path, Doc_IntlayerCMS_Path, Doc_IntlayerVisualEditor_Path, Doc_Intlayer_with_Lynx_and_React_Path, Doc_MCP_Path, Doc_Path, Doc_PrivacyPolicy_Path, Doc_ReleasesV6_Path, Doc_ReleasesV7_Path, Doc_ReleasesV8_Path, Doc_Root_Path, Doc_Search_Path, Doc_ShowcaseSubmit_Path, Doc_Showcase_Path, Doc_TermsOfService_Path, Doc_Why_Path, External_AI_Landing_Page, External_Discord, External_DockerHub_SelfHost, External_ExampleIntlayerWithExpress, External_ExampleIntlayerWithNextjs, External_ExampleIntlayerWithReactJS, External_ExampleIntlayerWithReactNative, External_ExampleIntlayerWithViteAndPreact, External_ExampleIntlayerWithViteAndReact, External_ExampleIntlayerWithViteAndSolid, External_ExampleIntlayerWithViteAndSvelte, External_ExampleIntlayerWithViteAndVue, External_Examples, External_Github, External_Github_i18n_benchmark, External_LinkedIn, External_ShowcaseApp, LlmsTxt_Path, Mcp_Domain, Mcp_Root, Mcp_Sse, Showcase_Domain, Showcase_Root, Showcase_Root_Path, Showcase_Submit, Showcase_Submit_Path, Website_Benchmark, Website_Benchmark_NextJS, Website_Benchmark_NextJS_Path, Website_Benchmark_Path, Website_Benchmark_Tanstack, Website_Benchmark_Tanstack_Path, Website_Blog, Website_Blog_Path, Website_Blog_Root, Website_Blog_Root_Path, Website_Blog_Search, Website_Blog_Search_Path, Website_Blog_What_is_i18n, Website_Blog_What_is_i18n_Path, Website_CMS, Website_CMS_Path, Website_Changelog, Website_Changelog_Path, Website_Contributors, Website_Contributors_Path, Website_Demo, Website_Demo_Path, Website_Doc, Website_Doc_CLI_Fill, Website_Doc_CLI_Fill_Path, Website_Doc_CLI_Review, Website_Doc_CLI_Review_Path, Website_Doc_CLI_Translate, Website_Doc_CLI_Translate_Path, Website_Doc_Chat, Website_Doc_Chat_Path, Website_Doc_Environment_Adonis, Website_Doc_Environment_Adonis_Path, Website_Doc_Environment_Angular, Website_Doc_Environment_Angular_Path, Website_Doc_Environment_Astro, Website_Doc_Environment_Astro_Path, Website_Doc_Environment_CRA, Website_Doc_Environment_CRA_Path, Website_Doc_Environment_Express, Website_Doc_Environment_Express_Path, Website_Doc_Environment_Fastify, Website_Doc_Environment_Fastify_Path, Website_Doc_Environment_Hono, Website_Doc_Environment_Hono_Path, Website_Doc_Environment_Lit, Website_Doc_Environment_Lit_Path, Website_Doc_Environment_Lynx, Website_Doc_Environment_Lynx_Path, Website_Doc_Environment_NestJS, Website_Doc_Environment_NestJS_Path, Website_Doc_Environment_NextJS, Website_Doc_Environment_NextJS_14, Website_Doc_Environment_NextJS_14_Path, Website_Doc_Environment_NextJS_15, Website_Doc_Environment_NextJS_15_Path, Website_Doc_Environment_NextJS_16, Website_Doc_Environment_NextJS_16_Path, Website_Doc_Environment_NextJS_Path, Website_Doc_Environment_Nodejs, Website_Doc_Environment_Nodejs_Path, Website_Doc_Environment_NuxtAndVue, Website_Doc_Environment_NuxtAndVue_Path, Website_Doc_Environment_ReactNativeAndExpo, Website_Doc_Environment_ReactNativeAndExpo_Path, Website_Doc_Environment_Tanstack, Website_Doc_Environment_Tanstack_Path, Website_Doc_Environment_ViteAndPreact, Website_Doc_Environment_ViteAndPreact_Path, Website_Doc_Environment_ViteAndReact, Website_Doc_Environment_ViteAndReact_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path, Website_Doc_Environment_ViteAndSolid, Website_Doc_Environment_ViteAndSolid_Path, Website_Doc_Environment_ViteAndSvelte, Website_Doc_Environment_ViteAndSvelte_Path, Website_Doc_Environment_ViteAndVue, Website_Doc_Environment_ViteAndVue_Path, Website_Doc_IntlayerCMS, Website_Doc_IntlayerCMS_Path, Website_Doc_IntlayerVisualEditor, Website_Doc_IntlayerVisualEditor_Path, Website_Doc_Intlayer_with_Lynx_and_React, Website_Doc_Intlayer_with_Lynx_and_React_Path, Website_Doc_MCP, Website_Doc_MCP_Path, Website_Doc_Path, Website_Doc_Root, Website_Doc_Root_Path, Website_Doc_Search, Website_Doc_Search_Path, Website_Doc_SelfHosting, Website_Doc_SelfHosting_Path, Website_Doc_Why, Website_Doc_Why_Path, Website_Domain, Website_FrequentQuestions, Website_FrequentQuestions_Path, Website_Home, Website_Home_Path,
|
|
324
|
+
export { App_Admin, App_Admin_Affiliate, App_Admin_Affiliate_Path, App_Admin_Dashboard, App_Admin_Dashboard_Path, App_Admin_Discussions, App_Admin_Discussions_Path, App_Admin_Management, App_Admin_Management_Path, App_Admin_Organizations, App_Admin_Organizations_Path, App_Admin_Path, App_Admin_Projects, App_Admin_Projects_Path, App_Admin_PromoCodes, App_Admin_PromoCodes_Path, App_Admin_Reviewers, App_Admin_Reviewers_Path, App_Admin_Users, App_Admin_Users_Path, App_Affiliation, App_Affiliation_Path, App_Auth_AskResetPassword, App_Auth_AskResetPassword_Path, App_Auth_ChangePassword, App_Auth_ChangePassword_Path, App_Auth_Demo_Path, App_Auth_Path, App_Auth_ResetPassword, App_Auth_ResetPassword_Path, App_Auth_SignIn, App_Auth_SignIn_Path, App_Auth_SignUp, App_Auth_SignUp_Path, App_Auth_TwoFactor, App_Auth_TwoFactor_Path, App_Dashboard, App_Dashboard_Analytics, App_Dashboard_Analytics_Path, App_Dashboard_Assets_Path, App_Dashboard_Dictionaries, App_Dashboard_Dictionaries_Path, App_Dashboard_Editor, App_Dashboard_Editor_Path, App_Dashboard_IDE, App_Dashboard_IDE_Path, App_Dashboard_Organization, App_Dashboard_Organization_Path, App_Dashboard_Profile, App_Dashboard_Profile_Path, App_Dashboard_Projects, App_Dashboard_Projects_Path, App_Dashboard_Scanner, App_Dashboard_Scanner_Path, App_Dashboard_Tags, App_Dashboard_Tags_Path, App_Dashboard_Translate, App_Dashboard_Translate_Path, App_Demo, App_Demo_Path, App_Domain, App_Home_Path, App_Init_Path, App_NotFound_Path, App_Onboarding, App_Onboarding_Path, App_Pricing, App_Pricing_Path, App_ReviewerMarketplace, App_ReviewerMarketplace_Dashboard, App_ReviewerMarketplace_Dashboard_Mission_Path, App_ReviewerMarketplace_Dashboard_Path, App_ReviewerMarketplace_Path, App_ReviewerMarketplace_Reviewer_Path, AuthMd_Path, Backend_Domain, Backend_Health, Backend_OAuth2_Token, Backend_Root, Doc_Blog_Path, Doc_Blog_Root_Path, Doc_Blog_Search_Path, Doc_Blog_What_is_i18n_Path, Doc_CLI_Fill_Path, Doc_CLI_Review_Path, Doc_CLI_Translate_Path, Doc_Chat_Path, Doc_Contributors_Path, Doc_Environment_Adonis_Path, Doc_Environment_Angular_Path, Doc_Environment_Astro_Path, Doc_Environment_CRA_Path, Doc_Environment_Express_Path, Doc_Environment_Fastify_Path, Doc_Environment_Hono_Path, Doc_Environment_Lit_Path, Doc_Environment_Lynx_Path, Doc_Environment_NestJS_Path, Doc_Environment_NextJS_14_Path, Doc_Environment_NextJS_15_Path, Doc_Environment_NextJS_16_Path, Doc_Environment_NextJS_Path, Doc_Environment_Nodejs_Path, Doc_Environment_NuxtAndVue_Path, Doc_Environment_ReactNativeAndExpo_Path, Doc_Environment_Tanstack_Path, Doc_Environment_ViteAndPreact_Path, Doc_Environment_ViteAndReact_Path, Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Doc_Environment_ViteAndReact_ReactRouterV7_Path, Doc_Environment_ViteAndSolid_Path, Doc_Environment_ViteAndSvelte_Path, Doc_Environment_ViteAndVue_Path, Doc_FrequentQuestions_Path, Doc_IntlayerCMS_Path, Doc_IntlayerVisualEditor_Path, Doc_Intlayer_with_Lynx_and_React_Path, Doc_MCP_Path, Doc_Path, Doc_PrivacyPolicy_Path, Doc_ReleasesV6_Path, Doc_ReleasesV7_Path, Doc_ReleasesV8_Path, Doc_Root_Path, Doc_Search_Path, Doc_ShowcaseSubmit_Path, Doc_Showcase_Path, Doc_TermsOfService_Path, Doc_Why_Path, External_AI_Landing_Page, External_Discord, External_DockerHub_SelfHost, External_ExampleIntlayerWithExpress, External_ExampleIntlayerWithNextjs, External_ExampleIntlayerWithReactJS, External_ExampleIntlayerWithReactNative, External_ExampleIntlayerWithViteAndPreact, External_ExampleIntlayerWithViteAndReact, External_ExampleIntlayerWithViteAndSolid, External_ExampleIntlayerWithViteAndSvelte, External_ExampleIntlayerWithViteAndVue, External_Examples, External_Github, External_Github_i18n_benchmark, External_LinkedIn, External_ShowcaseApp, LlmsTxt_Path, Mcp_Domain, Mcp_Root, Mcp_Sse, Showcase_Domain, Showcase_Root, Showcase_Root_Path, Showcase_Submit, Showcase_Submit_Path, Website_Benchmark, Website_Benchmark_NextJS, Website_Benchmark_NextJS_Path, Website_Benchmark_Path, Website_Benchmark_Tanstack, Website_Benchmark_Tanstack_Path, Website_Blog, Website_Blog_Path, Website_Blog_Root, Website_Blog_Root_Path, Website_Blog_Search, Website_Blog_Search_Path, Website_Blog_What_is_i18n, Website_Blog_What_is_i18n_Path, Website_CMS, Website_CMS_Path, Website_Changelog, Website_Changelog_Path, Website_Contributors, Website_Contributors_Path, Website_Demo, Website_Demo_Path, Website_Doc, Website_Doc_CLI_Fill, Website_Doc_CLI_Fill_Path, Website_Doc_CLI_Review, Website_Doc_CLI_Review_Path, Website_Doc_CLI_Translate, Website_Doc_CLI_Translate_Path, Website_Doc_Chat, Website_Doc_Chat_Path, Website_Doc_Environment_Adonis, Website_Doc_Environment_Adonis_Path, Website_Doc_Environment_Angular, Website_Doc_Environment_Angular_Path, Website_Doc_Environment_Astro, Website_Doc_Environment_Astro_Path, Website_Doc_Environment_CRA, Website_Doc_Environment_CRA_Path, Website_Doc_Environment_Express, Website_Doc_Environment_Express_Path, Website_Doc_Environment_Fastify, Website_Doc_Environment_Fastify_Path, Website_Doc_Environment_Hono, Website_Doc_Environment_Hono_Path, Website_Doc_Environment_Htmx, Website_Doc_Environment_Htmx_Path, Website_Doc_Environment_Lit, Website_Doc_Environment_Lit_Path, Website_Doc_Environment_Lynx, Website_Doc_Environment_Lynx_Path, Website_Doc_Environment_NestJS, Website_Doc_Environment_NestJS_Path, Website_Doc_Environment_NextJS, Website_Doc_Environment_NextJS_14, Website_Doc_Environment_NextJS_14_Path, Website_Doc_Environment_NextJS_15, Website_Doc_Environment_NextJS_15_Path, Website_Doc_Environment_NextJS_16, Website_Doc_Environment_NextJS_16_Path, Website_Doc_Environment_NextJS_Path, Website_Doc_Environment_Nodejs, Website_Doc_Environment_Nodejs_Path, Website_Doc_Environment_NuxtAndVue, Website_Doc_Environment_NuxtAndVue_Path, Website_Doc_Environment_ReactNativeAndExpo, Website_Doc_Environment_ReactNativeAndExpo_Path, Website_Doc_Environment_Tanstack, Website_Doc_Environment_Tanstack_Path, Website_Doc_Environment_ViteAndPreact, Website_Doc_Environment_ViteAndPreact_Path, Website_Doc_Environment_ViteAndReact, Website_Doc_Environment_ViteAndReact_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path, Website_Doc_Environment_ViteAndSolid, Website_Doc_Environment_ViteAndSolid_Path, Website_Doc_Environment_ViteAndSvelte, Website_Doc_Environment_ViteAndSvelte_Path, Website_Doc_Environment_ViteAndVue, Website_Doc_Environment_ViteAndVue_Path, Website_Doc_HTML, Website_Doc_HTML_Path, Website_Doc_IntlayerCMS, Website_Doc_IntlayerCMS_Path, Website_Doc_IntlayerVisualEditor, Website_Doc_IntlayerVisualEditor_Path, Website_Doc_Intlayer_with_Lynx_and_React, Website_Doc_Intlayer_with_Lynx_and_React_Path, Website_Doc_MCP, Website_Doc_MCP_Path, Website_Doc_Markdown, Website_Doc_Markdown_Path, Website_Doc_Path, Website_Doc_Root, Website_Doc_Root_Path, Website_Doc_Search, Website_Doc_Search_Path, Website_Doc_SelfHosting, Website_Doc_SelfHosting_Path, Website_Doc_Why, Website_Doc_Why_Path, Website_Domain, Website_FrequentQuestions, Website_FrequentQuestions_Path, Website_Home, Website_Home_Path, Website_I18nextFormatter, Website_I18nextFormatter_Path, Website_ICUFormatter, Website_ICUFormatter_Path, Website_IntlayerFormatter, Website_IntlayerFormatter_Path, Website_Markdown, Website_Markdown_Path, Website_MessageConverter, Website_MessageConverter_Path, Website_NotFound, Website_NotFound_Path, Website_POFormatter, Website_POFormatter_Path, Website_Playground, Website_Playground_Path, Website_PrivacyPolicy, Website_PrivacyPolicy_Path, Website_ReleasesV6, Website_ReleasesV6_Path, Website_ReleasesV7, Website_ReleasesV7_Path, Website_ReleasesV8, Website_ReleasesV8_Path, Website_ReleasesV9_Path, Website_Scanner, Website_Scanner_Path, Website_TMS, Website_TMS_Path, Website_TermsOfService, Website_TermsOfService_Path, Website_Translate, Website_Translate_Path, Website_VueI18nFormatter, Website_VueI18nFormatter_Path, WellKnown_AgentSkillsIndex_Path, WellKnown_AgentSkills_Path, WellKnown_AiCatalog_Path, WellKnown_ApiCatalog_Path, WellKnown_McpServerCard_Path, WellKnown_OAuthAuthorizationServer_Path, WellKnown_OAuthProtectedResource_Path, getAppAdminAffiliateRoute, getAppAdminOrganizationAbsoluteRoute, getAppAdminOrganizationRoute, getAppAdminProjectAbsoluteRoute, getAppAdminProjectRoute, getAppAdminPromoCodeRoute, getAppAdminReviewerRoute, getAppAdminUserAbsoluteRoute, getAppAdminUserRoute, getAppOnboardingFlowAbsoluteRoute, getAppOnboardingFlowRoute, getAppReviewerMissionRoute, getAppReviewerProfileRoute };
|
|
307
325
|
//# sourceMappingURL=routes.mjs.map
|