@nice2dev/ui-tools 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +36 -0
  2. package/dist/access-control.d.ts +726 -0
  3. package/dist/access-control.d.ts.map +1 -0
  4. package/dist/accessibility-i18n.d.ts +1017 -0
  5. package/dist/accessibility-i18n.d.ts.map +1 -0
  6. package/dist/ai-assistant.d.ts +263 -0
  7. package/dist/ai-assistant.d.ts.map +1 -0
  8. package/dist/ai-playgrounds.d.ts +842 -0
  9. package/dist/ai-playgrounds.d.ts.map +1 -0
  10. package/dist/alerting-incidents.d.ts +558 -0
  11. package/dist/alerting-incidents.d.ts.map +1 -0
  12. package/dist/api-designer.d.ts +1568 -0
  13. package/dist/api-designer.d.ts.map +1 -0
  14. package/dist/api-testing.d.ts +1146 -0
  15. package/dist/api-testing.d.ts.map +1 -0
  16. package/dist/apm-profiling.d.ts +656 -0
  17. package/dist/apm-profiling.d.ts.map +1 -0
  18. package/dist/artifacts.d.ts +421 -0
  19. package/dist/artifacts.d.ts.map +1 -0
  20. package/dist/audit-compliance.d.ts +752 -0
  21. package/dist/audit-compliance.d.ts.map +1 -0
  22. package/dist/certificates.d.ts +256 -0
  23. package/dist/certificates.d.ts.map +1 -0
  24. package/dist/chart-builder.d.ts +1404 -0
  25. package/dist/chart-builder.d.ts.map +1 -0
  26. package/dist/cloud-instances.d.ts +169 -0
  27. package/dist/cloud-instances.d.ts.map +1 -0
  28. package/dist/config-management.d.ts +350 -0
  29. package/dist/config-management.d.ts.map +1 -0
  30. package/dist/containers.d.ts +256 -0
  31. package/dist/containers.d.ts.map +1 -0
  32. package/dist/dashboard-designer.d.ts +1238 -0
  33. package/dist/dashboard-designer.d.ts.map +1 -0
  34. package/dist/data-management.d.ts +496 -0
  35. package/dist/data-management.d.ts.map +1 -0
  36. package/dist/data-pipeline.d.ts +1105 -0
  37. package/dist/data-pipeline.d.ts.map +1 -0
  38. package/dist/data-warehouse.d.ts +1097 -0
  39. package/dist/data-warehouse.d.ts.map +1 -0
  40. package/dist/dataset-management.d.ts +782 -0
  41. package/dist/dataset-management.d.ts.map +1 -0
  42. package/dist/db-adapters.d.ts +704 -0
  43. package/dist/db-adapters.d.ts.map +1 -0
  44. package/dist/db-admin.d.ts +699 -0
  45. package/dist/db-admin.d.ts.map +1 -0
  46. package/dist/db-designer.d.ts +366 -0
  47. package/dist/db-designer.d.ts.map +1 -0
  48. package/dist/debugger.d.ts +356 -0
  49. package/dist/debugger.d.ts.map +1 -0
  50. package/dist/device-management.d.ts +871 -0
  51. package/dist/device-management.d.ts.map +1 -0
  52. package/dist/distributed-tracing.d.ts +427 -0
  53. package/dist/distributed-tracing.d.ts.map +1 -0
  54. package/dist/dns-management.d.ts +215 -0
  55. package/dist/dns-management.d.ts.map +1 -0
  56. package/dist/download-manager.d.ts +271 -0
  57. package/dist/download-manager.d.ts.map +1 -0
  58. package/dist/download-torrent.d.ts +1062 -0
  59. package/dist/download-torrent.d.ts.map +1 -0
  60. package/dist/edge-computing.d.ts +720 -0
  61. package/dist/edge-computing.d.ts.map +1 -0
  62. package/dist/education.d.ts +1135 -0
  63. package/dist/education.d.ts.map +1 -0
  64. package/dist/email-template.d.ts +1141 -0
  65. package/dist/email-template.d.ts.map +1 -0
  66. package/dist/erp-enterprise.d.ts +1270 -0
  67. package/dist/erp-enterprise.d.ts.map +1 -0
  68. package/dist/form-builder.d.ts +1117 -0
  69. package/dist/form-builder.d.ts.map +1 -0
  70. package/dist/game-engine-advanced.d.ts +1049 -0
  71. package/dist/game-engine-advanced.d.ts.map +1 -0
  72. package/dist/git.d.ts +415 -0
  73. package/dist/git.d.ts.map +1 -0
  74. package/dist/hardware-integration.d.ts +966 -0
  75. package/dist/hardware-integration.d.ts.map +1 -0
  76. package/dist/iac.d.ts +318 -0
  77. package/dist/iac.d.ts.map +1 -0
  78. package/dist/icon-tools.d.ts +1023 -0
  79. package/dist/icon-tools.d.ts.map +1 -0
  80. package/dist/ide.d.ts +322 -0
  81. package/dist/ide.d.ts.map +1 -0
  82. package/dist/index.cjs +2 -0
  83. package/dist/index.cjs.map +1 -0
  84. package/dist/index.d.ts +176 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.mjs +1887 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/integration-platform.d.ts +857 -0
  89. package/dist/integration-platform.d.ts.map +1 -0
  90. package/dist/kubernetes.d.ts +278 -0
  91. package/dist/kubernetes.d.ts.map +1 -0
  92. package/dist/life-management.d.ts +1132 -0
  93. package/dist/life-management.d.ts.map +1 -0
  94. package/dist/log-management.d.ts +473 -0
  95. package/dist/log-management.d.ts.map +1 -0
  96. package/dist/mathematics.d.ts +870 -0
  97. package/dist/mathematics.d.ts.map +1 -0
  98. package/dist/message-queue.d.ts +1006 -0
  99. package/dist/message-queue.d.ts.map +1 -0
  100. package/dist/metrics-dashboard.d.ts +596 -0
  101. package/dist/metrics-dashboard.d.ts.map +1 -0
  102. package/dist/mobile-components.d.ts +766 -0
  103. package/dist/mobile-components.d.ts.map +1 -0
  104. package/dist/model-deployment.d.ts +787 -0
  105. package/dist/model-deployment.d.ts.map +1 -0
  106. package/dist/model-registry.d.ts +740 -0
  107. package/dist/model-registry.d.ts.map +1 -0
  108. package/dist/model-training.d.ts +706 -0
  109. package/dist/model-training.d.ts.map +1 -0
  110. package/dist/network-config.d.ts +334 -0
  111. package/dist/network-config.d.ts.map +1 -0
  112. package/dist/network-monitoring.d.ts +291 -0
  113. package/dist/network-monitoring.d.ts.map +1 -0
  114. package/dist/pdf-tools.d.ts +1003 -0
  115. package/dist/pdf-tools.d.ts.map +1 -0
  116. package/dist/pipelines.d.ts +250 -0
  117. package/dist/pipelines.d.ts.map +1 -0
  118. package/dist/remote-desktop.d.ts +207 -0
  119. package/dist/remote-desktop.d.ts.map +1 -0
  120. package/dist/report-designer.d.ts +1153 -0
  121. package/dist/report-designer.d.ts.map +1 -0
  122. package/dist/scada-industrial.d.ts +848 -0
  123. package/dist/scada-industrial.d.ts.map +1 -0
  124. package/dist/scientific-research.d.ts +1149 -0
  125. package/dist/scientific-research.d.ts.map +1 -0
  126. package/dist/secret-management.d.ts +617 -0
  127. package/dist/secret-management.d.ts.map +1 -0
  128. package/dist/security-scanning.d.ts +714 -0
  129. package/dist/security-scanning.d.ts.map +1 -0
  130. package/dist/self-service-analytics.d.ts +1208 -0
  131. package/dist/self-service-analytics.d.ts.map +1 -0
  132. package/dist/sensor-dashboard.d.ts +845 -0
  133. package/dist/sensor-dashboard.d.ts.map +1 -0
  134. package/dist/server-management.d.ts +331 -0
  135. package/dist/server-management.d.ts.map +1 -0
  136. package/dist/smart-home.d.ts +861 -0
  137. package/dist/smart-home.d.ts.map +1 -0
  138. package/dist/spreadsheet.d.ts +1043 -0
  139. package/dist/spreadsheet.d.ts.map +1 -0
  140. package/dist/sql-editor.d.ts +402 -0
  141. package/dist/sql-editor.d.ts.map +1 -0
  142. package/dist/terminal.d.ts +245 -0
  143. package/dist/terminal.d.ts.map +1 -0
  144. package/dist/testing-qa.d.ts +1013 -0
  145. package/dist/testing-qa.d.ts.map +1 -0
  146. package/dist/torrent-client.d.ts +298 -0
  147. package/dist/torrent-client.d.ts.map +1 -0
  148. package/dist/traceless.d.ts +759 -0
  149. package/dist/traceless.d.ts.map +1 -0
  150. package/dist/virtual-machines.d.ts +199 -0
  151. package/dist/virtual-machines.d.ts.map +1 -0
  152. package/dist/visual-scripting.d.ts +381 -0
  153. package/dist/visual-scripting.d.ts.map +1 -0
  154. package/dist/word-processor.d.ts +1124 -0
  155. package/dist/word-processor.d.ts.map +1 -0
  156. package/dist/workspace.d.ts +333 -0
  157. package/dist/workspace.d.ts.map +1 -0
  158. package/package.json +62 -0
@@ -0,0 +1,1017 @@
1
+ /**
2
+ * @fileoverview PRO-23: Accessibility & Internationalization Types
3
+ *
4
+ * This module provides TypeScript types and interfaces for building
5
+ * fully accessible and internationalized applications following
6
+ * WCAG 2.1 AA guidelines and supporting 50+ languages.
7
+ *
8
+ * @module @nice2dev/ui-tools/accessibility-i18n
9
+ */
10
+ /**
11
+ * WCAG compliance levels.
12
+ */
13
+ export type WCAGLevel = 'A' | 'AA' | 'AAA';
14
+ /**
15
+ * WCAG version.
16
+ */
17
+ export type WCAGVersion = '2.0' | '2.1' | '2.2';
18
+ /**
19
+ * Accessibility configuration for an application.
20
+ */
21
+ export interface AccessibilityConfig {
22
+ /** Target WCAG level */
23
+ targetLevel: WCAGLevel;
24
+ /** WCAG version to follow */
25
+ wcagVersion: WCAGVersion;
26
+ /** Enable screen reader optimizations */
27
+ screenReaderOptimizations: boolean;
28
+ /** Enable full keyboard navigation */
29
+ keyboardNavigation: boolean;
30
+ /** Enforce minimum color contrast */
31
+ enforceColorContrast: boolean;
32
+ /** Minimum contrast ratio (4.5:1 for AA) */
33
+ minContrastRatio: number;
34
+ /** Respect prefers-reduced-motion */
35
+ respectReducedMotion: boolean;
36
+ /** Enable focus visible indicators */
37
+ focusVisible: boolean;
38
+ /** Enable high contrast mode support */
39
+ highContrastSupport: boolean;
40
+ /** Enable forced colors support */
41
+ forcedColorsSupport: boolean;
42
+ /** Run automated accessibility tests */
43
+ automatedTesting: boolean;
44
+ }
45
+ /**
46
+ * ARIA roles for semantic meaning.
47
+ */
48
+ export type AriaRole = 'banner' | 'complementary' | 'contentinfo' | 'form' | 'main' | 'navigation' | 'region' | 'search' | 'button' | 'checkbox' | 'dialog' | 'gridcell' | 'link' | 'log' | 'marquee' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'option' | 'progressbar' | 'radio' | 'scrollbar' | 'searchbox' | 'slider' | 'spinbutton' | 'status' | 'switch' | 'tab' | 'tabpanel' | 'textbox' | 'timer' | 'tooltip' | 'treeitem' | 'article' | 'cell' | 'columnheader' | 'definition' | 'directory' | 'document' | 'figure' | 'group' | 'heading' | 'img' | 'list' | 'listitem' | 'math' | 'none' | 'note' | 'presentation' | 'row' | 'rowgroup' | 'rowheader' | 'separator' | 'table' | 'term' | 'toolbar' | 'alert' | 'alertdialog' | 'application' | 'grid' | 'listbox' | 'menu' | 'menubar' | 'radiogroup' | 'tablist' | 'tree' | 'treegrid';
49
+ /**
50
+ * ARIA live region politeness.
51
+ */
52
+ export type AriaLive = 'off' | 'polite' | 'assertive';
53
+ /**
54
+ * ARIA pressed state for toggle buttons.
55
+ */
56
+ export type AriaPressed = boolean | 'mixed';
57
+ /**
58
+ * ARIA expanded state for collapsible elements.
59
+ */
60
+ export type AriaExpanded = boolean;
61
+ /**
62
+ * ARIA selected state.
63
+ */
64
+ export type AriaSelected = boolean;
65
+ /**
66
+ * ARIA checked state.
67
+ */
68
+ export type AriaChecked = boolean | 'mixed';
69
+ /**
70
+ * ARIA label configuration.
71
+ */
72
+ export interface AriaLabelConfig {
73
+ /** The accessible label */
74
+ label?: string;
75
+ /** ID of element that labels this */
76
+ labelledBy?: string;
77
+ /** ID of element that describes this */
78
+ describedBy?: string;
79
+ /** ID of error message element */
80
+ errorMessage?: string;
81
+ /** Additional details for screen readers */
82
+ details?: string;
83
+ }
84
+ /**
85
+ * ARIA relationship configuration.
86
+ */
87
+ export interface AriaRelationships {
88
+ /** ID of controlled element */
89
+ controls?: string;
90
+ /** IDs of owned elements */
91
+ owns?: string;
92
+ /** ID of active descendant */
93
+ activeDescendant?: string;
94
+ /** IDs of related flow elements */
95
+ flowTo?: string;
96
+ /** ID of help element */
97
+ help?: string;
98
+ }
99
+ /**
100
+ * ARIA state configuration.
101
+ */
102
+ export interface AriaState {
103
+ /** Whether element is expanded */
104
+ expanded?: AriaExpanded;
105
+ /** Whether element is selected */
106
+ selected?: AriaSelected;
107
+ /** Whether element is pressed */
108
+ pressed?: AriaPressed;
109
+ /** Whether element is checked */
110
+ checked?: AriaChecked;
111
+ /** Whether element is disabled */
112
+ disabled?: boolean;
113
+ /** Whether element is hidden */
114
+ hidden?: boolean;
115
+ /** Whether element is invalid */
116
+ invalid?: boolean | 'grammar' | 'spelling';
117
+ /** Whether element is required */
118
+ required?: boolean;
119
+ /** Whether element is read-only */
120
+ readOnly?: boolean;
121
+ /** Whether element is busy */
122
+ busy?: boolean;
123
+ /** Current value for range widgets */
124
+ valuenow?: number;
125
+ /** Minimum value for range widgets */
126
+ valuemin?: number;
127
+ /** Maximum value for range widgets */
128
+ valuemax?: number;
129
+ /** Text alternative for current value */
130
+ valuetext?: string;
131
+ /** Current item position */
132
+ posinset?: number;
133
+ /** Total items in set */
134
+ setsize?: number;
135
+ /** Level in hierarchy */
136
+ level?: number;
137
+ /** Sort direction */
138
+ sort?: 'ascending' | 'descending' | 'none' | 'other';
139
+ /** Autocomplete behavior */
140
+ autocomplete?: 'none' | 'inline' | 'list' | 'both';
141
+ /** Multiselectable */
142
+ multiselectable?: boolean;
143
+ /** Orientation */
144
+ orientation?: 'horizontal' | 'vertical';
145
+ }
146
+ /**
147
+ * Complete accessible element configuration.
148
+ */
149
+ export interface AccessibleElementConfig extends AriaLabelConfig, AriaRelationships, AriaState {
150
+ /** Element role */
151
+ role?: AriaRole;
152
+ /** Live region configuration */
153
+ live?: AriaLive;
154
+ /** Atomic updates for live regions */
155
+ atomic?: boolean;
156
+ /** Relevant changes for live regions */
157
+ relevant?: 'additions' | 'removals' | 'text' | 'all';
158
+ /** Tab index for keyboard navigation */
159
+ tabIndex?: number;
160
+ }
161
+ /**
162
+ * Keyboard shortcut definition.
163
+ */
164
+ export interface KeyboardShortcut {
165
+ /** Shortcut identifier */
166
+ id: string;
167
+ /** Key combination (e.g., "Ctrl+S", "Alt+Shift+P") */
168
+ keys: string;
169
+ /** Description of what the shortcut does */
170
+ description: string;
171
+ /** Action category */
172
+ category?: string;
173
+ /** Whether shortcut is global */
174
+ global?: boolean;
175
+ /** Whether shortcut can be customized */
176
+ customizable?: boolean;
177
+ /** Alternative key combination */
178
+ alternative?: string;
179
+ /** Platform-specific overrides */
180
+ platformOverrides?: Record<string, string>;
181
+ }
182
+ /**
183
+ * Keyboard navigation configuration.
184
+ */
185
+ export interface KeyboardNavigationConfig {
186
+ /** Enable arrow key navigation */
187
+ arrowNavigation: boolean;
188
+ /** Enable tab navigation */
189
+ tabNavigation: boolean;
190
+ /** Enable home/end navigation */
191
+ homeEndNavigation: boolean;
192
+ /** Enable page up/down navigation */
193
+ pageNavigation: boolean;
194
+ /** Enable type-ahead search */
195
+ typeAhead: boolean;
196
+ /** Type-ahead timeout in ms */
197
+ typeAheadTimeout?: number;
198
+ /** Wrap around at boundaries */
199
+ wrapNavigation: boolean;
200
+ /** Custom shortcuts */
201
+ shortcuts: KeyboardShortcut[];
202
+ }
203
+ /**
204
+ * Focus trap configuration.
205
+ */
206
+ export interface FocusTrapConfig {
207
+ /** Enable focus trap */
208
+ enabled: boolean;
209
+ /** Allow escape key to exit */
210
+ allowEscape: boolean;
211
+ /** Return focus to trigger on close */
212
+ returnFocus: boolean;
213
+ /** Initial focus target selector */
214
+ initialFocus?: string;
215
+ /** Final focus target selector */
216
+ finalFocus?: string;
217
+ /** Selectors for focusable elements */
218
+ focusableSelectors?: string[];
219
+ }
220
+ /**
221
+ * Focus management utilities.
222
+ */
223
+ export interface FocusManagement {
224
+ /** Currently focused element ID */
225
+ currentFocus?: string;
226
+ /** Focus history stack */
227
+ focusHistory: string[];
228
+ /** Maximum history length */
229
+ maxHistoryLength: number;
230
+ /** Focus trap configuration */
231
+ trap?: FocusTrapConfig;
232
+ }
233
+ /**
234
+ * Color contrast requirements.
235
+ */
236
+ export interface ColorContrastRequirements {
237
+ /** Minimum contrast for normal text */
238
+ normalText: number;
239
+ /** Minimum contrast for large text (14pt bold or 18pt) */
240
+ largeText: number;
241
+ /** Minimum contrast for UI components */
242
+ uiComponents: number;
243
+ /** Minimum contrast for graphical objects */
244
+ graphicalObjects: number;
245
+ /** Minimum contrast for focus indicators */
246
+ focusIndicators: number;
247
+ }
248
+ /**
249
+ * WCAG 2.1 AA contrast requirements.
250
+ */
251
+ export declare const WCAG_AA_CONTRAST: ColorContrastRequirements;
252
+ /**
253
+ * WCAG 2.1 AAA contrast requirements.
254
+ */
255
+ export declare const WCAG_AAA_CONTRAST: ColorContrastRequirements;
256
+ /**
257
+ * Color contrast check result.
258
+ */
259
+ export interface ContrastCheckResult {
260
+ /** Foreground color */
261
+ foreground: string;
262
+ /** Background color */
263
+ background: string;
264
+ /** Calculated contrast ratio */
265
+ ratio: number;
266
+ /** Passes AA for normal text */
267
+ passesAANormal: boolean;
268
+ /** Passes AA for large text */
269
+ passesAALarge: boolean;
270
+ /** Passes AAA for normal text */
271
+ passesAAANormal: boolean;
272
+ /** Passes AAA for large text */
273
+ passesAAALarge: boolean;
274
+ /** Suggested alternatives if failing */
275
+ suggestions?: ColorSuggestion[];
276
+ }
277
+ /**
278
+ * Color suggestion for improving contrast.
279
+ */
280
+ export interface ColorSuggestion {
281
+ /** Suggested color */
282
+ color: string;
283
+ /** Resulting contrast ratio */
284
+ resultingRatio: number;
285
+ /** Whether it passes target level */
286
+ passesTarget: boolean;
287
+ /** How different from original (0-1) */
288
+ colorDifference: number;
289
+ }
290
+ /**
291
+ * High contrast mode configuration.
292
+ */
293
+ export interface HighContrastConfig {
294
+ /** Detect high contrast mode automatically */
295
+ autoDetect: boolean;
296
+ /** Custom high contrast theme */
297
+ customTheme?: HighContrastTheme;
298
+ /** Respect Windows high contrast mode */
299
+ respectWindowsHC: boolean;
300
+ /** Enable forced-colors support */
301
+ forcedColors: boolean;
302
+ }
303
+ /**
304
+ * High contrast theme colors.
305
+ */
306
+ export interface HighContrastTheme {
307
+ /** Background color */
308
+ background: string;
309
+ /** Foreground/text color */
310
+ foreground: string;
311
+ /** Link color */
312
+ link: string;
313
+ /** Visited link color */
314
+ linkVisited: string;
315
+ /** Button background */
316
+ buttonBackground: string;
317
+ /** Button text */
318
+ buttonText: string;
319
+ /** Disabled text */
320
+ disabledText: string;
321
+ /** Highlight background */
322
+ highlight: string;
323
+ /** Highlight text */
324
+ highlightText: string;
325
+ }
326
+ /**
327
+ * Reduced motion configuration.
328
+ */
329
+ export interface ReducedMotionConfig {
330
+ /** Detect prefers-reduced-motion automatically */
331
+ autoDetect: boolean;
332
+ /** Force reduced motion regardless of system setting */
333
+ forceReduced: boolean;
334
+ /** Alternative for essential animations */
335
+ essentialAnimationFallback: 'none' | 'fade' | 'instant';
336
+ /** Maximum animation duration when reduced (ms) */
337
+ maxDuration: number;
338
+ }
339
+ /**
340
+ * Animation accessibility settings.
341
+ */
342
+ export interface AnimationAccessibility {
343
+ /** Whether animations are enabled */
344
+ enabled: boolean;
345
+ /** Maximum animation duration (ms) */
346
+ maxDuration: number;
347
+ /** Disable parallax effects */
348
+ disableParallax: boolean;
349
+ /** Disable auto-playing videos */
350
+ disableAutoplayVideo: boolean;
351
+ /** Disable auto-playing audio */
352
+ disableAutoplayAudio: boolean;
353
+ /** Pause animations on focus loss */
354
+ pauseOnFocusLoss: boolean;
355
+ /** Provide animation controls */
356
+ showAnimationControls: boolean;
357
+ }
358
+ /**
359
+ * Screen reader announcement configuration.
360
+ */
361
+ export interface ScreenReaderAnnouncement {
362
+ /** Message to announce */
363
+ message: string;
364
+ /** Politeness level */
365
+ politeness: AriaLive;
366
+ /** Whether to clear previous announcements */
367
+ clearQueue?: boolean;
368
+ /** Delay before announcement (ms) */
369
+ delay?: number;
370
+ }
371
+ /**
372
+ * Live region configuration.
373
+ */
374
+ export interface LiveRegionConfig {
375
+ /** Region ID */
376
+ id: string;
377
+ /** Politeness level */
378
+ politeness: AriaLive;
379
+ /** Whether updates are atomic */
380
+ atomic: boolean;
381
+ /** What changes are relevant */
382
+ relevant: 'additions' | 'removals' | 'text' | 'all';
383
+ /** Role (status, log, alert, etc.) */
384
+ role?: 'status' | 'log' | 'alert' | 'progressbar' | 'marquee' | 'timer';
385
+ }
386
+ /**
387
+ * Screen reader hints configuration.
388
+ */
389
+ export interface ScreenReaderHints {
390
+ /** Enable form field hints */
391
+ formHints: boolean;
392
+ /** Enable navigation hints */
393
+ navigationHints: boolean;
394
+ /** Enable state change announcements */
395
+ stateChangeAnnouncements: boolean;
396
+ /** Enable error announcements */
397
+ errorAnnouncements: boolean;
398
+ /** Enable loading announcements */
399
+ loadingAnnouncements: boolean;
400
+ /** Announce page titles */
401
+ announcePageTitles: boolean;
402
+ /** Announce focus changes */
403
+ announceFocusChanges: boolean;
404
+ }
405
+ /**
406
+ * Accessible form field configuration.
407
+ */
408
+ export interface AccessibleFormField {
409
+ /** Field ID */
410
+ id: string;
411
+ /** Field name */
412
+ name: string;
413
+ /** Label text */
414
+ label: string;
415
+ /** Label position */
416
+ labelPosition: 'before' | 'after' | 'floating';
417
+ /** Whether label is visible */
418
+ labelVisible: boolean;
419
+ /** Help text */
420
+ helpText?: string;
421
+ /** Error message */
422
+ errorMessage?: string;
423
+ /** Whether field is required */
424
+ required: boolean;
425
+ /** Auto-complete attribute */
426
+ autocomplete?: string;
427
+ /** Input mode */
428
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
429
+ /** Pattern validation */
430
+ pattern?: string;
431
+ /** Pattern description for screen readers */
432
+ patternDescription?: string;
433
+ }
434
+ /**
435
+ * Form error handling configuration.
436
+ */
437
+ export interface FormErrorHandling {
438
+ /** Show inline errors */
439
+ inlineErrors: boolean;
440
+ /** Show error summary */
441
+ errorSummary: boolean;
442
+ /** Error summary position */
443
+ summaryPosition: 'top' | 'bottom';
444
+ /** Focus first error on submit */
445
+ focusFirstError: boolean;
446
+ /** Announce errors to screen readers */
447
+ announceErrors: boolean;
448
+ /** Error announcement politeness */
449
+ errorPoliteness: AriaLive;
450
+ /** Real-time validation */
451
+ realtimeValidation: boolean;
452
+ /** Validation delay (ms) */
453
+ validationDelay?: number;
454
+ }
455
+ /**
456
+ * Skip link configuration.
457
+ */
458
+ export interface SkipLink {
459
+ /** Link text */
460
+ text: string;
461
+ /** Target element ID */
462
+ target: string;
463
+ /** Whether link is visible on focus */
464
+ visibleOnFocus: boolean;
465
+ }
466
+ /**
467
+ * Page landmarks configuration.
468
+ */
469
+ export interface LandmarksConfig {
470
+ /** Main content landmark ID */
471
+ main?: string;
472
+ /** Navigation landmark ID */
473
+ navigation?: string;
474
+ /** Search landmark ID */
475
+ search?: string;
476
+ /** Banner landmark ID */
477
+ banner?: string;
478
+ /** Footer landmark ID */
479
+ contentinfo?: string;
480
+ /** Complementary/aside landmark IDs */
481
+ complementary?: string[];
482
+ /** Custom regions */
483
+ regions?: {
484
+ id: string;
485
+ label: string;
486
+ }[];
487
+ }
488
+ /**
489
+ * Accessibility test result.
490
+ */
491
+ export interface AccessibilityTestResult {
492
+ /** Test passed */
493
+ passed: boolean;
494
+ /** Number of violations */
495
+ violationCount: number;
496
+ /** Violations found */
497
+ violations: AccessibilityViolation[];
498
+ /** Passes (optional, for reporting) */
499
+ passes?: AccessibilityPass[];
500
+ /** Incomplete checks (need manual review) */
501
+ incomplete?: AccessibilityIncomplete[];
502
+ /** Test timestamp */
503
+ timestamp: string;
504
+ /** Page/component tested */
505
+ target: string;
506
+ }
507
+ /**
508
+ * Accessibility violation.
509
+ */
510
+ export interface AccessibilityViolation {
511
+ /** Rule ID */
512
+ ruleId: string;
513
+ /** Violation description */
514
+ description: string;
515
+ /** Impact severity */
516
+ impact: 'minor' | 'moderate' | 'serious' | 'critical';
517
+ /** WCAG criteria violated */
518
+ wcagCriteria: string[];
519
+ /** Help URL */
520
+ helpUrl: string;
521
+ /** Affected elements */
522
+ nodes: AccessibilityNode[];
523
+ /** How to fix */
524
+ fix: string;
525
+ }
526
+ /**
527
+ * Accessibility pass (rule that passed).
528
+ */
529
+ export interface AccessibilityPass {
530
+ /** Rule ID */
531
+ ruleId: string;
532
+ /** Rule description */
533
+ description: string;
534
+ /** Elements that passed */
535
+ nodes: AccessibilityNode[];
536
+ }
537
+ /**
538
+ * Incomplete accessibility check.
539
+ */
540
+ export interface AccessibilityIncomplete {
541
+ /** Rule ID */
542
+ ruleId: string;
543
+ /** What needs manual review */
544
+ description: string;
545
+ /** Elements to review */
546
+ nodes: AccessibilityNode[];
547
+ }
548
+ /**
549
+ * Affected DOM node.
550
+ */
551
+ export interface AccessibilityNode {
552
+ /** Element selector */
553
+ selector: string;
554
+ /** Element HTML */
555
+ html: string;
556
+ /** Failure summary */
557
+ failureSummary?: string;
558
+ }
559
+ /**
560
+ * Locale identifier (BCP 47).
561
+ */
562
+ export type LocaleCode = string;
563
+ /**
564
+ * Text direction.
565
+ */
566
+ export type TextDirection = 'ltr' | 'rtl' | 'auto';
567
+ /**
568
+ * I18n configuration.
569
+ */
570
+ export interface I18nConfig {
571
+ /** Default locale */
572
+ defaultLocale: LocaleCode;
573
+ /** Supported locales */
574
+ supportedLocales: LocaleCode[];
575
+ /** Fallback locale */
576
+ fallbackLocale: LocaleCode;
577
+ /** Enable RTL support */
578
+ rtlSupport: boolean;
579
+ /** RTL locales */
580
+ rtlLocales: LocaleCode[];
581
+ /** Load locale on demand */
582
+ lazyLoading: boolean;
583
+ /** Translation file format */
584
+ format: 'json' | 'yaml' | 'po' | 'xliff';
585
+ /** Missing translation handling */
586
+ missingTranslation: 'warn' | 'error' | 'fallback' | 'key';
587
+ /** Enable pluralization */
588
+ pluralization: boolean;
589
+ /** Enable gender agreement */
590
+ genderAgreement: boolean;
591
+ /** Date/time format configuration */
592
+ dateTimeFormats: Record<LocaleCode, DateTimeFormats>;
593
+ /** Number format configuration */
594
+ numberFormats: Record<LocaleCode, NumberFormats>;
595
+ }
596
+ /**
597
+ * Date/time format presets.
598
+ */
599
+ export interface DateTimeFormats {
600
+ /** Short date format */
601
+ short: Intl.DateTimeFormatOptions;
602
+ /** Medium date format */
603
+ medium: Intl.DateTimeFormatOptions;
604
+ /** Long date format */
605
+ long: Intl.DateTimeFormatOptions;
606
+ /** Full date format */
607
+ full: Intl.DateTimeFormatOptions;
608
+ /** Time only format */
609
+ time: Intl.DateTimeFormatOptions;
610
+ /** DateTime format */
611
+ datetime: Intl.DateTimeFormatOptions;
612
+ /** Relative time format */
613
+ relative: Intl.RelativeTimeFormatOptions;
614
+ }
615
+ /**
616
+ * Date formatting configuration.
617
+ */
618
+ export interface DateFormatConfig {
619
+ /** Locale for formatting */
620
+ locale: LocaleCode;
621
+ /** Calendar system */
622
+ calendar: CalendarSystem;
623
+ /** Timezone */
624
+ timezone: string;
625
+ /** Hour cycle (12 or 24) */
626
+ hourCycle: 'h11' | 'h12' | 'h23' | 'h24';
627
+ /** Week starts on */
628
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
629
+ }
630
+ /**
631
+ * Supported calendar systems.
632
+ */
633
+ export type CalendarSystem = 'gregory' | 'buddhist' | 'chinese' | 'coptic' | 'ethiopic' | 'hebrew' | 'indian' | 'islamic' | 'islamic-civil' | 'islamic-rgsa' | 'islamic-tbla' | 'islamic-umalqura' | 'japanese' | 'persian' | 'roc';
634
+ /**
635
+ * Relative time formatting result.
636
+ */
637
+ export interface RelativeTimeResult {
638
+ /** Formatted string */
639
+ formatted: string;
640
+ /** Unit used */
641
+ unit: Intl.RelativeTimeFormatUnit;
642
+ /** Numeric value */
643
+ value: number;
644
+ /** Whether time is in past */
645
+ isPast: boolean;
646
+ }
647
+ /**
648
+ * Number format presets.
649
+ */
650
+ export interface NumberFormats {
651
+ /** Decimal format */
652
+ decimal: Intl.NumberFormatOptions;
653
+ /** Currency format */
654
+ currency: CurrencyFormatOptions;
655
+ /** Percent format */
656
+ percent: Intl.NumberFormatOptions;
657
+ /** Compact format (1K, 1M) */
658
+ compact: Intl.NumberFormatOptions;
659
+ /** Scientific format */
660
+ scientific: Intl.NumberFormatOptions;
661
+ /** Unit format */
662
+ unit: UnitFormatOptions;
663
+ }
664
+ /**
665
+ * Currency format options.
666
+ */
667
+ export interface CurrencyFormatOptions extends Intl.NumberFormatOptions {
668
+ /** Currency code (ISO 4217) */
669
+ currency: string;
670
+ /** Currency display style */
671
+ currencyDisplay?: 'symbol' | 'narrowSymbol' | 'code' | 'name';
672
+ /** Accounting format for negative values */
673
+ currencySign?: 'standard' | 'accounting';
674
+ }
675
+ /**
676
+ * Unit format options.
677
+ */
678
+ export interface UnitFormatOptions extends Intl.NumberFormatOptions {
679
+ /** Unit to display */
680
+ unit: string;
681
+ /** Unit display style */
682
+ unitDisplay?: 'short' | 'narrow' | 'long';
683
+ }
684
+ /**
685
+ * Common currency codes.
686
+ */
687
+ export type CurrencyCode = 'USD' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'CHF' | 'CAD' | 'AUD' | 'NZD' | 'SEK' | 'NOK' | 'DKK' | 'PLN' | 'CZK' | 'HUF' | 'RON' | 'BGN' | 'HRK' | 'RUB' | 'UAH' | 'TRY' | 'BRL' | 'MXN' | 'ARS' | 'INR' | 'KRW' | 'SGD' | 'HKD' | 'TWD' | 'THB' | 'MYR' | 'IDR' | 'PHP' | 'VND' | 'ZAR' | 'EGP' | 'SAR' | 'AED' | 'ILS' | 'NGN' | string;
688
+ /**
689
+ * Plural categories (CLDR).
690
+ */
691
+ export type PluralCategory = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
692
+ /**
693
+ * Plural rule function type.
694
+ */
695
+ export type PluralRuleFunction = (n: number, ord?: boolean) => PluralCategory;
696
+ /**
697
+ * Plural rules configuration.
698
+ */
699
+ export interface PluralRules {
700
+ /** Locale */
701
+ locale: LocaleCode;
702
+ /** Cardinal plural rules */
703
+ cardinal: PluralRuleFunction;
704
+ /** Ordinal plural rules */
705
+ ordinal: PluralRuleFunction;
706
+ /** Plural categories used by this locale */
707
+ categories: PluralCategory[];
708
+ /** Ordinal categories used by this locale */
709
+ ordinalCategories: PluralCategory[];
710
+ }
711
+ /**
712
+ * Pluralized message.
713
+ */
714
+ export interface PluralMessage {
715
+ /** Message for zero */
716
+ zero?: string;
717
+ /** Message for one */
718
+ one?: string;
719
+ /** Message for two (Arabic, Hebrew) */
720
+ two?: string;
721
+ /** Message for few (Slavic languages) */
722
+ few?: string;
723
+ /** Message for many (Slavic languages) */
724
+ many?: string;
725
+ /** Message for other (required) */
726
+ other: string;
727
+ }
728
+ /**
729
+ * Grammatical gender.
730
+ */
731
+ export type GrammaticalGender = 'masculine' | 'feminine' | 'neuter' | 'common' | 'animate' | 'inanimate';
732
+ /**
733
+ * Gender-aware message.
734
+ */
735
+ export interface GenderedMessage {
736
+ /** Message for masculine */
737
+ masculine?: string;
738
+ /** Message for feminine */
739
+ feminine?: string;
740
+ /** Message for neuter */
741
+ neuter?: string;
742
+ /** Message for unknown/common gender */
743
+ other: string;
744
+ }
745
+ /**
746
+ * Combined plural and gender message.
747
+ */
748
+ export interface PluralGenderedMessage {
749
+ /** Messages by gender, then by plural */
750
+ [gender: string]: PluralMessage;
751
+ }
752
+ /**
753
+ * Translation entry.
754
+ */
755
+ export interface TranslationEntry {
756
+ /** Translation key */
757
+ key: string;
758
+ /** Source text */
759
+ source: string;
760
+ /** Translated text */
761
+ translation: string;
762
+ /** Context for translators */
763
+ context?: string;
764
+ /** Translator notes */
765
+ notes?: string;
766
+ /** Whether entry is reviewed */
767
+ reviewed: boolean;
768
+ /** Last modified timestamp */
769
+ lastModified: string;
770
+ /** Last modified by */
771
+ modifiedBy?: string;
772
+ /** Plural forms */
773
+ plurals?: PluralMessage;
774
+ /** Gender forms */
775
+ genders?: GenderedMessage;
776
+ }
777
+ /**
778
+ * Translation namespace/file.
779
+ */
780
+ export interface TranslationNamespace {
781
+ /** Namespace name */
782
+ name: string;
783
+ /** Locale code */
784
+ locale: LocaleCode;
785
+ /** Translations in this namespace */
786
+ translations: Record<string, TranslationEntry | string | PluralMessage>;
787
+ /** Namespace version */
788
+ version: string;
789
+ /** Last updated */
790
+ lastUpdated: string;
791
+ }
792
+ /**
793
+ * Translation Management System (TMS) integration.
794
+ */
795
+ export interface TMSIntegration {
796
+ /** TMS provider */
797
+ provider: 'crowdin' | 'lokalise' | 'phrase' | 'transifex' | 'weblate' | 'custom';
798
+ /** API endpoint */
799
+ apiEndpoint?: string;
800
+ /** API key (should be from env) */
801
+ apiKey?: string;
802
+ /** Project ID */
803
+ projectId: string;
804
+ /** Sync direction */
805
+ syncDirection: 'push' | 'pull' | 'both';
806
+ /** Auto-sync on build */
807
+ autoSync: boolean;
808
+ }
809
+ /**
810
+ * Translation memory entry.
811
+ */
812
+ export interface TranslationMemoryEntry {
813
+ /** Source text */
814
+ source: string;
815
+ /** Source locale */
816
+ sourceLocale: LocaleCode;
817
+ /** Target text */
818
+ target: string;
819
+ /** Target locale */
820
+ targetLocale: LocaleCode;
821
+ /** Similarity score (0-100) */
822
+ similarity: number;
823
+ /** Context */
824
+ context?: string;
825
+ /** Usage count */
826
+ usageCount: number;
827
+ }
828
+ /**
829
+ * RTL layout configuration.
830
+ */
831
+ export interface RTLConfig {
832
+ /** Current direction */
833
+ direction: TextDirection;
834
+ /** Flip icons in RTL */
835
+ flipIcons: boolean;
836
+ /** Icons to exclude from flipping */
837
+ excludeIcons: string[];
838
+ /** Flip animations */
839
+ flipAnimations: boolean;
840
+ /** Use logical properties (start/end vs left/right) */
841
+ useLogicalProperties: boolean;
842
+ /** Mirror entire layout */
843
+ mirrorLayout: boolean;
844
+ }
845
+ /**
846
+ * Bidirectional text handling.
847
+ */
848
+ export interface BidiConfig {
849
+ /** Enable bidirectional text support */
850
+ enabled: boolean;
851
+ /** Default text direction */
852
+ defaultDirection: TextDirection;
853
+ /** Isolate mixed direction text */
854
+ isolateMixed: boolean;
855
+ /** Override algorithm for specific elements */
856
+ overrides?: Record<string, TextDirection>;
857
+ }
858
+ /**
859
+ * Timezone configuration.
860
+ */
861
+ export interface TimezoneConfig {
862
+ /** User's timezone */
863
+ userTimezone: string;
864
+ /** Server/default timezone */
865
+ serverTimezone: string;
866
+ /** Display format */
867
+ displayFormat: 'local' | 'utc' | 'both';
868
+ /** Auto-detect timezone */
869
+ autoDetect: boolean;
870
+ /** Show timezone abbreviation */
871
+ showAbbreviation: boolean;
872
+ }
873
+ /**
874
+ * Timezone info.
875
+ */
876
+ export interface TimezoneInfo {
877
+ /** IANA timezone ID */
878
+ id: string;
879
+ /** Display name */
880
+ displayName: string;
881
+ /** UTC offset in minutes */
882
+ offsetMinutes: number;
883
+ /** UTC offset string (e.g., "+02:00") */
884
+ offsetString: string;
885
+ /** Abbreviation (e.g., "CET", "EST") */
886
+ abbreviation: string;
887
+ /** Whether DST is currently active */
888
+ isDST: boolean;
889
+ }
890
+ /**
891
+ * Pseudo-localization configuration for testing.
892
+ */
893
+ export interface PseudoLocalizationConfig {
894
+ /** Enable pseudo-localization */
895
+ enabled: boolean;
896
+ /** Pseudo-locale code */
897
+ pseudoLocale: string;
898
+ /** Expansion factor (1.3 = 30% longer) */
899
+ expansionFactor: number;
900
+ /** Use accented characters */
901
+ accented: boolean;
902
+ /** Add brackets around strings */
903
+ brackets: boolean;
904
+ /** Bracket style */
905
+ bracketStyle: '[{text}]' | '「{text}」' | '《{text}》';
906
+ /** Simulate RTL */
907
+ simulateRtl: boolean;
908
+ /** Exclamation marks at start */
909
+ exclamation: boolean;
910
+ }
911
+ /**
912
+ * Locale detection configuration.
913
+ */
914
+ export interface LocaleDetectionConfig {
915
+ /** Detection order */
916
+ order: LocaleDetectionSource[];
917
+ /** Default if detection fails */
918
+ fallback: LocaleCode;
919
+ /** Cache detected locale */
920
+ cache: boolean;
921
+ /** Cache key (localStorage/cookie) */
922
+ cacheKey: string;
923
+ /** Accept partial matches (e.g., 'en' for 'en-US') */
924
+ partialMatch: boolean;
925
+ }
926
+ /**
927
+ * Sources for locale detection.
928
+ */
929
+ export type LocaleDetectionSource = 'querystring' | 'cookie' | 'localStorage' | 'sessionStorage' | 'navigator' | 'header' | 'path' | 'subdomain' | 'custom';
930
+ /**
931
+ * useTranslation hook options.
932
+ */
933
+ export interface UseTranslationOptions {
934
+ /** Namespace to use */
935
+ namespace?: string | string[];
936
+ /** Key prefix */
937
+ keyPrefix?: string;
938
+ /** Fallback namespace */
939
+ fallbackNS?: string;
940
+ /** Use suspense for loading */
941
+ useSuspense?: boolean;
942
+ }
943
+ /**
944
+ * useTranslation hook return type.
945
+ */
946
+ export interface UseTranslationResult {
947
+ /** Translation function */
948
+ t: TranslationFunction;
949
+ /** Current locale */
950
+ locale: LocaleCode;
951
+ /** Available locales */
952
+ locales: LocaleCode[];
953
+ /** Change locale */
954
+ changeLocale: (locale: LocaleCode) => Promise<void>;
955
+ /** Whether translations are loading */
956
+ isLoading: boolean;
957
+ /** Current direction */
958
+ dir: TextDirection;
959
+ }
960
+ /**
961
+ * Translation function type.
962
+ */
963
+ export type TranslationFunction = {
964
+ /** Simple translation */
965
+ (key: string): string;
966
+ /** Translation with interpolation */
967
+ (key: string, values: Record<string, unknown>): string;
968
+ /** Translation with count for pluralization */
969
+ (key: string, options: {
970
+ count: number;
971
+ [key: string]: unknown;
972
+ }): string;
973
+ /** Translation with context */
974
+ (key: string, options: {
975
+ context: string;
976
+ [key: string]: unknown;
977
+ }): string;
978
+ };
979
+ /**
980
+ * I18n provider props.
981
+ */
982
+ export interface I18nProviderProps {
983
+ /** I18n configuration */
984
+ config: I18nConfig;
985
+ /** Initial locale */
986
+ initialLocale?: LocaleCode;
987
+ /** Children */
988
+ children: React.ReactNode;
989
+ /** On locale change callback */
990
+ onLocaleChange?: (locale: LocaleCode) => void;
991
+ }
992
+ /**
993
+ * Full accessibility and i18n configuration.
994
+ */
995
+ export interface A11yI18nConfig {
996
+ /** Accessibility configuration */
997
+ accessibility: AccessibilityConfig;
998
+ /** I18n configuration */
999
+ i18n: I18nConfig;
1000
+ /** Screen reader adjustments per locale */
1001
+ localeScreenReaderAdjustments?: Record<LocaleCode, ScreenReaderHints>;
1002
+ /** Locale-specific keyboard shortcuts */
1003
+ localeKeyboardShortcuts?: Record<LocaleCode, KeyboardShortcut[]>;
1004
+ }
1005
+ /**
1006
+ * Default accessibility configuration.
1007
+ */
1008
+ export declare const DEFAULT_ACCESSIBILITY_CONFIG: AccessibilityConfig;
1009
+ /**
1010
+ * Common supported locales.
1011
+ */
1012
+ export declare const COMMON_LOCALES: LocaleCode[];
1013
+ /**
1014
+ * RTL locales.
1015
+ */
1016
+ export declare const RTL_LOCALES: LocaleCode[];
1017
+ //# sourceMappingURL=accessibility-i18n.d.ts.map