@asafarim/shared-i18n 0.6.6 → 0.8.0

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 (80) hide show
  1. package/demo/dist/Icon Dropdown_Limited Languages.png +0 -0
  2. package/demo/dist/Select Dropdown_Text Only.png +0 -0
  3. package/demo/dist/assets/favicon-BZYZvBLo.svg +4 -0
  4. package/demo/dist/assets/index-BdjqKw_N.css +1 -0
  5. package/demo/dist/assets/index-C1Tq1uEr.js +191 -0
  6. package/demo/dist/favicon.svg +4 -0
  7. package/demo/dist/index.html +27 -0
  8. package/demo/dist/logo.svg +24 -0
  9. package/demo/node_modules/.bin/browserslist +21 -0
  10. package/demo/node_modules/.bin/browserslist.CMD +12 -0
  11. package/demo/node_modules/.bin/browserslist.ps1 +41 -0
  12. package/demo/node_modules/.bin/tsc +4 -4
  13. package/demo/node_modules/.bin/tsc.CMD +12 -0
  14. package/demo/node_modules/.bin/tsc.ps1 +41 -0
  15. package/demo/node_modules/.bin/tsserver +4 -4
  16. package/demo/node_modules/.bin/tsserver.CMD +12 -0
  17. package/demo/node_modules/.bin/tsserver.ps1 +41 -0
  18. package/demo/node_modules/.bin/vite +4 -4
  19. package/demo/node_modules/.bin/vite.CMD +12 -0
  20. package/demo/node_modules/.bin/vite.ps1 +41 -0
  21. package/demo/node_modules/.vite/deps/@asafarim_country-language-selector.js +848 -0
  22. package/demo/node_modules/.vite/deps/@asafarim_country-language-selector.js.map +7 -0
  23. package/demo/node_modules/.vite/deps/_metadata.json +76 -0
  24. package/demo/node_modules/.vite/deps/chunk-5WRI5ZAA.js +30 -0
  25. package/demo/node_modules/.vite/deps/chunk-5WRI5ZAA.js.map +7 -0
  26. package/demo/node_modules/.vite/deps/chunk-B3AHR5EX.js +1004 -0
  27. package/demo/node_modules/.vite/deps/chunk-B3AHR5EX.js.map +7 -0
  28. package/demo/node_modules/.vite/deps/chunk-E6BG6WAU.js +292 -0
  29. package/demo/node_modules/.vite/deps/chunk-E6BG6WAU.js.map +7 -0
  30. package/demo/node_modules/.vite/deps/chunk-MVARZQEG.js +280 -0
  31. package/demo/node_modules/.vite/deps/chunk-MVARZQEG.js.map +7 -0
  32. package/demo/node_modules/.vite/deps/i18next-browser-languagedetector.js +400 -0
  33. package/demo/node_modules/.vite/deps/i18next-browser-languagedetector.js.map +7 -0
  34. package/demo/node_modules/.vite/deps/i18next.js +2392 -0
  35. package/demo/node_modules/.vite/deps/i18next.js.map +7 -0
  36. package/demo/node_modules/.vite/deps/package.json +3 -0
  37. package/demo/node_modules/.vite/deps/react-dom.js +6 -0
  38. package/demo/node_modules/.vite/deps/react-dom.js.map +7 -0
  39. package/demo/node_modules/.vite/deps/react-dom_client.js +20217 -0
  40. package/demo/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  41. package/demo/node_modules/.vite/deps/react-i18next.js +869 -0
  42. package/demo/node_modules/.vite/deps/react-i18next.js.map +7 -0
  43. package/demo/node_modules/.vite/deps/react.js +5 -0
  44. package/demo/node_modules/.vite/deps/react.js.map +7 -0
  45. package/demo/node_modules/.vite/deps/react_jsx-dev-runtime.js +278 -0
  46. package/demo/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  47. package/demo/node_modules/.vite/deps/react_jsx-runtime.js +6 -0
  48. package/demo/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  49. package/demo/package.json +27 -24
  50. package/demo/public/favicon.svg +4 -4
  51. package/demo/public/logo.svg +24 -24
  52. package/demo/src/App.tsx +129 -116
  53. package/demo/src/components/CountryLanguageDemo.tsx +140 -0
  54. package/demo/src/components/GetStartedSection.tsx +56 -56
  55. package/demo/src/components/KeyTable.tsx +29 -29
  56. package/demo/src/components/LanguageBar.tsx +102 -18
  57. package/demo/src/components/LanguageSwitcherDemo.module.css +114 -113
  58. package/demo/src/components/LanguageSwitcherDemo.tsx +256 -202
  59. package/demo/src/components/Logo.tsx +6 -6
  60. package/demo/src/components/OverviewSection.tsx +43 -43
  61. package/demo/src/components/Panel.tsx +15 -15
  62. package/demo/src/components/StatusCard.tsx +109 -109
  63. package/demo/src/index.css +644 -605
  64. package/demo/src/locales/de/demo.json +85 -0
  65. package/demo/src/locales/en/demo.json +85 -85
  66. package/demo/src/locales/fr/demo.json +85 -85
  67. package/demo/src/locales/it/demo.json +85 -0
  68. package/demo/src/locales/nl/demo.json +85 -85
  69. package/demo/src/main.tsx +29 -24
  70. package/demo/tsconfig.json +18 -18
  71. package/demo/tsconfig.node.json +10 -10
  72. package/demo/tsconfig.tsbuildinfo +1 -1
  73. package/demo/vite-env.d.ts +7 -7
  74. package/demo/vite.config.d.ts +2 -2
  75. package/demo/vite.config.js +10 -10
  76. package/dist/components/LanguageSwitcher.module.css +303 -303
  77. package/dist/locales/de/common.json +68 -0
  78. package/dist/locales/it/common.json +68 -0
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +85 -84
@@ -1,303 +1,303 @@
1
- @import "@asafarim/design-tokens/css";
2
-
3
- .switcher {
4
- display: flex;
5
- gap: var(--asm-space-2);
6
- flex-wrap: wrap;
7
- align-items: center;
8
- }
9
-
10
- .switcher button {
11
- padding: var(--asm-space-2) var(--asm-space-4);
12
- border: 1px solid var(--asm-color-border);
13
- background: var(--asm-color-surface);
14
- border-radius: var(--asm-radius-md);
15
- cursor: pointer;
16
- font-size: var(--asm-font-size-sm);
17
- font-weight: 500;
18
- transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
19
- display: flex;
20
- align-items: center;
21
- gap: var(--asm-space-2);
22
- min-width: 2.5rem;
23
- justify-content: center;
24
- color: var(--asm-color-text);
25
- white-space: nowrap;
26
- }
27
-
28
- .switcher button:hover:not(:disabled) {
29
- background: var(--asm-color-primary-600);
30
- color: var(--asm-color-bg);
31
- border-color: var(--asm-color-primary-600);
32
- box-shadow: var(--asm-effect-shadow-sm);
33
- }
34
-
35
- .switcher button:disabled {
36
- opacity: 0.5;
37
- cursor: not-allowed;
38
- }
39
-
40
- .switcher button.active {
41
- background: var(--asm-color-primary-600);
42
- color: var(--asm-color-bg);
43
- border-color: var(--asm-color-primary-600);
44
- box-shadow: var(--asm-effect-shadow-md);
45
- }
46
-
47
- .switcher button.active:hover:not(:disabled) {
48
- background: var(--asm-color-primary-700);
49
- border-color: var(--asm-color-primary-700);
50
- box-shadow: var(--asm-effect-shadow-lg);
51
- }
52
-
53
- .switcher select {
54
- padding: var(--asm-space-2) calc(var(--asm-space-4) * 2) var(--asm-space-2) var(--asm-space-3);
55
- border: 1px solid var(--asm-color-border);
56
- background: var(--asm-color-surface);
57
- border-radius: var(--asm-radius-md);
58
- cursor: pointer;
59
- font-size: var(--asm-font-size-sm);
60
- font-weight: 500;
61
- appearance: none;
62
- color: var(--asm-color-text);
63
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
64
- background-repeat: no-repeat;
65
- background-position: right var(--asm-space-3) center;
66
- transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
67
- white-space: nowrap;
68
- }
69
-
70
- .switcher select:hover:not(:disabled) {
71
- border-color: var(--asm-color-primary-600);
72
- background-color: var(--asm-color-surface-muted);
73
- box-shadow: var(--asm-effect-shadow-sm);
74
- }
75
-
76
- .switcher select:disabled {
77
- opacity: 0.5;
78
- cursor: not-allowed;
79
- }
80
-
81
- .iconDropdownContainer {
82
- position: relative;
83
- display: inline-block;
84
- }
85
-
86
- .iconDropdownButton {
87
- padding: 0;
88
- border: 1px solid var(--asm-color-border);
89
- background: var(--asm-color-surface);
90
- border-radius: var(--asm-radius-md);
91
- cursor: pointer;
92
- font-size: 1.25rem;
93
- color: var(--asm-color-text);
94
- width: 2.75rem;
95
- height: 2.75rem;
96
- display: flex;
97
- align-items: center;
98
- justify-content: center;
99
- transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
100
- flex-shrink: 0;
101
- flex-wrap: nowrap;
102
- white-space: nowrap;
103
- }
104
-
105
- .iconDropdownButtonWithLabel {
106
- width: auto;
107
- height: auto;
108
- min-height: 2.75rem;
109
- padding: var(--asm-space-2) var(--asm-space-3);
110
- gap: var(--asm-space-2);
111
- flex-wrap: nowrap;
112
- min-width: auto;
113
- display: inline-flex;
114
- align-items: center;
115
- white-space: nowrap;
116
- }
117
-
118
- .iconDropdownFlag {
119
- display: inline-flex;
120
- align-items: center;
121
- justify-content: center;
122
- flex: 0 0 auto;
123
- white-space: nowrap;
124
- line-height: 1;
125
- width: auto;
126
- font-size: var(--asm-font-size-md);
127
- }
128
-
129
- .iconDropdownButtonContent {
130
- display: inline-flex;
131
- align-items: center;
132
- flex-direction: row;
133
- flex-wrap: nowrap;
134
- white-space: nowrap;
135
- gap: var(--asm-space-2);
136
- line-height: 1;
137
- }
138
-
139
- .iconDropdownLabel {
140
- font-size: var(--asm-font-size-sm);
141
- font-weight: 500;
142
- white-space: nowrap;
143
- overflow: hidden;
144
- text-overflow: ellipsis;
145
- min-width: 0;
146
- max-width: 10rem;
147
- }
148
-
149
- .iconDropdownButton:hover:not(:disabled) {
150
- border-color: var(--asm-color-primary-600);
151
- background: var(--asm-color-surface-muted);
152
- box-shadow: var(--asm-effect-shadow-sm);
153
- }
154
-
155
- .iconDropdownButton:disabled {
156
- opacity: 0.5;
157
- cursor: not-allowed;
158
- }
159
-
160
- /* HARD OVERRIDES: some global CSS is likely setting buttons to column layout */
161
- .iconDropdownButton,
162
- .iconDropdownButtonWithLabel,
163
- .iconDropdownButtonContent {
164
- flex-direction: row !important;
165
- flex-wrap: nowrap !important;
166
- white-space: nowrap !important;
167
- align-items: center !important;
168
- }
169
-
170
- /* ensure the labeled button is not centering like an icon-only button */
171
- .iconDropdownButtonWithLabel {
172
- justify-content: flex-start !important;
173
- }
174
-
175
- /* keep the flag from behaving like a full-width block */
176
- .iconDropdownFlag {
177
- display: inline-flex !important;
178
- flex: 0 0 auto !important;
179
- width: auto !important;
180
- max-width: none !important;
181
- }
182
-
183
- /* allow the label to shrink without forcing a new line */
184
- .iconDropdownLabel {
185
- display: inline-block !important;
186
- min-width: 0 !important;
187
- }
188
-
189
- .iconDropdownButtonWithLabel * {
190
- max-width: none !important;
191
- }
192
-
193
- .iconDropdownButtonContent > * {
194
- width: auto !important;
195
- }
196
-
197
- .iconDropdownMenu {
198
- position: absolute;
199
- top: calc(100% + var(--asm-space-2));
200
- left: 0;
201
- background: var(--asm-color-surface);
202
- border: 1px solid var(--asm-color-border);
203
- border-radius: var(--asm-radius-md);
204
- box-shadow: var(--asm-effect-shadow-lg);
205
- z-index: 1000;
206
- min-width: 14rem;
207
- overflow: hidden;
208
- }
209
-
210
- .iconDropdownOption {
211
- display: flex;
212
- align-items: center;
213
- gap: var(--asm-space-2);
214
- width: 100%;
215
- padding: var(--asm-space-2) var(--asm-space-3);
216
- border: none;
217
- background: transparent;
218
- color: var(--asm-color-text);
219
- cursor: pointer;
220
- font-size: var(--asm-font-size-sm);
221
- font-weight: 500;
222
- text-align: left;
223
- transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
224
- white-space: nowrap;
225
- }
226
-
227
- .iconDropdownOption span {
228
- line-height: 1;
229
- display: inline-flex;
230
- align-items: center;
231
- white-space: nowrap;
232
- }
233
-
234
- .iconDropdownOption:hover:not(:disabled) {
235
- background: var(--asm-color-surface-muted);
236
- color: var(--asm-color-text);
237
- }
238
-
239
- .iconDropdownOption.active {
240
- background: var(--asm-color-primary-600);
241
- color: var(--asm-color-bg);
242
- }
243
-
244
- .iconDropdownOption.active:hover {
245
- background: var(--asm-color-primary-700);
246
- }
247
-
248
- .toggler {
249
- padding: var(--asm-space-2) var(--asm-space-4);
250
- border: 1px solid var(--asm-color-border);
251
- background: var(--asm-color-transparent);
252
- border-radius: var(--asm-radius-md);
253
- cursor: pointer;
254
- font-size: var(--asm-font-size-sm);
255
- font-weight: 500;
256
- transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
257
- display: flex;
258
- align-items: center;
259
- gap: var(--asm-space-2);
260
- color: var(--asm-color-text);
261
- white-space: nowrap;
262
- }
263
-
264
- .toggler:hover:not(:disabled) {
265
- background: var(--asm-color-primary-600);
266
- color: var(--asm-color-bg);
267
- border-color: var(--asm-color-primary-600);
268
- box-shadow: var(--asm-effect-shadow-sm);
269
- }
270
-
271
- .toggler:disabled {
272
- opacity: 0.5;
273
- cursor: not-allowed;
274
- }
275
-
276
- @media (max-width: 640px) {
277
- .switcher button {
278
- padding: var(--asm-space-1) var(--asm-space-3);
279
- font-size: var(--asm-font-size-xs);
280
- min-width: 2.25rem;
281
- }
282
-
283
- .switcher select {
284
- font-size: var(--asm-font-size-xs);
285
- }
286
-
287
- .toggler {
288
- padding: var(--asm-space-1) var(--asm-space-2);
289
- font-size: var(--asm-font-size-xs);
290
- }
291
-
292
- .togglerLabel {
293
- padding: var(--asm-space-1) var(--asm-space-1);
294
- }
295
-
296
- .iconDropdownButtonWithLabel {
297
- padding: var(--asm-space-1) var(--asm-space-2);
298
- }
299
-
300
- .iconDropdownLabel {
301
- font-size: var(--asm-font-size-xs);
302
- }
303
- }
1
+ @import "@asafarim/design-tokens/css";
2
+
3
+ .switcher {
4
+ display: flex;
5
+ gap: var(--asm-space-2);
6
+ flex-wrap: wrap;
7
+ align-items: center;
8
+ }
9
+
10
+ .switcher button {
11
+ padding: var(--asm-space-2) var(--asm-space-4);
12
+ border: 1px solid var(--asm-color-border);
13
+ background: var(--asm-color-surface);
14
+ border-radius: var(--asm-radius-md);
15
+ cursor: pointer;
16
+ font-size: var(--asm-font-size-sm);
17
+ font-weight: 500;
18
+ transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
19
+ display: flex;
20
+ align-items: center;
21
+ gap: var(--asm-space-2);
22
+ min-width: 2.5rem;
23
+ justify-content: center;
24
+ color: var(--asm-color-text);
25
+ white-space: nowrap;
26
+ }
27
+
28
+ .switcher button:hover:not(:disabled) {
29
+ background: var(--asm-color-primary-600);
30
+ color: var(--asm-color-bg);
31
+ border-color: var(--asm-color-primary-600);
32
+ box-shadow: var(--asm-effect-shadow-sm);
33
+ }
34
+
35
+ .switcher button:disabled {
36
+ opacity: 0.5;
37
+ cursor: not-allowed;
38
+ }
39
+
40
+ .switcher button.active {
41
+ background: var(--asm-color-primary-600);
42
+ color: var(--asm-color-bg);
43
+ border-color: var(--asm-color-primary-600);
44
+ box-shadow: var(--asm-effect-shadow-md);
45
+ }
46
+
47
+ .switcher button.active:hover:not(:disabled) {
48
+ background: var(--asm-color-primary-700);
49
+ border-color: var(--asm-color-primary-700);
50
+ box-shadow: var(--asm-effect-shadow-lg);
51
+ }
52
+
53
+ .switcher select {
54
+ padding: var(--asm-space-2) calc(var(--asm-space-4) * 2) var(--asm-space-2) var(--asm-space-3);
55
+ border: 1px solid var(--asm-color-border);
56
+ background: var(--asm-color-surface);
57
+ border-radius: var(--asm-radius-md);
58
+ cursor: pointer;
59
+ font-size: var(--asm-font-size-sm);
60
+ font-weight: 500;
61
+ appearance: none;
62
+ color: var(--asm-color-text);
63
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
64
+ background-repeat: no-repeat;
65
+ background-position: right var(--asm-space-3) center;
66
+ transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
67
+ white-space: nowrap;
68
+ }
69
+
70
+ .switcher select:hover:not(:disabled) {
71
+ border-color: var(--asm-color-primary-600);
72
+ background-color: var(--asm-color-surface-muted);
73
+ box-shadow: var(--asm-effect-shadow-sm);
74
+ }
75
+
76
+ .switcher select:disabled {
77
+ opacity: 0.5;
78
+ cursor: not-allowed;
79
+ }
80
+
81
+ .iconDropdownContainer {
82
+ position: relative;
83
+ display: inline-block;
84
+ }
85
+
86
+ .iconDropdownButton {
87
+ padding: 0;
88
+ border: 1px solid var(--asm-color-border);
89
+ background: var(--asm-color-surface);
90
+ border-radius: var(--asm-radius-md);
91
+ cursor: pointer;
92
+ font-size: 1.25rem;
93
+ color: var(--asm-color-text);
94
+ width: 2.75rem;
95
+ height: 2.75rem;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
100
+ flex-shrink: 0;
101
+ flex-wrap: nowrap;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ .iconDropdownButtonWithLabel {
106
+ width: auto;
107
+ height: auto;
108
+ min-height: 2.75rem;
109
+ padding: var(--asm-space-2) var(--asm-space-3);
110
+ gap: var(--asm-space-2);
111
+ flex-wrap: nowrap;
112
+ min-width: auto;
113
+ display: inline-flex;
114
+ align-items: center;
115
+ white-space: nowrap;
116
+ }
117
+
118
+ .iconDropdownFlag {
119
+ display: inline-flex;
120
+ align-items: center;
121
+ justify-content: center;
122
+ flex: 0 0 auto;
123
+ white-space: nowrap;
124
+ line-height: 1;
125
+ width: auto;
126
+ font-size: var(--asm-font-size-md);
127
+ }
128
+
129
+ .iconDropdownButtonContent {
130
+ display: inline-flex;
131
+ align-items: center;
132
+ flex-direction: row;
133
+ flex-wrap: nowrap;
134
+ white-space: nowrap;
135
+ gap: var(--asm-space-2);
136
+ line-height: 1;
137
+ }
138
+
139
+ .iconDropdownLabel {
140
+ font-size: var(--asm-font-size-sm);
141
+ font-weight: 500;
142
+ white-space: nowrap;
143
+ overflow: hidden;
144
+ text-overflow: ellipsis;
145
+ min-width: 0;
146
+ max-width: 10rem;
147
+ }
148
+
149
+ .iconDropdownButton:hover:not(:disabled) {
150
+ border-color: var(--asm-color-primary-600);
151
+ background: var(--asm-color-surface-muted);
152
+ box-shadow: var(--asm-effect-shadow-sm);
153
+ }
154
+
155
+ .iconDropdownButton:disabled {
156
+ opacity: 0.5;
157
+ cursor: not-allowed;
158
+ }
159
+
160
+ /* HARD OVERRIDES: some global CSS is likely setting buttons to column layout */
161
+ .iconDropdownButton,
162
+ .iconDropdownButtonWithLabel,
163
+ .iconDropdownButtonContent {
164
+ flex-direction: row !important;
165
+ flex-wrap: nowrap !important;
166
+ white-space: nowrap !important;
167
+ align-items: center !important;
168
+ }
169
+
170
+ /* ensure the labeled button is not centering like an icon-only button */
171
+ .iconDropdownButtonWithLabel {
172
+ justify-content: flex-start !important;
173
+ }
174
+
175
+ /* keep the flag from behaving like a full-width block */
176
+ .iconDropdownFlag {
177
+ display: inline-flex !important;
178
+ flex: 0 0 auto !important;
179
+ width: auto !important;
180
+ max-width: none !important;
181
+ }
182
+
183
+ /* allow the label to shrink without forcing a new line */
184
+ .iconDropdownLabel {
185
+ display: inline-block !important;
186
+ min-width: 0 !important;
187
+ }
188
+
189
+ .iconDropdownButtonWithLabel * {
190
+ max-width: none !important;
191
+ }
192
+
193
+ .iconDropdownButtonContent > * {
194
+ width: auto !important;
195
+ }
196
+
197
+ .iconDropdownMenu {
198
+ position: absolute;
199
+ top: calc(100% + var(--asm-space-2));
200
+ left: 0;
201
+ background: var(--asm-color-surface);
202
+ border: 1px solid var(--asm-color-border);
203
+ border-radius: var(--asm-radius-md);
204
+ box-shadow: var(--asm-effect-shadow-lg);
205
+ z-index: 1000;
206
+ min-width: 14rem;
207
+ overflow: hidden;
208
+ }
209
+
210
+ .iconDropdownOption {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: var(--asm-space-2);
214
+ width: 100%;
215
+ padding: var(--asm-space-2) var(--asm-space-3);
216
+ border: none;
217
+ background: transparent;
218
+ color: var(--asm-color-text);
219
+ cursor: pointer;
220
+ font-size: var(--asm-font-size-sm);
221
+ font-weight: 500;
222
+ text-align: left;
223
+ transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
224
+ white-space: nowrap;
225
+ }
226
+
227
+ .iconDropdownOption span {
228
+ line-height: 1;
229
+ display: inline-flex;
230
+ align-items: center;
231
+ white-space: nowrap;
232
+ }
233
+
234
+ .iconDropdownOption:hover:not(:disabled) {
235
+ background: var(--asm-color-surface-muted);
236
+ color: var(--asm-color-text);
237
+ }
238
+
239
+ .iconDropdownOption.active {
240
+ background: var(--asm-color-primary-600);
241
+ color: var(--asm-color-bg);
242
+ }
243
+
244
+ .iconDropdownOption.active:hover {
245
+ background: var(--asm-color-primary-700);
246
+ }
247
+
248
+ .toggler {
249
+ padding: var(--asm-space-2) var(--asm-space-4);
250
+ border: 1px solid var(--asm-color-border);
251
+ background: var(--asm-color-transparent);
252
+ border-radius: var(--asm-radius-md);
253
+ cursor: pointer;
254
+ font-size: var(--asm-font-size-sm);
255
+ font-weight: 500;
256
+ transition: all var(--asm-motion-duration-fast) var(--asm-motion-easing-standard);
257
+ display: flex;
258
+ align-items: center;
259
+ gap: var(--asm-space-2);
260
+ color: var(--asm-color-text);
261
+ white-space: nowrap;
262
+ }
263
+
264
+ .toggler:hover:not(:disabled) {
265
+ background: var(--asm-color-primary-600);
266
+ color: var(--asm-color-bg);
267
+ border-color: var(--asm-color-primary-600);
268
+ box-shadow: var(--asm-effect-shadow-sm);
269
+ }
270
+
271
+ .toggler:disabled {
272
+ opacity: 0.5;
273
+ cursor: not-allowed;
274
+ }
275
+
276
+ @media (max-width: 640px) {
277
+ .switcher button {
278
+ padding: var(--asm-space-1) var(--asm-space-3);
279
+ font-size: var(--asm-font-size-xs);
280
+ min-width: 2.25rem;
281
+ }
282
+
283
+ .switcher select {
284
+ font-size: var(--asm-font-size-xs);
285
+ }
286
+
287
+ .toggler {
288
+ padding: var(--asm-space-1) var(--asm-space-2);
289
+ font-size: var(--asm-font-size-xs);
290
+ }
291
+
292
+ .togglerLabel {
293
+ padding: var(--asm-space-1) var(--asm-space-1);
294
+ }
295
+
296
+ .iconDropdownButtonWithLabel {
297
+ padding: var(--asm-space-1) var(--asm-space-2);
298
+ }
299
+
300
+ .iconDropdownLabel {
301
+ font-size: var(--asm-font-size-xs);
302
+ }
303
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "welcome": "Willkommen",
3
+ "language": "Sprache",
4
+ "settings": "Einstellungen",
5
+ "profile": "Profil",
6
+ "logout": "Abmelden",
7
+ "login": "Anmelden",
8
+ "register": "Registrieren",
9
+ "email": "E-Mail",
10
+ "password": "Passwort",
11
+ "confirmPassword": "Passwort bestätigen",
12
+ "forgotPassword": "Passwort vergessen?",
13
+ "rememberMe": "Angemeldet bleiben",
14
+ "submit": "Absenden",
15
+ "cancel": "Abbrechen",
16
+ "save": "Speichern",
17
+ "delete": "Löschen",
18
+ "edit": "Bearbeiten",
19
+ "close": "Schließen",
20
+ "search": "Suchen",
21
+ "loading": "Lädt...",
22
+ "error": "Fehler",
23
+ "success": "Erfolg",
24
+ "warning": "Warnung",
25
+ "info": "Information",
26
+ "yes": "Ja",
27
+ "no": "Nein",
28
+ "back": "Zurück",
29
+ "next": "Weiter",
30
+ "previous": "Vorherige",
31
+ "home": "Startseite",
32
+ "about": "Über uns",
33
+ "contact": "Kontakt",
34
+ "services": "Dienstleistungen",
35
+ "blog": "Blog",
36
+ "careers": "Karriere",
37
+ "privacy": "Datenschutzrichtlinie",
38
+ "terms": "Nutzungsbedingungen",
39
+ "copyright": " ASafariM. Alle Rechte vorbehalten.",
40
+ "languageChanged": "Sprache erfolgreich geändert",
41
+ "preferencesSaved": "Einstellungen erfolgreich gespeichert",
42
+ "apps": {
43
+ "appName": {
44
+ "web": "ASafariM Web",
45
+ "blog": "Blog & Dokumentation",
46
+ "ai": "KI-Tools",
47
+ "core": "Kern-App",
48
+ "jobs": "Bewerbungen",
49
+ "identity": "Identitätsportal",
50
+ "testora": "Testora",
51
+ "taskmanagement": "Aufgabenverwaltung",
52
+ "smartops": "SmartOps",
53
+ "studynotes": "Lernnotizen"
54
+ },
55
+ "description": {
56
+ "web": "ASafariM Webportal",
57
+ "blog": "Dokumentation und Blog",
58
+ "ai": "KI-gestützte Tools und Dienstleistungen",
59
+ "core": "Kernanwendungsfunktionen",
60
+ "jobs": "Bewerbungsverfolgung",
61
+ "identity": "Benutzerverwaltung und Authentifizierung",
62
+ "testora": "Testautomatisierungssystem - Testora",
63
+ "taskmanagement": "Aufgabenverwaltung",
64
+ "smartops": "SmartOps",
65
+ "studynotes": "Lernnotizen"
66
+ }
67
+ }
68
+ }