strapi-plugin-magic-mark 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/_chunks/{App-C5UU0yUr.js → App-B6x0aSMN.js} +97 -55
- package/dist/_chunks/{App-Dt-v39BQ.mjs → App-BCliVBSB.mjs} +98 -56
- package/dist/_chunks/UpgradePage-Bm0SkuCi.js +353 -0
- package/dist/_chunks/UpgradePage-GoocQ4av.mjs +351 -0
- package/dist/_chunks/de-Cs9dd3Mr.js +138 -0
- package/dist/_chunks/de-DOVki5VS.mjs +138 -0
- package/dist/_chunks/en-CE3r46Y2.js +138 -0
- package/dist/_chunks/en-Cf5-O03L.mjs +138 -0
- package/dist/_chunks/es-Ba6JcPIm.mjs +138 -0
- package/dist/_chunks/es-D4AOyJYJ.js +138 -0
- package/dist/_chunks/fr-CWSfoA8i.js +138 -0
- package/dist/_chunks/fr-CrMBXR3c.mjs +138 -0
- package/dist/_chunks/{index-B-Cc7QNW.mjs → index-B_EiWnCU.mjs} +13 -4
- package/dist/_chunks/index-D5-84IjV.js +3365 -0
- package/dist/_chunks/{index-B11QBtag.js → index-DA7Jswi4.js} +12 -3
- package/dist/_chunks/index-DdTUt6EH.mjs +3361 -0
- package/dist/_chunks/pt-BXxZ1Zym.mjs +138 -0
- package/dist/_chunks/pt-DW_6r_mP.js +138 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/QueryBuilder.d.ts +12 -1
- package/dist/admin/src/components/RelationFieldSelector.d.ts +24 -0
- package/dist/admin/src/components/SimpleAdvancedFilterModal.d.ts +2 -0
- package/dist/admin/src/components/UpgradePrompt.d.ts +22 -0
- package/dist/admin/src/hooks/useFeatureGate.d.ts +88 -0
- package/dist/admin/src/hooks/useRelationSchema.d.ts +27 -0
- package/dist/admin/src/pages/UpgradePage.d.ts +6 -0
- package/dist/admin/src/utils/queryGenerator.d.ts +4 -0
- package/dist/admin/src/utils/queryToStructure.d.ts +8 -1
- package/dist/admin/src/utils/theme.d.ts +95 -0
- package/dist/server/index.js +212 -9
- package/dist/server/index.mjs +212 -9
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/license.d.ts +4 -0
- package/dist/server/src/index.d.ts +24 -1
- package/dist/server/src/services/index.d.ts +23 -1
- package/dist/server/src/services/license-guard.d.ts +48 -2
- package/package.json +1 -1
- package/dist/_chunks/de-Bag-366k.mjs +0 -49
- package/dist/_chunks/de-Dic_hhjg.js +0 -49
- package/dist/_chunks/en-C5BvHqNo.js +0 -54
- package/dist/_chunks/en-zokEerzt.mjs +0 -54
- package/dist/_chunks/es-BlSQpU1z.js +0 -54
- package/dist/_chunks/es-Br1ucP3h.mjs +0 -54
- package/dist/_chunks/fr-BHciYPYG.js +0 -54
- package/dist/_chunks/fr-Dzo3kt_q.mjs +0 -54
- package/dist/_chunks/index-BAmZV8aX.mjs +0 -2020
- package/dist/_chunks/index-RuDV4dTy.js +0 -2024
- package/dist/_chunks/pt-DQoGyzyD.mjs +0 -54
- package/dist/_chunks/pt-Dawo5aUA.js +0 -54
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const title = "🔖 MagicMark";
|
|
2
|
+
const subtitle = "Guardar vistas filtradas para acceso rápido";
|
|
3
|
+
const loading = "Cargando marcadores...";
|
|
4
|
+
const es = {
|
|
5
|
+
"plugin.name": "MagicMark",
|
|
6
|
+
title,
|
|
7
|
+
subtitle,
|
|
8
|
+
loading,
|
|
9
|
+
"empty.title": "Aún no hay marcadores",
|
|
10
|
+
"empty.description": 'Navega a cualquier vista del Content Manager, aplica filtros y haz clic en "Guardar marcador" para crear accesos directos rápidos',
|
|
11
|
+
"stats.pinned": "Fijados",
|
|
12
|
+
"stats.total": "Total",
|
|
13
|
+
"stats.shared": "Compartidos conmigo",
|
|
14
|
+
"stats.limit": "Límite de marcadores",
|
|
15
|
+
"stats.limitReached": "Límite alcanzado - Actualizar",
|
|
16
|
+
"button.create": "+ Guardar marcador",
|
|
17
|
+
"button.save": "Guardar marcador",
|
|
18
|
+
"button.cancel": "Cancelar",
|
|
19
|
+
"button.update": "Actualizar",
|
|
20
|
+
"button.edit": "Editar",
|
|
21
|
+
"button.delete": "Eliminar",
|
|
22
|
+
"button.pin": "Fijar",
|
|
23
|
+
"button.unpin": "Desfijar",
|
|
24
|
+
"confirm.delete": "¿Estás seguro de que quieres eliminar este marcador?",
|
|
25
|
+
"modal.create": "Guardar como marcador",
|
|
26
|
+
"modal.edit": "Editar marcador",
|
|
27
|
+
"form.emoji": "Elegir icono",
|
|
28
|
+
"form.selectEmoji": "Clic para seleccionar",
|
|
29
|
+
"form.name": "Nombre del marcador",
|
|
30
|
+
"form.namePlaceholder": "ej., Artículos publicados",
|
|
31
|
+
"form.path": "Ruta del Content Manager",
|
|
32
|
+
"form.pathHelp": "Capturado automáticamente del Content Manager",
|
|
33
|
+
"form.query": "Filtros y ordenación",
|
|
34
|
+
"form.queryHelp": "Estos filtros se restaurarán cuando hagas clic en este marcador",
|
|
35
|
+
"form.filterPreview": "Filtros y configuraciones capturados",
|
|
36
|
+
"form.description": "Descripción (Opcional)",
|
|
37
|
+
"form.descriptionPlaceholder": "Añadir una descripción...",
|
|
38
|
+
"form.sharing": "Opciones de compartir",
|
|
39
|
+
"form.publicAccess": "Público (Todos los usuarios admin pueden ver este marcador)",
|
|
40
|
+
"form.shareWithRoles": "Compartir con roles específicos:",
|
|
41
|
+
"form.shareWithUsers": "Compartir con usuarios específicos:",
|
|
42
|
+
"form.selected": "{count} seleccionados",
|
|
43
|
+
"form.loadingRoles": "Cargando roles...",
|
|
44
|
+
"form.loadingUsers": "Cargando usuarios...",
|
|
45
|
+
"form.noRoles": "No hay roles disponibles",
|
|
46
|
+
"form.noUsers": "No hay otros usuarios disponibles",
|
|
47
|
+
"form.roleDisabled": "Selección de roles deshabilitada cuando el marcador es público",
|
|
48
|
+
"form.userDisabled": "Selección de usuarios deshabilitada cuando el marcador es público",
|
|
49
|
+
"form.customRole": "(Personalizado)",
|
|
50
|
+
"form.roleUsers": "({count} usuario)",
|
|
51
|
+
"form.roleUsersPlural": "({count} usuarios)",
|
|
52
|
+
"error.nameRequired": "El nombre es obligatorio",
|
|
53
|
+
"error.pathRequired": "La ruta es obligatoria",
|
|
54
|
+
"error.save": "Error al guardar el marcador",
|
|
55
|
+
"table.emoji": "Emoji",
|
|
56
|
+
"table.name": "Nombre",
|
|
57
|
+
"table.filters": "Filtros",
|
|
58
|
+
"table.description": "Descripción",
|
|
59
|
+
"table.status": "Estado",
|
|
60
|
+
"table.actions": "Acciones",
|
|
61
|
+
"bookmark.myBookmark": "Mi marcador",
|
|
62
|
+
"bookmark.sharedBy": "Compartido por {name}",
|
|
63
|
+
"bookmark.public": "Público",
|
|
64
|
+
"bookmark.roles": "Roles: {list}",
|
|
65
|
+
"bookmark.users": "Usuarios: {list}",
|
|
66
|
+
"bookmark.unknown": "Desconocido",
|
|
67
|
+
"shared.title": "🤝 Compartidos contigo",
|
|
68
|
+
"shared.count": "{count} marcador ha sido compartido contigo",
|
|
69
|
+
"shared.countPlural": "{count} marcadores han sido compartidos contigo",
|
|
70
|
+
"shared.byCreator": "{count} marcador",
|
|
71
|
+
"shared.byCreatorPlural": "{count} marcadores",
|
|
72
|
+
"allBookmarks.title": "🔖 Todos los marcadores disponibles",
|
|
73
|
+
"search.placeholder": "Buscar por nombre, descripción...",
|
|
74
|
+
"filter.all": "Mostrar todos",
|
|
75
|
+
"filter.pinned": "Solo fijados",
|
|
76
|
+
"filter.unpinned": "Solo no fijados",
|
|
77
|
+
"filter.placeholder": "Filtro",
|
|
78
|
+
"entries.placeholder": "Entradas",
|
|
79
|
+
"entries.10": "10 entradas",
|
|
80
|
+
"entries.25": "25 entradas",
|
|
81
|
+
"entries.50": "50 entradas",
|
|
82
|
+
"entries.100": "100 entradas",
|
|
83
|
+
"upgrade.premiumFeature": "Función Premium",
|
|
84
|
+
"upgrade.advancedFeature": "Función Avanzada",
|
|
85
|
+
"upgrade.description": "{feature} es una función {tier}. Actualiza para desbloquear esta y más.",
|
|
86
|
+
"upgrade.button": "Actualizar",
|
|
87
|
+
"upgrade.unlockTitle": "Desbloquear {feature}",
|
|
88
|
+
"upgrade.upgradeNow": "Actualizar ahora",
|
|
89
|
+
"upgrade.tierFeature": "Función {tier}",
|
|
90
|
+
"upgrade.locked": "{feature} está bloqueado",
|
|
91
|
+
"upgrade.upgradeTo": "Actualizar a {tier}",
|
|
92
|
+
"upgradePage.title": "Elige tu plan",
|
|
93
|
+
"upgradePage.subtitle": "Desbloquea potentes funciones de marcadores para tu aplicación Strapi",
|
|
94
|
+
"upgradePage.mostPopular": "MÁS POPULAR",
|
|
95
|
+
"upgradePage.loading": "Cargando información de licencia...",
|
|
96
|
+
"upgradePage.currentPlan": "PLAN ACTUAL",
|
|
97
|
+
"upgradePage.downgrade": "Degradar",
|
|
98
|
+
"upgradePage.bookmarks": "Marcadores:",
|
|
99
|
+
"upgradePage.support": "Soporte:",
|
|
100
|
+
"upgradePage.free.name": "GRATIS",
|
|
101
|
+
"upgradePage.free.description": "Perfecto para proyectos pequeños y pruebas",
|
|
102
|
+
"upgradePage.premium.name": "PREMIUM",
|
|
103
|
+
"upgradePage.premium.description": "Funciones mejoradas para equipos en crecimiento",
|
|
104
|
+
"upgradePage.advanced.name": "AVANZADO",
|
|
105
|
+
"upgradePage.advanced.description": "Máximas funciones para usuarios avanzados",
|
|
106
|
+
"upgradePage.forever": "para siempre",
|
|
107
|
+
"upgradePage.perMonth": "/mes",
|
|
108
|
+
"upgradePage.features.bookmarks10": "10 marcadores",
|
|
109
|
+
"upgradePage.features.bookmarks50": "50 marcadores",
|
|
110
|
+
"upgradePage.features.bookmarksUnlimited": "Marcadores ilimitados",
|
|
111
|
+
"upgradePage.features.advancedFilters": "Filtros avanzados",
|
|
112
|
+
"upgradePage.features.roleSharing": "Compartir por roles",
|
|
113
|
+
"upgradePage.features.dragDrop": "Arrastrar y soltar",
|
|
114
|
+
"upgradePage.features.quickAccess": "Acceso rápido",
|
|
115
|
+
"upgradePage.features.queryHistory": "Historial de consultas",
|
|
116
|
+
"upgradePage.features.export": "Exportar marcadores",
|
|
117
|
+
"upgradePage.features.analytics": "Análisis",
|
|
118
|
+
"upgradePage.features.analyticsDashboard": "Panel de análisis",
|
|
119
|
+
"upgradePage.features.bulkOperations": "Operaciones masivas",
|
|
120
|
+
"upgradePage.features.customIntegrations": "Integraciones personalizadas",
|
|
121
|
+
"upgradePage.features.prioritySupport": "Soporte prioritario",
|
|
122
|
+
"upgradePage.features.priorityPhoneSupport": "Soporte prioritario + telefónico",
|
|
123
|
+
"upgradePage.support.community": "Comunidad",
|
|
124
|
+
"upgradePage.support.priority": "Prioritario",
|
|
125
|
+
"upgradePage.support.priorityPhone": "Prioritario + Teléfono",
|
|
126
|
+
"upgradePage.limits.unlimited": "Ilimitado",
|
|
127
|
+
"ViewsWidget.actions.create": "Guardar marcador",
|
|
128
|
+
"ViewsWidget.actions.showList": "Magicmark",
|
|
129
|
+
"Admin.MainMenu.PluginName": "MagicMark",
|
|
130
|
+
"settings.title": "MagicMark",
|
|
131
|
+
"settings.license": "Licencia"
|
|
132
|
+
};
|
|
133
|
+
export {
|
|
134
|
+
es as default,
|
|
135
|
+
loading,
|
|
136
|
+
subtitle,
|
|
137
|
+
title
|
|
138
|
+
};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const title = "🔖 MagicMark";
|
|
4
|
+
const subtitle = "Guardar vistas filtradas para acceso rápido";
|
|
5
|
+
const loading = "Cargando marcadores...";
|
|
6
|
+
const es = {
|
|
7
|
+
"plugin.name": "MagicMark",
|
|
8
|
+
title,
|
|
9
|
+
subtitle,
|
|
10
|
+
loading,
|
|
11
|
+
"empty.title": "Aún no hay marcadores",
|
|
12
|
+
"empty.description": 'Navega a cualquier vista del Content Manager, aplica filtros y haz clic en "Guardar marcador" para crear accesos directos rápidos',
|
|
13
|
+
"stats.pinned": "Fijados",
|
|
14
|
+
"stats.total": "Total",
|
|
15
|
+
"stats.shared": "Compartidos conmigo",
|
|
16
|
+
"stats.limit": "Límite de marcadores",
|
|
17
|
+
"stats.limitReached": "Límite alcanzado - Actualizar",
|
|
18
|
+
"button.create": "+ Guardar marcador",
|
|
19
|
+
"button.save": "Guardar marcador",
|
|
20
|
+
"button.cancel": "Cancelar",
|
|
21
|
+
"button.update": "Actualizar",
|
|
22
|
+
"button.edit": "Editar",
|
|
23
|
+
"button.delete": "Eliminar",
|
|
24
|
+
"button.pin": "Fijar",
|
|
25
|
+
"button.unpin": "Desfijar",
|
|
26
|
+
"confirm.delete": "¿Estás seguro de que quieres eliminar este marcador?",
|
|
27
|
+
"modal.create": "Guardar como marcador",
|
|
28
|
+
"modal.edit": "Editar marcador",
|
|
29
|
+
"form.emoji": "Elegir icono",
|
|
30
|
+
"form.selectEmoji": "Clic para seleccionar",
|
|
31
|
+
"form.name": "Nombre del marcador",
|
|
32
|
+
"form.namePlaceholder": "ej., Artículos publicados",
|
|
33
|
+
"form.path": "Ruta del Content Manager",
|
|
34
|
+
"form.pathHelp": "Capturado automáticamente del Content Manager",
|
|
35
|
+
"form.query": "Filtros y ordenación",
|
|
36
|
+
"form.queryHelp": "Estos filtros se restaurarán cuando hagas clic en este marcador",
|
|
37
|
+
"form.filterPreview": "Filtros y configuraciones capturados",
|
|
38
|
+
"form.description": "Descripción (Opcional)",
|
|
39
|
+
"form.descriptionPlaceholder": "Añadir una descripción...",
|
|
40
|
+
"form.sharing": "Opciones de compartir",
|
|
41
|
+
"form.publicAccess": "Público (Todos los usuarios admin pueden ver este marcador)",
|
|
42
|
+
"form.shareWithRoles": "Compartir con roles específicos:",
|
|
43
|
+
"form.shareWithUsers": "Compartir con usuarios específicos:",
|
|
44
|
+
"form.selected": "{count} seleccionados",
|
|
45
|
+
"form.loadingRoles": "Cargando roles...",
|
|
46
|
+
"form.loadingUsers": "Cargando usuarios...",
|
|
47
|
+
"form.noRoles": "No hay roles disponibles",
|
|
48
|
+
"form.noUsers": "No hay otros usuarios disponibles",
|
|
49
|
+
"form.roleDisabled": "Selección de roles deshabilitada cuando el marcador es público",
|
|
50
|
+
"form.userDisabled": "Selección de usuarios deshabilitada cuando el marcador es público",
|
|
51
|
+
"form.customRole": "(Personalizado)",
|
|
52
|
+
"form.roleUsers": "({count} usuario)",
|
|
53
|
+
"form.roleUsersPlural": "({count} usuarios)",
|
|
54
|
+
"error.nameRequired": "El nombre es obligatorio",
|
|
55
|
+
"error.pathRequired": "La ruta es obligatoria",
|
|
56
|
+
"error.save": "Error al guardar el marcador",
|
|
57
|
+
"table.emoji": "Emoji",
|
|
58
|
+
"table.name": "Nombre",
|
|
59
|
+
"table.filters": "Filtros",
|
|
60
|
+
"table.description": "Descripción",
|
|
61
|
+
"table.status": "Estado",
|
|
62
|
+
"table.actions": "Acciones",
|
|
63
|
+
"bookmark.myBookmark": "Mi marcador",
|
|
64
|
+
"bookmark.sharedBy": "Compartido por {name}",
|
|
65
|
+
"bookmark.public": "Público",
|
|
66
|
+
"bookmark.roles": "Roles: {list}",
|
|
67
|
+
"bookmark.users": "Usuarios: {list}",
|
|
68
|
+
"bookmark.unknown": "Desconocido",
|
|
69
|
+
"shared.title": "🤝 Compartidos contigo",
|
|
70
|
+
"shared.count": "{count} marcador ha sido compartido contigo",
|
|
71
|
+
"shared.countPlural": "{count} marcadores han sido compartidos contigo",
|
|
72
|
+
"shared.byCreator": "{count} marcador",
|
|
73
|
+
"shared.byCreatorPlural": "{count} marcadores",
|
|
74
|
+
"allBookmarks.title": "🔖 Todos los marcadores disponibles",
|
|
75
|
+
"search.placeholder": "Buscar por nombre, descripción...",
|
|
76
|
+
"filter.all": "Mostrar todos",
|
|
77
|
+
"filter.pinned": "Solo fijados",
|
|
78
|
+
"filter.unpinned": "Solo no fijados",
|
|
79
|
+
"filter.placeholder": "Filtro",
|
|
80
|
+
"entries.placeholder": "Entradas",
|
|
81
|
+
"entries.10": "10 entradas",
|
|
82
|
+
"entries.25": "25 entradas",
|
|
83
|
+
"entries.50": "50 entradas",
|
|
84
|
+
"entries.100": "100 entradas",
|
|
85
|
+
"upgrade.premiumFeature": "Función Premium",
|
|
86
|
+
"upgrade.advancedFeature": "Función Avanzada",
|
|
87
|
+
"upgrade.description": "{feature} es una función {tier}. Actualiza para desbloquear esta y más.",
|
|
88
|
+
"upgrade.button": "Actualizar",
|
|
89
|
+
"upgrade.unlockTitle": "Desbloquear {feature}",
|
|
90
|
+
"upgrade.upgradeNow": "Actualizar ahora",
|
|
91
|
+
"upgrade.tierFeature": "Función {tier}",
|
|
92
|
+
"upgrade.locked": "{feature} está bloqueado",
|
|
93
|
+
"upgrade.upgradeTo": "Actualizar a {tier}",
|
|
94
|
+
"upgradePage.title": "Elige tu plan",
|
|
95
|
+
"upgradePage.subtitle": "Desbloquea potentes funciones de marcadores para tu aplicación Strapi",
|
|
96
|
+
"upgradePage.mostPopular": "MÁS POPULAR",
|
|
97
|
+
"upgradePage.loading": "Cargando información de licencia...",
|
|
98
|
+
"upgradePage.currentPlan": "PLAN ACTUAL",
|
|
99
|
+
"upgradePage.downgrade": "Degradar",
|
|
100
|
+
"upgradePage.bookmarks": "Marcadores:",
|
|
101
|
+
"upgradePage.support": "Soporte:",
|
|
102
|
+
"upgradePage.free.name": "GRATIS",
|
|
103
|
+
"upgradePage.free.description": "Perfecto para proyectos pequeños y pruebas",
|
|
104
|
+
"upgradePage.premium.name": "PREMIUM",
|
|
105
|
+
"upgradePage.premium.description": "Funciones mejoradas para equipos en crecimiento",
|
|
106
|
+
"upgradePage.advanced.name": "AVANZADO",
|
|
107
|
+
"upgradePage.advanced.description": "Máximas funciones para usuarios avanzados",
|
|
108
|
+
"upgradePage.forever": "para siempre",
|
|
109
|
+
"upgradePage.perMonth": "/mes",
|
|
110
|
+
"upgradePage.features.bookmarks10": "10 marcadores",
|
|
111
|
+
"upgradePage.features.bookmarks50": "50 marcadores",
|
|
112
|
+
"upgradePage.features.bookmarksUnlimited": "Marcadores ilimitados",
|
|
113
|
+
"upgradePage.features.advancedFilters": "Filtros avanzados",
|
|
114
|
+
"upgradePage.features.roleSharing": "Compartir por roles",
|
|
115
|
+
"upgradePage.features.dragDrop": "Arrastrar y soltar",
|
|
116
|
+
"upgradePage.features.quickAccess": "Acceso rápido",
|
|
117
|
+
"upgradePage.features.queryHistory": "Historial de consultas",
|
|
118
|
+
"upgradePage.features.export": "Exportar marcadores",
|
|
119
|
+
"upgradePage.features.analytics": "Análisis",
|
|
120
|
+
"upgradePage.features.analyticsDashboard": "Panel de análisis",
|
|
121
|
+
"upgradePage.features.bulkOperations": "Operaciones masivas",
|
|
122
|
+
"upgradePage.features.customIntegrations": "Integraciones personalizadas",
|
|
123
|
+
"upgradePage.features.prioritySupport": "Soporte prioritario",
|
|
124
|
+
"upgradePage.features.priorityPhoneSupport": "Soporte prioritario + telefónico",
|
|
125
|
+
"upgradePage.support.community": "Comunidad",
|
|
126
|
+
"upgradePage.support.priority": "Prioritario",
|
|
127
|
+
"upgradePage.support.priorityPhone": "Prioritario + Teléfono",
|
|
128
|
+
"upgradePage.limits.unlimited": "Ilimitado",
|
|
129
|
+
"ViewsWidget.actions.create": "Guardar marcador",
|
|
130
|
+
"ViewsWidget.actions.showList": "Magicmark",
|
|
131
|
+
"Admin.MainMenu.PluginName": "MagicMark",
|
|
132
|
+
"settings.title": "MagicMark",
|
|
133
|
+
"settings.license": "Licencia"
|
|
134
|
+
};
|
|
135
|
+
exports.default = es;
|
|
136
|
+
exports.loading = loading;
|
|
137
|
+
exports.subtitle = subtitle;
|
|
138
|
+
exports.title = title;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const title = "🔖 MagicMark";
|
|
4
|
+
const subtitle = "Enregistrer les vues filtrées pour un accès rapide";
|
|
5
|
+
const loading = "Chargement des signets...";
|
|
6
|
+
const fr = {
|
|
7
|
+
"plugin.name": "MagicMark",
|
|
8
|
+
title,
|
|
9
|
+
subtitle,
|
|
10
|
+
loading,
|
|
11
|
+
"empty.title": "Pas encore de signets",
|
|
12
|
+
"empty.description": `Naviguez vers n'importe quelle vue du Content Manager, appliquez des filtres et cliquez sur "Enregistrer le signet" pour créer des raccourcis d'accès rapide`,
|
|
13
|
+
"stats.pinned": "Épinglés",
|
|
14
|
+
"stats.total": "Total",
|
|
15
|
+
"stats.shared": "Partagés avec moi",
|
|
16
|
+
"stats.limit": "Limite de signets",
|
|
17
|
+
"stats.limitReached": "Limite atteinte - Mettre à niveau",
|
|
18
|
+
"button.create": "+ Enregistrer le signet",
|
|
19
|
+
"button.save": "Enregistrer le signet",
|
|
20
|
+
"button.cancel": "Annuler",
|
|
21
|
+
"button.update": "Mettre à jour",
|
|
22
|
+
"button.edit": "Modifier",
|
|
23
|
+
"button.delete": "Supprimer",
|
|
24
|
+
"button.pin": "Épingler",
|
|
25
|
+
"button.unpin": "Désépingler",
|
|
26
|
+
"confirm.delete": "Êtes-vous sûr de vouloir supprimer ce signet ?",
|
|
27
|
+
"modal.create": "Enregistrer comme signet",
|
|
28
|
+
"modal.edit": "Modifier le signet",
|
|
29
|
+
"form.emoji": "Choisir l'icône",
|
|
30
|
+
"form.selectEmoji": "Cliquez pour sélectionner",
|
|
31
|
+
"form.name": "Nom du signet",
|
|
32
|
+
"form.namePlaceholder": "ex., Articles publiés",
|
|
33
|
+
"form.path": "Chemin du Content Manager",
|
|
34
|
+
"form.pathHelp": "Capturé automatiquement depuis le Content Manager",
|
|
35
|
+
"form.query": "Filtres et tri",
|
|
36
|
+
"form.queryHelp": "Ces filtres seront restaurés lorsque vous cliquerez sur ce signet",
|
|
37
|
+
"form.filterPreview": "Filtres et paramètres capturés",
|
|
38
|
+
"form.description": "Description (Optionnel)",
|
|
39
|
+
"form.descriptionPlaceholder": "Ajouter une description...",
|
|
40
|
+
"form.sharing": "Options de partage",
|
|
41
|
+
"form.publicAccess": "Public (Tous les utilisateurs admin peuvent voir ce signet)",
|
|
42
|
+
"form.shareWithRoles": "Partager avec des rôles spécifiques :",
|
|
43
|
+
"form.shareWithUsers": "Partager avec des utilisateurs spécifiques :",
|
|
44
|
+
"form.selected": "{count} sélectionnés",
|
|
45
|
+
"form.loadingRoles": "Chargement des rôles...",
|
|
46
|
+
"form.loadingUsers": "Chargement des utilisateurs...",
|
|
47
|
+
"form.noRoles": "Aucun rôle disponible",
|
|
48
|
+
"form.noUsers": "Aucun autre utilisateur disponible",
|
|
49
|
+
"form.roleDisabled": "Sélection des rôles désactivée quand le signet est public",
|
|
50
|
+
"form.userDisabled": "Sélection des utilisateurs désactivée quand le signet est public",
|
|
51
|
+
"form.customRole": "(Personnalisé)",
|
|
52
|
+
"form.roleUsers": "({count} utilisateur)",
|
|
53
|
+
"form.roleUsersPlural": "({count} utilisateurs)",
|
|
54
|
+
"error.nameRequired": "Le nom est requis",
|
|
55
|
+
"error.pathRequired": "Le chemin est requis",
|
|
56
|
+
"error.save": "Échec de l'enregistrement du signet",
|
|
57
|
+
"table.emoji": "Emoji",
|
|
58
|
+
"table.name": "Nom",
|
|
59
|
+
"table.filters": "Filtres",
|
|
60
|
+
"table.description": "Description",
|
|
61
|
+
"table.status": "Statut",
|
|
62
|
+
"table.actions": "Actions",
|
|
63
|
+
"bookmark.myBookmark": "Mon signet",
|
|
64
|
+
"bookmark.sharedBy": "Partagé par {name}",
|
|
65
|
+
"bookmark.public": "Public",
|
|
66
|
+
"bookmark.roles": "Rôles : {list}",
|
|
67
|
+
"bookmark.users": "Utilisateurs : {list}",
|
|
68
|
+
"bookmark.unknown": "Inconnu",
|
|
69
|
+
"shared.title": "🤝 Partagés avec vous",
|
|
70
|
+
"shared.count": "{count} signet a été partagé avec vous",
|
|
71
|
+
"shared.countPlural": "{count} signets ont été partagés avec vous",
|
|
72
|
+
"shared.byCreator": "{count} signet",
|
|
73
|
+
"shared.byCreatorPlural": "{count} signets",
|
|
74
|
+
"allBookmarks.title": "🔖 Tous les signets disponibles",
|
|
75
|
+
"search.placeholder": "Rechercher par nom, description...",
|
|
76
|
+
"filter.all": "Afficher tout",
|
|
77
|
+
"filter.pinned": "Épinglés uniquement",
|
|
78
|
+
"filter.unpinned": "Non épinglés uniquement",
|
|
79
|
+
"filter.placeholder": "Filtre",
|
|
80
|
+
"entries.placeholder": "Entrées",
|
|
81
|
+
"entries.10": "10 entrées",
|
|
82
|
+
"entries.25": "25 entrées",
|
|
83
|
+
"entries.50": "50 entrées",
|
|
84
|
+
"entries.100": "100 entrées",
|
|
85
|
+
"upgrade.premiumFeature": "Fonctionnalité Premium",
|
|
86
|
+
"upgrade.advancedFeature": "Fonctionnalité Avancée",
|
|
87
|
+
"upgrade.description": "{feature} est une fonctionnalité {tier}. Mettez à niveau pour débloquer celle-ci et plus encore.",
|
|
88
|
+
"upgrade.button": "Mettre à niveau",
|
|
89
|
+
"upgrade.unlockTitle": "Débloquer {feature}",
|
|
90
|
+
"upgrade.upgradeNow": "Mettre à niveau maintenant",
|
|
91
|
+
"upgrade.tierFeature": "Fonctionnalité {tier}",
|
|
92
|
+
"upgrade.locked": "{feature} est verrouillé",
|
|
93
|
+
"upgrade.upgradeTo": "Mettre à niveau vers {tier}",
|
|
94
|
+
"upgradePage.title": "Choisissez votre plan",
|
|
95
|
+
"upgradePage.subtitle": "Débloquez des fonctionnalités de signets puissantes pour votre application Strapi",
|
|
96
|
+
"upgradePage.mostPopular": "LE PLUS POPULAIRE",
|
|
97
|
+
"upgradePage.loading": "Chargement des informations de licence...",
|
|
98
|
+
"upgradePage.currentPlan": "PLAN ACTUEL",
|
|
99
|
+
"upgradePage.downgrade": "Rétrograder",
|
|
100
|
+
"upgradePage.bookmarks": "Signets :",
|
|
101
|
+
"upgradePage.support": "Support :",
|
|
102
|
+
"upgradePage.free.name": "GRATUIT",
|
|
103
|
+
"upgradePage.free.description": "Parfait pour les petits projets et les tests",
|
|
104
|
+
"upgradePage.premium.name": "PREMIUM",
|
|
105
|
+
"upgradePage.premium.description": "Fonctionnalités améliorées pour les équipes en croissance",
|
|
106
|
+
"upgradePage.advanced.name": "AVANCÉ",
|
|
107
|
+
"upgradePage.advanced.description": "Fonctionnalités maximales pour les utilisateurs avancés",
|
|
108
|
+
"upgradePage.forever": "pour toujours",
|
|
109
|
+
"upgradePage.perMonth": "/mois",
|
|
110
|
+
"upgradePage.features.bookmarks10": "10 signets",
|
|
111
|
+
"upgradePage.features.bookmarks50": "50 signets",
|
|
112
|
+
"upgradePage.features.bookmarksUnlimited": "Signets illimités",
|
|
113
|
+
"upgradePage.features.advancedFilters": "Filtres avancés",
|
|
114
|
+
"upgradePage.features.roleSharing": "Partage par rôles",
|
|
115
|
+
"upgradePage.features.dragDrop": "Glisser-déposer",
|
|
116
|
+
"upgradePage.features.quickAccess": "Accès rapide",
|
|
117
|
+
"upgradePage.features.queryHistory": "Historique des requêtes",
|
|
118
|
+
"upgradePage.features.export": "Exporter les signets",
|
|
119
|
+
"upgradePage.features.analytics": "Analyses",
|
|
120
|
+
"upgradePage.features.analyticsDashboard": "Tableau de bord analytique",
|
|
121
|
+
"upgradePage.features.bulkOperations": "Opérations en masse",
|
|
122
|
+
"upgradePage.features.customIntegrations": "Intégrations personnalisées",
|
|
123
|
+
"upgradePage.features.prioritySupport": "Support prioritaire",
|
|
124
|
+
"upgradePage.features.priorityPhoneSupport": "Support prioritaire + téléphonique",
|
|
125
|
+
"upgradePage.support.community": "Communauté",
|
|
126
|
+
"upgradePage.support.priority": "Prioritaire",
|
|
127
|
+
"upgradePage.support.priorityPhone": "Prioritaire + Téléphone",
|
|
128
|
+
"upgradePage.limits.unlimited": "Illimité",
|
|
129
|
+
"ViewsWidget.actions.create": "Enregistrer le signet",
|
|
130
|
+
"ViewsWidget.actions.showList": "Magicmark",
|
|
131
|
+
"Admin.MainMenu.PluginName": "MagicMark",
|
|
132
|
+
"settings.title": "MagicMark",
|
|
133
|
+
"settings.license": "Licence"
|
|
134
|
+
};
|
|
135
|
+
exports.default = fr;
|
|
136
|
+
exports.loading = loading;
|
|
137
|
+
exports.subtitle = subtitle;
|
|
138
|
+
exports.title = title;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const title = "🔖 MagicMark";
|
|
2
|
+
const subtitle = "Enregistrer les vues filtrées pour un accès rapide";
|
|
3
|
+
const loading = "Chargement des signets...";
|
|
4
|
+
const fr = {
|
|
5
|
+
"plugin.name": "MagicMark",
|
|
6
|
+
title,
|
|
7
|
+
subtitle,
|
|
8
|
+
loading,
|
|
9
|
+
"empty.title": "Pas encore de signets",
|
|
10
|
+
"empty.description": `Naviguez vers n'importe quelle vue du Content Manager, appliquez des filtres et cliquez sur "Enregistrer le signet" pour créer des raccourcis d'accès rapide`,
|
|
11
|
+
"stats.pinned": "Épinglés",
|
|
12
|
+
"stats.total": "Total",
|
|
13
|
+
"stats.shared": "Partagés avec moi",
|
|
14
|
+
"stats.limit": "Limite de signets",
|
|
15
|
+
"stats.limitReached": "Limite atteinte - Mettre à niveau",
|
|
16
|
+
"button.create": "+ Enregistrer le signet",
|
|
17
|
+
"button.save": "Enregistrer le signet",
|
|
18
|
+
"button.cancel": "Annuler",
|
|
19
|
+
"button.update": "Mettre à jour",
|
|
20
|
+
"button.edit": "Modifier",
|
|
21
|
+
"button.delete": "Supprimer",
|
|
22
|
+
"button.pin": "Épingler",
|
|
23
|
+
"button.unpin": "Désépingler",
|
|
24
|
+
"confirm.delete": "Êtes-vous sûr de vouloir supprimer ce signet ?",
|
|
25
|
+
"modal.create": "Enregistrer comme signet",
|
|
26
|
+
"modal.edit": "Modifier le signet",
|
|
27
|
+
"form.emoji": "Choisir l'icône",
|
|
28
|
+
"form.selectEmoji": "Cliquez pour sélectionner",
|
|
29
|
+
"form.name": "Nom du signet",
|
|
30
|
+
"form.namePlaceholder": "ex., Articles publiés",
|
|
31
|
+
"form.path": "Chemin du Content Manager",
|
|
32
|
+
"form.pathHelp": "Capturé automatiquement depuis le Content Manager",
|
|
33
|
+
"form.query": "Filtres et tri",
|
|
34
|
+
"form.queryHelp": "Ces filtres seront restaurés lorsque vous cliquerez sur ce signet",
|
|
35
|
+
"form.filterPreview": "Filtres et paramètres capturés",
|
|
36
|
+
"form.description": "Description (Optionnel)",
|
|
37
|
+
"form.descriptionPlaceholder": "Ajouter une description...",
|
|
38
|
+
"form.sharing": "Options de partage",
|
|
39
|
+
"form.publicAccess": "Public (Tous les utilisateurs admin peuvent voir ce signet)",
|
|
40
|
+
"form.shareWithRoles": "Partager avec des rôles spécifiques :",
|
|
41
|
+
"form.shareWithUsers": "Partager avec des utilisateurs spécifiques :",
|
|
42
|
+
"form.selected": "{count} sélectionnés",
|
|
43
|
+
"form.loadingRoles": "Chargement des rôles...",
|
|
44
|
+
"form.loadingUsers": "Chargement des utilisateurs...",
|
|
45
|
+
"form.noRoles": "Aucun rôle disponible",
|
|
46
|
+
"form.noUsers": "Aucun autre utilisateur disponible",
|
|
47
|
+
"form.roleDisabled": "Sélection des rôles désactivée quand le signet est public",
|
|
48
|
+
"form.userDisabled": "Sélection des utilisateurs désactivée quand le signet est public",
|
|
49
|
+
"form.customRole": "(Personnalisé)",
|
|
50
|
+
"form.roleUsers": "({count} utilisateur)",
|
|
51
|
+
"form.roleUsersPlural": "({count} utilisateurs)",
|
|
52
|
+
"error.nameRequired": "Le nom est requis",
|
|
53
|
+
"error.pathRequired": "Le chemin est requis",
|
|
54
|
+
"error.save": "Échec de l'enregistrement du signet",
|
|
55
|
+
"table.emoji": "Emoji",
|
|
56
|
+
"table.name": "Nom",
|
|
57
|
+
"table.filters": "Filtres",
|
|
58
|
+
"table.description": "Description",
|
|
59
|
+
"table.status": "Statut",
|
|
60
|
+
"table.actions": "Actions",
|
|
61
|
+
"bookmark.myBookmark": "Mon signet",
|
|
62
|
+
"bookmark.sharedBy": "Partagé par {name}",
|
|
63
|
+
"bookmark.public": "Public",
|
|
64
|
+
"bookmark.roles": "Rôles : {list}",
|
|
65
|
+
"bookmark.users": "Utilisateurs : {list}",
|
|
66
|
+
"bookmark.unknown": "Inconnu",
|
|
67
|
+
"shared.title": "🤝 Partagés avec vous",
|
|
68
|
+
"shared.count": "{count} signet a été partagé avec vous",
|
|
69
|
+
"shared.countPlural": "{count} signets ont été partagés avec vous",
|
|
70
|
+
"shared.byCreator": "{count} signet",
|
|
71
|
+
"shared.byCreatorPlural": "{count} signets",
|
|
72
|
+
"allBookmarks.title": "🔖 Tous les signets disponibles",
|
|
73
|
+
"search.placeholder": "Rechercher par nom, description...",
|
|
74
|
+
"filter.all": "Afficher tout",
|
|
75
|
+
"filter.pinned": "Épinglés uniquement",
|
|
76
|
+
"filter.unpinned": "Non épinglés uniquement",
|
|
77
|
+
"filter.placeholder": "Filtre",
|
|
78
|
+
"entries.placeholder": "Entrées",
|
|
79
|
+
"entries.10": "10 entrées",
|
|
80
|
+
"entries.25": "25 entrées",
|
|
81
|
+
"entries.50": "50 entrées",
|
|
82
|
+
"entries.100": "100 entrées",
|
|
83
|
+
"upgrade.premiumFeature": "Fonctionnalité Premium",
|
|
84
|
+
"upgrade.advancedFeature": "Fonctionnalité Avancée",
|
|
85
|
+
"upgrade.description": "{feature} est une fonctionnalité {tier}. Mettez à niveau pour débloquer celle-ci et plus encore.",
|
|
86
|
+
"upgrade.button": "Mettre à niveau",
|
|
87
|
+
"upgrade.unlockTitle": "Débloquer {feature}",
|
|
88
|
+
"upgrade.upgradeNow": "Mettre à niveau maintenant",
|
|
89
|
+
"upgrade.tierFeature": "Fonctionnalité {tier}",
|
|
90
|
+
"upgrade.locked": "{feature} est verrouillé",
|
|
91
|
+
"upgrade.upgradeTo": "Mettre à niveau vers {tier}",
|
|
92
|
+
"upgradePage.title": "Choisissez votre plan",
|
|
93
|
+
"upgradePage.subtitle": "Débloquez des fonctionnalités de signets puissantes pour votre application Strapi",
|
|
94
|
+
"upgradePage.mostPopular": "LE PLUS POPULAIRE",
|
|
95
|
+
"upgradePage.loading": "Chargement des informations de licence...",
|
|
96
|
+
"upgradePage.currentPlan": "PLAN ACTUEL",
|
|
97
|
+
"upgradePage.downgrade": "Rétrograder",
|
|
98
|
+
"upgradePage.bookmarks": "Signets :",
|
|
99
|
+
"upgradePage.support": "Support :",
|
|
100
|
+
"upgradePage.free.name": "GRATUIT",
|
|
101
|
+
"upgradePage.free.description": "Parfait pour les petits projets et les tests",
|
|
102
|
+
"upgradePage.premium.name": "PREMIUM",
|
|
103
|
+
"upgradePage.premium.description": "Fonctionnalités améliorées pour les équipes en croissance",
|
|
104
|
+
"upgradePage.advanced.name": "AVANCÉ",
|
|
105
|
+
"upgradePage.advanced.description": "Fonctionnalités maximales pour les utilisateurs avancés",
|
|
106
|
+
"upgradePage.forever": "pour toujours",
|
|
107
|
+
"upgradePage.perMonth": "/mois",
|
|
108
|
+
"upgradePage.features.bookmarks10": "10 signets",
|
|
109
|
+
"upgradePage.features.bookmarks50": "50 signets",
|
|
110
|
+
"upgradePage.features.bookmarksUnlimited": "Signets illimités",
|
|
111
|
+
"upgradePage.features.advancedFilters": "Filtres avancés",
|
|
112
|
+
"upgradePage.features.roleSharing": "Partage par rôles",
|
|
113
|
+
"upgradePage.features.dragDrop": "Glisser-déposer",
|
|
114
|
+
"upgradePage.features.quickAccess": "Accès rapide",
|
|
115
|
+
"upgradePage.features.queryHistory": "Historique des requêtes",
|
|
116
|
+
"upgradePage.features.export": "Exporter les signets",
|
|
117
|
+
"upgradePage.features.analytics": "Analyses",
|
|
118
|
+
"upgradePage.features.analyticsDashboard": "Tableau de bord analytique",
|
|
119
|
+
"upgradePage.features.bulkOperations": "Opérations en masse",
|
|
120
|
+
"upgradePage.features.customIntegrations": "Intégrations personnalisées",
|
|
121
|
+
"upgradePage.features.prioritySupport": "Support prioritaire",
|
|
122
|
+
"upgradePage.features.priorityPhoneSupport": "Support prioritaire + téléphonique",
|
|
123
|
+
"upgradePage.support.community": "Communauté",
|
|
124
|
+
"upgradePage.support.priority": "Prioritaire",
|
|
125
|
+
"upgradePage.support.priorityPhone": "Prioritaire + Téléphone",
|
|
126
|
+
"upgradePage.limits.unlimited": "Illimité",
|
|
127
|
+
"ViewsWidget.actions.create": "Enregistrer le signet",
|
|
128
|
+
"ViewsWidget.actions.showList": "Magicmark",
|
|
129
|
+
"Admin.MainMenu.PluginName": "MagicMark",
|
|
130
|
+
"settings.title": "MagicMark",
|
|
131
|
+
"settings.license": "Licence"
|
|
132
|
+
};
|
|
133
|
+
export {
|
|
134
|
+
fr as default,
|
|
135
|
+
loading,
|
|
136
|
+
subtitle,
|
|
137
|
+
title
|
|
138
|
+
};
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useEffect } from "react";
|
|
3
3
|
import { Loader, Box, Alert, Flex, Typography, Button, Badge, Accordion } from "@strapi/design-system";
|
|
4
4
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
5
|
-
import { ArrowClockwise, Duplicate, Download, User, Shield, Sparkle, ChartBubble } from "@strapi/icons";
|
|
5
|
+
import { ArrowClockwise, Duplicate, Download, User, Shield, Sparkle, Check, Cross, ChartBubble } from "@strapi/icons";
|
|
6
6
|
import styled, { keyframes } from "styled-components";
|
|
7
7
|
const theme = {
|
|
8
8
|
colors: {
|
|
@@ -276,15 +276,24 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
|
276
276
|
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(Box, { padding: 6, children: /* @__PURE__ */ jsxs(Flex, { gap: 8, wrap: "wrap", children: [
|
|
277
277
|
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
278
278
|
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Premium Features" }),
|
|
279
|
-
/* @__PURE__ */
|
|
279
|
+
/* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 1, children: [
|
|
280
|
+
data.features?.premium ? /* @__PURE__ */ jsx(Check, { fill: "success600" }) : /* @__PURE__ */ jsx(Cross, { fill: "danger600" }),
|
|
281
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.premium ? "Enabled" : "Disabled" })
|
|
282
|
+
] })
|
|
280
283
|
] }),
|
|
281
284
|
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
282
285
|
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Advanced Features" }),
|
|
283
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 1, children: [
|
|
287
|
+
data.features?.advanced ? /* @__PURE__ */ jsx(Check, { fill: "success600" }) : /* @__PURE__ */ jsx(Cross, { fill: "danger600" }),
|
|
288
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.advanced ? "Enabled" : "Disabled" })
|
|
289
|
+
] })
|
|
284
290
|
] }),
|
|
285
291
|
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
286
292
|
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Enterprise Features" }),
|
|
287
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ jsxs(Flex, { alignItems: "center", gap: 1, children: [
|
|
294
|
+
data.features?.enterprise ? /* @__PURE__ */ jsx(Check, { fill: "success600" }) : /* @__PURE__ */ jsx(Cross, { fill: "danger600" }),
|
|
295
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.enterprise ? "Enabled" : "Disabled" })
|
|
296
|
+
] })
|
|
288
297
|
] })
|
|
289
298
|
] }) }) })
|
|
290
299
|
] }),
|