@hai3/react 0.2.0-alpha.0 → 0.2.0-alpha.2
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/CLAUDE.md +2 -20
- package/dist/index.cjs +382 -27384
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -106
- package/dist/index.d.ts +5 -106
- package/dist/index.js +275 -27286
- package/dist/index.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -30
- package/dist/types.d.ts +1 -30
- package/llms.txt +0 -1
- package/package.json +13 -4
package/dist/index.d.cts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default
|
|
3
|
-
import { HAI3ProviderProps, UseTranslationReturn, UseScreenTranslationsReturn, UseNavigationReturn, UseThemeReturn,
|
|
4
|
-
export { AppRouterComponent, HAI3ProviderComponent,
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { HAI3ProviderProps, UseTranslationReturn, UseScreenTranslationsReturn, UseNavigationReturn, UseThemeReturn, AppRouterProps } from './types.cjs';
|
|
4
|
+
export { AppRouterComponent, HAI3ProviderComponent, UseAppDispatchReturn, UseAppSelector, UseHAI3Return, UseLanguageReturn, UseMenuReturn, UseOverlayReturn, UsePopupReturn, UseScreenReturn, UseScreensetReturn } from './types.cjs';
|
|
5
5
|
import { HAI3App, AppDispatch, RootState, TranslationMap, TranslationLoader } from '@hai3/framework';
|
|
6
|
-
export { ACCOUNTS_DOMAIN, ApiProtocol,
|
|
6
|
+
export { ACCOUNTS_DOMAIN, ApiPlugin, ApiPluginBase, ApiPluginErrorContext, ApiProtocol, ApiRequestContext, ApiResponseContext, ApiServiceConfig, AppDispatch, BaseApiService, BasePluginHooks, ChangeThemePayload, EventHandler, EventPayloadMap, EventSourceLike, FooterConfig, FooterState, HAI3App, HAI3AppBuilder, HAI3Config, HAI3Plugin, HAI3Store, HeaderConfig, HeaderState, HeaderUser, I18nConfig, I18nRegistry, I18nRegistryImpl, I18nRegistryType, JsonCompatible, JsonObject, JsonPrimitive, JsonValue, LAYOUT_SLICE_NAME, Language, LanguageDisplayMode, LanguageMetadata, LayoutDomain, LayoutDomainReducers, LayoutDomainState, LayoutState, MOCK_PLUGIN, MenuItem, MenuItemConfig, MenuScreenItem, MenuState, MockEventSource, MockEvents, MockMap, MockState, MockTogglePayload, NavigateToScreenPayload, NavigateToScreensetPayload, OverlayConfig, OverlayState, PluginClass, PluginFactory, PluginLifecycle, PluginProvides, PopupConfig, PopupSliceState, PopupState, Preset, Presets, ProtocolClass, ProtocolPluginType, RestMockConfig, RestMockPlugin, RestPlugin, RestPluginHooks, RestPluginWithConfig, RestProtocol, RestProtocolConfig, RestRequestContext, RestResponseContext, RestShortCircuitResponse, RootState, RootStateWithLayout, RouteRegistry, SUPPORTED_LANGUAGES, ScreenConfig, ScreenId, ScreenLoader, ScreenState, ScreensetCategory, ScreensetConfig, ScreensetDefinition, ScreensetId, ScreensetRegistry, ScreensetsConfig, SetLanguagePayload, ShortCircuitResponse, ShowPopupPayload, SidebarPosition, SidebarState, SliceObject, SseConnectContext, SseMockConfig, SseMockEvent, SseMockPlugin, SsePlugin, SsePluginHooks, SsePluginWithConfig, SseProtocol, SseProtocolConfig, SseShortCircuitResponse, Subscription, TENANT_SLICE_NAME, Tenant, TenantChangedPayload, TenantClearedPayload, TenantEvents, TenantState, TextDirection, ThemeApplyFn, ThemeConfig, ThemeRegistry, TranslationDictionary, TranslationLoader, TranslationMap, UikitTheme, apiRegistry, changeTenant, clearActiveScreen, clearTenant, clearTenantAction, clearUser, closeAllPopups, closePopup, closeTopPopup, createHAI3, createHAI3App, createI18nRegistry, createRouteRegistry, createScreensetRegistry, createSlice, createStore, createThemeRegistry, effects, eventBus, footerActions, footerSlice, getLanguageMetadata, getStore, hasSlice, headerActions, headerSlice, hideOverlay, i18n, i18nRegistry, initMockEffects, initTenantEffects, isMockPlugin, isRestShortCircuit, isShortCircuit, isSseShortCircuit, layout, layoutDomainReducers, layoutReducer, menuActions, menuSlice, mockActions, mockSlice, navigateTo, navigation, openPopup, overlayActions, overlaySlice, popupActions, popupSlice, presets, registerSlice, routing, screenActions, screenSlice, screensetRegistry, screensets, setActiveScreen, setFooterConfig, setFooterVisible, setHeaderLoading, setMenuCollapsed, setMenuConfig, setMenuItems, setMenuVisible, setMockEnabled, setOverlayVisible, setScreenLoading, setSidebarCollapsed, setSidebarConfig, setSidebarContent, setSidebarPosition, setSidebarTitle, setSidebarVisible, setSidebarWidth, setTenant, setTenantLoading, setTenantLoadingState, setUser, showOverlay, sidebarActions, sidebarSlice, tenantActions, tenantReducer, tenantSlice, themes, toggleMenu, toggleMockMode, toggleSidebar } from '@hai3/framework';
|
|
7
7
|
import { TypedUseSelectorHook } from 'react-redux';
|
|
8
|
-
import { ComponentName, UiKitComponentMap, UiKitIcon } from '@hai3/uikit';
|
|
9
|
-
export { ComponentName, UiKitComponent, UiKitComponentMap, UiKitIcon } from '@hai3/uikit';
|
|
10
|
-
export { Language, LanguageDisplayMode, TextDirection } from '@hai3/i18n';
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
* HAI3 Provider - Main provider component for HAI3 applications
|
|
@@ -218,36 +215,6 @@ declare function useNavigation(): UseNavigationReturn;
|
|
|
218
215
|
*/
|
|
219
216
|
declare function useTheme(): UseThemeReturn;
|
|
220
217
|
|
|
221
|
-
/**
|
|
222
|
-
* TextLoader Component - Prevents flash of untranslated content
|
|
223
|
-
*
|
|
224
|
-
* React Layer: L3
|
|
225
|
-
*/
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* TextLoader Component
|
|
229
|
-
*
|
|
230
|
-
* Generic wrapper for translated text that automatically shows a skeleton loader
|
|
231
|
-
* while translations are being loaded. This eliminates the need for manual
|
|
232
|
-
* loading state checks throughout the application.
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ```tsx
|
|
236
|
-
* // Heading - default bg-muted skeleton
|
|
237
|
-
* <TextLoader skeletonClassName="h-10 w-64">
|
|
238
|
-
* <h1 className="text-4xl font-bold">{t('screen.title')}</h1>
|
|
239
|
-
* </TextLoader>
|
|
240
|
-
*
|
|
241
|
-
* // Button label - inherits button text color
|
|
242
|
-
* <Button>
|
|
243
|
-
* <TextLoader skeletonClassName="h-4 w-24" inheritColor>
|
|
244
|
-
* {t('button.submit')}
|
|
245
|
-
* </TextLoader>
|
|
246
|
-
* </Button>
|
|
247
|
-
* ```
|
|
248
|
-
*/
|
|
249
|
-
declare const TextLoader: React__default.FC<TextLoaderProps>;
|
|
250
|
-
|
|
251
218
|
/**
|
|
252
219
|
* AppRouter Component - Renders the active screen
|
|
253
220
|
*
|
|
@@ -274,72 +241,4 @@ declare const TextLoader: React__default.FC<TextLoaderProps>;
|
|
|
274
241
|
*/
|
|
275
242
|
declare const AppRouter: React__default.FC<AppRouterProps>;
|
|
276
243
|
|
|
277
|
-
|
|
278
|
-
* UI Kit Registry Service
|
|
279
|
-
* Unified registry for UI components and icons
|
|
280
|
-
* Allows applications to register UI Kit implementations at runtime
|
|
281
|
-
*
|
|
282
|
-
* OPEN/CLOSED PRINCIPLE:
|
|
283
|
-
* - Registry is CLOSED for modification
|
|
284
|
-
* - UI elements register themselves at app level
|
|
285
|
-
* - UI Core depends on interfaces, not implementations
|
|
286
|
-
*/
|
|
287
|
-
|
|
288
|
-
declare class UiKitRegistry {
|
|
289
|
-
private components;
|
|
290
|
-
private icons;
|
|
291
|
-
/**
|
|
292
|
-
* Register a component implementation
|
|
293
|
-
*/
|
|
294
|
-
registerComponent<K extends ComponentName>(name: K, component: UiKitComponentMap[K]): void;
|
|
295
|
-
/**
|
|
296
|
-
* Register multiple components at once
|
|
297
|
-
* Type-safe: only accepts components defined in UiKitComponentMap
|
|
298
|
-
*/
|
|
299
|
-
registerComponents(components: Partial<UiKitComponentMap>): void;
|
|
300
|
-
/**
|
|
301
|
-
* Get a component by name
|
|
302
|
-
*/
|
|
303
|
-
getComponent<K extends ComponentName>(name: K): UiKitComponentMap[K];
|
|
304
|
-
/**
|
|
305
|
-
* Check if a component is registered
|
|
306
|
-
*/
|
|
307
|
-
hasComponent(name: ComponentName): boolean;
|
|
308
|
-
/**
|
|
309
|
-
* Get all registered component names
|
|
310
|
-
*/
|
|
311
|
-
getRegisteredComponents(): ComponentName[];
|
|
312
|
-
/**
|
|
313
|
-
* Register an icon
|
|
314
|
-
* Only accepts UiKitIcon enum or exported string constants
|
|
315
|
-
* NO hardcoded string literals
|
|
316
|
-
*/
|
|
317
|
-
registerIcon(id: UiKitIcon | string, icon: ReactNode): void;
|
|
318
|
-
/**
|
|
319
|
-
* Register multiple icons at once
|
|
320
|
-
* Only accepts UiKitIcon enum or exported string constants
|
|
321
|
-
* NO hardcoded string literals
|
|
322
|
-
*/
|
|
323
|
-
registerIcons(icons: Record<string, ReactNode>): void;
|
|
324
|
-
/**
|
|
325
|
-
* Get an icon by ID
|
|
326
|
-
* Accepts UiKitIcon enum or exported string constants
|
|
327
|
-
*/
|
|
328
|
-
getIcon(id: UiKitIcon | string): ReactNode | undefined;
|
|
329
|
-
/**
|
|
330
|
-
* Get all registered icons
|
|
331
|
-
*/
|
|
332
|
-
getAllIcons(): Record<string, ReactNode>;
|
|
333
|
-
/**
|
|
334
|
-
* Check if an icon is registered
|
|
335
|
-
* Accepts UiKitIcon enum or exported string constants
|
|
336
|
-
*/
|
|
337
|
-
hasIcon(id: UiKitIcon | string): boolean;
|
|
338
|
-
/**
|
|
339
|
-
* Clear all registrations (for testing)
|
|
340
|
-
*/
|
|
341
|
-
clear(): void;
|
|
342
|
-
}
|
|
343
|
-
declare const uikitRegistry: UiKitRegistry;
|
|
344
|
-
|
|
345
|
-
export { AppRouter, AppRouterProps, HAI3Context, HAI3Provider, HAI3ProviderProps, TextLoader, TextLoaderProps, UseNavigationReturn, UseScreenTranslationsReturn, UseThemeReturn, UseTranslationReturn, uikitRegistry, useAppDispatch, useAppSelector, useHAI3, useNavigation, useScreenTranslations, useTheme, useTranslation };
|
|
244
|
+
export { AppRouter, AppRouterProps, HAI3Context, HAI3Provider, HAI3ProviderProps, UseNavigationReturn, UseScreenTranslationsReturn, UseThemeReturn, UseTranslationReturn, useAppDispatch, useAppSelector, useHAI3, useNavigation, useScreenTranslations, useTheme, useTranslation };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default
|
|
3
|
-
import { HAI3ProviderProps, UseTranslationReturn, UseScreenTranslationsReturn, UseNavigationReturn, UseThemeReturn,
|
|
4
|
-
export { AppRouterComponent, HAI3ProviderComponent,
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { HAI3ProviderProps, UseTranslationReturn, UseScreenTranslationsReturn, UseNavigationReturn, UseThemeReturn, AppRouterProps } from './types.js';
|
|
4
|
+
export { AppRouterComponent, HAI3ProviderComponent, UseAppDispatchReturn, UseAppSelector, UseHAI3Return, UseLanguageReturn, UseMenuReturn, UseOverlayReturn, UsePopupReturn, UseScreenReturn, UseScreensetReturn } from './types.js';
|
|
5
5
|
import { HAI3App, AppDispatch, RootState, TranslationMap, TranslationLoader } from '@hai3/framework';
|
|
6
|
-
export { ACCOUNTS_DOMAIN, ApiProtocol,
|
|
6
|
+
export { ACCOUNTS_DOMAIN, ApiPlugin, ApiPluginBase, ApiPluginErrorContext, ApiProtocol, ApiRequestContext, ApiResponseContext, ApiServiceConfig, AppDispatch, BaseApiService, BasePluginHooks, ChangeThemePayload, EventHandler, EventPayloadMap, EventSourceLike, FooterConfig, FooterState, HAI3App, HAI3AppBuilder, HAI3Config, HAI3Plugin, HAI3Store, HeaderConfig, HeaderState, HeaderUser, I18nConfig, I18nRegistry, I18nRegistryImpl, I18nRegistryType, JsonCompatible, JsonObject, JsonPrimitive, JsonValue, LAYOUT_SLICE_NAME, Language, LanguageDisplayMode, LanguageMetadata, LayoutDomain, LayoutDomainReducers, LayoutDomainState, LayoutState, MOCK_PLUGIN, MenuItem, MenuItemConfig, MenuScreenItem, MenuState, MockEventSource, MockEvents, MockMap, MockState, MockTogglePayload, NavigateToScreenPayload, NavigateToScreensetPayload, OverlayConfig, OverlayState, PluginClass, PluginFactory, PluginLifecycle, PluginProvides, PopupConfig, PopupSliceState, PopupState, Preset, Presets, ProtocolClass, ProtocolPluginType, RestMockConfig, RestMockPlugin, RestPlugin, RestPluginHooks, RestPluginWithConfig, RestProtocol, RestProtocolConfig, RestRequestContext, RestResponseContext, RestShortCircuitResponse, RootState, RootStateWithLayout, RouteRegistry, SUPPORTED_LANGUAGES, ScreenConfig, ScreenId, ScreenLoader, ScreenState, ScreensetCategory, ScreensetConfig, ScreensetDefinition, ScreensetId, ScreensetRegistry, ScreensetsConfig, SetLanguagePayload, ShortCircuitResponse, ShowPopupPayload, SidebarPosition, SidebarState, SliceObject, SseConnectContext, SseMockConfig, SseMockEvent, SseMockPlugin, SsePlugin, SsePluginHooks, SsePluginWithConfig, SseProtocol, SseProtocolConfig, SseShortCircuitResponse, Subscription, TENANT_SLICE_NAME, Tenant, TenantChangedPayload, TenantClearedPayload, TenantEvents, TenantState, TextDirection, ThemeApplyFn, ThemeConfig, ThemeRegistry, TranslationDictionary, TranslationLoader, TranslationMap, UikitTheme, apiRegistry, changeTenant, clearActiveScreen, clearTenant, clearTenantAction, clearUser, closeAllPopups, closePopup, closeTopPopup, createHAI3, createHAI3App, createI18nRegistry, createRouteRegistry, createScreensetRegistry, createSlice, createStore, createThemeRegistry, effects, eventBus, footerActions, footerSlice, getLanguageMetadata, getStore, hasSlice, headerActions, headerSlice, hideOverlay, i18n, i18nRegistry, initMockEffects, initTenantEffects, isMockPlugin, isRestShortCircuit, isShortCircuit, isSseShortCircuit, layout, layoutDomainReducers, layoutReducer, menuActions, menuSlice, mockActions, mockSlice, navigateTo, navigation, openPopup, overlayActions, overlaySlice, popupActions, popupSlice, presets, registerSlice, routing, screenActions, screenSlice, screensetRegistry, screensets, setActiveScreen, setFooterConfig, setFooterVisible, setHeaderLoading, setMenuCollapsed, setMenuConfig, setMenuItems, setMenuVisible, setMockEnabled, setOverlayVisible, setScreenLoading, setSidebarCollapsed, setSidebarConfig, setSidebarContent, setSidebarPosition, setSidebarTitle, setSidebarVisible, setSidebarWidth, setTenant, setTenantLoading, setTenantLoadingState, setUser, showOverlay, sidebarActions, sidebarSlice, tenantActions, tenantReducer, tenantSlice, themes, toggleMenu, toggleMockMode, toggleSidebar } from '@hai3/framework';
|
|
7
7
|
import { TypedUseSelectorHook } from 'react-redux';
|
|
8
|
-
import { ComponentName, UiKitComponentMap, UiKitIcon } from '@hai3/uikit';
|
|
9
|
-
export { ComponentName, UiKitComponent, UiKitComponentMap, UiKitIcon } from '@hai3/uikit';
|
|
10
|
-
export { Language, LanguageDisplayMode, TextDirection } from '@hai3/i18n';
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
* HAI3 Provider - Main provider component for HAI3 applications
|
|
@@ -218,36 +215,6 @@ declare function useNavigation(): UseNavigationReturn;
|
|
|
218
215
|
*/
|
|
219
216
|
declare function useTheme(): UseThemeReturn;
|
|
220
217
|
|
|
221
|
-
/**
|
|
222
|
-
* TextLoader Component - Prevents flash of untranslated content
|
|
223
|
-
*
|
|
224
|
-
* React Layer: L3
|
|
225
|
-
*/
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* TextLoader Component
|
|
229
|
-
*
|
|
230
|
-
* Generic wrapper for translated text that automatically shows a skeleton loader
|
|
231
|
-
* while translations are being loaded. This eliminates the need for manual
|
|
232
|
-
* loading state checks throughout the application.
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ```tsx
|
|
236
|
-
* // Heading - default bg-muted skeleton
|
|
237
|
-
* <TextLoader skeletonClassName="h-10 w-64">
|
|
238
|
-
* <h1 className="text-4xl font-bold">{t('screen.title')}</h1>
|
|
239
|
-
* </TextLoader>
|
|
240
|
-
*
|
|
241
|
-
* // Button label - inherits button text color
|
|
242
|
-
* <Button>
|
|
243
|
-
* <TextLoader skeletonClassName="h-4 w-24" inheritColor>
|
|
244
|
-
* {t('button.submit')}
|
|
245
|
-
* </TextLoader>
|
|
246
|
-
* </Button>
|
|
247
|
-
* ```
|
|
248
|
-
*/
|
|
249
|
-
declare const TextLoader: React__default.FC<TextLoaderProps>;
|
|
250
|
-
|
|
251
218
|
/**
|
|
252
219
|
* AppRouter Component - Renders the active screen
|
|
253
220
|
*
|
|
@@ -274,72 +241,4 @@ declare const TextLoader: React__default.FC<TextLoaderProps>;
|
|
|
274
241
|
*/
|
|
275
242
|
declare const AppRouter: React__default.FC<AppRouterProps>;
|
|
276
243
|
|
|
277
|
-
|
|
278
|
-
* UI Kit Registry Service
|
|
279
|
-
* Unified registry for UI components and icons
|
|
280
|
-
* Allows applications to register UI Kit implementations at runtime
|
|
281
|
-
*
|
|
282
|
-
* OPEN/CLOSED PRINCIPLE:
|
|
283
|
-
* - Registry is CLOSED for modification
|
|
284
|
-
* - UI elements register themselves at app level
|
|
285
|
-
* - UI Core depends on interfaces, not implementations
|
|
286
|
-
*/
|
|
287
|
-
|
|
288
|
-
declare class UiKitRegistry {
|
|
289
|
-
private components;
|
|
290
|
-
private icons;
|
|
291
|
-
/**
|
|
292
|
-
* Register a component implementation
|
|
293
|
-
*/
|
|
294
|
-
registerComponent<K extends ComponentName>(name: K, component: UiKitComponentMap[K]): void;
|
|
295
|
-
/**
|
|
296
|
-
* Register multiple components at once
|
|
297
|
-
* Type-safe: only accepts components defined in UiKitComponentMap
|
|
298
|
-
*/
|
|
299
|
-
registerComponents(components: Partial<UiKitComponentMap>): void;
|
|
300
|
-
/**
|
|
301
|
-
* Get a component by name
|
|
302
|
-
*/
|
|
303
|
-
getComponent<K extends ComponentName>(name: K): UiKitComponentMap[K];
|
|
304
|
-
/**
|
|
305
|
-
* Check if a component is registered
|
|
306
|
-
*/
|
|
307
|
-
hasComponent(name: ComponentName): boolean;
|
|
308
|
-
/**
|
|
309
|
-
* Get all registered component names
|
|
310
|
-
*/
|
|
311
|
-
getRegisteredComponents(): ComponentName[];
|
|
312
|
-
/**
|
|
313
|
-
* Register an icon
|
|
314
|
-
* Only accepts UiKitIcon enum or exported string constants
|
|
315
|
-
* NO hardcoded string literals
|
|
316
|
-
*/
|
|
317
|
-
registerIcon(id: UiKitIcon | string, icon: ReactNode): void;
|
|
318
|
-
/**
|
|
319
|
-
* Register multiple icons at once
|
|
320
|
-
* Only accepts UiKitIcon enum or exported string constants
|
|
321
|
-
* NO hardcoded string literals
|
|
322
|
-
*/
|
|
323
|
-
registerIcons(icons: Record<string, ReactNode>): void;
|
|
324
|
-
/**
|
|
325
|
-
* Get an icon by ID
|
|
326
|
-
* Accepts UiKitIcon enum or exported string constants
|
|
327
|
-
*/
|
|
328
|
-
getIcon(id: UiKitIcon | string): ReactNode | undefined;
|
|
329
|
-
/**
|
|
330
|
-
* Get all registered icons
|
|
331
|
-
*/
|
|
332
|
-
getAllIcons(): Record<string, ReactNode>;
|
|
333
|
-
/**
|
|
334
|
-
* Check if an icon is registered
|
|
335
|
-
* Accepts UiKitIcon enum or exported string constants
|
|
336
|
-
*/
|
|
337
|
-
hasIcon(id: UiKitIcon | string): boolean;
|
|
338
|
-
/**
|
|
339
|
-
* Clear all registrations (for testing)
|
|
340
|
-
*/
|
|
341
|
-
clear(): void;
|
|
342
|
-
}
|
|
343
|
-
declare const uikitRegistry: UiKitRegistry;
|
|
344
|
-
|
|
345
|
-
export { AppRouter, AppRouterProps, HAI3Context, HAI3Provider, HAI3ProviderProps, TextLoader, TextLoaderProps, UseNavigationReturn, UseScreenTranslationsReturn, UseThemeReturn, UseTranslationReturn, uikitRegistry, useAppDispatch, useAppSelector, useHAI3, useNavigation, useScreenTranslations, useTheme, useTranslation };
|
|
244
|
+
export { AppRouter, AppRouterProps, HAI3Context, HAI3Provider, HAI3ProviderProps, UseNavigationReturn, UseScreenTranslationsReturn, UseThemeReturn, UseTranslationReturn, useAppDispatch, useAppSelector, useHAI3, useNavigation, useScreenTranslations, useTheme, useTranslation };
|