@axzydev/axzy_ui_system 1.4.7 → 1.5.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 (226) hide show
  1. package/README.md +2 -11
  2. package/dist/index.cjs +2174 -1570
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.css +1 -1
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.d.cts +232 -19
  7. package/dist/index.d.ts +232 -19
  8. package/dist/index.js +1838 -1238
  9. package/dist/index.js.map +1 -1
  10. package/dist/layered.css +1 -1
  11. package/package.json +3 -16
  12. package/src/App.tsx +90 -73
  13. package/src/components/atoms/badget/badget.tsx +23 -5
  14. package/src/components/atoms/chip/chip.tsx +3 -1
  15. package/src/components/atoms/image/image.tsx +3 -1
  16. package/src/components/atoms/input/input.tsx +8 -5
  17. package/src/components/atoms/loader/loader.tsx +3 -1
  18. package/src/components/atoms/slide/slide.props.ts +12 -0
  19. package/src/components/atoms/slide/slide.tsx +3 -0
  20. package/src/components/molecules/alert/alert.tsx +3 -1
  21. package/src/components/molecules/breadcrumbs/breadcrumbs.tsx +3 -1
  22. package/src/components/molecules/calendar/calendar.tsx +9 -6
  23. package/src/components/molecules/card/card.tsx +5 -2
  24. package/src/components/molecules/chip-input/chip-input.tsx +9 -7
  25. package/src/components/molecules/date-picker/datePicker.tsx +9 -9
  26. package/src/components/molecules/dropdown-menu/dropdown-menu.props.ts +1 -1
  27. package/src/components/molecules/dropdown-menu/dropdown-menu.tsx +6 -3
  28. package/src/components/molecules/field/field.tsx +3 -1
  29. package/src/components/molecules/form-header/form-header.tsx +3 -1
  30. package/src/components/molecules/line-bar-chart/line-bar-chart.props.ts +2 -2
  31. package/src/components/molecules/line-bar-chart/line-bar-chart.tsx +20 -15
  32. package/src/components/molecules/masked-input/masked-input.tsx +3 -1
  33. package/src/components/molecules/multi-select/multi-select.tsx +12 -9
  34. package/src/components/molecules/pagination/pagination.tsx +11 -5
  35. package/src/components/molecules/search-select/search-select.tsx +11 -9
  36. package/src/components/molecules/select/select.tsx +6 -4
  37. package/src/components/molecules/stepper/stepper.tsx +6 -4
  38. package/src/components/molecules/table/table.props.ts +10 -2
  39. package/src/components/molecules/table/table.tsx +163 -114
  40. package/src/components/molecules/time-picker/timePicker.tsx +8 -6
  41. package/src/components/molecules/wysiwyg/wysiwyg.tsx +23 -12
  42. package/src/components/organisms/confirm-dialog/confirm-dialog.props.ts +4 -4
  43. package/src/components/organisms/confirm-dialog/confirm-dialog.tsx +16 -8
  44. package/src/components/organisms/data-table/dataTable.props.ts +3 -2
  45. package/src/components/organisms/data-table/dataTable.tsx +149 -81
  46. package/src/components/organisms/dialog/dialog.tsx +3 -0
  47. package/src/components/organisms/drawer/drawer.tsx +3 -0
  48. package/src/components/organisms/dropfile/dropfile.tsx +19 -17
  49. package/src/components/organisms/form-builder/fieldRenderer.tsx +4 -2
  50. package/src/components/organisms/navbar/navbar.tsx +4 -2
  51. package/src/components/organisms/page-header/page-header.tsx +3 -1
  52. package/src/components/organisms/searchTable/components/PaginationControls.tsx +8 -6
  53. package/src/components/organisms/searchTable/components/PaginationInfo.tsx +3 -1
  54. package/src/components/organisms/searchTable/components/SearchAndSortBar.tsx +7 -5
  55. package/src/components/organisms/searchTable/components/SearchInput.tsx +4 -2
  56. package/src/components/organisms/searchTable/components/SortButton.tsx +13 -11
  57. package/src/components/organisms/searchTable/components/TableEmptyState.tsx +4 -2
  58. package/src/components/organisms/searchTable/components/TableRow.tsx +6 -4
  59. package/src/components/organisms/searchTable/searchTable.tsx +4 -2
  60. package/src/components/organisms/sidebar/sidebar.props.ts +1 -1
  61. package/src/components/organisms/sidebar/sidebar.tsx +9 -4
  62. package/src/components/organisms/toast/toast.tsx +3 -1
  63. package/src/components/organisms/topbar/topbar.tsx +4 -2
  64. package/src/components/templates/page/page.props.ts +4 -4
  65. package/src/components/templates/page/page.tsx +6 -4
  66. package/src/components/theme-provider/themeProvider.tsx +28 -17
  67. package/src/dev.css +77 -2
  68. package/src/global.d.ts +10 -0
  69. package/src/i18n/context.ts +9 -0
  70. package/src/i18n/index.ts +22 -0
  71. package/src/i18n/locales/en.ts +163 -0
  72. package/src/i18n/locales/es.ts +165 -0
  73. package/src/i18n/provider.tsx +44 -0
  74. package/src/i18n/translator.ts +82 -0
  75. package/src/i18n/types.ts +54 -0
  76. package/src/i18n/useITTranslation.ts +20 -0
  77. package/src/index.css +0 -1
  78. package/src/index.ts +9 -3
  79. package/src/sandbox/LandingShowcase.tsx +224 -580
  80. package/src/sandbox/NotFoundShowcase.tsx +51 -36
  81. package/src/sandbox/TopbarSearch.tsx +6 -4
  82. package/src/sandbox/controls.tsx +180 -0
  83. package/src/sandbox/i18n.ts +1929 -0
  84. package/src/sandbox/icons.tsx +25 -0
  85. package/src/sandbox/locale.tsx +72 -0
  86. package/src/sandbox/ui.tsx +377 -0
  87. package/src/sandbox/useHashRoute.ts +46 -10
  88. package/src/showcases/DataShowcases.tsx +201 -80
  89. package/src/showcases/FeedbackShowcases.tsx +37 -30
  90. package/src/showcases/FormShowcases.tsx +302 -214
  91. package/src/showcases/GettingStartedShowcase.tsx +151 -145
  92. package/src/showcases/HelpShowcase.tsx +126 -128
  93. package/src/showcases/HomeShowcase.tsx +678 -482
  94. package/src/showcases/LayoutPrimitivesShowcases.tsx +129 -114
  95. package/src/showcases/NavigationShowcases.tsx +45 -37
  96. package/src/showcases/PageShowcases.tsx +171 -152
  97. package/src/showcases/ProductoDetalle.tsx +272 -129
  98. package/src/showcases/ShowcaseLayout.tsx +270 -216
  99. package/src/showcases/SizesShowcase.tsx +123 -64
  100. package/src/showcases/StructureShowcases.tsx +157 -131
  101. package/src/showcases/portfolioUi.tsx +153 -0
  102. package/src/showcases/techIcons.ts +3 -0
  103. package/src/types/table.types.ts +110 -0
  104. package/src/utils/table.utils.ts +10 -2
  105. package/src/components/atoms/avatar/avatar.doc.mdx +0 -48
  106. package/src/components/atoms/avatar/avatar.stories.tsx +0 -64
  107. package/src/components/atoms/badget/badget.doc.mdx +0 -46
  108. package/src/components/atoms/badget/badget.stories.tsx +0 -75
  109. package/src/components/atoms/button/button.doc.mdx +0 -59
  110. package/src/components/atoms/button/button.stories.tsx +0 -173
  111. package/src/components/atoms/checkbox/checkbox.doc.mdx +0 -54
  112. package/src/components/atoms/checkbox/checkbox.stories.tsx +0 -53
  113. package/src/components/atoms/chip/chip.doc.mdx +0 -47
  114. package/src/components/atoms/chip/chip.stories.tsx +0 -64
  115. package/src/components/atoms/divider/divider.doc.mdx +0 -42
  116. package/src/components/atoms/divider/divider.stories.tsx +0 -33
  117. package/src/components/atoms/flex/flex.doc.mdx +0 -59
  118. package/src/components/atoms/flex/flex.stories.tsx +0 -70
  119. package/src/components/atoms/grid/grid.doc.mdx +0 -54
  120. package/src/components/atoms/grid/grid.stories.tsx +0 -71
  121. package/src/components/atoms/image/image.doc.mdx +0 -44
  122. package/src/components/atoms/image/image.stories.tsx +0 -48
  123. package/src/components/atoms/input/input.doc.mdx +0 -70
  124. package/src/components/atoms/input/input.stories.tsx +0 -113
  125. package/src/components/atoms/input-number/input-number.doc.mdx +0 -74
  126. package/src/components/atoms/input-number/input-number.stories.tsx +0 -111
  127. package/src/components/atoms/loader/loader.doc.mdx +0 -43
  128. package/src/components/atoms/loader/loader.stories.tsx +0 -104
  129. package/src/components/atoms/popover/popover.doc.mdx +0 -53
  130. package/src/components/atoms/popover/popover.stories.tsx +0 -24
  131. package/src/components/atoms/progress/progress.doc.mdx +0 -48
  132. package/src/components/atoms/progress/progress.stories.tsx +0 -39
  133. package/src/components/atoms/radio/radio.doc.mdx +0 -62
  134. package/src/components/atoms/radio/radio.stories.tsx +0 -48
  135. package/src/components/atoms/segmented-control/segmented-control.doc.mdx +0 -60
  136. package/src/components/atoms/segmented-control/segmented-control.stories.tsx +0 -62
  137. package/src/components/atoms/skeleton/skeleton.doc.mdx +0 -43
  138. package/src/components/atoms/skeleton/skeleton.stories.tsx +0 -29
  139. package/src/components/atoms/slide/slide.doc.mdx +0 -46
  140. package/src/components/atoms/slide/slide.stories.tsx +0 -120
  141. package/src/components/atoms/slider/slider.doc.mdx +0 -49
  142. package/src/components/atoms/slider/slider.stories.tsx +0 -29
  143. package/src/components/atoms/stack/stack.doc.mdx +0 -126
  144. package/src/components/atoms/stack/stack.stories.tsx +0 -283
  145. package/src/components/atoms/text/text.doc.mdx +0 -41
  146. package/src/components/atoms/text/text.stories.tsx +0 -66
  147. package/src/components/atoms/textarea/textarea.doc.mdx +0 -64
  148. package/src/components/atoms/textarea/textarea.stories.tsx +0 -26
  149. package/src/components/atoms/tooltip/tooltip.doc.mdx +0 -47
  150. package/src/components/atoms/tooltip/tooltip.stories.tsx +0 -19
  151. package/src/components/isolation/isolation.stories.tsx +0 -202
  152. package/src/components/molecules/accordion/accordion.doc.mdx +0 -47
  153. package/src/components/molecules/accordion/accordion.stories.tsx +0 -68
  154. package/src/components/molecules/alert/alert.doc.mdx +0 -48
  155. package/src/components/molecules/alert/alert.stories.tsx +0 -40
  156. package/src/components/molecules/breadcrumbs/breadcrumbs.doc.mdx +0 -57
  157. package/src/components/molecules/breadcrumbs/breadcrumbs.stories.tsx +0 -20
  158. package/src/components/molecules/calendar/calendar.doc.mdx +0 -76
  159. package/src/components/molecules/calendar/calendar.stories.tsx +0 -90
  160. package/src/components/molecules/card/card.doc.mdx +0 -54
  161. package/src/components/molecules/card/card.stories.tsx +0 -57
  162. package/src/components/molecules/chip-input/chip-input.doc.mdx +0 -44
  163. package/src/components/molecules/chip-input/chip-input.stories.tsx +0 -52
  164. package/src/components/molecules/date-picker/date-picker.doc.mdx +0 -65
  165. package/src/components/molecules/date-picker/date-picker.stories.tsx +0 -88
  166. package/src/components/molecules/dropdown-menu/dropdown-menu.doc.mdx +0 -46
  167. package/src/components/molecules/dropdown-menu/dropdown-menu.stories.tsx +0 -41
  168. package/src/components/molecules/empty-state/empty-state.doc.mdx +0 -50
  169. package/src/components/molecules/empty-state/empty-state.stories.tsx +0 -19
  170. package/src/components/molecules/field/field.doc.mdx +0 -43
  171. package/src/components/molecules/field/field.stories.tsx +0 -42
  172. package/src/components/molecules/form-header/form-header.doc.mdx +0 -38
  173. package/src/components/molecules/form-header/form-header.stories.tsx +0 -52
  174. package/src/components/molecules/masked-input/masked-input.doc.mdx +0 -78
  175. package/src/components/molecules/masked-input/masked-input.stories.tsx +0 -126
  176. package/src/components/molecules/multi-select/multi-select.doc.mdx +0 -55
  177. package/src/components/molecules/multi-select/multi-select.stories.tsx +0 -59
  178. package/src/components/molecules/pagination/pagination.doc.mdx +0 -62
  179. package/src/components/molecules/pagination/pagination.stories.tsx +0 -110
  180. package/src/components/molecules/search-select/search-select.doc.mdx +0 -77
  181. package/src/components/molecules/search-select/search-select.stories.tsx +0 -146
  182. package/src/components/molecules/select/select.doc.mdx +0 -75
  183. package/src/components/molecules/select/select.stories.tsx +0 -85
  184. package/src/components/molecules/stat-card/stat-card.doc.mdx +0 -48
  185. package/src/components/molecules/stat-card/stat-card.stories.tsx +0 -40
  186. package/src/components/molecules/stepper/stepper.doc.mdx +0 -54
  187. package/src/components/molecules/stepper/stepper.stories.tsx +0 -154
  188. package/src/components/molecules/table/table.doc.mdx +0 -123
  189. package/src/components/molecules/table/table.stories.tsx +0 -402
  190. package/src/components/molecules/tabs/tabs.doc.mdx +0 -52
  191. package/src/components/molecules/tabs/tabs.stories.tsx +0 -31
  192. package/src/components/molecules/time-picker/timePicker.doc.mdx +0 -68
  193. package/src/components/molecules/time-picker/timePicker.stories.tsx +0 -130
  194. package/src/components/molecules/wysiwyg/wysiwyg.stories.tsx +0 -95
  195. package/src/components/organisms/confirm-dialog/confirm-dialog.doc.mdx +0 -60
  196. package/src/components/organisms/confirm-dialog/confirm-dialog.stories.tsx +0 -32
  197. package/src/components/organisms/data-table/ITDataTable.doc.mdx +0 -115
  198. package/src/components/organisms/data-table/ITDataTable.stories.tsx +0 -353
  199. package/src/components/organisms/dialog/dialog.doc.mdx +0 -54
  200. package/src/components/organisms/dialog/dialog.stories.tsx +0 -126
  201. package/src/components/organisms/drawer/drawer.doc.mdx +0 -59
  202. package/src/components/organisms/drawer/drawer.stories.tsx +0 -40
  203. package/src/components/organisms/dropfile/dropfile.doc.mdx +0 -74
  204. package/src/components/organisms/dropfile/dropfile.stories.tsx +0 -93
  205. package/src/components/organisms/form-builder/formBuilder.doc.mdx +0 -251
  206. package/src/components/organisms/form-builder/formBuilder.stories.tsx +0 -914
  207. package/src/components/organisms/navbar/navbar.doc.mdx +0 -77
  208. package/src/components/organisms/navbar/navbar.stories.tsx +0 -83
  209. package/src/components/organisms/page-header/page-header.doc.mdx +0 -54
  210. package/src/components/organisms/page-header/page-header.stories.tsx +0 -74
  211. package/src/components/organisms/searchTable/searchTable.doc.mdx +0 -79
  212. package/src/components/organisms/searchTable/searchTable.stories.tsx +0 -73
  213. package/src/components/organisms/sidebar/sidebar.doc.mdx +0 -176
  214. package/src/components/organisms/sidebar/sidebar.stories.tsx +0 -234
  215. package/src/components/organisms/toast/toast.doc.mdx +0 -50
  216. package/src/components/organisms/toast/toast.stories.tsx +0 -137
  217. package/src/components/organisms/topbar/topbar.doc.mdx +0 -72
  218. package/src/components/organisms/topbar/topbar.stories.tsx +0 -79
  219. package/src/components/organisms/triple-filter/tripleFilter.doc.mdx +0 -62
  220. package/src/components/organisms/triple-filter/tripleFilter.stories.tsx +0 -31
  221. package/src/components/templates/layout/layout.doc.mdx +0 -53
  222. package/src/components/templates/layout/layout.stories.tsx +0 -113
  223. package/src/components/templates/page/page.doc.mdx +0 -86
  224. package/src/components/templates/page/page.stories.tsx +0 -97
  225. package/src/components/theme-provider/themeProvider.doc.mdx +0 -85
  226. package/src/components/theme-provider/themeProvider.stories.tsx +0 -58
@@ -0,0 +1,1929 @@
1
+ import type { ITMessagesByLocale } from "@/i18n";
2
+
3
+ /**
4
+ * Dev-only message catalog for the sandbox (chrome, navigation and showcase copy).
5
+ *
6
+ * It is **not** part of the published i18n catalog (`src/i18n/locales/*`): it is passed to
7
+ * `ITI18nProvider` via the `messages` prop from the sandbox only, so the package's runtime
8
+ * catalog stays free of dev-only strings.
9
+ */
10
+ export const sandboxMessages: ITMessagesByLocale = {
11
+ es: {
12
+ // Chrome
13
+ "sandbox.language": "Idioma",
14
+ "sandbox.theme": "Modo de color",
15
+ "sandbox.themeLight": "Claro",
16
+ "sandbox.themeDark": "Oscuro",
17
+ "sandbox.themeSystem": "Sistema",
18
+ "sandbox.notifications": "Notificaciones",
19
+ "sandbox.nav.portfolio": "Portafolio",
20
+ "sandbox.userMenu.portfolio": "Ir al Portafolio",
21
+ "sandbox.search.label": "Buscar componentes",
22
+ "sandbox.search.placeholder": "Buscar componente…",
23
+ "sandbox.search.clear": "Limpiar búsqueda",
24
+ "sandbox.search.results": "{count} resultados",
25
+
26
+ // Navigation (group + item labels that need translation)
27
+ "navigation.group.general": "General",
28
+ "navigation.group.struc": "Estructura & Layout",
29
+ "navigation.group.forms": "Formularios & Inputs",
30
+ "navigation.group.data": "Visualización Datos",
31
+ "navigation.group.nav": "Navegación & Control",
32
+ "navigation.group.feed": "Feedback & Sistema",
33
+ "navigation.item.help": "Ayuda · Solución de Bugs",
34
+ "navigation.item.sizes": "Medidas · sm / md / lg",
35
+ "navigation.item.screenDashboard": "Dashboard Ejemplo",
36
+ "navigation.item.screenForm": "Formulario Ejemplo",
37
+
38
+ // ── Showcase copy (dev-only) ──────────────────────────────────────────
39
+ // Common
40
+ "showcase.common.active": "Activo",
41
+ "showcase.common.activeLabel": "Activo:",
42
+ "showcase.common.cancel": "Cancelar",
43
+ "showcase.common.code": "Código",
44
+ "showcase.common.color": "Color",
45
+ "showcase.common.copied": "Copiado",
46
+ "showcase.common.copy": "Copiar",
47
+ "showcase.common.correct": "✅ Correcto",
48
+ "showcase.common.delete": "Eliminar",
49
+ "showcase.common.disabled": "Deshabilitado",
50
+ "showcase.common.on": "Encendido",
51
+ "showcase.common.off": "Apagado",
52
+ "showcase.common.edit": "Editar",
53
+ "showcase.common.error": "Error",
54
+ "showcase.common.hideCode": "Ocultar código",
55
+ "showcase.common.home": "Inicio",
56
+ "showcase.common.incorrect": "❌ Incorrecto",
57
+ "showcase.common.label": "Etiqueta",
58
+ "showcase.common.noSelection": "Sin selección",
59
+ "showcase.common.required": "Requerido",
60
+ "showcase.common.reset": "Reset",
61
+ "showcase.common.save": "Guardar",
62
+ "showcase.common.showCode": "Ver código",
63
+ "showcase.common.size": "Tamaño",
64
+ "showcase.common.variant": "Variante",
65
+ "showcase.common.view": "Ver",
66
+
67
+ // ShowcaseLayout chrome
68
+ "showcase.layout.code": "Código",
69
+ "showcase.layout.copied": "¡Copiado!",
70
+ "showcase.layout.copy": "Copiar",
71
+ "showcase.layout.default": "Por defecto",
72
+ "showcase.layout.docs": "Documentación",
73
+ "showcase.layout.eyebrow": "Vitrina de componentes",
74
+ "showcase.layout.gallery": "Variaciones y estados (Galería)",
75
+ "showcase.layout.jsxCode": "Código JSX",
76
+ "showcase.layout.notes": "Notas",
77
+ "showcase.layout.overview": "Descripción general",
78
+ "showcase.layout.preview": "Vista previa",
79
+ "showcase.layout.prop": "Prop",
80
+ "showcase.layout.properties": "Propiedades",
81
+ "showcase.layout.props": "Props",
82
+ "showcase.layout.sandbox": "Sandbox Interactivo",
83
+ "showcase.layout.type": "Tipo",
84
+ "showcase.layout.usageExamples": "Ejemplos de uso",
85
+
86
+ // Sizes
87
+ "showcase.sizes.title": "Medidas estándar · sm / md / lg",
88
+ "showcase.sizes.desc":
89
+ "Una sola escala para todos los componentes. El tamaño del formulario, select, botón y badge se controla con la misma prop",
90
+ "showcase.sizes.rowDesc": "Medida estándar del sistema",
91
+ "showcase.sizes.name": "Nombre",
92
+ "showcase.sizes.role": "Rol",
93
+ "showcase.sizes.placeholder": "Selecciona una opción",
94
+ "showcase.sizes.exampleName": "Ej: Juan",
95
+ "showcase.sizes.draft": "Borrador",
96
+
97
+ // Producto detalle
98
+ "showcase.producto.whatItSolves": "Qué resuelve",
99
+ "showcase.producto.stack": "Stack",
100
+ "showcase.producto.specSheet": "Ficha técnica",
101
+ "showcase.producto.back": "Volver al portafolio",
102
+ "showcase.producto.gallery": "Galería",
103
+ "showcase.producto.cta": "¿Te interesa este proyecto?",
104
+ "showcase.producto.navLabel": "Navegación entre proyectos",
105
+ "showcase.producto.prev": "Proyecto anterior",
106
+ "showcase.producto.next": "Proyecto siguiente",
107
+
108
+ // Getting started
109
+ "showcase.gettingStarted.heroDesc":
110
+ "Librería de componentes React con Tailwind CSS v4. Diseñada para apps enterprise con experiencia de desarrollo fluida.",
111
+ "showcase.gettingStarted.stepsTitle": "Instalación paso a paso",
112
+ "showcase.gettingStarted.stepsSubtitle":
113
+ "Seis pasos: dependencias, Vite, Tailwind, provider, tipos y tu primer componente.",
114
+ "showcase.gettingStarted.step1Title": "Instalar dependencias",
115
+ "showcase.gettingStarted.step1Desc": "Tailwind v4 y su plugin para Vite.",
116
+ "showcase.gettingStarted.step2Title": "Configurar Vite",
117
+ "showcase.gettingStarted.step2Desc": "Agrega Tailwind como plugin de Vite.",
118
+ "showcase.gettingStarted.step3Title": "Agregar Tailwind",
119
+ "showcase.gettingStarted.step3Desc": "Importa Tailwind en tu archivo CSS.",
120
+ "showcase.gettingStarted.step4Title": "Importar estilos",
121
+ "showcase.gettingStarted.step4Desc": "Envuelve tu app con el provider.",
122
+ "showcase.gettingStarted.step5Title": "Declaración de tipos",
123
+ "showcase.gettingStarted.step5Desc": "Para que TS acepte imports CSS.",
124
+ "showcase.gettingStarted.step6Title": "Primer componente",
125
+ "showcase.gettingStarted.step6Desc": "Ya puedes usar cualquier componente.",
126
+ "showcase.gettingStarted.themingTitle": "Theming",
127
+ "showcase.gettingStarted.themingDesc":
128
+ "Personaliza colores en runtime. Solo necesitas los que quieras cambiar.",
129
+
130
+ // Landing (#ui-system) & 404
131
+ "showcase.landing.previewBadge": "preview",
132
+ "showcase.landing.typed": "Tipado",
133
+ "showcase.landing.statComponents": "Componentes",
134
+ "showcase.landing.statComponentsHint": "páginas documentadas",
135
+ "showcase.landing.statFamilies": "Familias",
136
+ "showcase.landing.statFamiliesHint": "grupos de navegación",
137
+ "showcase.landing.statTypedHint": "tipado estricto",
138
+ "showcase.landing.statUiDeps": "UI deps",
139
+ "showcase.landing.statUiDepsHint": "sin runtime extra",
140
+ "showcase.landing.featureTokens":
141
+ "Tailwind CSS v4 con tokens de tema en runtime",
142
+ "showcase.landing.featureA11y":
143
+ "Accesibilidad: roles, foco y nombres accesibles",
144
+ "showcase.landing.featureDarkMode":
145
+ "Dark mode automático vía ITThemeProvider",
146
+ "showcase.landing.featureTreeShakeable":
147
+ "Tree-shakeable: solo importas lo que usas",
148
+ "showcase.landing.featureNoDeps":
149
+ "Sin dependencias de UI de terceros",
150
+ "showcase.landing.featureDocumented":
151
+ "Documentado con ejemplos ejecutables",
152
+ "showcase.landing.heroTitleLead": "Componentes para",
153
+ "showcase.landing.heroTitleHighlight": "interfaces serias",
154
+ "showcase.landing.heroSubtitle":
155
+ "Una librería React + TypeScript con Tailwind CSS v4: accesible, temable y lista para producción. Explora {pages} páginas en {families} familias.",
156
+ "showcase.landing.exploreComponents": "Explorar componentes",
157
+ "showcase.landing.viewPortfolio": "Ver portafolio",
158
+ "showcase.landing.ariaStats": "Métricas de la librería",
159
+ "showcase.landing.exploreTitle": "Explora por familia",
160
+ "showcase.landing.exploreSubtitle":
161
+ "Cada fila te lleva directo al primer componente del grupo.",
162
+ "showcase.landing.moreItems": "+{count} más",
163
+ "showcase.landing.quickstartEyebrow": "Puesta en marcha",
164
+ "showcase.landing.quickstartTitle": "Quickstart",
165
+ "showcase.landing.quickstartSubtitle":
166
+ "Un provider de tema, una hoja de estilos y tu primer botón.",
167
+ "showcase.landing.minimalExample": "Ejemplo mínimo",
168
+ "showcase.landing.builtIn": "Incluido de fábrica",
169
+ "showcase.landing.ctaTitle": "¿Listo para construir?",
170
+ "showcase.landing.ctaSubtitle":
171
+ "Revisa el portafolio, el código fuente o explora el sandbox de componentes.",
172
+ "showcase.landing.footerRun": "Ejecuta",
173
+ "showcase.landing.footerOpen": "y abre",
174
+ "showcase.landing.footerSuffix": "para ver cada componente.",
175
+ "showcase.notFound.eyebrow": "// error 404",
176
+ "showcase.notFound.title": "Ruta no encontrada",
177
+ "showcase.notFound.description":
178
+ "No existe una página para este hash. Revisa el enlace o vuelve al inicio.",
179
+ "showcase.notFound.backHome": "Volver al inicio",
180
+
181
+ // Help
182
+ "showcase.help.badge": "Soporte",
183
+ "showcase.help.title": "Ayuda & Solución de Bugs",
184
+ "showcase.help.subtitle":
185
+ "Guía para diagnosticar y resolver los problemas más frecuentes al usar AXZY UI System, más una checklist para reportar incidencias con todo el contexto necesario.",
186
+ "showcase.help.reportBug": "Reportar un bug",
187
+ "showcase.help.viewRepo": "Ver repositorio",
188
+ "showcase.help.quickDiagnosis": "Diagnóstico rápido",
189
+ "showcase.help.quickDiagnosisHint":
190
+ "Ejecuta estos comandos antes de reportar cualquier fallo.",
191
+ "showcase.help.commonErrors": "Errores comunes y su solución",
192
+ "showcase.help.commonErrorsHint":
193
+ "Síntoma, causa y arreglo de los tropiezos más habituales del stack.",
194
+ "showcase.help.faq": "Preguntas frecuentes",
195
+ "showcase.help.faqHint": "Respuestas cortas a las dudas más repetidas.",
196
+ "showcase.help.howToReport": "Cómo reportar un bug",
197
+ "showcase.help.reportIntro":
198
+ "Un buen reporte se puede reproducir sin preguntas extra. Sigue estos pasos y completa la checklist antes de abrir el issue.",
199
+ "showcase.help.steps": "Pasos",
200
+ "showcase.help.includeInReport": "Incluye en el reporte",
201
+ "showcase.help.footerHint":
202
+ "¿Dudas de uso en lugar de un bug? Abre una discusión en el repositorio.",
203
+ "showcase.help.openIssue": "Abrir issue",
204
+ "showcase.help.viewAgents": "Ver AGENTS.md",
205
+ "showcase.help.fixPill":
206
+ "Pasos reproducibles + versión + entorno = reporte accionable",
207
+
208
+ // Home (portfolio)
209
+ "showcase.home.ariaStats": "Métricas del perfil",
210
+ "showcase.home.sectionNav": "Navegación del portafolio",
211
+ "showcase.home.skipToContent": "Saltar al contenido",
212
+ "showcase.home.backToTop": "Volver arriba",
213
+ "showcase.home.navAbout": "Sobre mí",
214
+ "showcase.home.navStack": "Stack",
215
+ "showcase.home.navProjects": "Proyectos",
216
+ "showcase.home.navContact": "Contacto",
217
+ "showcase.home.navUiSystem": "UI System",
218
+ "showcase.home.moreStack": "+{count} más",
219
+ "showcase.home.noPreview": "Sin capturas",
220
+ "showcase.home.footerBuiltWith": "Hecho con AXZY UI System",
221
+ "showcase.home.badge": "Portafolio · 2026",
222
+ "showcase.home.heroLead": "Del API a la interfaz:",
223
+ "showcase.home.heroAccent": "producto completo, en producción.",
224
+ "showcase.home.featuredLabel": "Destacado",
225
+ "showcase.home.catLanguages": "Lenguajes",
226
+ "showcase.home.catDesktop": "Escritorio",
227
+ "showcase.home.catTools": "Herramientas",
228
+ "showcase.home.catTesting": "Pruebas",
229
+ "showcase.home.hello": "Hola, soy",
230
+ "showcase.home.bio":
231
+ "Fullstack Developer con 4+ años creando aplicaciones web modernas. Especializado en TypeScript, Angular y React, con foco en arquitectura limpia y en productos que la gente usa todos los días.",
232
+ "showcase.home.downloadCv": "Descargar CV",
233
+ "showcase.home.availableFullstack": "Disponible para proyectos fullstack",
234
+ "showcase.home.role": "Fullstack Developer",
235
+ "showcase.home.location": "Remoto · México",
236
+ "showcase.home.available": "Disponible",
237
+ "showcase.home.statExperience": "Experiencia",
238
+ "showcase.home.statExperienceHint": "años como fullstack",
239
+ "showcase.home.statTech": "Tecnologías",
240
+ "showcase.home.statTechHint": "en el stack",
241
+ "showcase.home.statProducts": "Productos",
242
+ "showcase.home.statProductsHint": "propios y en uso",
243
+ "showcase.home.statMode": "Modalidad",
244
+ "showcase.home.statModeValue": "Remoto",
245
+ "showcase.home.statModeHint": "disponible ya",
246
+ "showcase.home.eyebrowBase": "Base técnica",
247
+ "showcase.home.titleTech": "Lenguajes y frameworks",
248
+ "showcase.home.subtitleTech": "Con los que trabajo todos los días.",
249
+ "showcase.home.labelLanguages": "Lenguajes",
250
+ "showcase.home.labelFrameworks": "Frameworks",
251
+ "showcase.home.eyebrowStack": "Stack",
252
+ "showcase.home.titleStack": "Tecnologías que uso",
253
+ "showcase.home.subtitleStack": "Filtra por área o busca por nombre.",
254
+ "showcase.home.searchTech": "Buscar tecnología...",
255
+ "showcase.home.searchTechAria": "Buscar tecnología por nombre",
256
+ "showcase.home.noTech": "No se encontraron tecnologías para “{term}”.",
257
+ "showcase.home.techCount": "{shown} de {total} tecnologías",
258
+ "showcase.home.catAll": "Todos",
259
+ "showcase.home.catFrontend": "Frontend",
260
+ "showcase.home.catBackend": "Backend",
261
+ "showcase.home.catMobile": "Móvil",
262
+ "showcase.home.catDatabase": "Bases de Datos",
263
+ "showcase.home.catDevops": "DevOps",
264
+ "showcase.home.eyebrowPortfolio": "Portafolio",
265
+ "showcase.home.titleProducts": "Productos que construí",
266
+ "showcase.home.subtitleProducts":
267
+ "Los que tienen capturas se abren en su pantalla de detalle.",
268
+ "showcase.home.viewDetail": "Ver detalle",
269
+ "showcase.home.viewDetailOf": "Ver detalle de {name}",
270
+ "showcase.home.captures": "{count} capturas",
271
+ "showcase.home.viewRepo": "Ver el repositorio",
272
+ "showcase.home.eyebrowNext": "Siguientes pasos",
273
+ "showcase.home.titleTogether": "¿Trabajamos juntos?",
274
+ "showcase.home.subtitleTogether":
275
+ "Estoy disponible para proyectos fullstack, de producto o de diseño de sistemas.",
276
+ "showcase.home.writingPrefix": "También escribo en",
277
+ "showcase.home.codeOn": "y el código de mis productos está en",
278
+
279
+ // Navigation showcases
280
+ "showcase.nav.tabsDesc":
281
+ "Separadores de contenido en pestañas integrables con íconos y transiciones.",
282
+ "showcase.nav.tabGeneral": "General",
283
+ "showcase.nav.tabsGeneralBody":
284
+ "Configuración global y perfil general de la cuenta.",
285
+ "showcase.nav.tabSecurity": "Seguridad",
286
+ "showcase.nav.tabsSecurityBody":
287
+ "Ajustes de credenciales, MFA y logs de accesos.",
288
+ "showcase.nav.tabNotifications": "Notificaciones",
289
+ "showcase.nav.tabsNotificationsBody":
290
+ "Preferencias de alertas vía email, SMS y notificaciones PUSH.",
291
+ "showcase.nav.variantAesthetic": "Variante Estética",
292
+ "showcase.nav.stepperDesc":
293
+ "Barra e indicador secuencial de pasos para completar procesos guiados complejos.",
294
+ "showcase.nav.stepValidate": "Validar Identidad",
295
+ "showcase.nav.stepValidateBody":
296
+ "Paso 1: Sube tu documento de identidad oficial.",
297
+ "showcase.nav.stepKyc": "Cargar KYC",
298
+ "showcase.nav.stepKycBody":
299
+ "Paso 2: Rellena tus datos fiscales y origen de fondos.",
300
+ "showcase.nav.stepSign": "Completar Firma",
301
+ "showcase.nav.stepSignBody": "Paso 3: Realiza la firma biométrica digital.",
302
+ "showcase.nav.stepperFinish": "Proceso completado exitosamente!",
303
+ "showcase.nav.useIcons": "Usar íconos",
304
+ "showcase.nav.resetStep": "Reiniciar Paso",
305
+ "showcase.nav.paginationDesc":
306
+ "Controlador de navegación de páginas numeradas con botones de dirección rápida.",
307
+ "showcase.nav.currentPage": "Página actual activa: {page} de 10",
308
+ "showcase.nav.activeColorLabel": "Color del Botón Activo",
309
+ "showcase.nav.tripleFilterDesc":
310
+ "Selector segmentado rápido diseñado típicamente para filtros rápidos de 3 estados.",
311
+ "showcase.nav.filterAll": "Todos",
312
+ "showcase.nav.filterActive": "Activos",
313
+ "showcase.nav.filterInactive": "Inactivos",
314
+ "showcase.nav.activeFilter": "Filtro activo: \"{filter}\"",
315
+ "showcase.nav.tripleFilterHint":
316
+ "Proporciona un layout de tipo segmentado con animación al cambiar entre las opciones disponibles.",
317
+ "showcase.nav.dropdownDesc":
318
+ "Menú de acciones con navegación por teclado y semántica ARIA. Se renderiza en portal, por lo que no lo recorta un ITCard ni ancestros con overflow: hidden.",
319
+ "showcase.nav.rowActions": "Acciones de fila",
320
+ "showcase.nav.lastAction": "Última acción: {action}",
321
+ "showcase.nav.dropdownKeyboardHint":
322
+ "Teclado: flechas para navegar, Enter para activar, Esc para cerrar. El menú se abre dentro del ITCard sin recortarse.",
323
+ "showcase.nav.customTrigger": "Trigger personalizado",
324
+ "showcase.nav.actions": "Acciones",
325
+ "showcase.nav.actionEdit": "Editar",
326
+ "showcase.nav.actionDuplicate": "Duplicar",
327
+ "showcase.nav.actionDownload": "Descargar",
328
+ "showcase.nav.actionDelete": "Eliminar",
329
+ "showcase.nav.none": "—",
330
+
331
+ // Data showcases
332
+ "showcase.data.tableDesc":
333
+ "Tabla con vista responsive Table / Cards, paginación, filtros y template de card personalizable.",
334
+ "showcase.data.selectedName": "Seleccionado: {name}",
335
+ "showcase.data.selectedNameId": "Seleccionado: {name} (id {id})",
336
+ "showcase.data.clickToSelect":
337
+ "Haz clic en una fila/card o pulsa Enter/Espacio para seleccionar",
338
+ "showcase.data.teamMembers": "Miembros del equipo",
339
+ "showcase.data.tableVariant": "Variante de tabla",
340
+ "showcase.data.rowSize": "Tamaño de fila",
341
+ "showcase.data.customCardTemplate": "Template de card personalizado",
342
+ "showcase.data.defaultCardActive":
343
+ "Card por defecto activa — muestra todas las columnas como pares etiqueta-valor",
344
+ "showcase.data.galleryCustomCardsHover": "Cards personalizadas con hover",
345
+ "showcase.data.galleryDefaultCards": "ITTable con cards por defecto",
346
+ "showcase.data.galleryCustomCardsPagination":
347
+ "ITTable con cards personalizadas + paginación",
348
+ "showcase.data.galleryAllMembers": "Todos los miembros",
349
+ "showcase.data.galleryCompactFixed":
350
+ "Layout fijo compacto — sin scroll horizontal",
351
+ "showcase.data.galleryFixedLayout": "Layout fijo",
352
+ "showcase.data.galleryPinnedNameActions":
353
+ "Columnas fijas — izquierda (Name) y derecha (Actions)",
354
+ "showcase.data.galleryPinnedColumns": "Columnas fijas",
355
+ "showcase.data.galleryAutoCards":
356
+ "Fallback a cards automático (< 640px de contenedor)",
357
+ "showcase.data.galleryNarrowContainer": "Contenedor estrecho",
358
+ "showcase.data.galleryVirtualized":
359
+ "Tabla virtualizada — 300 filas (solo se monta la ventana visible)",
360
+ "showcase.data.galleryVirtualizedTitle": "Virtualizada · 300 filas",
361
+ "showcase.data.galleryColumnFilters":
362
+ "Filtros de columna: ITSearchSelect + ITDatePicker (única y rango)",
363
+ "showcase.data.galleryFilterDemo": "Demo de filtros",
364
+ "showcase.data.galleryDesignOverrides":
365
+ "Overrides de diseño — colors + slots design, sin switch",
366
+ "showcase.data.galleryCustomDesign": "Diseño personalizado",
367
+ "showcase.data.galleryPerColumnDesign":
368
+ "Diseño por columna — header y celda por columna",
369
+ "showcase.data.galleryPerColumnTitle": "Por columna",
370
+ "showcase.data.dataTableDesc":
371
+ "Tabla auto-suficiente con carga dinámica, filtros, paginación y vista responsive Cards/Table.",
372
+ "showcase.data.titleConnectionError": "Error de conexión",
373
+ "showcase.data.titleNoData": "Sin datos",
374
+ "showcase.data.titleUsers": "Usuarios",
375
+ "showcase.data.inactive": "Inactivo",
376
+ "showcase.data.apiState": "Estado de la API",
377
+ "showcase.data.stateNormal": "Normal",
378
+ "showcase.data.stateLoading": "Cargando",
379
+ "showcase.data.stateEmpty": "Vacío",
380
+ "showcase.data.stateError": "Error",
381
+ "showcase.data.borders": "Bordes",
382
+ "showcase.data.borderGray": "Gris",
383
+ "showcase.data.borderBlue": "Azul",
384
+ "showcase.data.borderRose": "Rosa",
385
+ "showcase.data.borderNone": "Ninguno",
386
+ "showcase.data.tableCapabilities": "Capacidades de la tabla",
387
+ "showcase.data.density": "Densidad",
388
+ "showcase.data.layout": "Layout",
389
+ "showcase.data.autoCardsBelow": "Auto cards por debajo (px)",
390
+ "showcase.data.virtualizedGallery": "Virtualizada (galería)",
391
+ "showcase.data.stickyHeader": "Header fijo",
392
+ "showcase.data.capabilitiesHint":
393
+ 'size, density, layout y auto-cards aplican al demo principal; virtualized y sticky header solo al bloque "Server-side virtualization" de la galería. Ese bloque no recibe autoCardBreakpoint: las cards nunca se virtualizan y el fallback de auto-cards desactivaría la virtualización en silencio.',
394
+ "showcase.data.galleryDefaultCardsPagination":
395
+ "Cards por defecto con paginación",
396
+ "showcase.data.galleryPinnedIdActive":
397
+ "Columnas fijas — izquierda (ID) y derecha (Active)",
398
+ "showcase.data.galleryServerVirtualization":
399
+ "Virtualización server-side — 240 filas (página {page})",
400
+ "showcase.data.galleryVirtualizedUsers": "Usuarios virtualizados",
401
+ "showcase.data.badgetDesc":
402
+ "Badges (etiquetas) estilizados para representar estados o categorías de items.",
403
+ "showcase.data.textLabel": "Texto",
404
+ "showcase.data.imageDesc":
405
+ "Componente de renderizado de imágenes inteligente con cargador interno y fallback automático ante fallas de red.",
406
+ "showcase.data.imageAlt": "Imagen abstracta",
407
+ "showcase.data.imageBroken": "Cargando URL Rota (Fallback Activo)",
408
+ "showcase.data.imageOk": "Cargando URL Correcta",
409
+ "showcase.data.forceError": "Forzar Error de Carga (URL rota)",
410
+ "showcase.data.chipDesc":
411
+ "Etiqueta compacta (tag / pill) para labels, filtros activos y selecciones múltiples. Variantes soft, filled y outlined, icono, botón de quitar (X) y estado seleccionado.",
412
+ "showcase.data.chipDisabled": "Deshabilitado",
413
+ "showcase.data.chipHint":
414
+ "Los chips con onClick son toggles de filtro (role=button, Enter/Space). Los chips removibles muestran una X.",
415
+
416
+ // Feedback showcases
417
+ "showcase.feedback.dialogDesc":
418
+ "Cajas de diálogo modales con overlay oscuro y soporte de cabeceras de formulario.",
419
+ "showcase.feedback.openModal": "Abrir Ventana Modal",
420
+ "showcase.feedback.dialogTitle": "Confirmación de Auditoría",
421
+ "showcase.feedback.dialogBody":
422
+ "Se guardará un registro inmutable en los logs de la blockchain corporativa. Esta acción es irreversible.",
423
+ "showcase.feedback.auditorLabel": "Auditor responsable",
424
+ "showcase.feedback.auditorPlaceholder": "Busca un auditor...",
425
+ "showcase.feedback.authorize": "Autorizar",
426
+ "showcase.feedback.signedTransaction": "Transacción firmada!",
427
+ "showcase.feedback.useFormHeader": "Usar Cabecera de Formulario",
428
+ "showcase.feedback.toastDesc":
429
+ "Alertas efímeras del sistema flotantes para notificar eventos inmediatos al usuario.",
430
+ "showcase.feedback.toastDefaultMsg": "¡La operación se procesó con éxito!",
431
+ "showcase.feedback.message": "Mensaje",
432
+ "showcase.feedback.notificationType": "Tipo de Notificación",
433
+ "showcase.feedback.launchNotification": "Lanzar Notificación",
434
+ "showcase.feedback.toastSuccess": "Toast Éxito",
435
+ "showcase.feedback.toastError": "Toast Error",
436
+ "showcase.feedback.toastWarning": "Toast Warning",
437
+ "showcase.feedback.toastInfo": "Toast Info",
438
+ "showcase.feedback.msgSuccess": "Operación exitosa!",
439
+ "showcase.feedback.msgError": "Ocurrió un fallo de red.",
440
+ "showcase.feedback.msgWarning": "Licencia por expirar.",
441
+ "showcase.feedback.msgInfo": "Actualización disponible.",
442
+ "showcase.feedback.loaderDesc":
443
+ "Indicadores de carga animados con soporte para múltiples estilos visuales.",
444
+ "showcase.feedback.loaderVariant": "Tipo de Cargador",
445
+ "showcase.feedback.themeDesc":
446
+ "Inyector dinámico de tokens CSS que gestiona el modo oscuro/claro y las paletas de colores unificadas.",
447
+ "showcase.feedback.appearanceMode": "Modo de Apariencia",
448
+ "showcase.feedback.modeLight": "☀️ Claro",
449
+ "showcase.feedback.modeDark": "🌙 Oscuro",
450
+ "showcase.feedback.modeSystem": "💻 Sistema",
451
+ "showcase.feedback.currentTheme": "Tema actual:",
452
+ "showcase.feedback.modeDarkName": "Oscuro",
453
+ "showcase.feedback.modeLightName": "Claro",
454
+ "showcase.feedback.quickPresets": "Presets Rápidos",
455
+ "showcase.feedback.themeHint1":
456
+ "Haz clic en el botón flotante de paleta 🎨 en la esquina inferior derecha para abrir el diseñador completo.",
457
+ "showcase.feedback.themeHint2":
458
+ "Allí puedes ajustar cada color, guardar temas personalizados y alternar entre modo claro/oscuro.",
459
+
460
+ // Layout primitives showcases
461
+ "showcase.layoutPrimitives.stackDesc":
462
+ "Layout basado en flexbox con dirección, spacing uniforme, alineación y distribución. Ideal para secciones verticales, toolbars horizontales, listas de items y form rows.",
463
+ "showcase.layoutPrimitives.direction": "Dirección",
464
+ "showcase.layoutPrimitives.spacingUnits": "Espaciado (unidades de 0.25rem)",
465
+ "showcase.layoutPrimitives.alignItems": "Alinear Items",
466
+ "showcase.layoutPrimitives.justifyContent": "Justificar Contenido",
467
+ "showcase.layoutPrimitives.flexWrap": "Ajuste de Línea",
468
+ "showcase.layoutPrimitives.showDivider": "Mostrar divisor",
469
+ "showcase.layoutPrimitives.spacingScale": "Escala de Espaciado",
470
+ "showcase.layoutPrimitives.spacingScaleSubtitle":
471
+ "Prueba distintos valores de gap para sentir el ritmo",
472
+ "showcase.layoutPrimitives.scaleTight": "Ajustado",
473
+ "showcase.layoutPrimitives.scaleTightDesc": "UI compacta",
474
+ "showcase.layoutPrimitives.scaleDefault": "Por defecto",
475
+ "showcase.layoutPrimitives.scaleDefaultDesc": "Cómodo",
476
+ "showcase.layoutPrimitives.scaleRelaxed": "Relajado",
477
+ "showcase.layoutPrimitives.scaleRelaxedDesc": "Espacio para respirar",
478
+ "showcase.layoutPrimitives.scaleSpacious": "Amplio",
479
+ "showcase.layoutPrimitives.scaleSpaciousDesc": "Secciones hero",
480
+ "showcase.layoutPrimitives.justifyTitle": "Justificar Contenido",
481
+ "showcase.layoutPrimitives.justifySubtitle":
482
+ "Cómo se distribuyen los hijos a lo largo del eje principal",
483
+ "showcase.layoutPrimitives.justifyStartDesc": "Hijos agrupados al inicio",
484
+ "showcase.layoutPrimitives.justifyCenterDesc": "Hijos centrados en el eje",
485
+ "showcase.layoutPrimitives.justifyEndDesc": "Hijos agrupados al final",
486
+ "showcase.layoutPrimitives.justifyBetweenDesc":
487
+ "Primero/último en los bordes, el resto repartido uniformemente",
488
+ "showcase.layoutPrimitives.justifyAroundDesc":
489
+ "Espacio igual alrededor de cada hijo",
490
+ "showcase.layoutPrimitives.justifyEvenlyDesc": "Espacio igual en todas partes",
491
+ "showcase.layoutPrimitives.alignTitle": "Alinear Items",
492
+ "showcase.layoutPrimitives.alignSubtitle":
493
+ "Cómo se alinean los hijos en el eje transversal",
494
+ "showcase.layoutPrimitives.alignStartDesc": "Alineados arriba (en fila)",
495
+ "showcase.layoutPrimitives.alignCenterDesc": "Centrados en el eje transversal",
496
+ "showcase.layoutPrimitives.alignEndDesc": "Alineados abajo (en fila)",
497
+ "showcase.layoutPrimitives.alignStretchDesc":
498
+ "Los hijos llenan el eje transversal",
499
+ "showcase.layoutPrimitives.alignBaselineDesc":
500
+ "Las líneas base del texto se alinean",
501
+ "showcase.layoutPrimitives.stackGallerySubtitle":
502
+ "UI lista para producción construida enteramente con ITStack",
503
+ "showcase.layoutPrimitives.patternPageHeader": "Encabezado de página",
504
+ "showcase.layoutPrimitives.patternPageHeaderDesc": "Título + acciones a la derecha",
505
+ "showcase.layoutPrimitives.patternTagCloud": "Nube de etiquetas",
506
+ "showcase.layoutPrimitives.patternTagCloudDesc":
507
+ "Wrap activado para etiquetas fluidas",
508
+ "showcase.layoutPrimitives.patternSectionList": "Lista de secciones",
509
+ "showcase.layoutPrimitives.patternSectionListDesc": "Divisor sutil entre items",
510
+ "showcase.layoutPrimitives.patternNotification": "Banner de notificación",
511
+ "showcase.layoutPrimitives.patternNotificationDesc": "Icono + mensaje + cerrar",
512
+ "showcase.layoutPrimitives.patternStatsRow": "Fila de métricas",
513
+ "showcase.layoutPrimitives.patternStatsRowDesc":
514
+ "3 tarjetas de métrica en una fila",
515
+ "showcase.layoutPrimitives.flexDesc":
516
+ "Contenedor flexbox completo con control total sobre alineación, distribución y gap. Para layouts complejos que requieren más control que ITStack.",
517
+ "showcase.layoutPrimitives.gapUnits": "Gap (unidades de 0.25rem)",
518
+ "showcase.layoutPrimitives.flexGallerySubtitle":
519
+ "UI lista para producción construida enteramente con ITFlex",
520
+ "showcase.layoutPrimitives.patternToolbarRow": "Fila de toolbar",
521
+ "showcase.layoutPrimitives.patternGrowLayout": "Layout con grow",
522
+ "showcase.layoutPrimitives.patternCenteredHero": "Hero centrado",
523
+ "showcase.layoutPrimitives.patternResponsiveForm": "Formulario responsivo",
524
+ "showcase.layoutPrimitives.patternFullHeight": "Layout a altura completa",
525
+ "showcase.layoutPrimitives.gridDesc":
526
+ "Sistema de grid responsivo de 12 columnas. Ideal para dashboards, galerías, y layouts de página completos.",
527
+ "showcase.layoutPrimitives.columnsLabel": "Columnas",
528
+ "showcase.layoutPrimitives.gridGallerySubtitle":
529
+ "Layouts listos para producción construidos con ITGrid",
530
+ "showcase.layoutPrimitives.patternAppDashboard": "Dashboard de app",
531
+ "showcase.layoutPrimitives.patternUserProfile": "Perfil de usuario",
532
+ "showcase.layoutPrimitives.patternArticleLayout": "Layout de artículo",
533
+ "showcase.layoutPrimitives.patternPricingComparison": "Comparación de precios",
534
+ "showcase.layoutPrimitives.screensTitle": "Pantallas Compuestas",
535
+ "showcase.layoutPrimitives.screensSubtitle":
536
+ "Ejemplos reales combinando ITStack + ITFlex + ITGrid para construir pantallas completas en minutos.",
537
+ "showcase.layoutPrimitives.dashboardCard": "Dashboard de Métricas",
538
+ "showcase.layoutPrimitives.dashboardSubtitle":
539
+ "Resumen de actividad del sistema",
540
+ "showcase.layoutPrimitives.export": "Exportar",
541
+ "showcase.layoutPrimitives.statActiveUsers": "Usuarios Activos",
542
+ "showcase.layoutPrimitives.statOpenTickets": "Tickets Abiertos",
543
+ "showcase.layoutPrimitives.salesChart": "Gráfico de Ventas",
544
+ "showcase.layoutPrimitives.last30Days": "Últimos 30 días",
545
+ "showcase.layoutPrimitives.formCard": "Formulario Responsivo",
546
+ "showcase.layoutPrimitives.newUser": "Nuevo Usuario",
547
+ "showcase.layoutPrimitives.newUserSubtitle":
548
+ "Completa los campos para registrar un nuevo usuario",
549
+ "showcase.layoutPrimitives.exampleJuan": "Ej: Juan",
550
+ "showcase.layoutPrimitives.examplePerez": "Ej: Pérez",
551
+ "showcase.layoutPrimitives.exampleEmail": "ej: usuario@correo.com",
552
+ "showcase.layoutPrimitives.department": "Departamento",
553
+
554
+ // Structure showcases
555
+ "showcase.structure.cardDesc":
556
+ "Contenedor multipropósito con cabecera opcional, imagen, contenido y pie de acciones. Se vuelve interactivo con `onClick` (efecto hover).",
557
+ "showcase.structure.cardTitleLabel": "Título",
558
+ "showcase.structure.cardTitlePlaceholder": "Deja vacío para ocultar",
559
+ "showcase.structure.showImage": "Mostrar imagen",
560
+ "showcase.structure.showActions": "Mostrar acciones",
561
+ "showcase.structure.interactiveOnClick": "Interactivo (onClick)",
562
+ "showcase.structure.galleryRealCases": "Casos de UI reales",
563
+ "showcase.structure.galleryCardsSubtitle":
564
+ "Layouts de card listos para producción construidos con ITCard",
565
+ "showcase.structure.patternCourseProgress": "Progreso del curso",
566
+ "showcase.structure.patternPricing": "Plan de precios destacado",
567
+ "showcase.structure.patternActivity": "Item de feed de actividad",
568
+ "showcase.structure.patternTeamMember": "Perfil de miembro del equipo",
569
+ "showcase.structure.textDesc":
570
+ "Wrapper tipográfico semántico. Renderiza cualquier elemento HTML, con soporte para truncado por caracteres, clamp de líneas y corte programático.",
571
+ "showcase.structure.renderingAs": "Renderizando como",
572
+ "showcase.structure.elementAs": "Elemento HTML (as)",
573
+ "showcase.structure.lineClampLabel": "Número de líneas (lineClamp)",
574
+ "showcase.structure.maxTextLabel": "Texto máximo (caracteres)",
575
+ "showcase.structure.noLimit": "0 = sin límite",
576
+ "showcase.structure.truncateHint":
577
+ "Trunca con \"…\" al superar (0 = desactivado).",
578
+ "showcase.structure.breakLabel": "Salto de línea después de (caracteres)",
579
+ "showcase.structure.noBreak": "0 = sin salto",
580
+ "showcase.structure.brHint": "Inserta un <br /> al superar el límite.",
581
+ "showcase.structure.breakWrapLabel":
582
+ "breakLengthWrap (corte cada N caracteres)",
583
+ "showcase.structure.noCut": "0 = sin corte",
584
+ "showcase.structure.cutHint":
585
+ "Inserta oportunidades de corte cada N chars (0 = desactivado).",
586
+ "showcase.structure.boldLabel": "Negrita (font-bold)",
587
+ "showcase.structure.mutedLabel": "Color atenuado",
588
+ "showcase.structure.galleryTextSubtitle":
589
+ "Patrones tipográficos listos para producción construidos con ITText",
590
+ "showcase.structure.patternArticleHeader": "Cabecera de artículo",
591
+ "showcase.structure.patternSectionHeading": "Encabezado de sección",
592
+ "showcase.structure.patternEmptyState": "Estado vacío",
593
+ "showcase.structure.patternInlineContent": "Contenido en línea",
594
+ "showcase.structure.patternFormLabels": "Etiquetas de formulario",
595
+ "showcase.structure.accordionDesc":
596
+ "Secciones plegables para FAQs, paneles de configuración y contenido largo. Controlado o no controlado, single o multiple, con animación CSS grid-rows.",
597
+ "showcase.structure.allowMultiple": "Permitir múltiples abiertas",
598
+ "showcase.structure.accordionBordered": "Con bordes",
599
+ "showcase.structure.accordionSeparated": "Separadas (por defecto)",
600
+ "showcase.structure.accWhat": "¿Qué es AXZY UI System?",
601
+ "showcase.structure.accWhatBody":
602
+ "Una librería de componentes React + TypeScript con Tailwind CSS v4.",
603
+ "showcase.structure.accInstall": "¿Cómo lo instalo?",
604
+ "showcase.structure.accTheme": "¿Puedo personalizar el tema?",
605
+ "showcase.structure.accThemeBody":
606
+ "Sí, usa ITThemeProvider para definir la paleta y los tokens.",
607
+ "showcase.structure.accDisabled": "Sección deshabilitada",
608
+ "showcase.structure.accDisabledBody": "No se puede abrir.",
609
+ "showcase.structure.navDocuments": "Documentos",
610
+ "showcase.structure.navAlerts": "Alertas",
611
+ "showcase.structure.navSettings": "Ajustes",
612
+ "showcase.structure.navLogout": "Cerrar sesión",
613
+ "showcase.structure.navDashboard": "Dashboard",
614
+ "showcase.structure.navUsers": "Usuarios",
615
+ "showcase.structure.navSales": "Ventas",
616
+ "showcase.structure.navManagement": "Gestión",
617
+ "showcase.structure.navOrders": "Órdenes",
618
+ "showcase.structure.navInvoices": "Facturas",
619
+ "showcase.structure.navCatalog": "Catálogo",
620
+ "showcase.structure.navQuotes": "Cotizaciones",
621
+ "showcase.structure.navProducts": "Productos",
622
+ "showcase.structure.navConfiguration": "Configuración",
623
+ "showcase.structure.navInbox": "Bandeja",
624
+ "showcase.structure.navExit": "Salir",
625
+ "showcase.structure.dashboardDesc": "Resumen general del sistema",
626
+ "showcase.structure.statSalesToday": "Ventas Hoy",
627
+ "showcase.structure.statTickets": "Tickets",
628
+ "showcase.structure.recentActivity": "Actividad reciente",
629
+ "showcase.structure.layoutBody":
630
+ "El layout se adapta al colapsar/expandir el sidebar y muestra un drawer en móvil.",
631
+ "showcase.structure.sidebarCollapsed": "Sidebar colapsado",
632
+ "showcase.structure.layoutHint":
633
+ "En móvil (<lg) el sidebar se abre como drawer con un fondo oscuro. Usa el botón ☰ del topbar. En desktop el riel colapsado se expande al pasar el cursor; no hay botón de colapso en el sidebar.",
634
+ "showcase.structure.galleryNavbarStandalone": "ITNavbar (standalone)",
635
+ "showcase.structure.galleryNavbarSubmenus": "ITNavbar con submenús",
636
+ "showcase.structure.activeItem": "Item activo: \"{label}\"",
637
+ "showcase.structure.selectNavItem": "Selecciona un item en la navegación",
638
+ "showcase.structure.submenuHint":
639
+ "Haz clic en \"Ventas\" para expandir/colapsar el submenú",
640
+ "showcase.structure.gallerySidebarBadges":
641
+ "ITSidebar — badges + notificación",
642
+ "showcase.structure.sidebarItemsHint1":
643
+ "Cada ítem puede llevar un contador con",
644
+ "showcase.structure.sidebarItemsHint2":
645
+ ", y el sidebar admite una fila",
646
+ "showcase.structure.sidebarItemsHint3": "con icono + ITBadget.",
647
+
648
+ // Page showcases
649
+ "showcase.pages.pageHeaderDesc":
650
+ "Encabezado estandarizado para pantallas. Incluye título, descripción, icono, breadcrumbs, botón de volver y área de acciones.",
651
+ "showcase.pages.teamMembers": "Miembros del equipo",
652
+ "showcase.pages.teamDesc":
653
+ "Gestiona invitaciones, roles y permisos del espacio de trabajo de tu organización.",
654
+ "showcase.pages.crumbAdmin": "Admin",
655
+ "showcase.pages.crumbTeam": "Equipo",
656
+ "showcase.pages.backButton": "Botón de volver",
657
+ "showcase.pages.breadcrumbs": "Breadcrumbs",
658
+ "showcase.pages.icon": "Icono",
659
+ "showcase.pages.description": "Descripción",
660
+ "showcase.pages.addMember": "Añadir miembro",
661
+ "showcase.pages.export": "Exportar",
662
+ "showcase.pages.searchByNameEmail": "Buscar por nombre o correo...",
663
+ "showcase.pages.allRoles": "Todos los roles",
664
+ "showcase.pages.allStatus": "Todos los estados",
665
+ "showcase.pages.clear": "Limpiar",
666
+ "showcase.pages.headerElements": "Elementos del encabezado",
667
+ "showcase.pages.actions": "Acciones",
668
+ "showcase.pages.filters": "Filtros",
669
+ "showcase.pages.showFilterBar": "Mostrar barra de filtros",
670
+ "showcase.pages.galleryTeamManagement": "Gestión de equipo",
671
+ "showcase.pages.galleryDetailEdit": "Detalle / Edición",
672
+ "showcase.pages.crumbProducts": "Productos",
673
+ "showcase.pages.crumbEdit": "Editar",
674
+ "showcase.pages.editProduct": "Editar producto",
675
+ "showcase.pages.editProductDesc":
676
+ "Actualiza los detalles, el precio y la información de inventario del producto.",
677
+ "showcase.pages.saveChanges": "Guardar cambios",
678
+ "showcase.pages.productName": "Nombre del producto",
679
+ "showcase.pages.price": "Precio",
680
+ "showcase.pages.stock": "Stock",
681
+ "showcase.pages.galleryDashboard": "Dashboard",
682
+ "showcase.pages.dashboardDesc":
683
+ "Resumen en tiempo real de las métricas y la actividad de tu negocio.",
684
+ "showcase.pages.last7Days": "Últimos 7 días",
685
+ "showcase.pages.last30Days": "Últimos 30 días",
686
+ "showcase.pages.thisQuarter": "Este trimestre",
687
+ "showcase.pages.customRange": "Rango personalizado",
688
+ "showcase.pages.refresh": "Actualizar",
689
+ "showcase.pages.gallerySettingsPrefs": "Ajustes / Preferencias",
690
+ "showcase.pages.generalSettings": "Ajustes generales",
691
+ "showcase.pages.generalSettingsDesc":
692
+ "Configura las preferencias de tu espacio, las notificaciones y las opciones de seguridad.",
693
+ "showcase.pages.galleryUsersList": "Lista de usuarios",
694
+ "showcase.pages.usersDesc":
695
+ "1,245 usuarios registrados · 38 activos ahora mismo",
696
+ "showcase.pages.searchShort": "Buscar...",
697
+ "showcase.pages.invite": "Invitar",
698
+ "showcase.pages.pageDesc":
699
+ "Template completo de página con tabla, detalle y 4 estados (carga, error, vacío, normal).",
700
+ "showcase.pages.memberSummary": "Miembro · {role} · {status}",
701
+ "showcase.pages.userLoadError":
702
+ "No se pudieron cargar los datos del usuario. Inténtalo de nuevo.",
703
+ "showcase.pages.detailsError": "Error de detalles",
704
+ "showcase.pages.noUserData": "Sin datos de usuario",
705
+ "showcase.pages.noUserInfo":
706
+ "No hay información disponible para este usuario.",
707
+ "showcase.pages.accountDetails": "Detalles de la cuenta",
708
+ "showcase.pages.fullName": "Nombre completo",
709
+ "showcase.pages.emailAddress": "Correo electrónico",
710
+ "showcase.pages.role": "Rol",
711
+ "showcase.pages.status": "Estado",
712
+ "showcase.pages.lastLogin": "Último acceso",
713
+ "showcase.pages.teamLoadError":
714
+ "No se pudieron cargar los miembros del equipo. Comprueba tu conexión e inténtalo de nuevo.",
715
+ "showcase.pages.connectionError": "Error de conexión",
716
+ "showcase.pages.noTeamMembers": "Todavía no hay miembros del equipo",
717
+ "showcase.pages.noTeamMembersHint":
718
+ "Invita a tu primer miembro del equipo para empezar.",
719
+ "showcase.pages.inviteMembers": "Invitar miembros",
720
+ "showcase.pages.pageState": "Estado de página",
721
+ "showcase.pages.iconInHeader": "Icono en el encabezado",
722
+ "showcase.pages.horizontalPadding": "Padding horizontal",
723
+ "showcase.pages.paddingDefault": "Por defecto",
724
+ "showcase.pages.screen": "Pantalla",
725
+ "showcase.pages.list": "Lista",
726
+ "showcase.pages.detailLastViewed": "Detalle (visto por última vez)",
727
+ "showcase.pages.selected": "Seleccionado:",
728
+ "showcase.pages.galleryUsersTable": "Usuarios — tabla con acciones",
729
+ "showcase.pages.usersDescShort": "1,245 registrados · 38 activos ahora",
730
+ "showcase.pages.addUser": "Añadir usuario",
731
+ "showcase.pages.galleryProductDetail": "Detalle de producto",
732
+ "showcase.pages.pricing": "Precios",
733
+ "showcase.pages.descriptionField": "Descripción",
734
+ "showcase.pages.galleryEditProfile": "Editar perfil",
735
+ "showcase.pages.editProfile": "Editar perfil",
736
+ "showcase.pages.editProfileDesc":
737
+ "Actualiza tu información personal y datos de contacto",
738
+ "showcase.pages.crumbAccount": "Cuenta",
739
+ "showcase.pages.profilePhoto": "Foto de perfil",
740
+ "showcase.pages.uploadImage": "Subir imagen",
741
+ "showcase.pages.personalInformation": "Información personal",
742
+ "showcase.pages.firstName": "Nombre",
743
+ "showcase.pages.lastName": "Apellidos",
744
+ "showcase.pages.emailField": "Correo",
745
+ "showcase.pages.galleryOrdersTable": "Órdenes — tabla de estados",
746
+ "showcase.pages.ordersDesc": "89 pendientes · 1,247 completadas este mes",
747
+ "showcase.pages.newOrder": "Nueva orden",
748
+ "showcase.pages.gallerySettings": "Ajustes",
749
+ "showcase.pages.settingsDesc":
750
+ "Gestiona tu cuenta y las preferencias del espacio de trabajo",
751
+ "showcase.pages.settingsNavGeneral": "General",
752
+ "showcase.pages.settingsNavNotifications": "Notificaciones",
753
+ "showcase.pages.settingsNavSecurity": "Seguridad",
754
+ "showcase.pages.settingsNavAppearance": "Apariencia",
755
+ "showcase.pages.settingsNavBilling": "Facturación",
756
+ "showcase.pages.generalPreferences": "Preferencias generales",
757
+ "showcase.pages.workspaceName": "Nombre del espacio",
758
+ "showcase.pages.darkMode": "Modo oscuro",
759
+ "showcase.pages.followSystem": "Seguir la apariencia del sistema",
760
+ "showcase.pages.emailNotifications": "Notificaciones por correo",
761
+ "showcase.pages.receiveAlerts": "Recibir alertas de actividad",
762
+
763
+ // Forms showcases
764
+ "showcase.forms.buttonDesc":
765
+ "Botón premium con soporte completo de variantes, colores del tema, icono y estados.",
766
+ "showcase.forms.clickMe": "Hacer Click",
767
+ "showcase.forms.clicksRegistered": "Clicks registrados: {count}",
768
+ "showcase.forms.withIcon": "Con Icono",
769
+ "showcase.forms.galleryWithIcon": "Con Icono",
770
+ "showcase.forms.galleryVariants": "Variantes",
771
+ "showcase.forms.gallerySemanticColors": "Colores Semánticos",
772
+ "showcase.forms.sync": "Sincronizar",
773
+ "showcase.forms.inputFormDesc":
774
+ "Formulario unificado con todos los tipos de campos de entrada (Texto, Menú, Búsqueda, Fechas, Horas, Toggles y Archivos) para validar su correcto comportamiento visual.",
775
+ "showcase.forms.inputSingleDesc":
776
+ "Sandbox interactivo para experimentar con el componente individual de tipo {type}.",
777
+ "showcase.forms.errName": "El nombre es obligatorio",
778
+ "showcase.forms.errEmail": "Formato de correo no válido",
779
+ "showcase.forms.errPassword": "La contraseña es muy corta",
780
+ "showcase.forms.errRole": "Debes elegir un rol administrativo",
781
+ "showcase.forms.errCountry": "Debes elegir tu país de residencia",
782
+ "showcase.forms.errBirthday": "Fecha incorrecta",
783
+ "showcase.forms.errTime": "Hora no permitida",
784
+ "showcase.forms.errFile": "Debes adjuntar un archivo",
785
+ "showcase.forms.inputUserLabel": "Nombre de Usuario",
786
+ "showcase.forms.inputUserPlaceholder": "Escribe tu apodo...",
787
+ "showcase.forms.inputPasswordLabel": "Contraseña",
788
+ "showcase.forms.inputPasswordPlaceholder": "Introduce tu clave...",
789
+ "showcase.forms.inputSelectLabel": "Rol Administrativo",
790
+ "showcase.forms.inputSelectPlaceholder": "Selecciona un rol",
791
+ "showcase.forms.inputCountryLabel": "País de Origen",
792
+ "showcase.forms.inputCountryPlaceholder": "Buscar país...",
793
+ "showcase.forms.inputDateLabel": "Fecha de Registro",
794
+ "showcase.forms.inputDatePlaceholder": "Elige una fecha",
795
+ "showcase.forms.inputTimeLabel": "Hora de Turno",
796
+ "showcase.forms.inputTimePlaceholder": "Elige una hora",
797
+ "showcase.forms.inputToggleLabel": "Habilitar Notificaciones",
798
+ "showcase.forms.inputFileLabel": "Subir Documento",
799
+ "showcase.forms.tabText": "Texto",
800
+ "showcase.forms.tabPassword": "Contraseña",
801
+ "showcase.forms.tabForm": "Formulario",
802
+ "showcase.forms.fullName": "Nombre Completo",
803
+ "showcase.forms.email": "Correo Electrónico",
804
+ "showcase.forms.password": "Contraseña",
805
+ "showcase.forms.userRole": "Rol de Usuario",
806
+ "showcase.forms.countryResidence": "País de Residencia",
807
+ "showcase.forms.birthDate": "Fecha de Nacimiento",
808
+ "showcase.forms.entryTime": "Hora de Entrada",
809
+ "showcase.forms.newsletter": "Recibir Boletín",
810
+ "showcase.forms.submitForm": "Enviar Formulario",
811
+ "showcase.forms.submitData": "✓ Submit Data (JSON):",
812
+ "showcase.forms.toggleSwitch": "Toggle Switch",
813
+ "showcase.forms.buttonColorVariant": "Variante de Color de Botón",
814
+ "showcase.forms.simulateErrors": "Simular Errores",
815
+ "showcase.forms.disableAll": "Deshabilitar Todo",
816
+ "showcase.forms.labelProp": "Etiqueta (Label)",
817
+ "showcase.forms.placeholderLabel": "Placeholder",
818
+ "showcase.forms.colorVariant": "Variante de Color",
819
+ "showcase.forms.errorMessage": "Mensaje de Error",
820
+ "showcase.forms.invalidFormatPlaceholder": "Ej. Formato inválido",
821
+ "showcase.forms.inputStandard": "Input Estándar",
822
+ "showcase.forms.enterData": "Ingresa datos...",
823
+ "showcase.forms.inputWithError": "Input Con Error",
824
+ "showcase.forms.emailFormatError": "El formato del correo es incorrecto",
825
+ "showcase.forms.inputDisabled": "Input Deshabilitado",
826
+ "showcase.forms.readOnly": "Solo lectura",
827
+ "showcase.forms.inputPassword": "Input Contraseña",
828
+ "showcase.forms.selectDesc":
829
+ "Menú desplegable de selección simple optimizado con los estilos visuales AXZY.",
830
+ "showcase.forms.selection": "Selección: \"{value}\"",
831
+ "showcase.forms.simpleOption": "Opción Simple",
832
+ "showcase.forms.selectWithError": "Select Con Error",
833
+ "showcase.forms.requiredFieldError": "Este campo es obligatorio",
834
+ "showcase.forms.requiredFieldError2": "Este campo es obligatorio",
835
+ "showcase.forms.searchSelectDesc":
836
+ "Selector avanzado con barra de búsqueda para filtrar colecciones grandes o cargar opciones remotas.",
837
+ "showcase.forms.selectCountry": "Seleccionar País",
838
+ "showcase.forms.countrySelected": "País seleccionado: \"{value}\"",
839
+ "showcase.forms.customTemplate": "Template personalizado (renderOption)",
840
+ "showcase.forms.countryCustomLabel": "País (template personalizado)",
841
+ "showcase.forms.clearButton": "Botón de limpiar (X)",
842
+ "showcase.forms.countryClearable": "País (clearable)",
843
+ "showcase.forms.loadingState": "Estado de Carga (Loading)",
844
+ "showcase.forms.datePickerDesc":
845
+ "Calendario de entrada de fechas estático y flotante con soporte para selección de rangos.",
846
+ "showcase.forms.eventDate": "Fecha del Evento",
847
+ "showcase.forms.currentValue": "Valor actual:",
848
+ "showcase.forms.rangeValue": "Rango: {from} - {to}",
849
+ "showcase.forms.colorTheme": "Tema de Color",
850
+ "showcase.forms.rangeSelection": "Selección de Rango",
851
+ "showcase.forms.timePickerDesc":
852
+ "Selector de horas y minutos con panel interactivo de scroll suave.",
853
+ "showcase.forms.startTime": "Hora de Inicio",
854
+ "showcase.forms.timeChosen": "Hora elegida: \"{value}\"",
855
+ "showcase.forms.calendarDesc":
856
+ "Calendario completo con soporte para eventos y agendamiento diario/semanal.",
857
+ "showcase.forms.slotClick": "Click en horario: {date}",
858
+ "showcase.forms.eventDetail": "Detalle del Evento: {title}",
859
+ "showcase.forms.viewMode": "Modo de Vista",
860
+ "showcase.forms.selectionMode": "Modo de Selección",
861
+ "showcase.forms.slideToggleDesc":
862
+ "Interruptor de alternancia (Switch) estilizado para cambiar estados binarios.",
863
+ "showcase.forms.stateLabel": "Estado:",
864
+ "showcase.forms.stateOn": "ENCENDIDO",
865
+ "showcase.forms.stateOff": "APAGADO",
866
+ "showcase.forms.activeColor": "Color Activo",
867
+ "showcase.forms.disableSwitch": "Deshabilitar Switch",
868
+ "showcase.forms.dropfileDesc":
869
+ "Área interactiva para arrastrar y soltar archivos, con previsualización de imágenes y barra de progreso.",
870
+ "showcase.forms.fileName": "Nombre:",
871
+ "showcase.forms.fileSize": "Tamaño:",
872
+ "showcase.forms.fileType": "Tipo:",
873
+ "showcase.forms.forceUploadState": "Forzar Estado de Subida",
874
+ "showcase.forms.wysiwygDesc":
875
+ "Editor WYSIWYG ligero sin dependencias externas: negrita, itálica, subrayado, marcador amarillo y listas. Implementado a mano sobre Selection/Range (sin execCommand).",
876
+ "showcase.forms.articleContent": "Contenido del artículo",
877
+ "showcase.forms.wysiwygPlaceholder": "Escribe o pega tu contenido...",
878
+ "showcase.forms.generatedHtml": "HTML generado",
879
+ "showcase.forms.forceError": "Forzar error",
880
+ "showcase.forms.formBuilderDesc":
881
+ "Generador dinámico de formularios basado en un esquema estructurado JSON. Soporta V1 retrocompatible y la arquitectura V2 con motor de reglas, secciones, renderers custom y opciones asíncronas.",
882
+ "showcase.forms.clear": "Limpiar",
883
+ "showcase.forms.send": "Enviar",
884
+ "showcase.forms.payloadSent": "✓ Payload Enviado:",
885
+ "showcase.forms.formBuilderHint":
886
+ "El formulario se genera dinámicamente inyectando un array de campos configurados.",
887
+ "showcase.forms.exampleFillTitle": "Formulario llenado desde API",
888
+ "showcase.forms.exampleFillDesc":
889
+ "Carga datos asíncronamente al montar el formulario",
890
+ "showcase.forms.exampleCascadeTitle": "Select conectado a API con Cascade",
891
+ "showcase.forms.exampleCascadeDesc":
892
+ "Select asíncrono que al seleccionar actualiza otro campo",
893
+ "showcase.forms.exampleCurrencyTitle": "Conversor de Moneda",
894
+ "showcase.forms.exampleCurrencyDesc":
895
+ "Select de divisa que actualiza precios en MXN y USD",
896
+ "showcase.forms.loadingUserData": "Cargando datos del usuario...",
897
+ "showcase.forms.saveChanges": "Guardar Cambios",
898
+ "showcase.forms.editedPayload": "✓ Editado:",
899
+ "showcase.forms.dataPayload": "✓ Datos:",
900
+ "showcase.forms.exchangeRate": "TC: 1 USD = {rate} MXN",
901
+ "showcase.forms.fieldDesc":
902
+ "Contenedor de campo de formulario que estandariza label, asterisco de requerido, texto de ayuda y mensaje de error alrededor de cualquier control.",
903
+ "showcase.forms.emailSubject": "Correo",
904
+ "showcase.forms.invalidEmail": "Ingresa un correo válido.",
905
+ "showcase.forms.emailHelp": "Nunca compartimos tu correo.",
906
+ "showcase.forms.showHelp": "Mostrar ayuda",
907
+ "showcase.forms.multiSelectDesc":
908
+ "Selector de múltiples valores con dropdown buscable, chips removibles y navegación por teclado. El dropdown va en portal, así que no se recorta dentro de un ITCard.",
909
+ "showcase.forms.countries": "Países",
910
+ "showcase.forms.selectedCount": "{count} seleccionados: {values}",
911
+ "showcase.forms.multiSelectHint":
912
+ "Usa las flechas para navegar, Enter para alternar y Backspace para quitar el último chip.",
913
+ "showcase.forms.optionTemplate": "Plantilla de opción (renderOption)",
914
+ "showcase.forms.withError": "Con error",
915
+ "showcase.forms.chipInputDesc":
916
+ "Entrada de texto libre que convierte los valores escritos en etiquetas (chips) removibles. Confirma con Enter o coma, al perder foco o al pegar texto delimitado.",
917
+ "showcase.forms.tags": "Etiquetas",
918
+ "showcase.forms.addTagPlaceholder": "Agrega una etiqueta...",
919
+ "showcase.forms.chipInputHelp":
920
+ "Enter o coma para agregar. Backspace para borrar la última.",
921
+ "showcase.forms.maxTags": "Máximo de etiquetas",
922
+ "showcase.forms.maskedInputDesc":
923
+ "Input de texto con máscara de formato: teclea solo caracteres útiles y los separadores se insertan solos (xxxx-xxxx-xxxx, (999) 999-9999, etc.).",
924
+ "showcase.forms.activationCode": "Código de activación",
925
+ "showcase.forms.currentRawValue": "Valor actual (raw):",
926
+ "showcase.forms.rawLabel": "raw:",
927
+ "showcase.forms.emptyValue": "(vacío)",
928
+ "showcase.forms.completeValue": "✓ completo",
929
+ "showcase.forms.maskAlphanumeric": "Código alfanumérico",
930
+ "showcase.forms.maskCardNumber": "Número de tarjeta",
931
+ "showcase.forms.maskPhone": "Teléfono",
932
+ "showcase.forms.maskPostalCode": "Código postal",
933
+ "showcase.forms.maskCvv": "CVV / OTP",
934
+ "showcase.forms.maskUppercase": "Clave con letras en MAYÚSCULA",
935
+ "showcase.forms.segmentedDesc":
936
+ "Grupo de botones mutuamente excluyentes estilo iOS para alternar vistas o filtros.",
937
+ "showcase.forms.selectedValue": "Seleccionado: \"{value}\"",
938
+ "showcase.forms.withIcons": "Con iconos",
939
+ "showcase.forms.inputNumberDesc":
940
+ "Campo numérico con formato de moneda que emite un number real (entero o decimal) en onChange.",
941
+ "showcase.forms.amount": "Monto",
942
+ "showcase.forms.amountRequired": "El monto es obligatorio",
943
+ "showcase.forms.valueLabel": "value:",
944
+ "showcase.forms.quantityIntegers": "Cantidad (enteros)",
945
+ "showcase.forms.between10And500": "Entre 10 y 500",
946
+ "showcase.forms.decimals": "Decimales",
947
+ "showcase.forms.simulateError": "Simular error",
948
+ "showcase.forms.prefixDollar": "Prefijo $",
949
+ "showcase.forms.unitPrice": "Precio unitario",
950
+ "showcase.forms.quantityDecimals0": "Cantidad (decimals=0)",
951
+ },
952
+ en: {
953
+ // Chrome
954
+ "sandbox.language": "Language",
955
+ "sandbox.theme": "Color mode",
956
+ "sandbox.themeLight": "Light",
957
+ "sandbox.themeDark": "Dark",
958
+ "sandbox.themeSystem": "System",
959
+ "sandbox.notifications": "Notifications",
960
+ "sandbox.nav.portfolio": "Portfolio",
961
+ "sandbox.userMenu.portfolio": "Go to portfolio",
962
+ "sandbox.search.label": "Search components",
963
+ "sandbox.search.placeholder": "Search component…",
964
+ "sandbox.search.clear": "Clear search",
965
+ "sandbox.search.results": "{count} results",
966
+
967
+ // Navigation
968
+ "navigation.group.general": "General",
969
+ "navigation.group.struc": "Structure & Layout",
970
+ "navigation.group.forms": "Forms & Inputs",
971
+ "navigation.group.data": "Data Visualization",
972
+ "navigation.group.nav": "Navigation & Control",
973
+ "navigation.group.feed": "Feedback & System",
974
+ "navigation.item.help": "Help · Troubleshooting",
975
+ "navigation.item.sizes": "Sizes · sm / md / lg",
976
+ "navigation.item.screenDashboard": "Dashboard Example",
977
+ "navigation.item.screenForm": "Form Example",
978
+
979
+ // ── Showcase copy (dev-only) ──────────────────────────────────────────
980
+ // Common
981
+ "showcase.common.active": "Active",
982
+ "showcase.common.activeLabel": "Active:",
983
+ "showcase.common.cancel": "Cancel",
984
+ "showcase.common.code": "Code",
985
+ "showcase.common.color": "Color",
986
+ "showcase.common.copied": "Copied",
987
+ "showcase.common.copy": "Copy",
988
+ "showcase.common.correct": "✅ Correct",
989
+ "showcase.common.delete": "Delete",
990
+ "showcase.common.disabled": "Disabled",
991
+ "showcase.common.on": "On",
992
+ "showcase.common.off": "Off",
993
+ "showcase.common.edit": "Edit",
994
+ "showcase.common.error": "Error",
995
+ "showcase.common.hideCode": "Hide code",
996
+ "showcase.common.home": "Home",
997
+ "showcase.common.incorrect": "❌ Incorrect",
998
+ "showcase.common.label": "Label",
999
+ "showcase.common.noSelection": "No selection",
1000
+ "showcase.common.required": "Required",
1001
+ "showcase.common.reset": "Reset",
1002
+ "showcase.common.save": "Save",
1003
+ "showcase.common.showCode": "View code",
1004
+ "showcase.common.size": "Size",
1005
+ "showcase.common.variant": "Variant",
1006
+ "showcase.common.view": "View",
1007
+
1008
+ // ShowcaseLayout chrome
1009
+ "showcase.layout.code": "Code",
1010
+ "showcase.layout.copied": "Copied!",
1011
+ "showcase.layout.copy": "Copy",
1012
+ "showcase.layout.default": "Default",
1013
+ "showcase.layout.docs": "Docs",
1014
+ "showcase.layout.eyebrow": "Component showcase",
1015
+ "showcase.layout.gallery": "Variations & States (Gallery)",
1016
+ "showcase.layout.jsxCode": "JSX Code",
1017
+ "showcase.layout.notes": "Notes",
1018
+ "showcase.layout.overview": "Overview",
1019
+ "showcase.layout.preview": "Preview",
1020
+ "showcase.layout.prop": "Prop",
1021
+ "showcase.layout.properties": "Properties",
1022
+ "showcase.layout.props": "Props",
1023
+ "showcase.layout.sandbox": "Interactive Sandbox",
1024
+ "showcase.layout.type": "Type",
1025
+ "showcase.layout.usageExamples": "Usage Examples",
1026
+
1027
+ // Sizes
1028
+ "showcase.sizes.title": "Standard sizes · sm / md / lg",
1029
+ "showcase.sizes.desc":
1030
+ "A single scale for every component. The size of the form, select, button and badge is controlled with the same prop",
1031
+ "showcase.sizes.rowDesc": "Standard system size",
1032
+ "showcase.sizes.name": "Name",
1033
+ "showcase.sizes.role": "Role",
1034
+ "showcase.sizes.placeholder": "Select an option",
1035
+ "showcase.sizes.exampleName": "E.g.: Juan",
1036
+ "showcase.sizes.draft": "Draft",
1037
+
1038
+ // Producto detalle
1039
+ "showcase.producto.whatItSolves": "What it solves",
1040
+ "showcase.producto.stack": "Stack",
1041
+ "showcase.producto.specSheet": "Technical sheet",
1042
+ "showcase.producto.back": "Back to portfolio",
1043
+ "showcase.producto.gallery": "Gallery",
1044
+ "showcase.producto.cta": "Interested in this project?",
1045
+ "showcase.producto.navLabel": "Project navigation",
1046
+ "showcase.producto.prev": "Previous project",
1047
+ "showcase.producto.next": "Next project",
1048
+
1049
+ // Getting started
1050
+ "showcase.gettingStarted.heroDesc":
1051
+ "React component library built with Tailwind CSS v4. Designed for enterprise apps with a smooth developer experience.",
1052
+ "showcase.gettingStarted.stepsTitle": "Step-by-step setup",
1053
+ "showcase.gettingStarted.stepsSubtitle":
1054
+ "Six steps: dependencies, Vite, Tailwind, provider, types and your first component.",
1055
+ "showcase.gettingStarted.step1Title": "Install dependencies",
1056
+ "showcase.gettingStarted.step1Desc": "Tailwind v4 and its Vite plugin.",
1057
+ "showcase.gettingStarted.step2Title": "Configure Vite",
1058
+ "showcase.gettingStarted.step2Desc": "Add Tailwind as a Vite plugin.",
1059
+ "showcase.gettingStarted.step3Title": "Add Tailwind",
1060
+ "showcase.gettingStarted.step3Desc": "Import Tailwind in your CSS file.",
1061
+ "showcase.gettingStarted.step4Title": "Import styles",
1062
+ "showcase.gettingStarted.step4Desc": "Wrap your app with the provider.",
1063
+ "showcase.gettingStarted.step5Title": "Type declaration",
1064
+ "showcase.gettingStarted.step5Desc": "So TS accepts CSS imports.",
1065
+ "showcase.gettingStarted.step6Title": "First component",
1066
+ "showcase.gettingStarted.step6Desc": "You can now use any component.",
1067
+ "showcase.gettingStarted.themingTitle": "Theming",
1068
+ "showcase.gettingStarted.themingDesc":
1069
+ "Customize colors at runtime. You only need the ones you want to change.",
1070
+
1071
+ // Landing (#ui-system) & 404
1072
+ "showcase.landing.previewBadge": "preview",
1073
+ "showcase.landing.typed": "Typed",
1074
+ "showcase.landing.statComponents": "Components",
1075
+ "showcase.landing.statComponentsHint": "documented pages",
1076
+ "showcase.landing.statFamilies": "Families",
1077
+ "showcase.landing.statFamiliesHint": "navigation groups",
1078
+ "showcase.landing.statTypedHint": "strict typing",
1079
+ "showcase.landing.statUiDeps": "UI deps",
1080
+ "showcase.landing.statUiDepsHint": "no extra runtime",
1081
+ "showcase.landing.featureTokens":
1082
+ "Tailwind CSS v4 with runtime theme tokens",
1083
+ "showcase.landing.featureA11y":
1084
+ "Accessibility: roles, focus and accessible names",
1085
+ "showcase.landing.featureDarkMode":
1086
+ "Automatic dark mode via ITThemeProvider",
1087
+ "showcase.landing.featureTreeShakeable":
1088
+ "Tree-shakeable: only import what you use",
1089
+ "showcase.landing.featureNoDeps":
1090
+ "No third-party UI dependencies",
1091
+ "showcase.landing.featureDocumented":
1092
+ "Documented with runnable examples",
1093
+ "showcase.landing.heroTitleLead": "Components for",
1094
+ "showcase.landing.heroTitleHighlight": "serious interfaces",
1095
+ "showcase.landing.heroSubtitle":
1096
+ "A React + TypeScript library with Tailwind CSS v4: accessible, themeable and production-ready. Explore {pages} pages across {families} families.",
1097
+ "showcase.landing.exploreComponents": "Explore components",
1098
+ "showcase.landing.viewPortfolio": "View portfolio",
1099
+ "showcase.landing.ariaStats": "Library metrics",
1100
+ "showcase.landing.exploreTitle": "Explore by family",
1101
+ "showcase.landing.exploreSubtitle":
1102
+ "Each row takes you straight to the group's first component.",
1103
+ "showcase.landing.moreItems": "+{count} more",
1104
+ "showcase.landing.quickstartEyebrow": "Getting started",
1105
+ "showcase.landing.quickstartTitle": "Quickstart",
1106
+ "showcase.landing.quickstartSubtitle":
1107
+ "A theme provider, a stylesheet and your first button.",
1108
+ "showcase.landing.minimalExample": "Minimal example",
1109
+ "showcase.landing.builtIn": "Built in",
1110
+ "showcase.landing.ctaTitle": "Ready to build?",
1111
+ "showcase.landing.ctaSubtitle":
1112
+ "Check the portfolio, the source code or explore the component sandbox.",
1113
+ "showcase.landing.footerRun": "Run",
1114
+ "showcase.landing.footerOpen": "and open",
1115
+ "showcase.landing.footerSuffix": "to see every component.",
1116
+ "showcase.notFound.eyebrow": "// error 404",
1117
+ "showcase.notFound.title": "Route not found",
1118
+ "showcase.notFound.description":
1119
+ "There is no page for this hash. Check the link or go back home.",
1120
+ "showcase.notFound.backHome": "Back to home",
1121
+
1122
+ // Help
1123
+ "showcase.help.badge": "Support",
1124
+ "showcase.help.title": "Help & Troubleshooting",
1125
+ "showcase.help.subtitle":
1126
+ "A guide to diagnose and fix the most common issues when using AXZY UI System, plus a checklist to report incidents with all the necessary context.",
1127
+ "showcase.help.reportBug": "Report a bug",
1128
+ "showcase.help.viewRepo": "View repository",
1129
+ "showcase.help.quickDiagnosis": "Quick diagnosis",
1130
+ "showcase.help.quickDiagnosisHint":
1131
+ "Run these commands before reporting any failure.",
1132
+ "showcase.help.commonErrors": "Common errors and their fix",
1133
+ "showcase.help.commonErrorsHint":
1134
+ "Symptom, cause and fix for the stack's most common pitfalls.",
1135
+ "showcase.help.faq": "Frequently asked questions",
1136
+ "showcase.help.faqHint": "Short answers to the most repeated questions.",
1137
+ "showcase.help.howToReport": "How to report a bug",
1138
+ "showcase.help.reportIntro":
1139
+ "A good report can be reproduced without extra questions. Follow these steps and complete the checklist before opening the issue.",
1140
+ "showcase.help.steps": "Steps",
1141
+ "showcase.help.includeInReport": "Include in the report",
1142
+ "showcase.help.footerHint":
1143
+ "Usage questions instead of a bug? Open a discussion in the repository.",
1144
+ "showcase.help.openIssue": "Open issue",
1145
+ "showcase.help.viewAgents": "View AGENTS.md",
1146
+ "showcase.help.fixPill":
1147
+ "Reproducible steps + version + environment = actionable report",
1148
+
1149
+ // Home (portfolio)
1150
+ "showcase.home.ariaStats": "Profile metrics",
1151
+ "showcase.home.sectionNav": "Portfolio navigation",
1152
+ "showcase.home.skipToContent": "Skip to content",
1153
+ "showcase.home.backToTop": "Back to top",
1154
+ "showcase.home.navAbout": "About",
1155
+ "showcase.home.navStack": "Stack",
1156
+ "showcase.home.navProjects": "Projects",
1157
+ "showcase.home.navContact": "Contact",
1158
+ "showcase.home.navUiSystem": "UI System",
1159
+ "showcase.home.moreStack": "+{count} more",
1160
+ "showcase.home.noPreview": "No preview",
1161
+ "showcase.home.footerBuiltWith": "Built with AXZY UI System",
1162
+ "showcase.home.badge": "Portfolio · 2026",
1163
+ "showcase.home.heroLead": "From API to interface:",
1164
+ "showcase.home.heroAccent": "complete products, in production.",
1165
+ "showcase.home.featuredLabel": "Featured",
1166
+ "showcase.home.catLanguages": "Languages",
1167
+ "showcase.home.catDesktop": "Desktop",
1168
+ "showcase.home.catTools": "Tools",
1169
+ "showcase.home.catTesting": "Testing",
1170
+ "showcase.home.hello": "Hi, I'm",
1171
+ "showcase.home.bio":
1172
+ "Fullstack Developer with 4+ years building modern web applications. Specialized in TypeScript, Angular and React, focused on clean architecture and products people use every day.",
1173
+ "showcase.home.downloadCv": "Download CV",
1174
+ "showcase.home.availableFullstack": "Available for fullstack projects",
1175
+ "showcase.home.role": "Fullstack Developer",
1176
+ "showcase.home.location": "Remote · Mexico",
1177
+ "showcase.home.available": "Available",
1178
+ "showcase.home.statExperience": "Experience",
1179
+ "showcase.home.statExperienceHint": "years as fullstack",
1180
+ "showcase.home.statTech": "Technologies",
1181
+ "showcase.home.statTechHint": "in the stack",
1182
+ "showcase.home.statProducts": "Products",
1183
+ "showcase.home.statProductsHint": "own and in use",
1184
+ "showcase.home.statMode": "Work mode",
1185
+ "showcase.home.statModeValue": "Remote",
1186
+ "showcase.home.statModeHint": "available now",
1187
+ "showcase.home.eyebrowBase": "Technical base",
1188
+ "showcase.home.titleTech": "Languages and frameworks",
1189
+ "showcase.home.subtitleTech": "The ones I work with every day.",
1190
+ "showcase.home.labelLanguages": "Languages",
1191
+ "showcase.home.labelFrameworks": "Frameworks",
1192
+ "showcase.home.eyebrowStack": "Stack",
1193
+ "showcase.home.titleStack": "Technologies I use",
1194
+ "showcase.home.subtitleStack": "Filter by area or search by name.",
1195
+ "showcase.home.searchTech": "Search technology...",
1196
+ "showcase.home.searchTechAria": "Search technology by name",
1197
+ "showcase.home.noTech": "No technologies found for “{term}”.",
1198
+ "showcase.home.techCount": "{shown} of {total} technologies",
1199
+ "showcase.home.catAll": "All",
1200
+ "showcase.home.catFrontend": "Frontend",
1201
+ "showcase.home.catBackend": "Backend",
1202
+ "showcase.home.catMobile": "Mobile",
1203
+ "showcase.home.catDatabase": "Databases",
1204
+ "showcase.home.catDevops": "DevOps",
1205
+ "showcase.home.eyebrowPortfolio": "Portfolio",
1206
+ "showcase.home.titleProducts": "Products I built",
1207
+ "showcase.home.subtitleProducts":
1208
+ "Those with screenshots open in their detail screen.",
1209
+ "showcase.home.viewDetail": "View details",
1210
+ "showcase.home.viewDetailOf": "View details of {name}",
1211
+ "showcase.home.captures": "{count} screenshots",
1212
+ "showcase.home.viewRepo": "View repository",
1213
+ "showcase.home.eyebrowNext": "Next steps",
1214
+ "showcase.home.titleTogether": "Shall we work together?",
1215
+ "showcase.home.subtitleTogether":
1216
+ "I'm available for fullstack, product or design-system projects.",
1217
+ "showcase.home.writingPrefix": "I also write on",
1218
+ "showcase.home.codeOn": "and my products' code is on",
1219
+
1220
+ // Navigation showcases
1221
+ "showcase.nav.tabsDesc":
1222
+ "Content tabs with icons and transitions.",
1223
+ "showcase.nav.tabGeneral": "General",
1224
+ "showcase.nav.tabsGeneralBody": "Global settings and account profile.",
1225
+ "showcase.nav.tabSecurity": "Security",
1226
+ "showcase.nav.tabsSecurityBody":
1227
+ "Credential settings, MFA and access logs.",
1228
+ "showcase.nav.tabNotifications": "Notifications",
1229
+ "showcase.nav.tabsNotificationsBody":
1230
+ "Alert preferences via email, SMS and PUSH notifications.",
1231
+ "showcase.nav.variantAesthetic": "Aesthetic variant",
1232
+ "showcase.nav.stepperDesc":
1233
+ "Sequential step indicator for completing complex guided processes.",
1234
+ "showcase.nav.stepValidate": "Verify identity",
1235
+ "showcase.nav.stepValidateBody":
1236
+ "Step 1: Upload your official ID document.",
1237
+ "showcase.nav.stepKyc": "Upload KYC",
1238
+ "showcase.nav.stepKycBody":
1239
+ "Step 2: Fill in your tax data and source of funds.",
1240
+ "showcase.nav.stepSign": "Complete signature",
1241
+ "showcase.nav.stepSignBody":
1242
+ "Step 3: Complete the digital biometric signature.",
1243
+ "showcase.nav.stepperFinish": "Process completed successfully!",
1244
+ "showcase.nav.useIcons": "Use icons",
1245
+ "showcase.nav.resetStep": "Reset step",
1246
+ "showcase.nav.paginationDesc":
1247
+ "Numbered page navigation control with quick-direction buttons.",
1248
+ "showcase.nav.currentPage": "Active page: {page} of 10",
1249
+ "showcase.nav.activeColorLabel": "Active button color",
1250
+ "showcase.nav.tripleFilterDesc":
1251
+ "Quick segmented selector typically designed for 3-state fast filters.",
1252
+ "showcase.nav.filterAll": "All",
1253
+ "showcase.nav.filterActive": "Active",
1254
+ "showcase.nav.filterInactive": "Inactive",
1255
+ "showcase.nav.activeFilter": "Active filter: \"{filter}\"",
1256
+ "showcase.nav.tripleFilterHint":
1257
+ "Provides a segmented layout with animation when switching between the available options.",
1258
+ "showcase.nav.dropdownDesc":
1259
+ "Action menu with keyboard navigation and ARIA semantics. It renders in a portal, so it isn't clipped by an ITCard or ancestors with overflow: hidden.",
1260
+ "showcase.nav.rowActions": "Row actions",
1261
+ "showcase.nav.lastAction": "Last action: {action}",
1262
+ "showcase.nav.dropdownKeyboardHint":
1263
+ "Keyboard: arrows to navigate, Enter to activate, Esc to close. The menu opens inside the ITCard without clipping.",
1264
+ "showcase.nav.customTrigger": "Custom trigger",
1265
+ "showcase.nav.actions": "Actions",
1266
+ "showcase.nav.actionEdit": "Edit",
1267
+ "showcase.nav.actionDuplicate": "Duplicate",
1268
+ "showcase.nav.actionDownload": "Download",
1269
+ "showcase.nav.actionDelete": "Delete",
1270
+ "showcase.nav.none": "—",
1271
+
1272
+ // Data showcases
1273
+ "showcase.data.tableDesc":
1274
+ "Table with responsive Table / Cards view, pagination, filters and a customizable card template.",
1275
+ "showcase.data.selectedName": "Selected: {name}",
1276
+ "showcase.data.selectedNameId": "Selected: {name} (id {id})",
1277
+ "showcase.data.clickToSelect":
1278
+ "Click a row/card or press Enter/Space to select",
1279
+ "showcase.data.teamMembers": "Team members",
1280
+ "showcase.data.tableVariant": "Table variant",
1281
+ "showcase.data.rowSize": "Row size",
1282
+ "showcase.data.customCardTemplate": "Custom card template",
1283
+ "showcase.data.defaultCardActive":
1284
+ "Default card active — shows all columns as label-value pairs",
1285
+ "showcase.data.galleryCustomCardsHover": "Custom cards with hover",
1286
+ "showcase.data.galleryDefaultCards": "ITTable with default cards",
1287
+ "showcase.data.galleryCustomCardsPagination":
1288
+ "ITTable with custom cards + pagination",
1289
+ "showcase.data.galleryAllMembers": "All members",
1290
+ "showcase.data.galleryCompactFixed":
1291
+ "Compact fixed layout — no horizontal scroll",
1292
+ "showcase.data.galleryFixedLayout": "Fixed layout",
1293
+ "showcase.data.galleryPinnedNameActions":
1294
+ "Pinned columns — left (Name) & right (Actions)",
1295
+ "showcase.data.galleryPinnedColumns": "Pinned columns",
1296
+ "showcase.data.galleryAutoCards":
1297
+ "Auto cards fallback (< 640px container)",
1298
+ "showcase.data.galleryNarrowContainer": "Narrow container",
1299
+ "showcase.data.galleryVirtualized":
1300
+ "Virtualized table — 300 rows (only visible window mounted)",
1301
+ "showcase.data.galleryVirtualizedTitle": "Virtualized · 300 rows",
1302
+ "showcase.data.galleryColumnFilters":
1303
+ "Column filters: ITSearchSelect + ITDatePicker (single & range)",
1304
+ "showcase.data.galleryFilterDemo": "Filter demo",
1305
+ "showcase.data.galleryDesignOverrides":
1306
+ "Design overrides — colors + design slots, no switch",
1307
+ "showcase.data.galleryCustomDesign": "Custom design",
1308
+ "showcase.data.galleryPerColumnDesign":
1309
+ "Per-column design — header and cell per column",
1310
+ "showcase.data.galleryPerColumnTitle": "Per-column",
1311
+ "showcase.data.dataTableDesc":
1312
+ "Self-sufficient table with dynamic loading, filters, pagination and responsive Cards/Table view.",
1313
+ "showcase.data.titleConnectionError": "Connection error",
1314
+ "showcase.data.titleNoData": "No data",
1315
+ "showcase.data.titleUsers": "Users",
1316
+ "showcase.data.inactive": "Inactive",
1317
+ "showcase.data.apiState": "API state",
1318
+ "showcase.data.stateNormal": "Normal",
1319
+ "showcase.data.stateLoading": "Loading",
1320
+ "showcase.data.stateEmpty": "Empty",
1321
+ "showcase.data.stateError": "Error",
1322
+ "showcase.data.borders": "Borders",
1323
+ "showcase.data.borderGray": "Gray",
1324
+ "showcase.data.borderBlue": "Blue",
1325
+ "showcase.data.borderRose": "Rose",
1326
+ "showcase.data.borderNone": "None",
1327
+ "showcase.data.tableCapabilities": "Table capabilities",
1328
+ "showcase.data.density": "Density",
1329
+ "showcase.data.layout": "Layout",
1330
+ "showcase.data.autoCardsBelow": "Auto cards below (px)",
1331
+ "showcase.data.virtualizedGallery": "Virtualized (gallery)",
1332
+ "showcase.data.stickyHeader": "Sticky header",
1333
+ "showcase.data.capabilitiesHint":
1334
+ 'size, density, layout and auto-cards apply to the main demo; virtualized and sticky header only to the gallery\'s "Server-side virtualization" block. That block doesn\'t receive autoCardBreakpoint: cards are never virtualized and the auto-cards fallback would silently disable virtualization.',
1335
+ "showcase.data.galleryDefaultCardsPagination":
1336
+ "Default cards with pagination",
1337
+ "showcase.data.galleryPinnedIdActive":
1338
+ "Pinned columns — left (ID) & right (Active)",
1339
+ "showcase.data.galleryServerVirtualization":
1340
+ "Server-side virtualization — 240 rows (page {page})",
1341
+ "showcase.data.galleryVirtualizedUsers": "Virtualized users",
1342
+ "showcase.data.badgetDesc":
1343
+ "Styled badges (tags) to represent item states or categories.",
1344
+ "showcase.data.textLabel": "Text",
1345
+ "showcase.data.imageDesc":
1346
+ "Smart image rendering component with an internal loader and automatic fallback on network failures.",
1347
+ "showcase.data.imageAlt": "Abstract image",
1348
+ "showcase.data.imageBroken": "Loading broken URL (fallback active)",
1349
+ "showcase.data.imageOk": "Loading valid URL",
1350
+ "showcase.data.forceError": "Force load error (broken URL)",
1351
+ "showcase.data.chipDesc":
1352
+ "Compact label (tag / pill) for labels, active filters and multi-selections. Soft, filled and outlined variants, icon, remove button (X) and selected state.",
1353
+ "showcase.data.chipDisabled": "Disabled",
1354
+ "showcase.data.chipHint":
1355
+ "Chips with onClick are filter toggles (role=button, Enter/Space). Removable chips show an X.",
1356
+
1357
+ // Feedback showcases
1358
+ "showcase.feedback.dialogDesc":
1359
+ "Modal dialog boxes with a dark overlay and form header support.",
1360
+ "showcase.feedback.openModal": "Open modal",
1361
+ "showcase.feedback.dialogTitle": "Audit confirmation",
1362
+ "showcase.feedback.dialogBody":
1363
+ "An immutable record will be saved in the corporate blockchain logs. This action is irreversible.",
1364
+ "showcase.feedback.auditorLabel": "Responsible auditor",
1365
+ "showcase.feedback.auditorPlaceholder": "Search an auditor...",
1366
+ "showcase.feedback.authorize": "Authorize",
1367
+ "showcase.feedback.signedTransaction": "Transaction signed!",
1368
+ "showcase.feedback.useFormHeader": "Use form header",
1369
+ "showcase.feedback.toastDesc":
1370
+ "Floating ephemeral system alerts to notify the user of immediate events.",
1371
+ "showcase.feedback.toastDefaultMsg": "The operation was processed successfully!",
1372
+ "showcase.feedback.message": "Message",
1373
+ "showcase.feedback.notificationType": "Notification type",
1374
+ "showcase.feedback.launchNotification": "Trigger notification",
1375
+ "showcase.feedback.toastSuccess": "Toast Success",
1376
+ "showcase.feedback.toastError": "Toast Error",
1377
+ "showcase.feedback.toastWarning": "Toast Warning",
1378
+ "showcase.feedback.toastInfo": "Toast Info",
1379
+ "showcase.feedback.msgSuccess": "Operation successful!",
1380
+ "showcase.feedback.msgError": "A network failure occurred.",
1381
+ "showcase.feedback.msgWarning": "License expiring soon.",
1382
+ "showcase.feedback.msgInfo": "Update available.",
1383
+ "showcase.feedback.loaderDesc":
1384
+ "Animated loading indicators with support for multiple visual styles.",
1385
+ "showcase.feedback.loaderVariant": "Loader type",
1386
+ "showcase.feedback.themeDesc":
1387
+ "Dynamic CSS token injector that manages dark/light mode and unified color palettes.",
1388
+ "showcase.feedback.appearanceMode": "Appearance mode",
1389
+ "showcase.feedback.modeLight": "☀️ Light",
1390
+ "showcase.feedback.modeDark": "🌙 Dark",
1391
+ "showcase.feedback.modeSystem": "💻 System",
1392
+ "showcase.feedback.currentTheme": "Current theme:",
1393
+ "showcase.feedback.modeDarkName": "Dark",
1394
+ "showcase.feedback.modeLightName": "Light",
1395
+ "showcase.feedback.quickPresets": "Quick presets",
1396
+ "showcase.feedback.themeHint1":
1397
+ "Click the floating palette button 🎨 in the bottom-right corner to open the full designer.",
1398
+ "showcase.feedback.themeHint2":
1399
+ "There you can adjust each color, save custom themes and switch between light/dark mode.",
1400
+
1401
+ // Layout primitives showcases
1402
+ "showcase.layoutPrimitives.stackDesc":
1403
+ "Flexbox-based layout with direction, uniform spacing, alignment and distribution. Ideal for vertical sections, horizontal toolbars, item lists and form rows.",
1404
+ "showcase.layoutPrimitives.direction": "Direction",
1405
+ "showcase.layoutPrimitives.spacingUnits": "Spacing (0.25rem units)",
1406
+ "showcase.layoutPrimitives.alignItems": "Align items",
1407
+ "showcase.layoutPrimitives.justifyContent": "Justify content",
1408
+ "showcase.layoutPrimitives.flexWrap": "Flex wrap",
1409
+ "showcase.layoutPrimitives.showDivider": "Show divider",
1410
+ "showcase.layoutPrimitives.spacingScale": "Spacing scale",
1411
+ "showcase.layoutPrimitives.spacingScaleSubtitle":
1412
+ "Try different gap values to feel the rhythm",
1413
+ "showcase.layoutPrimitives.scaleTight": "Tight",
1414
+ "showcase.layoutPrimitives.scaleTightDesc": "Compact UI",
1415
+ "showcase.layoutPrimitives.scaleDefault": "Default",
1416
+ "showcase.layoutPrimitives.scaleDefaultDesc": "Comfortable",
1417
+ "showcase.layoutPrimitives.scaleRelaxed": "Relaxed",
1418
+ "showcase.layoutPrimitives.scaleRelaxedDesc": "Breathing room",
1419
+ "showcase.layoutPrimitives.scaleSpacious": "Spacious",
1420
+ "showcase.layoutPrimitives.scaleSpaciousDesc": "Hero sections",
1421
+ "showcase.layoutPrimitives.justifyTitle": "Justify content",
1422
+ "showcase.layoutPrimitives.justifySubtitle":
1423
+ "How children are distributed along the main axis",
1424
+ "showcase.layoutPrimitives.justifyStartDesc": "Children packed at the start",
1425
+ "showcase.layoutPrimitives.justifyCenterDesc": "Children centered on the axis",
1426
+ "showcase.layoutPrimitives.justifyEndDesc": "Children packed at the end",
1427
+ "showcase.layoutPrimitives.justifyBetweenDesc":
1428
+ "First/last at the edges, the rest spread evenly",
1429
+ "showcase.layoutPrimitives.justifyAroundDesc":
1430
+ "Equal space around each child",
1431
+ "showcase.layoutPrimitives.justifyEvenlyDesc": "Equal space everywhere",
1432
+ "showcase.layoutPrimitives.alignTitle": "Align items",
1433
+ "showcase.layoutPrimitives.alignSubtitle":
1434
+ "How children are aligned on the cross axis",
1435
+ "showcase.layoutPrimitives.alignStartDesc": "Aligned to top (in a row)",
1436
+ "showcase.layoutPrimitives.alignCenterDesc": "Centered on the cross axis",
1437
+ "showcase.layoutPrimitives.alignEndDesc": "Aligned to bottom (in a row)",
1438
+ "showcase.layoutPrimitives.alignStretchDesc": "Children fill the cross axis",
1439
+ "showcase.layoutPrimitives.alignBaselineDesc": "Text baselines align",
1440
+ "showcase.layoutPrimitives.stackGallerySubtitle":
1441
+ "Production-ready UI built entirely with ITStack",
1442
+ "showcase.layoutPrimitives.patternPageHeader": "Page header",
1443
+ "showcase.layoutPrimitives.patternPageHeaderDesc": "Title + actions on the right",
1444
+ "showcase.layoutPrimitives.patternTagCloud": "Tag cloud",
1445
+ "showcase.layoutPrimitives.patternTagCloudDesc":
1446
+ "Wrap enabled for flowing tags",
1447
+ "showcase.layoutPrimitives.patternSectionList": "Section list",
1448
+ "showcase.layoutPrimitives.patternSectionListDesc": "Subtle divider between items",
1449
+ "showcase.layoutPrimitives.patternNotification": "Notification banner",
1450
+ "showcase.layoutPrimitives.patternNotificationDesc": "Icon + message + dismiss",
1451
+ "showcase.layoutPrimitives.patternStatsRow": "Stats row",
1452
+ "showcase.layoutPrimitives.patternStatsRowDesc": "3 metric cards in one row",
1453
+ "showcase.layoutPrimitives.flexDesc":
1454
+ "Full flexbox container with total control over alignment, distribution and gap. For complex layouts that need more control than ITStack.",
1455
+ "showcase.layoutPrimitives.gapUnits": "Gap (0.25rem units)",
1456
+ "showcase.layoutPrimitives.flexGallerySubtitle":
1457
+ "Production-ready UI built entirely with ITFlex",
1458
+ "showcase.layoutPrimitives.patternToolbarRow": "Toolbar row",
1459
+ "showcase.layoutPrimitives.patternGrowLayout": "Grow layout",
1460
+ "showcase.layoutPrimitives.patternCenteredHero": "Centered hero",
1461
+ "showcase.layoutPrimitives.patternResponsiveForm": "Responsive form",
1462
+ "showcase.layoutPrimitives.patternFullHeight": "Full-height layout",
1463
+ "showcase.layoutPrimitives.gridDesc":
1464
+ "Responsive 12-column grid system. Ideal for dashboards, galleries and full-page layouts.",
1465
+ "showcase.layoutPrimitives.columnsLabel": "Columns",
1466
+ "showcase.layoutPrimitives.gridGallerySubtitle":
1467
+ "Production-ready layouts built with ITGrid",
1468
+ "showcase.layoutPrimitives.patternAppDashboard": "App dashboard",
1469
+ "showcase.layoutPrimitives.patternUserProfile": "User profile",
1470
+ "showcase.layoutPrimitives.patternArticleLayout": "Article layout",
1471
+ "showcase.layoutPrimitives.patternPricingComparison": "Pricing comparison",
1472
+ "showcase.layoutPrimitives.screensTitle": "Composite screens",
1473
+ "showcase.layoutPrimitives.screensSubtitle":
1474
+ "Real examples combining ITStack + ITFlex + ITGrid to build complete screens in minutes.",
1475
+ "showcase.layoutPrimitives.dashboardCard": "Metrics dashboard",
1476
+ "showcase.layoutPrimitives.dashboardSubtitle": "System activity overview",
1477
+ "showcase.layoutPrimitives.export": "Export",
1478
+ "showcase.layoutPrimitives.statActiveUsers": "Active users",
1479
+ "showcase.layoutPrimitives.statOpenTickets": "Open tickets",
1480
+ "showcase.layoutPrimitives.salesChart": "Sales chart",
1481
+ "showcase.layoutPrimitives.last30Days": "Last 30 days",
1482
+ "showcase.layoutPrimitives.formCard": "Responsive form",
1483
+ "showcase.layoutPrimitives.newUser": "New user",
1484
+ "showcase.layoutPrimitives.newUserSubtitle":
1485
+ "Fill in the fields to register a new user",
1486
+ "showcase.layoutPrimitives.exampleJuan": "E.g.: Juan",
1487
+ "showcase.layoutPrimitives.examplePerez": "E.g.: Pérez",
1488
+ "showcase.layoutPrimitives.exampleEmail": "e.g.: user@example.com",
1489
+ "showcase.layoutPrimitives.department": "Department",
1490
+
1491
+ // Structure showcases
1492
+ "showcase.structure.cardDesc":
1493
+ "Multi-purpose container with optional header, image, content and actions footer. Becomes interactive with `onClick` (hover effect).",
1494
+ "showcase.structure.cardTitleLabel": "Title",
1495
+ "showcase.structure.cardTitlePlaceholder": "Leave empty to hide",
1496
+ "showcase.structure.showImage": "Show image",
1497
+ "showcase.structure.showActions": "Show actions",
1498
+ "showcase.structure.interactiveOnClick": "Interactive (onClick)",
1499
+ "showcase.structure.galleryRealCases": "Real UI cases",
1500
+ "showcase.structure.galleryCardsSubtitle":
1501
+ "Production-ready card layouts built with ITCard",
1502
+ "showcase.structure.patternCourseProgress": "Course progress",
1503
+ "showcase.structure.patternPricing": "Featured pricing plan",
1504
+ "showcase.structure.patternActivity": "Activity feed item",
1505
+ "showcase.structure.patternTeamMember": "Team member profile",
1506
+ "showcase.structure.textDesc":
1507
+ "Semantic typography wrapper. Renders any HTML element, with support for character truncation, line clamp and programmatic breaking.",
1508
+ "showcase.structure.renderingAs": "Rendering as",
1509
+ "showcase.structure.elementAs": "HTML element (as)",
1510
+ "showcase.structure.lineClampLabel": "Number of lines (lineClamp)",
1511
+ "showcase.structure.maxTextLabel": "Max text (characters)",
1512
+ "showcase.structure.noLimit": "0 = no limit",
1513
+ "showcase.structure.truncateHint":
1514
+ "Truncates with \"…\" when exceeded (0 = disabled).",
1515
+ "showcase.structure.breakLabel": "Line break after (characters)",
1516
+ "showcase.structure.noBreak": "0 = no break",
1517
+ "showcase.structure.brHint": "Inserts a <br /> when exceeding the limit.",
1518
+ "showcase.structure.breakWrapLabel":
1519
+ "breakLengthWrap (break every N characters)",
1520
+ "showcase.structure.noCut": "0 = no break",
1521
+ "showcase.structure.cutHint":
1522
+ "Inserts break opportunities every N chars (0 = disabled).",
1523
+ "showcase.structure.boldLabel": "Bold (font-bold)",
1524
+ "showcase.structure.mutedLabel": "Muted color",
1525
+ "showcase.structure.galleryTextSubtitle":
1526
+ "Production-ready typography patterns built with ITText",
1527
+ "showcase.structure.patternArticleHeader": "Article header",
1528
+ "showcase.structure.patternSectionHeading": "Section heading",
1529
+ "showcase.structure.patternEmptyState": "Empty state",
1530
+ "showcase.structure.patternInlineContent": "Inline content",
1531
+ "showcase.structure.patternFormLabels": "Form labels",
1532
+ "showcase.structure.accordionDesc":
1533
+ "Collapsible sections for FAQs, settings panels and long content. Controlled or uncontrolled, single or multiple, with CSS grid-rows animation.",
1534
+ "showcase.structure.allowMultiple": "Allow multiple open",
1535
+ "showcase.structure.accordionBordered": "Bordered",
1536
+ "showcase.structure.accordionSeparated": "Separated (default)",
1537
+ "showcase.structure.accWhat": "What is AXZY UI System?",
1538
+ "showcase.structure.accWhatBody":
1539
+ "A React + TypeScript component library with Tailwind CSS v4.",
1540
+ "showcase.structure.accInstall": "How do I install it?",
1541
+ "showcase.structure.accTheme": "Can I customize the theme?",
1542
+ "showcase.structure.accThemeBody":
1543
+ "Yes, use ITThemeProvider to define the palette and tokens.",
1544
+ "showcase.structure.accDisabled": "Disabled section",
1545
+ "showcase.structure.accDisabledBody": "It cannot be opened.",
1546
+ "showcase.structure.navDocuments": "Documents",
1547
+ "showcase.structure.navAlerts": "Alerts",
1548
+ "showcase.structure.navSettings": "Settings",
1549
+ "showcase.structure.navLogout": "Sign out",
1550
+ "showcase.structure.navDashboard": "Dashboard",
1551
+ "showcase.structure.navUsers": "Users",
1552
+ "showcase.structure.navSales": "Sales",
1553
+ "showcase.structure.navManagement": "Management",
1554
+ "showcase.structure.navOrders": "Orders",
1555
+ "showcase.structure.navInvoices": "Invoices",
1556
+ "showcase.structure.navCatalog": "Catalog",
1557
+ "showcase.structure.navQuotes": "Quotes",
1558
+ "showcase.structure.navProducts": "Products",
1559
+ "showcase.structure.navConfiguration": "Settings",
1560
+ "showcase.structure.navInbox": "Inbox",
1561
+ "showcase.structure.navExit": "Exit",
1562
+ "showcase.structure.dashboardDesc": "System overview",
1563
+ "showcase.structure.statSalesToday": "Sales Today",
1564
+ "showcase.structure.statTickets": "Tickets",
1565
+ "showcase.structure.recentActivity": "Recent activity",
1566
+ "showcase.structure.layoutBody":
1567
+ "The layout adapts when collapsing/expanding the sidebar and shows a drawer on mobile.",
1568
+ "showcase.structure.sidebarCollapsed": "Sidebar collapsed",
1569
+ "showcase.structure.layoutHint":
1570
+ "On mobile (<lg) the sidebar opens as a drawer with a dark backdrop. Use the ☰ button in the topbar. On desktop the collapsed rail expands on hover; there is no collapse button in the sidebar.",
1571
+ "showcase.structure.galleryNavbarStandalone": "ITNavbar (standalone)",
1572
+ "showcase.structure.galleryNavbarSubmenus": "ITNavbar with submenus",
1573
+ "showcase.structure.activeItem": "Active item: \"{label}\"",
1574
+ "showcase.structure.selectNavItem": "Select a navigation item",
1575
+ "showcase.structure.submenuHint":
1576
+ "Click \"Sales\" to expand/collapse the submenu",
1577
+ "showcase.structure.gallerySidebarBadges":
1578
+ "ITSidebar — badges + notification",
1579
+ "showcase.structure.sidebarItemsHint1":
1580
+ "Each item can carry a counter with",
1581
+ "showcase.structure.sidebarItemsHint2":
1582
+ ", and the sidebar supports a",
1583
+ "showcase.structure.sidebarItemsHint3": "row with icon + ITBadget.",
1584
+
1585
+ // Page showcases
1586
+ "showcase.pages.pageHeaderDesc":
1587
+ "Standardized screen header. Includes title, description, icon, breadcrumbs, back button and actions area.",
1588
+ "showcase.pages.teamMembers": "Team members",
1589
+ "showcase.pages.teamDesc":
1590
+ "Manage invitations, roles and permissions for your organization workspace.",
1591
+ "showcase.pages.crumbAdmin": "Admin",
1592
+ "showcase.pages.crumbTeam": "Team",
1593
+ "showcase.pages.backButton": "Back button",
1594
+ "showcase.pages.breadcrumbs": "Breadcrumbs",
1595
+ "showcase.pages.icon": "Icon",
1596
+ "showcase.pages.description": "Description",
1597
+ "showcase.pages.addMember": "Add member",
1598
+ "showcase.pages.export": "Export",
1599
+ "showcase.pages.searchByNameEmail": "Search by name or email...",
1600
+ "showcase.pages.allRoles": "All roles",
1601
+ "showcase.pages.allStatus": "All status",
1602
+ "showcase.pages.clear": "Clear",
1603
+ "showcase.pages.headerElements": "Header elements",
1604
+ "showcase.pages.actions": "Actions",
1605
+ "showcase.pages.filters": "Filters",
1606
+ "showcase.pages.showFilterBar": "Show filter bar",
1607
+ "showcase.pages.galleryTeamManagement": "Team management",
1608
+ "showcase.pages.galleryDetailEdit": "Detail / Edit form",
1609
+ "showcase.pages.crumbProducts": "Products",
1610
+ "showcase.pages.crumbEdit": "Edit",
1611
+ "showcase.pages.editProduct": "Edit product",
1612
+ "showcase.pages.editProductDesc":
1613
+ "Update product details, pricing and inventory information.",
1614
+ "showcase.pages.saveChanges": "Save changes",
1615
+ "showcase.pages.productName": "Product name",
1616
+ "showcase.pages.price": "Price",
1617
+ "showcase.pages.stock": "Stock",
1618
+ "showcase.pages.galleryDashboard": "Dashboard",
1619
+ "showcase.pages.dashboardDesc":
1620
+ "Real-time overview of your business metrics and activity.",
1621
+ "showcase.pages.last7Days": "Last 7 days",
1622
+ "showcase.pages.last30Days": "Last 30 days",
1623
+ "showcase.pages.thisQuarter": "This quarter",
1624
+ "showcase.pages.customRange": "Custom range",
1625
+ "showcase.pages.refresh": "Refresh",
1626
+ "showcase.pages.gallerySettingsPrefs": "Settings / Preferences",
1627
+ "showcase.pages.generalSettings": "General settings",
1628
+ "showcase.pages.generalSettingsDesc":
1629
+ "Configure your workspace preferences, notifications and security options.",
1630
+ "showcase.pages.galleryUsersList": "Users list",
1631
+ "showcase.pages.usersDesc":
1632
+ "1,245 registered users · 38 active right now",
1633
+ "showcase.pages.searchShort": "Search...",
1634
+ "showcase.pages.invite": "Invite",
1635
+ "showcase.pages.pageDesc":
1636
+ "Complete page template with table, detail and 4 states (loading, error, empty, normal).",
1637
+ "showcase.pages.memberSummary": "Member · {role} · {status}",
1638
+ "showcase.pages.userLoadError":
1639
+ "Could not load user details. Please try again.",
1640
+ "showcase.pages.detailsError": "Details error",
1641
+ "showcase.pages.noUserData": "No user data",
1642
+ "showcase.pages.noUserInfo":
1643
+ "No information available for this user.",
1644
+ "showcase.pages.accountDetails": "Account details",
1645
+ "showcase.pages.fullName": "Full name",
1646
+ "showcase.pages.emailAddress": "Email address",
1647
+ "showcase.pages.role": "Role",
1648
+ "showcase.pages.status": "Status",
1649
+ "showcase.pages.lastLogin": "Last login",
1650
+ "showcase.pages.teamLoadError":
1651
+ "Could not load team members. Check your connection and try again.",
1652
+ "showcase.pages.connectionError": "Connection error",
1653
+ "showcase.pages.noTeamMembers": "No team members yet",
1654
+ "showcase.pages.noTeamMembersHint":
1655
+ "Invite your first team member to get started.",
1656
+ "showcase.pages.inviteMembers": "Invite members",
1657
+ "showcase.pages.pageState": "Page state",
1658
+ "showcase.pages.iconInHeader": "Icon in header",
1659
+ "showcase.pages.horizontalPadding": "Horizontal padding",
1660
+ "showcase.pages.paddingDefault": "Default",
1661
+ "showcase.pages.screen": "Screen",
1662
+ "showcase.pages.list": "List",
1663
+ "showcase.pages.detailLastViewed": "Detail (last viewed)",
1664
+ "showcase.pages.selected": "Selected:",
1665
+ "showcase.pages.galleryUsersTable": "Users — table with actions",
1666
+ "showcase.pages.usersDescShort": "1,245 registered · 38 active now",
1667
+ "showcase.pages.addUser": "Add user",
1668
+ "showcase.pages.galleryProductDetail": "Product detail",
1669
+ "showcase.pages.pricing": "Pricing",
1670
+ "showcase.pages.descriptionField": "Description",
1671
+ "showcase.pages.galleryEditProfile": "Edit profile",
1672
+ "showcase.pages.editProfile": "Edit profile",
1673
+ "showcase.pages.editProfileDesc":
1674
+ "Update your personal information and contact details",
1675
+ "showcase.pages.crumbAccount": "Account",
1676
+ "showcase.pages.profilePhoto": "Profile photo",
1677
+ "showcase.pages.uploadImage": "Upload image",
1678
+ "showcase.pages.personalInformation": "Personal information",
1679
+ "showcase.pages.firstName": "First name",
1680
+ "showcase.pages.lastName": "Last name",
1681
+ "showcase.pages.emailField": "Email",
1682
+ "showcase.pages.galleryOrdersTable": "Orders — status table",
1683
+ "showcase.pages.ordersDesc": "89 pending · 1,247 completed this month",
1684
+ "showcase.pages.newOrder": "New order",
1685
+ "showcase.pages.gallerySettings": "Settings",
1686
+ "showcase.pages.settingsDesc":
1687
+ "Manage your account and workspace preferences",
1688
+ "showcase.pages.settingsNavGeneral": "General",
1689
+ "showcase.pages.settingsNavNotifications": "Notifications",
1690
+ "showcase.pages.settingsNavSecurity": "Security",
1691
+ "showcase.pages.settingsNavAppearance": "Appearance",
1692
+ "showcase.pages.settingsNavBilling": "Billing",
1693
+ "showcase.pages.generalPreferences": "General preferences",
1694
+ "showcase.pages.workspaceName": "Workspace name",
1695
+ "showcase.pages.darkMode": "Dark mode",
1696
+ "showcase.pages.followSystem": "Follow system appearance",
1697
+ "showcase.pages.emailNotifications": "Email notifications",
1698
+ "showcase.pages.receiveAlerts": "Receive activity alerts",
1699
+
1700
+ // Forms showcases
1701
+ "showcase.forms.buttonDesc":
1702
+ "Premium button with full support for variants, theme colors, icon and states.",
1703
+ "showcase.forms.clickMe": "Click me",
1704
+ "showcase.forms.clicksRegistered": "Clicks registered: {count}",
1705
+ "showcase.forms.withIcon": "With icon",
1706
+ "showcase.forms.galleryWithIcon": "With icon",
1707
+ "showcase.forms.galleryVariants": "Variants",
1708
+ "showcase.forms.gallerySemanticColors": "Semantic colors",
1709
+ "showcase.forms.sync": "Sync",
1710
+ "showcase.forms.inputFormDesc":
1711
+ "Unified form with all input field types (Text, Menu, Search, Dates, Times, Toggles and Files) to validate their visual behavior.",
1712
+ "showcase.forms.inputSingleDesc":
1713
+ "Interactive sandbox to experiment with the individual {type} component.",
1714
+ "showcase.forms.errName": "Name is required",
1715
+ "showcase.forms.errEmail": "Invalid email format",
1716
+ "showcase.forms.errPassword": "Password is too short",
1717
+ "showcase.forms.errRole": "You must choose an administrative role",
1718
+ "showcase.forms.errCountry": "You must choose your country of residence",
1719
+ "showcase.forms.errBirthday": "Incorrect date",
1720
+ "showcase.forms.errTime": "Time not allowed",
1721
+ "showcase.forms.errFile": "You must attach a file",
1722
+ "showcase.forms.inputUserLabel": "Username",
1723
+ "showcase.forms.inputUserPlaceholder": "Type your nickname...",
1724
+ "showcase.forms.inputPasswordLabel": "Password",
1725
+ "showcase.forms.inputPasswordPlaceholder": "Enter your password...",
1726
+ "showcase.forms.inputSelectLabel": "Administrative role",
1727
+ "showcase.forms.inputSelectPlaceholder": "Select a role",
1728
+ "showcase.forms.inputCountryLabel": "Country of origin",
1729
+ "showcase.forms.inputCountryPlaceholder": "Search country...",
1730
+ "showcase.forms.inputDateLabel": "Registration date",
1731
+ "showcase.forms.inputDatePlaceholder": "Choose a date",
1732
+ "showcase.forms.inputTimeLabel": "Shift time",
1733
+ "showcase.forms.inputTimePlaceholder": "Choose a time",
1734
+ "showcase.forms.inputToggleLabel": "Enable notifications",
1735
+ "showcase.forms.inputFileLabel": "Upload document",
1736
+ "showcase.forms.tabText": "Text",
1737
+ "showcase.forms.tabPassword": "Password",
1738
+ "showcase.forms.tabForm": "Form",
1739
+ "showcase.forms.fullName": "Full name",
1740
+ "showcase.forms.email": "Email",
1741
+ "showcase.forms.password": "Password",
1742
+ "showcase.forms.userRole": "User role",
1743
+ "showcase.forms.countryResidence": "Country of residence",
1744
+ "showcase.forms.birthDate": "Date of birth",
1745
+ "showcase.forms.entryTime": "Entry time",
1746
+ "showcase.forms.newsletter": "Receive newsletter",
1747
+ "showcase.forms.submitForm": "Submit form",
1748
+ "showcase.forms.submitData": "✓ Submitted data (JSON):",
1749
+ "showcase.forms.toggleSwitch": "Toggle switch",
1750
+ "showcase.forms.buttonColorVariant": "Button color variant",
1751
+ "showcase.forms.simulateErrors": "Simulate errors",
1752
+ "showcase.forms.disableAll": "Disable all",
1753
+ "showcase.forms.labelProp": "Label",
1754
+ "showcase.forms.placeholderLabel": "Placeholder",
1755
+ "showcase.forms.colorVariant": "Color variant",
1756
+ "showcase.forms.errorMessage": "Error message",
1757
+ "showcase.forms.invalidFormatPlaceholder": "E.g. Invalid format",
1758
+ "showcase.forms.inputStandard": "Standard input",
1759
+ "showcase.forms.enterData": "Enter data...",
1760
+ "showcase.forms.inputWithError": "Input with error",
1761
+ "showcase.forms.emailFormatError": "The email format is incorrect",
1762
+ "showcase.forms.inputDisabled": "Disabled input",
1763
+ "showcase.forms.readOnly": "Read-only",
1764
+ "showcase.forms.inputPassword": "Password input",
1765
+ "showcase.forms.selectDesc":
1766
+ "Single-selection dropdown optimized with AXZY visual styles.",
1767
+ "showcase.forms.selection": "Selection: \"{value}\"",
1768
+ "showcase.forms.simpleOption": "Simple option",
1769
+ "showcase.forms.selectWithError": "Select with error",
1770
+ "showcase.forms.requiredFieldError": "This field is required",
1771
+ "showcase.forms.requiredFieldError2": "This field is required",
1772
+ "showcase.forms.searchSelectDesc":
1773
+ "Advanced selector with a search bar to filter large collections or load remote options.",
1774
+ "showcase.forms.selectCountry": "Select country",
1775
+ "showcase.forms.countrySelected": "Selected country: \"{value}\"",
1776
+ "showcase.forms.customTemplate": "Custom template (renderOption)",
1777
+ "showcase.forms.countryCustomLabel": "Country (custom template)",
1778
+ "showcase.forms.clearButton": "Clear button (X)",
1779
+ "showcase.forms.countryClearable": "Country (clearable)",
1780
+ "showcase.forms.loadingState": "Loading state",
1781
+ "showcase.forms.datePickerDesc":
1782
+ "Static and floating date input calendar with range selection support.",
1783
+ "showcase.forms.eventDate": "Event date",
1784
+ "showcase.forms.currentValue": "Current value:",
1785
+ "showcase.forms.rangeValue": "Range: {from} - {to}",
1786
+ "showcase.forms.colorTheme": "Color theme",
1787
+ "showcase.forms.rangeSelection": "Range selection",
1788
+ "showcase.forms.timePickerDesc":
1789
+ "Hour and minute picker with an interactive smooth-scroll panel.",
1790
+ "showcase.forms.startTime": "Start time",
1791
+ "showcase.forms.timeChosen": "Selected time: \"{value}\"",
1792
+ "showcase.forms.calendarDesc":
1793
+ "Full calendar with support for events and daily/weekly scheduling.",
1794
+ "showcase.forms.slotClick": "Slot click: {date}",
1795
+ "showcase.forms.eventDetail": "Event detail: {title}",
1796
+ "showcase.forms.viewMode": "View mode",
1797
+ "showcase.forms.selectionMode": "Selection mode",
1798
+ "showcase.forms.slideToggleDesc":
1799
+ "Styled toggle switch to change binary states.",
1800
+ "showcase.forms.stateLabel": "State:",
1801
+ "showcase.forms.stateOn": "ON",
1802
+ "showcase.forms.stateOff": "OFF",
1803
+ "showcase.forms.activeColor": "Active color",
1804
+ "showcase.forms.disableSwitch": "Disable switch",
1805
+ "showcase.forms.dropfileDesc":
1806
+ "Interactive drag-and-drop area for files, with image preview and progress bar.",
1807
+ "showcase.forms.fileName": "Name:",
1808
+ "showcase.forms.fileSize": "Size:",
1809
+ "showcase.forms.fileType": "Type:",
1810
+ "showcase.forms.forceUploadState": "Force upload state",
1811
+ "showcase.forms.wysiwygDesc":
1812
+ "Lightweight WYSIWYG editor with no external dependencies: bold, italic, underline, yellow highlight and lists. Implemented by hand over Selection/Range (no execCommand).",
1813
+ "showcase.forms.articleContent": "Article content",
1814
+ "showcase.forms.wysiwygPlaceholder": "Write or paste your content...",
1815
+ "showcase.forms.generatedHtml": "Generated HTML",
1816
+ "showcase.forms.forceError": "Force error",
1817
+ "showcase.forms.formBuilderDesc":
1818
+ "Dynamic form generator based on a structured JSON schema. Supports backward-compatible V1 and the V2 architecture with a rules engine, sections, custom renderers and async options.",
1819
+ "showcase.forms.clear": "Clear",
1820
+ "showcase.forms.send": "Send",
1821
+ "showcase.forms.payloadSent": "✓ Payload sent:",
1822
+ "showcase.forms.formBuilderHint":
1823
+ "The form is generated dynamically by injecting an array of configured fields.",
1824
+ "showcase.forms.exampleFillTitle": "Form filled from API",
1825
+ "showcase.forms.exampleFillDesc":
1826
+ "Loads data asynchronously when the form mounts",
1827
+ "showcase.forms.exampleCascadeTitle": "API-connected select with cascade",
1828
+ "showcase.forms.exampleCascadeDesc":
1829
+ "Async select that updates another field when changed",
1830
+ "showcase.forms.exampleCurrencyTitle": "Currency converter",
1831
+ "showcase.forms.exampleCurrencyDesc":
1832
+ "Currency select that updates prices in MXN and USD",
1833
+ "showcase.forms.loadingUserData": "Loading user data...",
1834
+ "showcase.forms.saveChanges": "Save changes",
1835
+ "showcase.forms.editedPayload": "✓ Edited:",
1836
+ "showcase.forms.dataPayload": "✓ Data:",
1837
+ "showcase.forms.exchangeRate": "FX: 1 USD = {rate} MXN",
1838
+ "showcase.forms.fieldDesc":
1839
+ "Form field container that standardizes label, required asterisk, help text and error message around any control.",
1840
+ "showcase.forms.emailSubject": "Email",
1841
+ "showcase.forms.invalidEmail": "Enter a valid email.",
1842
+ "showcase.forms.emailHelp": "We never share your email.",
1843
+ "showcase.forms.showHelp": "Show help",
1844
+ "showcase.forms.multiSelectDesc":
1845
+ "Multi-value selector with a searchable dropdown, removable chips and keyboard navigation. The dropdown renders in a portal, so it isn't clipped inside an ITCard.",
1846
+ "showcase.forms.countries": "Countries",
1847
+ "showcase.forms.selectedCount": "{count} selected: {values}",
1848
+ "showcase.forms.multiSelectHint":
1849
+ "Use the arrows to navigate, Enter to toggle and Backspace to remove the last chip.",
1850
+ "showcase.forms.optionTemplate": "Option template (renderOption)",
1851
+ "showcase.forms.withError": "With error",
1852
+ "showcase.forms.chipInputDesc":
1853
+ "Free-text input that turns typed values into removable tags (chips). Confirm with Enter or comma, on blur or when pasting delimited text.",
1854
+ "showcase.forms.tags": "Tags",
1855
+ "showcase.forms.addTagPlaceholder": "Add a tag...",
1856
+ "showcase.forms.chipInputHelp":
1857
+ "Enter or comma to add. Backspace to delete the last one.",
1858
+ "showcase.forms.maxTags": "Max tags",
1859
+ "showcase.forms.maskedInputDesc":
1860
+ "Text input with a format mask: type only useful characters and separators are inserted automatically (xxxx-xxxx-xxxx, (999) 999-9999, etc.).",
1861
+ "showcase.forms.activationCode": "Activation code",
1862
+ "showcase.forms.currentRawValue": "Current value (raw):",
1863
+ "showcase.forms.rawLabel": "raw:",
1864
+ "showcase.forms.emptyValue": "(empty)",
1865
+ "showcase.forms.completeValue": "✓ complete",
1866
+ "showcase.forms.maskAlphanumeric": "Alphanumeric code",
1867
+ "showcase.forms.maskCardNumber": "Card number",
1868
+ "showcase.forms.maskPhone": "Phone",
1869
+ "showcase.forms.maskPostalCode": "Postal code",
1870
+ "showcase.forms.maskCvv": "CVV / OTP",
1871
+ "showcase.forms.maskUppercase": "Key with UPPERCASE letters",
1872
+ "showcase.forms.segmentedDesc":
1873
+ "iOS-style group of mutually exclusive buttons to toggle views or filters.",
1874
+ "showcase.forms.selectedValue": "Selected: \"{value}\"",
1875
+ "showcase.forms.withIcons": "With icons",
1876
+ "showcase.forms.inputNumberDesc":
1877
+ "Numeric field with currency formatting that emits a real number (integer or decimal) in onChange.",
1878
+ "showcase.forms.amount": "Amount",
1879
+ "showcase.forms.amountRequired": "Amount is required",
1880
+ "showcase.forms.valueLabel": "value:",
1881
+ "showcase.forms.quantityIntegers": "Quantity (integers)",
1882
+ "showcase.forms.between10And500": "Between 10 and 500",
1883
+ "showcase.forms.decimals": "Decimals",
1884
+ "showcase.forms.simulateError": "Simulate error",
1885
+ "showcase.forms.prefixDollar": "Prefix $",
1886
+ "showcase.forms.unitPrice": "Unit price",
1887
+ "showcase.forms.quantityDecimals0": "Quantity (decimals=0)",
1888
+ },
1889
+ };
1890
+
1891
+ /**
1892
+ * Stable id → i18n key map for sandbox navigation labels.
1893
+ *
1894
+ * Only ids whose label needs translation appear here; the rest (mostly component names like
1895
+ * `ITButton`) keep their literal label from `navigation.ts`.
1896
+ */
1897
+ export const SANDBOX_LABEL_KEYS: Record<string, string> = {
1898
+ general: "navigation.group.general",
1899
+ struc: "navigation.group.struc",
1900
+ forms: "navigation.group.forms",
1901
+ data: "navigation.group.data",
1902
+ nav: "navigation.group.nav",
1903
+ feed: "navigation.group.feed",
1904
+ help: "navigation.item.help",
1905
+ sizes: "navigation.item.sizes",
1906
+ "screen-dashboard": "navigation.item.screenDashboard",
1907
+ "screen-form": "navigation.item.screenForm",
1908
+ };
1909
+
1910
+ /**
1911
+ * Resolves a navigation label: uses the i18n key when present, else the literal fallback.
1912
+ *
1913
+ * `t` returns the key itself when it is missing, so we detect that to fall back.
1914
+ *
1915
+ * @example
1916
+ * ```ts
1917
+ * translateLabel("struc", "Estructura & Layout", t); // "Structure & Layout" (en)
1918
+ * ```
1919
+ */
1920
+ export function translateLabel(
1921
+ id: string,
1922
+ fallback: string,
1923
+ t: (key: string) => string
1924
+ ): string {
1925
+ const key = SANDBOX_LABEL_KEYS[id];
1926
+ if (!key) return fallback;
1927
+ const value = t(key);
1928
+ return value === key ? fallback : value;
1929
+ }