@mundogamernetwork/shared-ui 1.1.64 → 1.1.67

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.
@@ -0,0 +1,161 @@
1
+ {
2
+ "keys": {
3
+ "notif_prompt_title": "Benachrichtigungen für neue Key-Kampagnen erhalten?",
4
+ "notif_prompt_desc": "Wir benachrichtigen Sie per E-Mail und Push, wenn eine neue Key-Kampagne startet.",
5
+ "notif_prompt_enable": "Aktivieren",
6
+ "notif_prompt_dismiss": "Jetzt nicht",
7
+ "browser": {
8
+ "tab_available": "Verfügbar",
9
+ "tab_mine": "Meine Anfragen",
10
+ "select_platform": "Plattform auswählen",
11
+ "description_label": "Warum verdienen Sie diesen Key?",
12
+ "description_placeholder": "z.B. Ich betreibe einen YouTube-Kanal mit 5.000 Abonnenten, der sich auf Spielerezensionen spezialisiert. Ich möchte eine vollständige Rezension für mein Publikum veröffentlichen.",
13
+ "request_btn": "Key anfordern",
14
+ "already_requested": "Anfrage gesendet",
15
+ "reveal_btn": "Key anzeigen",
16
+ "revealed": "Key angezeigt",
17
+ "pending_approval": "Wartet auf Genehmigung",
18
+ "login_required": "Anmelden, um diesen Key anzufordern",
19
+ "login_btn": "Anmelden",
20
+ "no_keys": "Derzeit keine Keys verfügbar",
21
+ "no_pools": "Keine aktiven Kampagnen",
22
+ "no_requests": "Sie haben noch keine Keys angefordert"
23
+ },
24
+ "campaigns": {
25
+ "title": "Key Campaigns",
26
+ "my_requests": "My Requests",
27
+ "all": "All",
28
+ "details": "Details",
29
+ "see_campaign": "See campaign",
30
+ "see_content": "See content",
31
+ "redeem": "Redeem",
32
+ "load_more": "Load more",
33
+ "no_results": "No campaigns found",
34
+ "days": "days",
35
+ "creators": "creators",
36
+ "upgrade_plan": "Upgrade plan",
37
+ "exclusive": "Exclusive",
38
+ "exclusive_upgrade": "Upgrade to access",
39
+ "exclusive_upgrade_cta": "Upgrade your plan to request this key",
40
+ "exclusive_lock_title": "Exclusive campaign",
41
+ "early_access": "Early access",
42
+ "early_access_lock_title": "Early access",
43
+ "early_access_opens_in": "Opens in",
44
+ "unavailable": "Unavailable",
45
+ "upcoming": "Coming soon",
46
+ "back": "Back",
47
+ "search_placeholder": "Search campaigns...",
48
+ "seo": {
49
+ "title_generic": "Key Campaigns"
50
+ },
51
+ "restriction": {
52
+ "exclusive_official": "Official streamers only",
53
+ "level_official": "Official",
54
+ "level_affiliate": "Affiliate"
55
+ },
56
+ "status_key": {
57
+ "see_key": "View key",
58
+ "of": "of",
59
+ "title_0": "Campaign",
60
+ "title_span_0": "ended",
61
+ "obs_0": "The redemption period for the key has expired.",
62
+ "title_1": "Now you need to",
63
+ "title_span_1": "redeem the key",
64
+ "obs_1": "Check the campaign requirements before requesting your key(s)",
65
+ "title_2": "Now just",
66
+ "title_span_2": "wait",
67
+ "obs_2": "Your request is being reviewed. After approval, you will receive a confirmation email.",
68
+ "title_approved": "Your request has been ",
69
+ "title_span_approved": "approved!",
70
+ "obs_approved": "Your key is ready. Click to reveal it.",
71
+ "reveal_key": "Reveal key",
72
+ "view_code": "View code",
73
+ "title_3": "Now you just need to",
74
+ "title_span_3": "send the material",
75
+ "title_3_2": "developed",
76
+ "obs_3": "You have 14 days to send the developed material",
77
+ "complete": "Completed",
78
+ "title_span_4": "Nice!",
79
+ "title_4": "If you have more materials, feel free to add them",
80
+ "obs_4": "If you want to add more, you still have 6 days to send it.",
81
+ "title_5": "Your request was",
82
+ "title_span_5": "rejected",
83
+ "obs_5": "Unfortunately, your key request was not approved. Please check the campaign requirements and try again in the future.",
84
+ "title_6": "Request",
85
+ "title_span_6": "cancelled",
86
+ "obs_6": "You canceled this request. If you want to try again, just start a new request according to the campaign rules.",
87
+ "title_7": "Request",
88
+ "title_span_7": "expired",
89
+ "obs_7": "The deadline for submitting the material or using the key has expired. Keep an eye on deadlines in future campaigns!",
90
+ "title_8": "Key",
91
+ "title_span_8": "revoked",
92
+ "obs_8": "Your key has been revoked by the administration. If you have any questions, contact support or review the campaign rules.",
93
+ "title_exhausted": "Keys",
94
+ "title_span_exhausted": "exhausted",
95
+ "obs_exhausted": "All keys for this campaign have already been distributed.",
96
+ "title_locked": "This campaign is",
97
+ "title_span_locked": "exclusive",
98
+ "obs_locked_exclusive": "Available only to higher tiers. Upgrade to take part.",
99
+ "obs_locked_early": "Your plan doesn't have access to this campaign yet. Upgrade to unlock.",
100
+ "obs_locked_tier": "Available only to {tier} plan subscribers or higher. Upgrade to take part.",
101
+ "title_level": "This campaign is for",
102
+ "title_span_level_official": "official streamers",
103
+ "title_span_level_affiliate": "affiliates",
104
+ "obs_level_official": "Available only to official MG streamers.",
105
+ "obs_level_affiliate": "Available only to affiliate creators (casting). Join the casting to take part."
106
+ },
107
+ "campaign": {
108
+ "available": "available",
109
+ "keys": "keys",
110
+ "start": "Start",
111
+ "end": "End",
112
+ "launch": "Launch",
113
+ "status": "Status",
114
+ "status_active": "Active",
115
+ "status_closed": "Closed",
116
+ "status_ending": "Ending soon",
117
+ "status_exhausted": "Keys exhausted",
118
+ "days": "days",
119
+ "hours": "hours",
120
+ "minutes": "min",
121
+ "seconds": "sec",
122
+ "days_hours": "days and hours",
123
+ "redeem": "Redeem key",
124
+ "actions": "Complementary actions",
125
+ "no_actions": "No actions configured",
126
+ "requirements": "Requirements",
127
+ "requirement": {
128
+ "all": "Open to all",
129
+ "official": "Official streamers",
130
+ "affiliate": "Affiliate or above"
131
+ },
132
+ "rp_label": "Redeemed by",
133
+ "who_redeem": "Who redeemed",
134
+ "created_by": "Published by",
135
+ "no_data": "Campaign not found"
136
+ }
137
+ },
138
+ "materials": {
139
+ "title": "Submit material",
140
+ "subtitle": "Send the link to your content about this game",
141
+ "back": "Back",
142
+ "link": "Content link",
143
+ "description": "Description (optional)",
144
+ "date": "Publication date",
145
+ "type": "Content type",
146
+ "type_stream": "Live stream",
147
+ "type_video": "Video",
148
+ "type_article": "Article / Review",
149
+ "type_web": "Website / Blog",
150
+ "type_print": "Screenshot / Print",
151
+ "required_fields": "Fill in all required fields",
152
+ "url_error": "Invalid URL",
153
+ "submit_error": "Error submitting. Try again.",
154
+ "sending": "Sending...",
155
+ "finish": "Submit",
156
+ "submitted_title": "Material submitted!",
157
+ "success_message": "Your material was sent for review. Thank you!",
158
+ "success_close": "Close"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "keys": {
3
+ "notif_prompt_title": "Get alerts for new key campaigns?",
4
+ "notif_prompt_desc": "We'll notify you by email and push whenever a new key campaign opens.",
5
+ "notif_prompt_enable": "Enable",
6
+ "notif_prompt_dismiss": "Not now",
7
+ "browser": {
8
+ "tab_available": "Available",
9
+ "tab_mine": "My requests",
10
+ "select_platform": "Select platform",
11
+ "description_label": "Why do you deserve this key?",
12
+ "description_placeholder": "E.g. I run a YouTube channel with 5k subscribers focused on game reviews. I'd like to publish a full review for my audience.",
13
+ "request_btn": "Request key",
14
+ "already_requested": "Request submitted",
15
+ "reveal_btn": "Reveal key",
16
+ "revealed": "Key revealed",
17
+ "pending_approval": "Awaiting approval",
18
+ "login_required": "Log in to request this key",
19
+ "login_btn": "Sign in",
20
+ "no_keys": "No keys available right now",
21
+ "no_pools": "No active campaigns",
22
+ "no_requests": "You haven't requested any keys yet"
23
+ },
24
+ "campaigns": {
25
+ "title": "Key Campaigns",
26
+ "my_requests": "My Requests",
27
+ "all": "All",
28
+ "details": "Details",
29
+ "see_campaign": "See campaign",
30
+ "see_content": "See content",
31
+ "redeem": "Redeem",
32
+ "load_more": "Load more",
33
+ "no_results": "No campaigns found",
34
+ "days": "days",
35
+ "creators": "creators",
36
+ "upgrade_plan": "Upgrade plan",
37
+ "exclusive": "Exclusive",
38
+ "exclusive_upgrade": "Upgrade to access",
39
+ "exclusive_upgrade_cta": "Upgrade your plan to request this key",
40
+ "exclusive_lock_title": "Exclusive campaign",
41
+ "early_access": "Early access",
42
+ "early_access_lock_title": "Early access",
43
+ "early_access_opens_in": "Opens in",
44
+ "unavailable": "Unavailable",
45
+ "upcoming": "Coming soon",
46
+ "back": "Back",
47
+ "search_placeholder": "Search campaigns...",
48
+ "seo": {
49
+ "title_generic": "Key Campaigns"
50
+ },
51
+ "restriction": {
52
+ "exclusive_official": "Official streamers only",
53
+ "level_official": "Official",
54
+ "level_affiliate": "Affiliate"
55
+ },
56
+ "status_key": {
57
+ "see_key": "View key",
58
+ "of": "of",
59
+ "title_0": "Campaign",
60
+ "title_span_0": "ended",
61
+ "obs_0": "The redemption period for the key has expired.",
62
+ "title_1": "Now you need to",
63
+ "title_span_1": "redeem the key",
64
+ "obs_1": "Check the campaign requirements before requesting your key(s)",
65
+ "title_2": "Now just",
66
+ "title_span_2": "wait",
67
+ "obs_2": "Your request is being reviewed. After approval, you will receive a confirmation email.",
68
+ "title_approved": "Your request has been ",
69
+ "title_span_approved": "approved!",
70
+ "obs_approved": "Your key is ready. Click to reveal it.",
71
+ "reveal_key": "Reveal key",
72
+ "view_code": "View code",
73
+ "title_3": "Now you just need to",
74
+ "title_span_3": "send the material",
75
+ "title_3_2": "developed",
76
+ "obs_3": "You have 14 days to send the developed material",
77
+ "complete": "Completed",
78
+ "title_span_4": "Nice!",
79
+ "title_4": "If you have more materials, feel free to add them",
80
+ "obs_4": "If you want to add more, you still have 6 days to send it.",
81
+ "title_5": "Your request was",
82
+ "title_span_5": "rejected",
83
+ "obs_5": "Unfortunately, your key request was not approved. Please check the campaign requirements and try again in the future.",
84
+ "title_6": "Request",
85
+ "title_span_6": "cancelled",
86
+ "obs_6": "You canceled this request. If you want to try again, just start a new request according to the campaign rules.",
87
+ "title_7": "Request",
88
+ "title_span_7": "expired",
89
+ "obs_7": "The deadline for submitting the material or using the key has expired. Keep an eye on deadlines in future campaigns!",
90
+ "title_8": "Key",
91
+ "title_span_8": "revoked",
92
+ "obs_8": "Your key has been revoked by the administration. If you have any questions, contact support or review the campaign rules.",
93
+ "title_exhausted": "Keys",
94
+ "title_span_exhausted": "exhausted",
95
+ "obs_exhausted": "All keys for this campaign have already been distributed.",
96
+ "title_locked": "This campaign is",
97
+ "title_span_locked": "exclusive",
98
+ "obs_locked_exclusive": "Available only to higher tiers. Upgrade to take part.",
99
+ "obs_locked_early": "Your plan doesn't have access to this campaign yet. Upgrade to unlock.",
100
+ "obs_locked_tier": "Available only to {tier} plan subscribers or higher. Upgrade to take part.",
101
+ "title_level": "This campaign is for",
102
+ "title_span_level_official": "official streamers",
103
+ "title_span_level_affiliate": "affiliates",
104
+ "obs_level_official": "Available only to official MG streamers.",
105
+ "obs_level_affiliate": "Available only to affiliate creators (casting). Join the casting to take part."
106
+ },
107
+ "campaign": {
108
+ "available": "available",
109
+ "keys": "keys",
110
+ "start": "Start",
111
+ "end": "End",
112
+ "launch": "Launch",
113
+ "status": "Status",
114
+ "status_active": "Active",
115
+ "status_closed": "Closed",
116
+ "status_ending": "Ending soon",
117
+ "status_exhausted": "Keys exhausted",
118
+ "days": "days",
119
+ "hours": "hours",
120
+ "minutes": "min",
121
+ "seconds": "sec",
122
+ "days_hours": "days and hours",
123
+ "redeem": "Redeem key",
124
+ "actions": "Complementary actions",
125
+ "no_actions": "No actions configured",
126
+ "requirements": "Requirements",
127
+ "requirement": {
128
+ "all": "Open to all",
129
+ "official": "Official streamers",
130
+ "affiliate": "Affiliate or above"
131
+ },
132
+ "rp_label": "Redeemed by",
133
+ "who_redeem": "Who redeemed",
134
+ "created_by": "Published by",
135
+ "no_data": "Campaign not found"
136
+ }
137
+ },
138
+ "materials": {
139
+ "title": "Submit material",
140
+ "subtitle": "Send the link to your content about this game",
141
+ "back": "Back",
142
+ "link": "Content link",
143
+ "description": "Description (optional)",
144
+ "date": "Publication date",
145
+ "type": "Content type",
146
+ "type_stream": "Live stream",
147
+ "type_video": "Video",
148
+ "type_article": "Article / Review",
149
+ "type_web": "Website / Blog",
150
+ "type_print": "Screenshot / Print",
151
+ "required_fields": "Fill in all required fields",
152
+ "url_error": "Invalid URL",
153
+ "submit_error": "Error submitting. Try again.",
154
+ "sending": "Sending...",
155
+ "finish": "Submit",
156
+ "submitted_title": "Material submitted!",
157
+ "success_message": "Your material was sent for review. Thank you!",
158
+ "success_close": "Close"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "keys": {
3
+ "notif_prompt_title": "Quer receber alertas de novas campanhas de chaves?",
4
+ "notif_prompt_desc": "Te avisamos por email e push sempre que uma nova campanha de chaves abrir.",
5
+ "notif_prompt_enable": "Ativar",
6
+ "notif_prompt_dismiss": "Agora não",
7
+ "browser": {
8
+ "tab_available": "Disponíveis",
9
+ "tab_mine": "Minhas solicitações",
10
+ "select_platform": "Selecione a plataforma",
11
+ "description_label": "Por que você merece esta chave?",
12
+ "description_placeholder": "Ex: Tenho um canal no YouTube com 5k inscritos focado em reviews de games. Quero fazer uma análise completa do jogo para minha audiência.",
13
+ "request_btn": "Pedir chave",
14
+ "already_requested": "Solicitação enviada",
15
+ "reveal_btn": "Revelar chave",
16
+ "revealed": "Chave revelada",
17
+ "pending_approval": "Aguardando aprovação",
18
+ "login_required": "Faça login para solicitar esta chave",
19
+ "login_btn": "Entrar",
20
+ "no_keys": "Nenhuma chave disponível no momento",
21
+ "no_pools": "Nenhuma campanha ativa",
22
+ "no_requests": "Você ainda não solicitou nenhuma chave"
23
+ },
24
+ "campaigns": {
25
+ "title": "Key Campaigns",
26
+ "my_requests": "My Requests",
27
+ "all": "All",
28
+ "details": "Details",
29
+ "see_campaign": "See campaign",
30
+ "see_content": "See content",
31
+ "redeem": "Redeem",
32
+ "load_more": "Load more",
33
+ "no_results": "No campaigns found",
34
+ "days": "days",
35
+ "creators": "creators",
36
+ "upgrade_plan": "Upgrade plan",
37
+ "exclusive": "Exclusive",
38
+ "exclusive_upgrade": "Upgrade to access",
39
+ "exclusive_upgrade_cta": "Upgrade your plan to request this key",
40
+ "exclusive_lock_title": "Exclusive campaign",
41
+ "early_access": "Early access",
42
+ "early_access_lock_title": "Early access",
43
+ "early_access_opens_in": "Opens in",
44
+ "unavailable": "Unavailable",
45
+ "upcoming": "Coming soon",
46
+ "back": "Back",
47
+ "search_placeholder": "Search campaigns...",
48
+ "seo": {
49
+ "title_generic": "Key Campaigns"
50
+ },
51
+ "restriction": {
52
+ "exclusive_official": "Official streamers only",
53
+ "level_official": "Official",
54
+ "level_affiliate": "Affiliate"
55
+ },
56
+ "status_key": {
57
+ "see_key": "View key",
58
+ "of": "of",
59
+ "title_0": "Campaign",
60
+ "title_span_0": "ended",
61
+ "obs_0": "The redemption period for the key has expired.",
62
+ "title_1": "Now you need to",
63
+ "title_span_1": "redeem the key",
64
+ "obs_1": "Check the campaign requirements before requesting your key(s)",
65
+ "title_2": "Now just",
66
+ "title_span_2": "wait",
67
+ "obs_2": "Your request is being reviewed. After approval, you will receive a confirmation email.",
68
+ "title_approved": "Your request has been ",
69
+ "title_span_approved": "approved!",
70
+ "obs_approved": "Your key is ready. Click to reveal it.",
71
+ "reveal_key": "Reveal key",
72
+ "view_code": "View code",
73
+ "title_3": "Now you just need to",
74
+ "title_span_3": "send the material",
75
+ "title_3_2": "developed",
76
+ "obs_3": "You have 14 days to send the developed material",
77
+ "complete": "Completed",
78
+ "title_span_4": "Nice!",
79
+ "title_4": "If you have more materials, feel free to add them",
80
+ "obs_4": "If you want to add more, you still have 6 days to send it.",
81
+ "title_5": "Your request was",
82
+ "title_span_5": "rejected",
83
+ "obs_5": "Unfortunately, your key request was not approved. Please check the campaign requirements and try again in the future.",
84
+ "title_6": "Request",
85
+ "title_span_6": "cancelled",
86
+ "obs_6": "You canceled this request. If you want to try again, just start a new request according to the campaign rules.",
87
+ "title_7": "Request",
88
+ "title_span_7": "expired",
89
+ "obs_7": "The deadline for submitting the material or using the key has expired. Keep an eye on deadlines in future campaigns!",
90
+ "title_8": "Key",
91
+ "title_span_8": "revoked",
92
+ "obs_8": "Your key has been revoked by the administration. If you have any questions, contact support or review the campaign rules.",
93
+ "title_exhausted": "Keys",
94
+ "title_span_exhausted": "exhausted",
95
+ "obs_exhausted": "All keys for this campaign have already been distributed.",
96
+ "title_locked": "This campaign is",
97
+ "title_span_locked": "exclusive",
98
+ "obs_locked_exclusive": "Available only to higher tiers. Upgrade to take part.",
99
+ "obs_locked_early": "Your plan doesn't have access to this campaign yet. Upgrade to unlock.",
100
+ "obs_locked_tier": "Available only to {tier} plan subscribers or higher. Upgrade to take part.",
101
+ "title_level": "This campaign is for",
102
+ "title_span_level_official": "official streamers",
103
+ "title_span_level_affiliate": "affiliates",
104
+ "obs_level_official": "Available only to official MG streamers.",
105
+ "obs_level_affiliate": "Available only to affiliate creators (casting). Join the casting to take part."
106
+ },
107
+ "campaign": {
108
+ "available": "available",
109
+ "keys": "keys",
110
+ "start": "Start",
111
+ "end": "End",
112
+ "launch": "Launch",
113
+ "status": "Status",
114
+ "status_active": "Active",
115
+ "status_closed": "Closed",
116
+ "status_ending": "Ending soon",
117
+ "status_exhausted": "Keys exhausted",
118
+ "days": "days",
119
+ "hours": "hours",
120
+ "minutes": "min",
121
+ "seconds": "sec",
122
+ "days_hours": "days and hours",
123
+ "redeem": "Redeem key",
124
+ "actions": "Complementary actions",
125
+ "no_actions": "No actions configured",
126
+ "requirements": "Requirements",
127
+ "requirement": {
128
+ "all": "Open to all",
129
+ "official": "Official streamers",
130
+ "affiliate": "Affiliate or above"
131
+ },
132
+ "rp_label": "Redeemed by",
133
+ "who_redeem": "Who redeemed",
134
+ "created_by": "Published by",
135
+ "no_data": "Campaign not found"
136
+ }
137
+ },
138
+ "materials": {
139
+ "title": "Submit material",
140
+ "subtitle": "Send the link to your content about this game",
141
+ "back": "Back",
142
+ "link": "Content link",
143
+ "description": "Description (optional)",
144
+ "date": "Publication date",
145
+ "type": "Content type",
146
+ "type_stream": "Live stream",
147
+ "type_video": "Video",
148
+ "type_article": "Article / Review",
149
+ "type_web": "Website / Blog",
150
+ "type_print": "Screenshot / Print",
151
+ "required_fields": "Fill in all required fields",
152
+ "url_error": "Invalid URL",
153
+ "submit_error": "Error submitting. Try again.",
154
+ "sending": "Sending...",
155
+ "finish": "Submit",
156
+ "submitted_title": "Material submitted!",
157
+ "success_message": "Your material was sent for review. Thank you!",
158
+ "success_close": "Close"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "keys": {
3
+ "notif_prompt_title": "Vrei alerte pentru campanii noi de chei?",
4
+ "notif_prompt_desc": "Te notificăm prin email și push când o nouă campanie de chei se deschide.",
5
+ "notif_prompt_enable": "Activează",
6
+ "notif_prompt_dismiss": "Acum nu",
7
+ "browser": {
8
+ "tab_available": "Disponibile",
9
+ "tab_mine": "Cererile mele",
10
+ "select_platform": "Selectează platforma",
11
+ "description_label": "De ce meriți această cheie?",
12
+ "description_placeholder": "Ex: Am un canal YouTube cu 5k abonați axat pe recenzii de jocuri. Vreau să public o recenzie completă pentru publicul meu.",
13
+ "request_btn": "Solicită cheia",
14
+ "already_requested": "Cerere trimisă",
15
+ "reveal_btn": "Afișează cheia",
16
+ "revealed": "Cheie afișată",
17
+ "pending_approval": "În așteptarea aprobării",
18
+ "login_required": "Autentifică-te pentru a solicita această cheie",
19
+ "login_btn": "Autentificare",
20
+ "no_keys": "Nicio cheie disponibilă momentan",
21
+ "no_pools": "Nicio campanie activă",
22
+ "no_requests": "Nu ai solicitat nicio cheie încă"
23
+ },
24
+ "campaigns": {
25
+ "title": "Key Campaigns",
26
+ "my_requests": "My Requests",
27
+ "all": "All",
28
+ "details": "Details",
29
+ "see_campaign": "See campaign",
30
+ "see_content": "See content",
31
+ "redeem": "Redeem",
32
+ "load_more": "Load more",
33
+ "no_results": "No campaigns found",
34
+ "days": "days",
35
+ "creators": "creators",
36
+ "upgrade_plan": "Upgrade plan",
37
+ "exclusive": "Exclusive",
38
+ "exclusive_upgrade": "Upgrade to access",
39
+ "exclusive_upgrade_cta": "Upgrade your plan to request this key",
40
+ "exclusive_lock_title": "Exclusive campaign",
41
+ "early_access": "Early access",
42
+ "early_access_lock_title": "Early access",
43
+ "early_access_opens_in": "Opens in",
44
+ "unavailable": "Unavailable",
45
+ "upcoming": "Coming soon",
46
+ "back": "Back",
47
+ "search_placeholder": "Search campaigns...",
48
+ "seo": {
49
+ "title_generic": "Key Campaigns"
50
+ },
51
+ "restriction": {
52
+ "exclusive_official": "Official streamers only",
53
+ "level_official": "Official",
54
+ "level_affiliate": "Affiliate"
55
+ },
56
+ "status_key": {
57
+ "see_key": "View key",
58
+ "of": "of",
59
+ "title_0": "Campaign",
60
+ "title_span_0": "ended",
61
+ "obs_0": "The redemption period for the key has expired.",
62
+ "title_1": "Now you need to",
63
+ "title_span_1": "redeem the key",
64
+ "obs_1": "Check the campaign requirements before requesting your key(s)",
65
+ "title_2": "Now just",
66
+ "title_span_2": "wait",
67
+ "obs_2": "Your request is being reviewed. After approval, you will receive a confirmation email.",
68
+ "title_approved": "Your request has been ",
69
+ "title_span_approved": "approved!",
70
+ "obs_approved": "Your key is ready. Click to reveal it.",
71
+ "reveal_key": "Reveal key",
72
+ "view_code": "View code",
73
+ "title_3": "Now you just need to",
74
+ "title_span_3": "send the material",
75
+ "title_3_2": "developed",
76
+ "obs_3": "You have 14 days to send the developed material",
77
+ "complete": "Completed",
78
+ "title_span_4": "Nice!",
79
+ "title_4": "If you have more materials, feel free to add them",
80
+ "obs_4": "If you want to add more, you still have 6 days to send it.",
81
+ "title_5": "Your request was",
82
+ "title_span_5": "rejected",
83
+ "obs_5": "Unfortunately, your key request was not approved. Please check the campaign requirements and try again in the future.",
84
+ "title_6": "Request",
85
+ "title_span_6": "cancelled",
86
+ "obs_6": "You canceled this request. If you want to try again, just start a new request according to the campaign rules.",
87
+ "title_7": "Request",
88
+ "title_span_7": "expired",
89
+ "obs_7": "The deadline for submitting the material or using the key has expired. Keep an eye on deadlines in future campaigns!",
90
+ "title_8": "Key",
91
+ "title_span_8": "revoked",
92
+ "obs_8": "Your key has been revoked by the administration. If you have any questions, contact support or review the campaign rules.",
93
+ "title_exhausted": "Keys",
94
+ "title_span_exhausted": "exhausted",
95
+ "obs_exhausted": "All keys for this campaign have already been distributed.",
96
+ "title_locked": "This campaign is",
97
+ "title_span_locked": "exclusive",
98
+ "obs_locked_exclusive": "Available only to higher tiers. Upgrade to take part.",
99
+ "obs_locked_early": "Your plan doesn't have access to this campaign yet. Upgrade to unlock.",
100
+ "obs_locked_tier": "Available only to {tier} plan subscribers or higher. Upgrade to take part.",
101
+ "title_level": "This campaign is for",
102
+ "title_span_level_official": "official streamers",
103
+ "title_span_level_affiliate": "affiliates",
104
+ "obs_level_official": "Available only to official MG streamers.",
105
+ "obs_level_affiliate": "Available only to affiliate creators (casting). Join the casting to take part."
106
+ },
107
+ "campaign": {
108
+ "available": "available",
109
+ "keys": "keys",
110
+ "start": "Start",
111
+ "end": "End",
112
+ "launch": "Launch",
113
+ "status": "Status",
114
+ "status_active": "Active",
115
+ "status_closed": "Closed",
116
+ "status_ending": "Ending soon",
117
+ "status_exhausted": "Keys exhausted",
118
+ "days": "days",
119
+ "hours": "hours",
120
+ "minutes": "min",
121
+ "seconds": "sec",
122
+ "days_hours": "days and hours",
123
+ "redeem": "Redeem key",
124
+ "actions": "Complementary actions",
125
+ "no_actions": "No actions configured",
126
+ "requirements": "Requirements",
127
+ "requirement": {
128
+ "all": "Open to all",
129
+ "official": "Official streamers",
130
+ "affiliate": "Affiliate or above"
131
+ },
132
+ "rp_label": "Redeemed by",
133
+ "who_redeem": "Who redeemed",
134
+ "created_by": "Published by",
135
+ "no_data": "Campaign not found"
136
+ }
137
+ },
138
+ "materials": {
139
+ "title": "Submit material",
140
+ "subtitle": "Send the link to your content about this game",
141
+ "back": "Back",
142
+ "link": "Content link",
143
+ "description": "Description (optional)",
144
+ "date": "Publication date",
145
+ "type": "Content type",
146
+ "type_stream": "Live stream",
147
+ "type_video": "Video",
148
+ "type_article": "Article / Review",
149
+ "type_web": "Website / Blog",
150
+ "type_print": "Screenshot / Print",
151
+ "required_fields": "Fill in all required fields",
152
+ "url_error": "Invalid URL",
153
+ "submit_error": "Error submitting. Try again.",
154
+ "sending": "Sending...",
155
+ "finish": "Submit",
156
+ "submitted_title": "Material submitted!",
157
+ "success_message": "Your material was sent for review. Thank you!",
158
+ "success_close": "Close"
159
+ }
160
+ }
161
+ }
package/nuxt.config.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export default defineNuxtConfig({
2
+ components: [
3
+ { path: "~/components", pathPrefix: false },
4
+ ],
2
5
  css: [
3
6
  "@mundogamernetwork/shared-ui/assets/kit/kit-base.css",
4
7
  "@mundogamernetwork/shared-ui/assets/kit/kit-theme.css",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mundogamernetwork/shared-ui",
3
- "version": "1.1.64",
3
+ "version": "1.1.67",
4
4
  "description": "Mundo Gamer Network - Shared UI Layer (Nuxt 3)",
5
5
  "type": "module",
6
6
  "main": "./nuxt.config.ts",
@@ -8,6 +8,7 @@
8
8
  "assets",
9
9
  "components",
10
10
  "composables",
11
+ "locales",
11
12
  "middleware",
12
13
  "pages",
13
14
  "plugins",
@@ -761,7 +761,7 @@ onMounted(async () => {
761
761
  justify-content: space-between;
762
762
 
763
763
  .btn {
764
- background: #D297FF;
764
+ background: var(--key-accent, #D297FF);
765
765
  display: flex;
766
766
  height: 44px;
767
767
  padding: 0 14px;
@@ -787,7 +787,7 @@ onMounted(async () => {
787
787
  align-items: center;
788
788
  gap: 6px;
789
789
  font-size: 13px;
790
- color: #D297FF;
790
+ color: var(--key-accent, #D297FF);
791
791
  cursor: pointer;
792
792
  text-decoration: none;
793
793
  white-space: nowrap;
@@ -806,7 +806,7 @@ onMounted(async () => {
806
806
  font-size: 14px;
807
807
  font-weight: 600;
808
808
  color: var(--card-article-title);
809
- span { color: #d297ff; }
809
+ span { color: var(--key-accent, #d297ff); }
810
810
  .yellow { color: #FFD600; }
811
811
  .red { color: #ff4800; }
812
812
  }
@@ -819,7 +819,7 @@ onMounted(async () => {
819
819
 
820
820
  .progress {
821
821
  height: 24px;
822
- background-color: #d297ff;
822
+ background-color: var(--key-accent, #d297ff);
823
823
  span {
824
824
  position: absolute;
825
825
  right: 5px;
@@ -835,7 +835,7 @@ onMounted(async () => {
835
835
  .info {
836
836
  font-size: 12px;
837
837
  color: var(--secondary-info-fg);
838
- i { color: #d297ff; }
838
+ i { color: var(--key-accent, #d297ff); }
839
839
  .yellow { color: #FFD600; }
840
840
  .red { color: #ff4800; }
841
841
  }
@@ -882,7 +882,7 @@ onMounted(async () => {
882
882
  padding: 4px 10px;
883
883
  font-size: 12px;
884
884
  font-weight: 600;
885
- color: #D297FF;
885
+ color: var(--key-accent, #D297FF);
886
886
  background: rgba(210, 151, 255, 0.12);
887
887
  border: 1px solid rgba(210, 151, 255, 0.35);
888
888
  i { font-size: 13px; }
@@ -981,7 +981,7 @@ onMounted(async () => {
981
981
  gap: 6px;
982
982
  background-color: var(--button-secondary-default-bg);
983
983
  font-size: 28px;
984
- color: #D297FF;
984
+ color: var(--key-accent, #D297FF);
985
985
  font-weight: 700;
986
986
  width: -webkit-fill-available;
987
987
  span { font-size: 10px; color: var(--secondary-info-fg); font-weight: 400; }
@@ -1015,7 +1015,7 @@ onMounted(async () => {
1015
1015
  width: -webkit-fill-available;
1016
1016
  cursor: pointer;
1017
1017
  &:hover, &.active {
1018
- background-color: #D297FF;
1018
+ background-color: var(--key-accent, #D297FF);
1019
1019
  color: #1C1C1C;
1020
1020
  i { color: #1C1C1C; }
1021
1021
  }
@@ -1060,7 +1060,7 @@ onMounted(async () => {
1060
1060
  flex-shrink: 0;
1061
1061
  border-radius: 100%;
1062
1062
  text-align-last: center;
1063
- i { color: #D297FF; }
1063
+ i { color: var(--key-accent, #D297FF); }
1064
1064
  }
1065
1065
  .texts {
1066
1066
  display: flex;
@@ -1081,7 +1081,7 @@ onMounted(async () => {
1081
1081
  width: 100%;
1082
1082
  }
1083
1083
 
1084
- .reward span { color: #D297FF; }
1084
+ .reward span { color: var(--key-accent, #D297FF); }
1085
1085
 
1086
1086
  .data {
1087
1087
  display: flex;
@@ -1114,7 +1114,7 @@ onMounted(async () => {
1114
1114
  font-size: 12px;
1115
1115
  color: var(--secondary-info-fg);
1116
1116
  width: -webkit-fill-available;
1117
- span { font-size: 16px; color: #D297FF; font-weight: 600; }
1117
+ span { font-size: 16px; color: var(--key-accent, #D297FF); font-weight: 600; }
1118
1118
  }
1119
1119
  }
1120
1120
 
@@ -108,6 +108,7 @@
108
108
  class="img-content"
109
109
  :class="{ unavailable: card.isExpired || (!card.isUpcoming && card.available_count < 1) }"
110
110
  >
111
+
111
112
  <img
112
113
  :src="card.cover"
113
114
  :alt="card.text"
@@ -180,19 +181,19 @@
180
181
  </div>
181
182
  </div>
182
183
  </nuxt-link>
184
+ </div>
183
185
 
184
- <div class="title">
185
- <div class="days" v-if="card.time > 0 && card.user_can_access">
186
- <span>{{ card.time }}</span> {{ $t("keys.campaigns.days") }}
187
- </div>
188
- <div class="days" v-else></div>
189
- <span>
190
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="17" viewBox="0 0 16 17" fill="none">
191
- <path d="M13.3333 4.1112L12.8666 3.64453L11.9333 4.57786L10.9333 3.64453L8.33329 4.1112L2.66663 9.77786L7.19996 14.3112L12.8666 8.64453L13.3333 6.04453L12.4 5.1112L13.3333 4.1112ZM12.6 6.24453L12.2666 8.3112L7.19996 13.3779L3.59996 9.77786L8.66663 4.7112L10.7333 4.3112L11.4666 5.04453L11 5.5112L10.5333 5.04453L9.99996 5.57786L11.4 6.97786L11.8666 6.5112L11.4 6.04453L11.8666 5.57786L12.6 6.24453Z" fill="#D297FF" />
192
- </svg>
193
- {{ card.type }}
194
- </span>
186
+ <div class="title">
187
+ <div class="days" v-if="card.time > 0 && card.user_can_access">
188
+ <span>{{ card.time }}</span> {{ $t("keys.campaigns.days") }}
195
189
  </div>
190
+ <div class="days" v-else></div>
191
+ <span>
192
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="17" viewBox="0 0 16 17" fill="none">
193
+ <path d="M13.3333 4.1112L12.8666 3.64453L11.9333 4.57786L10.9333 3.64453L8.33329 4.1112L2.66663 9.77786L7.19996 14.3112L12.8666 8.64453L13.3333 6.04453L12.4 5.1112L13.3333 4.1112ZM12.6 6.24453L12.2666 8.3112L7.19996 13.3779L3.59996 9.77786L8.66663 4.7112L10.7333 4.3112L11.4666 5.04453L11 5.5112L10.5333 5.04453L9.99996 5.57786L11.4 6.97786L11.8666 6.5112L11.4 6.04453L11.8666 5.57786L12.6 6.24453Z" fill="var(--key-accent, #D297FF)" />
194
+ </svg>
195
+ {{ card.type }}
196
+ </span>
196
197
  </div>
197
198
 
198
199
  <div class="text">
@@ -736,7 +737,7 @@ onUnmounted(() => {
736
737
  display: inline-block;
737
738
  width: 20px;
738
739
  height: 20px;
739
- border: 2px solid #d297ff;
740
+ border: 2px solid var(--key-accent, #d297ff);
740
741
  border-radius: 50%;
741
742
  border-top-color: #fff;
742
743
  animation: spin 1s ease-in-out infinite;
@@ -774,7 +775,7 @@ onUnmounted(() => {
774
775
  position: absolute;
775
776
  bottom: 8px;
776
777
  right: 8px;
777
- background: rgba(107, 21, 172, 0.9);
778
+ background: var(--key-accent-dark, rgba(107, 21, 172, 0.9));
778
779
  color: #fff;
779
780
  font-size: 12px;
780
781
  font-weight: 600;
@@ -813,7 +814,7 @@ onUnmounted(() => {
813
814
  position: absolute;
814
815
  top: 8px;
815
816
  left: 8px;
816
- background: rgba(107, 21, 172, 0.9);
817
+ background: var(--key-accent-dark, rgba(107, 21, 172, 0.9));
817
818
  color: #fff;
818
819
  font-size: 10px;
819
820
  font-weight: 700;
@@ -841,9 +842,9 @@ onUnmounted(() => {
841
842
  padding: 12px;
842
843
  text-align: center;
843
844
 
844
- i { font-size: 24px; color: #D297FF; }
845
+ i { font-size: 24px; color: var(--key-accent, #D297FF); }
845
846
  .lock-label { color: #fff; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; }
846
- .lock-countdown { color: #D297FF; font-size: 12px; font-weight: 600; }
847
+ .lock-countdown { color: var(--key-accent, #D297FF); font-size: 12px; font-weight: 600; }
847
848
  .lock-cta { color: #EAB308; font-size: 11px; font-weight: 600; }
848
849
  }
849
850
 
@@ -951,7 +952,7 @@ onUnmounted(() => {
951
952
  cursor: pointer;
952
953
  }
953
954
 
954
- span.active { background: #6b15ac; }
955
+ span.active { background: var(--key-accent, #6b15ac); }
955
956
  }
956
957
  }
957
958
 
@@ -996,7 +997,7 @@ onUnmounted(() => {
996
997
  }
997
998
 
998
999
  .header-left .btn.tertiary.active {
999
- background-color: #D297FF;
1000
+ background-color: var(--key-accent, #D297FF);
1000
1001
  color: #1C1C1C;
1001
1002
  }
1002
1003
 
@@ -1015,7 +1016,7 @@ onUnmounted(() => {
1015
1016
  color: var(--title-fg);
1016
1017
  }
1017
1018
 
1018
- &:focus { outline: none; border-color: #D297FF; }
1019
+ &:focus { outline: none; border-color: var(--key-accent, #D297FF); }
1019
1020
  }
1020
1021
 
1021
1022
  .filter-divider {
@@ -1082,40 +1083,12 @@ onUnmounted(() => {
1082
1083
 
1083
1084
  .card-header {
1084
1085
  display: flex;
1085
- align-items: center;
1086
- gap: 16px;
1086
+ flex-direction: column;
1087
+ align-items: stretch;
1087
1088
  border: 0;
1088
1089
  padding: 0;
1089
1090
  background-color: transparent;
1090
1091
 
1091
- .title {
1092
- display: flex;
1093
- padding: 8px 16px;
1094
- align-items: center;
1095
- position: absolute;
1096
- background: rgba(13, 13, 13, 0.9);
1097
- top: 0;
1098
- width: 100%;
1099
- justify-content: space-between;
1100
-
1101
- .days {
1102
- font-size: 12px;
1103
- color: var(--title-fg);
1104
- display: flex;
1105
- align-items: center;
1106
- gap: 4px;
1107
- span { color: #d297ff; font-size: 16px; font-weight: 600; }
1108
- }
1109
-
1110
- span {
1111
- font-size: 12px;
1112
- color: var(--secondary-info-fg);
1113
- display: flex;
1114
- align-items: center;
1115
- gap: 4px;
1116
- }
1117
- }
1118
-
1119
1092
  a {
1120
1093
  width: 100%;
1121
1094
  .img-content {
@@ -1129,6 +1102,32 @@ onUnmounted(() => {
1129
1102
  }
1130
1103
  }
1131
1104
 
1105
+ .title {
1106
+ display: flex;
1107
+ padding: 8px 16px;
1108
+ align-items: center;
1109
+ background: rgba(13, 13, 13, 0.9);
1110
+ width: 100%;
1111
+ justify-content: space-between;
1112
+
1113
+ .days {
1114
+ font-size: 12px;
1115
+ color: var(--title-fg);
1116
+ display: flex;
1117
+ align-items: center;
1118
+ gap: 4px;
1119
+ span { color: var(--key-accent, #d297ff); font-size: 16px; font-weight: 600; }
1120
+ }
1121
+
1122
+ span {
1123
+ font-size: 12px;
1124
+ color: var(--secondary-info-fg);
1125
+ display: flex;
1126
+ align-items: center;
1127
+ gap: 4px;
1128
+ }
1129
+ }
1130
+
1132
1131
  .text {
1133
1132
  color: var(--title-fg);
1134
1133
  font-size: 16px;
@@ -1169,7 +1168,7 @@ onUnmounted(() => {
1169
1168
  justify-content: center;
1170
1169
  cursor: pointer;
1171
1170
  flex-shrink: 0;
1172
- &:hover { border-color: #D297FF; color: #D297FF; }
1171
+ &:hover { border-color: var(--key-accent, #D297FF); color: var(--key-accent, #D297FF); }
1173
1172
  i { font-size: 14px; }
1174
1173
  }
1175
1174
  }
@@ -1188,7 +1187,7 @@ onUnmounted(() => {
1188
1187
  font-size: 12px;
1189
1188
  color: var(--title-fg);
1190
1189
  font-weight: 400;
1191
- span { color: #d297ff; }
1190
+ span { color: var(--key-accent, #d297ff); }
1192
1191
  }
1193
1192
  }
1194
1193
  }
@@ -181,7 +181,6 @@ useSeoMeta({
181
181
  <img v-if="kit.cover_image_url" class="kit-cover-poster" :src="kit.cover_image_url" :alt="kit.name" />
182
182
  <div class="kit-cover-text">
183
183
  <span v-if="kit.release_status" class="kit-eyebrow">{{ String(kit.release_status).replace(/_/g, ' ') }}</span>
184
- <img v-if="kit.logo_url" class="kit-cover-logo-img" :src="kit.logo_url" :alt="kit.name" />
185
184
  <h1 class="kit-cover-title">{{ kit.name }}</h1>
186
185
  <p v-if="kit.tagline" class="kit-tagline">{{ kit.tagline }}</p>
187
186
  <p v-if="kit.developer" class="kit-kicker">{{ kit.developer }}</p>
@@ -1,9 +1,15 @@
1
1
  export default defineNuxtPlugin({
2
2
  name: "shared-ui-auth",
3
- enforce: "pre",
4
- async setup() {
3
+ async setup(nuxtApp) {
5
4
  try {
6
- const authStore = useAuthStore();
5
+ // Pinia must be installed first. Resolve it from nuxtApp and bail out
6
+ // if it isn't ready yet (mirrors middleware/auth.global.ts). Running
7
+ // with enforce:"pre" used to execute this before @pinia/nuxt, so
8
+ // useAuthStore() hit an undefined pinia (`reading '_s'`).
9
+ const pinia = (nuxtApp as any).$pinia;
10
+ if (!pinia) return;
11
+
12
+ const authStore = useAuthStore(pinia);
7
13
 
8
14
  if (!authStore.signedIn) {
9
15
  await authStore.getUser();
@@ -209,6 +209,7 @@ export const fetchCampaigns = (
209
209
  ...(params.filter || {}),
210
210
  include_early_access_locked: true,
211
211
  mg_platform: mgPlatform,
212
+ status: 1,
212
213
  },
213
214
  page: params.page || 1,
214
215
  per_page: params.per_page || 15,
@@ -233,6 +234,7 @@ export const fetchFeaturedCampaigns = (mgPlatform = "MGTV") => {
233
234
  filter: {
234
235
  is_public: true,
235
236
  status: 1,
237
+ is_featured: true,
236
238
  mg_platform: mgPlatform,
237
239
  },
238
240
  sort: "id",