@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
@@ -14,9 +14,11 @@ import {
14
14
  } from "../index";
15
15
  import { PRESETS } from "../components/theme-provider/themePresets";
16
16
  import { ShowcaseLayout } from "./ShowcaseLayout";
17
+ import { useITTranslation } from "@/i18n";
17
18
 
18
19
  // 1. ITDialog Showcase
19
20
  export const DialogShowcase = () => {
21
+ const { t } = useITTranslation();
20
22
  const [isOpen, setIsOpen] = useState(false);
21
23
  const [useFormHeader, setUseFormHeader] = useState(true);
22
24
  const [auditor, setAuditor] = useState("");
@@ -26,26 +28,26 @@ export const DialogShowcase = () => {
26
28
  return (
27
29
  <ShowcaseLayout
28
30
  title="ITDialog"
29
- description="Cajas de diálogo modales con overlay oscuro y soporte de cabeceras de formulario."
31
+ description={t("showcase.feedback.dialogDesc")}
30
32
  code={code}
31
33
  demo={
32
34
  <div>
33
- <ITButton label="Abrir Ventana Modal" color="primary" onClick={() => setIsOpen(true)} />
35
+ <ITButton label={t("showcase.feedback.openModal")} color="primary" onClick={() => setIsOpen(true)} />
34
36
  <ITDialog
35
37
  isOpen={isOpen}
36
38
  onClose={() => setIsOpen(false)}
37
- title="Confirmación de Auditoría"
39
+ title={t("showcase.feedback.dialogTitle")}
38
40
  useFormHeader={useFormHeader}
39
41
  >
40
42
  <div className="p-6 space-y-4">
41
43
  <p className="text-sm text-slate-600 dark:text-slate-300">
42
- Se guardará un registro inmutable en los logs de la blockchain corporativa. Esta acción es irreversible.
44
+ {t("showcase.feedback.dialogBody")}
43
45
  </p>
44
46
  {/* Los paneles flotantes (selects, pickers, menús) se renderizan en
45
47
  un portal fuera del diálogo: elegir una opción no debe cerrarlo. */}
46
48
  <ITSearchSelect
47
- label="Auditor responsable"
48
- placeholder="Busca un auditor..."
49
+ label={t("showcase.feedback.auditorLabel")}
50
+ placeholder={t("showcase.feedback.auditorPlaceholder")}
49
51
  options={[
50
52
  { value: "ana", label: "Ana Torres" },
51
53
  { value: "luis", label: "Luis Paredes" },
@@ -55,8 +57,8 @@ export const DialogShowcase = () => {
55
57
  onChange={(next) => setAuditor(String(next))}
56
58
  />
57
59
  <div className="flex justify-end gap-3 pt-4 border-t">
58
- <ITButton label="Cancelar" variant="ghost" onClick={() => setIsOpen(false)} />
59
- <ITButton label="Autorizar" color="success" onClick={() => { alert("Transacción firmada!"); setIsOpen(false); }} />
60
+ <ITButton label={t("showcase.common.cancel")} variant="ghost" onClick={() => setIsOpen(false)} />
61
+ <ITButton label={t("showcase.feedback.authorize")} color="success" onClick={() => { alert(t("showcase.feedback.signedTransaction")); setIsOpen(false); }} />
60
62
  </div>
61
63
  </div>
62
64
  </ITDialog>
@@ -65,8 +67,10 @@ export const DialogShowcase = () => {
65
67
  controls={
66
68
  <>
67
69
  <div className="flex items-center justify-between pt-2">
68
- <span className="text-sm font-semibold text-gray-700">Usar Cabecera de Formulario</span>
69
- <ITSlideToggle isOn={useFormHeader} onToggle={setUseFormHeader} size="sm" />
70
+ <span className="font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.feedback.useFormHeader")}</span>
71
+ <ITSlideToggle isOn={useFormHeader} onToggle={setUseFormHeader} size="sm"
72
+ ariaLabel={t("showcase.feedback.useFormHeader")}
73
+ />
70
74
  </div>
71
75
  </>
72
76
  }
@@ -76,20 +80,21 @@ export const DialogShowcase = () => {
76
80
 
77
81
  // 2. ITToast Showcase
78
82
  export const ToastShowcase = () => {
83
+ const { t } = useITTranslation();
79
84
  const [visible, setVisible] = useState(false);
80
85
  const [type, setType] = useState<any>("success");
81
- const [msg, setMsg] = useState("¡La operación se procesó con éxito!");
86
+ const [msg, setMsg] = useState(t("showcase.feedback.toastDefaultMsg"));
82
87
 
83
88
  const code = `<ITToast\n message="${msg}"\n type="${type}"\n duration={3000}\n onClose={() => setVisible(false)}\n/>`;
84
89
 
85
90
  return (
86
91
  <ShowcaseLayout
87
92
  title="ITToast"
88
- description="Alertas efímeras del sistema flotantes para notificar eventos inmediatos al usuario."
93
+ description={t("showcase.feedback.toastDesc")}
89
94
  code={code}
90
95
  demo={
91
96
  <div>
92
- <ITButton label="Lanzar Notificación" color="purple" onClick={() => setVisible(true)} />
97
+ <ITButton label={t("showcase.feedback.launchNotification")} color="purple" onClick={() => setVisible(true)} />
93
98
  {visible && (
94
99
  <ITToast
95
100
  message={msg}
@@ -102,10 +107,10 @@ export const ToastShowcase = () => {
102
107
  }
103
108
  controls={
104
109
  <>
105
- <ITInput name="msg_ctrl" label="Mensaje" value={msg} onChange={(e: any) => setMsg(e.target.value)} onBlur={() => { }} />
110
+ <ITInput name="msg_ctrl" label={t("showcase.feedback.message")} value={msg} onChange={(e: any) => setMsg(e.target.value)} onBlur={() => { }} />
106
111
  <ITSelect
107
112
  name="type_ctrl"
108
- label="Tipo de Notificación"
113
+ label={t("showcase.feedback.notificationType")}
109
114
  value={type}
110
115
  onChange={(e: any) => setType(e.target.value)}
111
116
  options={[
@@ -119,10 +124,10 @@ export const ToastShowcase = () => {
119
124
  }
120
125
  gallery={
121
126
  <div className="flex flex-wrap gap-3">
122
- <ITButton label="Toast Exito" color="success" size="sm" onClick={() => { setMsg("Operación exitosa!"); setType("success"); setVisible(true); }} />
123
- <ITButton label="Toast Error" color="danger" size="sm" onClick={() => { setMsg("Ocurrió un fallo de red."); setType("error"); setVisible(true); }} />
124
- <ITButton label="Toast Warning" color="warning" size="sm" onClick={() => { setMsg("Licencia por expirar."); setType("warning"); setVisible(true); }} />
125
- <ITButton label="Toast Info" color="info" size="sm" onClick={() => { setMsg("Actualización disponible."); setType("info"); setVisible(true); }} />
127
+ <ITButton label={t("showcase.feedback.toastSuccess")} color="success" size="sm" onClick={() => { setMsg(t("showcase.feedback.msgSuccess")); setType("success"); setVisible(true); }} />
128
+ <ITButton label={t("showcase.feedback.toastError")} color="danger" size="sm" onClick={() => { setMsg(t("showcase.feedback.msgError")); setType("error"); setVisible(true); }} />
129
+ <ITButton label={t("showcase.feedback.toastWarning")} color="warning" size="sm" onClick={() => { setMsg(t("showcase.feedback.msgWarning")); setType("warning"); setVisible(true); }} />
130
+ <ITButton label={t("showcase.feedback.toastInfo")} color="info" size="sm" onClick={() => { setMsg(t("showcase.feedback.msgInfo")); setType("info"); setVisible(true); }} />
126
131
  </div>
127
132
  }
128
133
  />
@@ -131,6 +136,7 @@ export const ToastShowcase = () => {
131
136
 
132
137
  // 3. ITLoader Showcase
133
138
  export const LoaderShowcase = () => {
139
+ const { t } = useITTranslation();
134
140
  const [variant, setVariant] = useState<any>("spinner");
135
141
  const [size, setSize] = useState<any>("md");
136
142
  const [color, setColor] = useState("primary");
@@ -140,7 +146,7 @@ export const LoaderShowcase = () => {
140
146
  return (
141
147
  <ShowcaseLayout
142
148
  title="ITLoader"
143
- description="Indicadores de carga animados con soporte para múltiples estilos visuales."
149
+ description={t("showcase.feedback.loaderDesc")}
144
150
  code={code}
145
151
  demo={
146
152
  <div className="w-full max-w-xs flex items-center justify-center min-h-[80px]">
@@ -151,7 +157,7 @@ export const LoaderShowcase = () => {
151
157
  <>
152
158
  <ITSelect
153
159
  name="var_ctrl"
154
- label="Tipo de Cargador"
160
+ label={t("showcase.feedback.loaderVariant")}
155
161
  value={variant}
156
162
  onChange={(e: any) => setVariant(e.target.value)}
157
163
  options={[
@@ -163,7 +169,7 @@ export const LoaderShowcase = () => {
163
169
  />
164
170
  <ITSelect
165
171
  name="sz_ctrl"
166
- label="Tamaño"
172
+ label={t("showcase.common.size")}
167
173
  value={size}
168
174
  onChange={(e: any) => setSize(e.target.value)}
169
175
  options={[
@@ -176,7 +182,7 @@ export const LoaderShowcase = () => {
176
182
  />
177
183
  <ITSelect
178
184
  name="col_ctrl"
179
- label="Color"
185
+ label={t("showcase.common.color")}
180
186
  value={color}
181
187
  onChange={(e: any) => setColor(e.target.value)}
182
188
  options={[
@@ -204,6 +210,7 @@ export const LoaderShowcase = () => {
204
210
 
205
211
  // 4. ITThemeProvider Showcase
206
212
  export const ThemeProviderShowcase = () => {
213
+ const { t } = useITTranslation();
207
214
  const { applyPreset, resolvedTheme, darkModeMode, setDarkModeMode } = useITTheme();
208
215
 
209
216
  const code = `// En index.tsx o App.tsx\n<ITThemeProvider>\n <App />\n</ITThemeProvider>\n\n// En tu componente:\nconst { palette, resolvedTheme, darkModeMode, setDarkModeMode, applyPreset } = useITTheme();`;
@@ -211,19 +218,19 @@ export const ThemeProviderShowcase = () => {
211
218
  return (
212
219
  <ShowcaseLayout
213
220
  title="ITThemeProvider"
214
- description="Inyector dinámico de tokens CSS que gestiona el modo oscuro/claro y las paletas de colores unificadas."
221
+ description={t("showcase.feedback.themeDesc")}
215
222
  code={code}
216
223
  demo={
217
224
  <ITStack spacing={5} className="w-full max-w-md">
218
225
  <div>
219
226
  <span className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-3 block">
220
- Modo de Apariencia
227
+ {t("showcase.feedback.appearanceMode")}
221
228
  </span>
222
229
  <div className="flex flex-wrap gap-2">
223
230
  {(["light", "dark", "system"] as const).map((mode) => (
224
231
  <ITButton
225
232
  key={mode}
226
- label={mode === "light" ? "☀️ Claro" : mode === "dark" ? "🌙 Oscuro" : "💻 Sistema"}
233
+ label={mode === "light" ? t("showcase.feedback.modeLight") : mode === "dark" ? t("showcase.feedback.modeDark") : t("showcase.feedback.modeSystem")}
227
234
  color={darkModeMode === mode ? "primary" : "secondary"}
228
235
  onClick={() => setDarkModeMode(mode)}
229
236
  size="sm"
@@ -231,13 +238,13 @@ export const ThemeProviderShowcase = () => {
231
238
  ))}
232
239
  </div>
233
240
  <p className="text-xs text-slate-500 mt-2">
234
- Tema actual: <strong>{resolvedTheme === "dark" ? "Oscuro" : "Claro"}</strong>
241
+ {t("showcase.feedback.currentTheme")} <strong>{resolvedTheme === "dark" ? t("showcase.feedback.modeDarkName") : t("showcase.feedback.modeLightName")}</strong>
235
242
  </p>
236
243
  </div>
237
244
 
238
245
  <div>
239
246
  <span className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-3 block">
240
- Presets Rápidos
247
+ {t("showcase.feedback.quickPresets")}
241
248
  </span>
242
249
  <ITGrid container spacing={2}>
243
250
  {PRESETS.map((preset) => {
@@ -271,10 +278,10 @@ export const ThemeProviderShowcase = () => {
271
278
  controls={
272
279
  <ITStack spacing={3}>
273
280
  <p className="text-xs text-slate-500">
274
- Haz clic en el botón flotante de paleta 🎨 en la esquina inferior derecha para abrir el diseñador completo.
281
+ {t("showcase.feedback.themeHint1")}
275
282
  </p>
276
283
  <p className="text-xs text-slate-500">
277
- Allí puedes ajustar cada color, guardar temas personalizados y alternar entre modo claro/oscuro.
284
+ {t("showcase.feedback.themeHint2")}
278
285
  </p>
279
286
  </ITStack>
280
287
  }