@saasmakers/ui 0.2.2 → 1.0.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.
@@ -104,14 +104,23 @@ async function onClose(event: MouseEvent) {
104
104
 
105
105
  <i18n lang="json">
106
106
  {
107
+ "de": {
108
+ "closeThisMessage": "Diese Nachricht schließen"
109
+ },
107
110
  "en": {
108
111
  "closeThisMessage": "Close this message"
109
112
  },
113
+ "es": {
114
+ "closeThisMessage": "Cerrar este mensaje"
115
+ },
110
116
  "fr": {
111
117
  "closeThisMessage": "Fermer ce message"
112
118
  },
113
119
  "ja": {
114
120
  "closeThisMessage": "このメッセージを閉じる"
121
+ },
122
+ "ko": {
123
+ "closeThisMessage": "이 메시지 닫기"
115
124
  }
116
125
  }
117
126
  </i18n>
@@ -155,14 +155,23 @@ function onMouseLeave() {
155
155
 
156
156
  <i18n lang="json">
157
157
  {
158
+ "de": {
159
+ "edit": "Bearbeiten"
160
+ },
158
161
  "en": {
159
162
  "edit": "Edit"
160
163
  },
164
+ "es": {
165
+ "edit": "Editar"
166
+ },
161
167
  "fr": {
162
168
  "edit": "Modifier"
163
169
  },
164
170
  "ja": {
165
171
  "edit": "編集"
172
+ },
173
+ "ko": {
174
+ "edit": "편집"
166
175
  }
167
176
  }
168
177
  </i18n>
@@ -140,14 +140,23 @@ function onClick(event: MouseEvent) {
140
140
 
141
141
  <i18n lang="json">
142
142
  {
143
+ "de": {
144
+ "confirm": "Bestätigen"
145
+ },
143
146
  "en": {
144
147
  "confirm": "Confirm"
145
148
  },
149
+ "es": {
150
+ "confirm": "Confirmar"
151
+ },
146
152
  "fr": {
147
153
  "confirm": "Confirmer"
148
154
  },
149
155
  "ja": {
150
156
  "confirm": "確認"
157
+ },
158
+ "ko": {
159
+ "confirm": "확인"
151
160
  }
152
161
  }
153
162
  </i18n>
@@ -162,14 +162,23 @@ function onKeyDown(event: KeyboardEvent) {
162
162
 
163
163
  <i18n lang="json">
164
164
  {
165
+ "de": {
166
+ "confirm": "Bestätigen"
167
+ },
165
168
  "en": {
166
169
  "confirm": "Confirm"
167
170
  },
171
+ "es": {
172
+ "confirm": "Confirmar"
173
+ },
168
174
  "fr": {
169
175
  "confirm": "Confirmer"
170
176
  },
171
177
  "ja": {
172
178
  "confirm": "確認"
179
+ },
180
+ "ko": {
181
+ "confirm": "확인"
173
182
  }
174
183
  }
175
184
  </i18n>
@@ -159,14 +159,23 @@ function onClose(event: MouseEvent) {
159
159
 
160
160
  <i18n lang="json">
161
161
  {
162
+ "de": {
163
+ "close": "Schließen"
164
+ },
162
165
  "en": {
163
166
  "close": "Close"
164
167
  },
168
+ "es": {
169
+ "close": "Cerrar"
170
+ },
165
171
  "fr": {
166
172
  "close": "Fermer"
167
173
  },
168
174
  "ja": {
169
175
  "close": "閉じる"
176
+ },
177
+ "ko": {
178
+ "close": "닫기"
170
179
  }
171
180
  }
172
181
  </i18n>
@@ -223,11 +223,21 @@ function onUpdateTag(event: FocusEvent | KeyboardEvent, name: string, tagId?: nu
223
223
 
224
224
  <i18n lang="json">
225
225
  {
226
+ "de": {
227
+ "cancel": "Abbrechen",
228
+ "newTag": "Neues Tag",
229
+ "showMore": "& {value} weiteres | & {value} weitere"
230
+ },
226
231
  "en": {
227
232
  "cancel": "Cancel",
228
233
  "newTag": "New tag",
229
234
  "showMore": "& {value} other | & {value} others"
230
235
  },
236
+ "es": {
237
+ "cancel": "Cancelar",
238
+ "newTag": "Nueva etiqueta",
239
+ "showMore": "& {value} otro | & {value} otros"
240
+ },
231
241
  "fr": {
232
242
  "cancel": "Annuler",
233
243
  "newTag": "Nouveau tag",
@@ -237,6 +247,11 @@ function onUpdateTag(event: FocusEvent | KeyboardEvent, name: string, tagId?: nu
237
247
  "cancel": "キャンセル",
238
248
  "newTag": "新しいタグ",
239
249
  "showMore": "& {value} その他 | & {value} その他"
250
+ },
251
+ "ko": {
252
+ "cancel": "취소",
253
+ "newTag": "새 태그",
254
+ "showMore": "& {value}개 더 | & {value}개 더"
240
255
  }
241
256
  }
242
257
  </i18n>
@@ -144,14 +144,23 @@ function onShowMore() {
144
144
 
145
145
  <i18n lang="json">
146
146
  {
147
+ "de": {
148
+ "showMore": "(mehr anzeigen)"
149
+ },
147
150
  "en": {
148
151
  "showMore": "(show more)"
149
152
  },
153
+ "es": {
154
+ "showMore": "(mostrar más)"
155
+ },
150
156
  "fr": {
151
157
  "showMore": "(afficher)"
152
158
  },
153
159
  "ja": {
154
160
  "showMore": "(もっと見る)"
161
+ },
162
+ "ko": {
163
+ "showMore": "(더 보기)"
155
164
  }
156
165
  }
157
166
  </i18n>
@@ -82,6 +82,17 @@ function onUpdateDays(event: MouseEvent, day: number) {
82
82
 
83
83
  <i18n lang="json">
84
84
  {
85
+ "de": {
86
+ "days": {
87
+ "friday": "Freitag",
88
+ "monday": "Montag",
89
+ "saturday": "Samstag",
90
+ "sunday": "Sonntag",
91
+ "thursday": "Donnerstag",
92
+ "tuesday": "Dienstag",
93
+ "wednesday": "Mittwoch"
94
+ }
95
+ },
85
96
  "en": {
86
97
  "days": {
87
98
  "friday": "Friday",
@@ -93,6 +104,17 @@ function onUpdateDays(event: MouseEvent, day: number) {
93
104
  "wednesday": "Wednesday"
94
105
  }
95
106
  },
107
+ "es": {
108
+ "days": {
109
+ "friday": "Viernes",
110
+ "monday": "Lunes",
111
+ "saturday": "Sábado",
112
+ "sunday": "Domingo",
113
+ "thursday": "Jueves",
114
+ "tuesday": "Martes",
115
+ "wednesday": "Miércoles"
116
+ }
117
+ },
96
118
  "fr": {
97
119
  "days": {
98
120
  "friday": "Vendredi",
@@ -114,6 +136,17 @@ function onUpdateDays(event: MouseEvent, day: number) {
114
136
  "tuesday": "火曜日",
115
137
  "wednesday": "水曜日"
116
138
  }
139
+ },
140
+ "ko": {
141
+ "days": {
142
+ "friday": "금요일",
143
+ "monday": "월요일",
144
+ "saturday": "토요일",
145
+ "sunday": "일요일",
146
+ "thursday": "목요일",
147
+ "tuesday": "화요일",
148
+ "wednesday": "수요일"
149
+ }
117
150
  }
118
151
  }
119
152
  </i18n>
@@ -105,6 +105,21 @@ function onEmojiClick(event: MouseEvent, emoji?: string) {
105
105
 
106
106
  <i18n lang="json">
107
107
  {
108
+ "de": {
109
+ "categories": {
110
+ "activity": "Aktivität",
111
+ "diversity": "Hautfarben",
112
+ "flags": "Flaggen",
113
+ "food": "Essen & Trinken",
114
+ "nature": "Tiere & Natur",
115
+ "objects": "Objekte",
116
+ "people": "Smileys & Menschen",
117
+ "regional": "Regional",
118
+ "symbol": "Symbole",
119
+ "travel": "Reisen & Orte"
120
+ },
121
+ "searchEmoji": "Emoji suchen"
122
+ },
108
123
  "en": {
109
124
  "categories": {
110
125
  "activity": "Activity",
@@ -120,6 +135,21 @@ function onEmojiClick(event: MouseEvent, emoji?: string) {
120
135
  },
121
136
  "searchEmoji": "Search an emoji"
122
137
  },
138
+ "es": {
139
+ "categories": {
140
+ "activity": "Actividad",
141
+ "diversity": "Tonos de piel",
142
+ "flags": "Banderas",
143
+ "food": "Comida y bebida",
144
+ "nature": "Animales y naturaleza",
145
+ "objects": "Objetos",
146
+ "people": "Emoticonos y personas",
147
+ "regional": "Regional",
148
+ "symbol": "Símbolos",
149
+ "travel": "Viajes y lugares"
150
+ },
151
+ "searchEmoji": "Buscar un emoji"
152
+ },
123
153
  "fr": {
124
154
  "categories": {
125
155
  "activity": "Activité",
@@ -149,6 +179,21 @@ function onEmojiClick(event: MouseEvent, emoji?: string) {
149
179
  "travel": "旅行・場所"
150
180
  },
151
181
  "searchEmoji": "絵文字を検索 (英語)"
182
+ },
183
+ "ko": {
184
+ "categories": {
185
+ "activity": "액티비티",
186
+ "diversity": "피부색",
187
+ "flags": "깃발",
188
+ "food": "음식 & 음료",
189
+ "nature": "동물 & 자연",
190
+ "objects": "사물",
191
+ "people": "스마일 & 사람",
192
+ "regional": "지역",
193
+ "symbol": "기호",
194
+ "travel": "여행 & 장소"
195
+ },
196
+ "searchEmoji": "이모지 검색"
152
197
  }
153
198
  }
154
199
  </i18n>
@@ -117,6 +117,25 @@ const text = computed<BaseTextText>(() => {
117
117
 
118
118
  <i18n lang="json">
119
119
  {
120
+ "de": {
121
+ "alpha": "Der Wert akzeptiert nur Buchstaben",
122
+ "alphaNum": "Der Wert akzeptiert nur alphanumerische Zeichen",
123
+ "between": "Der Wert muss zwischen {min} und {max} liegen",
124
+ "decimal": "Der Wert akzeptiert nur positive und negative Dezimalzahlen",
125
+ "email": "Der Wert ist keine gültige E-Mail",
126
+ "integer": "Der Wert akzeptiert nur positive und negative Ganzzahlen",
127
+ "invalid": "Der Wert ist ungültig",
128
+ "ipAddress": "Der Wert akzeptiert nur eine gültige IPv4-Adresse",
129
+ "macAddress": "Der Wert akzeptiert nur eine gültige MAC-Adresse",
130
+ "maxLength": "Der Wert ist zu lang (max.: {max})",
131
+ "maxValue": "Maximaler Wert: {max}",
132
+ "minLength": "Der Wert ist zu kurz (min.: {min})",
133
+ "minValue": "Minimaler Wert: {min}",
134
+ "numeric": "Der Wert akzeptiert nur Zahlen",
135
+ "required": "Ein Wert ist erforderlich",
136
+ "sameAs": "Der Wert stimmt nicht überein: {field}",
137
+ "url": "Der Wert ist keine gültige URL"
138
+ },
120
139
  "en": {
121
140
  "alpha": "The value accepts only alphabet characters",
122
141
  "alphaNum": "The value accepts only alphanumerics",
@@ -136,6 +155,25 @@ const text = computed<BaseTextText>(() => {
136
155
  "sameAs": "The value does not match: {field}",
137
156
  "url": "The value is not a valid url"
138
157
  },
158
+ "es": {
159
+ "alpha": "El valor solo acepta caracteres alfabéticos",
160
+ "alphaNum": "El valor solo acepta caracteres alfanuméricos",
161
+ "between": "El valor debe estar entre {min} y {max}",
162
+ "decimal": "El valor solo acepta números decimales positivos y negativos",
163
+ "email": "El valor no es un correo válido",
164
+ "integer": "El valor solo acepta enteros positivos y negativos",
165
+ "invalid": "El valor no es válido",
166
+ "ipAddress": "El valor solo acepta una dirección IPv4 válida",
167
+ "macAddress": "El valor solo acepta una dirección MAC válida",
168
+ "maxLength": "El valor es demasiado largo (máx.: {max})",
169
+ "maxValue": "Valor máximo permitido: {max}",
170
+ "minLength": "El valor es demasiado corto (mín.: {min})",
171
+ "minValue": "Valor mínimo permitido: {min}",
172
+ "numeric": "El valor solo acepta números",
173
+ "required": "Se requiere un valor",
174
+ "sameAs": "El valor no coincide con: {field}",
175
+ "url": "El valor no es una URL válida"
176
+ },
139
177
  "fr": {
140
178
  "alpha": "La valeur n'accepte que les caractères alphabétiques",
141
179
  "alphaNum": "La valeur n'accepte que les alphanumériques",
@@ -173,6 +211,25 @@ const text = computed<BaseTextText>(() => {
173
211
  "required": "値は必須です",
174
212
  "sameAs": "値は一致しません: {field}",
175
213
  "url": "値は有効なURLではありません"
214
+ },
215
+ "ko": {
216
+ "alpha": "값은 알파벳만 허용됩니다",
217
+ "alphaNum": "값은 영문자와 숫자만 허용됩니다",
218
+ "between": "값은 {min}에서 {max} 사이여야 합니다",
219
+ "decimal": "값은 양수 및 음수 소수만 허용됩니다",
220
+ "email": "유효한 이메일이 아닙니다",
221
+ "integer": "값은 양수 및 음수 정수만 허용됩니다",
222
+ "invalid": "값이 유효하지 않습니다",
223
+ "ipAddress": "유효한 IPv4 주소만 허용됩니다",
224
+ "macAddress": "유효한 MAC 주소만 허용됩니다",
225
+ "maxLength": "값이 너무 깁니다 (최대: {max})",
226
+ "maxValue": "허용 최대값: {max}",
227
+ "minLength": "값이 너무 짧습니다 (최소: {min})",
228
+ "minValue": "허용 최소값: {min}",
229
+ "numeric": "값은 숫자만 허용됩니다",
230
+ "required": "값을 입력해 주세요",
231
+ "sameAs": "값이 일치하지 않습니다: {field}",
232
+ "url": "유효한 URL이 아닙니다"
176
233
  }
177
234
  }
178
235
  </i18n>
package/nuxt.config.ts CHANGED
@@ -71,7 +71,7 @@ export default defineNuxtConfig({
71
71
 
72
72
  i18n: {
73
73
  defaultLocale: 'en',
74
- locales: ['en', 'fr'],
74
+ locales: ['de', 'en', 'es', 'fr', 'ko'],
75
75
  strategy: 'prefix_except_default',
76
76
 
77
77
  detectBrowserLanguage: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saasmakers/ui",
3
- "version": "0.2.2",
3
+ "version": "1.0.0",
4
4
  "private": false,
5
5
  "description": "Reusable Nuxt UI components for SaaS Makers projects",
6
6
  "license": "MIT",
@@ -49,10 +49,10 @@
49
49
  "devDependencies": {
50
50
  "nuxt": "4.2.2",
51
51
  "typescript": "5.9.3",
52
- "@saasmakers/shared": "0.1.17"
52
+ "@saasmakers/shared": "0.2.0"
53
53
  },
54
54
  "peerDependencies": {
55
- "@saasmakers/shared": "^0.1.17",
55
+ "@saasmakers/shared": "^0.2.0",
56
56
  "nuxt": "4.2.2"
57
57
  },
58
58
  "publishConfig": {