@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
@@ -1,76 +1,47 @@
1
- import { FaNpm, FaReact, FaCheck } from "react-icons/fa";
1
+ import { FaCube, FaNpm, FaReact } from "react-icons/fa";
2
2
  import { SiTailwindcss, SiTypescript, SiVite } from "react-icons/si";
3
- import { useState } from "react";
4
- import ITBadget from "../components/atoms/badget/badget";
5
- import ITButton from "../components/atoms/button/button";
6
- import ITCard from "../components/molecules/card/card";
7
3
  import ITFlex from "../components/atoms/flex/flex";
8
4
  import ITGrid from "../components/atoms/grid/grid";
9
- import ITStack from "../components/atoms/stack/stack";
10
- import ITText from "../components/atoms/text/text";
5
+ import {
6
+ BloqueCodigo,
7
+ BotonCopiar,
8
+ EnlaceMono,
9
+ EYEBROW,
10
+ Etiqueta,
11
+ FILETE,
12
+ SectionHeading,
13
+ } from "@/sandbox/ui";
14
+ import { useITTranslation } from "@/i18n";
11
15
 
12
- const CopyButton = ({ text }: { text: string }) => {
13
- const [copied, setCopied] = useState(false);
14
- return (
15
- <ITButton
16
- variant="text"
17
- color="gray"
18
- size="sm"
19
- onClick={() => { navigator.clipboard.writeText(text); setCopied(true); setTimeout(() => setCopied(false), 2000); }}
20
- >
21
- <ITFlex align="center" gap={1.5}>
22
- {copied ? <FaCheck size={10} className="text-emerald-400" /> : <FaNpm size={10} />}
23
- {copied ? "Copiado" : "Copiar"}
24
- </ITFlex>
25
- </ITButton>
26
- );
27
- };
16
+ const INSTALL_CMD = "pnpm add @axzydev/axzy_ui_system";
17
+ const REPO_URL = "https://github.com/maag070208/AXZY_UI_SYSTEM";
28
18
 
29
- const CodeBlock = ({ code, filename, color }: { code: string; filename?: string; color?: string }) => (
30
- <div className="overflow-hidden rounded-xl border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-900">
31
- {filename && (
32
- <div className={`px-4 py-2 border-b border-slate-200 dark:border-slate-700 ${color || "bg-slate-50 dark:bg-slate-800/80"}`}>
33
- <ITText as="span" className="!text-xs !font-mono !text-slate-400">{filename}</ITText>
34
- </div>
35
- )}
36
- <div className="relative bg-slate-950">
37
- <pre className="p-4 text-xs font-mono overflow-x-auto leading-relaxed text-slate-200">
38
- <code>{code}</code>
39
- </pre>
40
- </div>
41
- </div>
42
- );
43
-
44
- const codeFileColors = [
45
- "bg-emerald-50 dark:bg-emerald-950/30",
46
- "bg-blue-50 dark:bg-blue-950/30",
47
- "bg-cyan-50 dark:bg-cyan-950/30",
48
- "bg-violet-50 dark:bg-violet-950/30",
49
- "bg-amber-50 dark:bg-amber-950/30",
50
- "bg-rose-50 dark:bg-rose-950/30",
51
- ];
52
-
53
- const stepStyles = [
54
- { iconBg: "bg-emerald-100 dark:bg-emerald-950/40 text-emerald-600 dark:text-emerald-400" },
55
- { iconBg: "bg-blue-100 dark:bg-blue-950/40 text-blue-600 dark:text-blue-400" },
56
- { iconBg: "bg-cyan-100 dark:bg-cyan-950/40 text-cyan-600 dark:text-cyan-400" },
57
- { iconBg: "bg-violet-100 dark:bg-violet-950/40 text-violet-600 dark:text-violet-400" },
58
- { iconBg: "bg-amber-100 dark:bg-amber-950/40 text-amber-600 dark:text-amber-400" },
59
- { iconBg: "bg-rose-100 dark:bg-rose-950/40 text-rose-600 dark:text-rose-400" },
60
- ];
19
+ /** Un paso del setup: título, apoyo, archivo y código. */
20
+ interface Paso {
21
+ /** Ícono de la tecnología del paso. */
22
+ icono: React.ReactNode;
23
+ /** Clave i18n del título. */
24
+ titleKey: string;
25
+ /** Clave i18n del apoyo. */
26
+ descKey: string;
27
+ /** Archivo o etiqueta del bloque de código. */
28
+ filename: string;
29
+ /** Código del paso. */
30
+ code: string;
31
+ }
61
32
 
62
- const steps = [
33
+ const PASOS: Paso[] = [
63
34
  {
64
- icon: <FaNpm size={14} />,
65
- title: "Instalar dependencias",
66
- desc: "Tailwind v4 y su plugin para Vite.",
35
+ icono: <FaNpm size={13} />,
36
+ titleKey: "showcase.gettingStarted.step1Title",
37
+ descKey: "showcase.gettingStarted.step1Desc",
67
38
  filename: "terminal",
68
- code: "npm install @axzydev/axzy_ui_system\nnpm install -D tailwindcss @tailwindcss/vite @vitejs/plugin-react-swc",
39
+ code: "pnpm add @axzydev/axzy_ui_system\npnpm add -D tailwindcss @tailwindcss/vite @vitejs/plugin-react-swc",
69
40
  },
70
41
  {
71
- icon: <SiVite size={14} />,
72
- title: "Configurar Vite",
73
- desc: "Agrega Tailwind como plugin de Vite.",
42
+ icono: <SiVite size={13} />,
43
+ titleKey: "showcase.gettingStarted.step2Title",
44
+ descKey: "showcase.gettingStarted.step2Desc",
74
45
  filename: "vite.config.ts",
75
46
  code: `import { defineConfig } from "vite"
76
47
  import react from "@vitejs/plugin-react-swc"
@@ -81,17 +52,17 @@ export default defineConfig({
81
52
  })`,
82
53
  },
83
54
  {
84
- icon: <SiTailwindcss size={14} />,
85
- title: "Agregar Tailwind",
86
- desc: "Importa Tailwind en tu archivo CSS.",
55
+ icono: <SiTailwindcss size={13} />,
56
+ titleKey: "showcase.gettingStarted.step3Title",
57
+ descKey: "showcase.gettingStarted.step3Desc",
87
58
  filename: "src/index.css",
88
59
  code: `@import "tailwindcss";
89
60
  @variant dark (&:is(.dark &));`,
90
61
  },
91
62
  {
92
- icon: <FaReact size={14} />,
93
- title: "Importar estilos",
94
- desc: "Envuelve tu app con el provider.",
63
+ icono: <FaReact size={13} />,
64
+ titleKey: "showcase.gettingStarted.step4Title",
65
+ descKey: "showcase.gettingStarted.step4Desc",
95
66
  filename: "src/main.tsx",
96
67
  code: `import { ITThemeProvider } from "@axzydev/axzy_ui_system"
97
68
  import "@axzydev/axzy_ui_system/dist/index.css"
@@ -101,9 +72,9 @@ import "@axzydev/axzy_ui_system/dist/index.css"
101
72
  </ITThemeProvider>`,
102
73
  },
103
74
  {
104
- icon: <SiTypescript size={14} />,
105
- title: "Declaración de tipos",
106
- desc: "Para que TS acepte imports CSS.",
75
+ icono: <SiTypescript size={13} />,
76
+ titleKey: "showcase.gettingStarted.step5Title",
77
+ descKey: "showcase.gettingStarted.step5Desc",
107
78
  filename: "src/vite-env.d.ts",
108
79
  code: `/// <reference types="vite/client" />
109
80
 
@@ -113,9 +84,9 @@ declare module "*.css" {
113
84
  }`,
114
85
  },
115
86
  {
116
- icon: <FaReact size={14} />,
117
- title: "Primer componente",
118
- desc: "Ya puedes usar cualquier componente.",
87
+ icono: <FaCube size={13} />,
88
+ titleKey: "showcase.gettingStarted.step6Title",
89
+ descKey: "showcase.gettingStarted.step6Desc",
119
90
  filename: "src/App.tsx",
120
91
  code: `import { ITButton } from "@axzydev/axzy_ui_system"
121
92
 
@@ -125,70 +96,7 @@ export default function App() {
125
96
  },
126
97
  ];
127
98
 
128
- export const GettingStartedShowcase = () => {
129
- return (
130
- <ITStack spacing={10}>
131
- {/* ─── HERO ─── */}
132
- <ITCard className="overflow-hidden border-0 bg-gradient-to-br from-primary-50 via-white to-purple-50 dark:from-primary-950/20 dark:via-slate-900 dark:to-purple-950/20 shadow-sm">
133
- <div className="relative">
134
- <div className="absolute -top-40 -right-40 w-[500px] h-[500px] bg-primary-500/10 rounded-full blur-[120px] pointer-events-none" />
135
- <div className="absolute -bottom-40 -left-40 w-[500px] h-[500px] bg-purple-500/10 rounded-full blur-[120px] pointer-events-none" />
136
-
137
- <ITStack spacing={5} className="relative z-10">
138
- <ITStack spacing={2}>
139
- <ITBadget label="v1.0.0" color="primary" variant="outlined" className="w-fit" />
140
- <ITText as="h1" className="!text-4xl !font-bold !tracking-tight">
141
- AXZY UI System
142
- </ITText>
143
- <ITText as="p" muted className="!text-base !leading-relaxed max-w-xl">
144
- Librería de componentes React con Tailwind CSS v4. Diseñada para apps enterprise con experiencia de desarrollo fluida.
145
- </ITText>
146
- </ITStack>
147
-
148
- <ITFlex gap={3} wrap="wrap" align="center">
149
- <div className="px-4 py-2 rounded-xl bg-gradient-to-r from-primary-50 to-purple-50 dark:from-primary-950/30 dark:to-purple-950/30 border border-primary-200 dark:border-primary-800/50 shadow-sm">
150
- <ITFlex align="center" gap={2}>
151
- <FaNpm size={16} className="text-primary-500" />
152
- <code className="text-sm font-mono text-slate-800 dark:text-slate-200">npm install @axzydev/axzy_ui_system</code>
153
- <CopyButton text="npm install @axzydev/axzy_ui_system" />
154
- </ITFlex>
155
- </div>
156
- </ITFlex>
157
- </ITStack>
158
- </div>
159
- </ITCard>
160
-
161
- {/* ─── SETUP STEPS ─── */}
162
- <ITGrid container spacing={6}>
163
- {steps.map((step, i) => (
164
- <ITGrid item xs={12} md={6} key={i}>
165
- <ITCard className="border-slate-200/60 dark:border-slate-800/60 shadow-sm h-full">
166
- <ITStack spacing={4}>
167
- <ITFlex align="center" gap={2.5}>
168
- <div className={`w-8 h-8 rounded-lg ${stepStyles[i].iconBg} flex items-center justify-center`}>
169
- {step.icon}
170
- </div>
171
- <div>
172
- <ITText as="p" className="!text-sm !font-semibold">{step.title}</ITText>
173
- <ITText as="p" className="!text-xs !text-slate-400">{step.desc}</ITText>
174
- </div>
175
- </ITFlex>
176
- <CodeBlock code={step.code} filename={step.filename} color={codeFileColors[i]} />
177
- </ITStack>
178
- </ITCard>
179
- </ITGrid>
180
- ))}
181
- </ITGrid>
182
-
183
- {/* ─── THEMING ─── */}
184
- <ITCard title="Theming" className="border-purple-200/60 dark:border-purple-800/60 shadow-sm">
185
- <ITStack spacing={4}>
186
- <ITText as="p" className="!text-sm" muted>
187
- Personaliza colores en runtime. Solo necesitas los que quieras cambiar.
188
- </ITText>
189
- <div className="bg-gradient-to-r from-purple-50 via-fuchsia-50 to-pink-50 dark:from-purple-950/20 dark:via-fuchsia-950/20 dark:to-pink-950/20 rounded-xl p-5 border border-purple-200 dark:border-purple-800/30">
190
- <CodeBlock
191
- code={`const myTheme = {
99
+ const TEMA_CODE = `const myTheme = {
192
100
  colors: {
193
101
  primary: { 50: "#fef2f2", 500: "#ef4444" },
194
102
  },
@@ -196,11 +104,109 @@ export const GettingStartedShowcase = () => {
196
104
 
197
105
  <ITThemeProvider theme={myTheme}>
198
106
  <App />
199
- </ITThemeProvider>`}
200
- />
201
- </div>
202
- </ITStack>
203
- </ITCard>
204
- </ITStack>
107
+ </ITThemeProvider>`;
108
+
109
+ /**
110
+ * Puesta en marcha (`#ui-system/general/getting-started`): masthead con el
111
+ * comando de instalación y los seis pasos del setup como filas numeradas con
112
+ * filete (sin tarjetas de colores ni degradados decorativos).
113
+ *
114
+ * @example
115
+ * ```tsx
116
+ * <GettingStartedShowcase />
117
+ * ```
118
+ */
119
+ export const GettingStartedShowcase = () => {
120
+ const { t } = useITTranslation();
121
+
122
+ return (
123
+ <div className="animate-fadeIn pb-4">
124
+ {/* ─── MASTHEAD ─── */}
125
+ <header className={`border-b pb-8 ${FILETE}`}>
126
+ <div className="flex flex-wrap items-center justify-between gap-4">
127
+ <p className={EYEBROW}>{`v${__APP_VERSION__} · Tailwind v4 · TypeScript`}</p>
128
+ <EnlaceMono href={REPO_URL}>Repositorio</EnlaceMono>
129
+ </div>
130
+
131
+ <h1 className="mt-6 font-display text-[36px] font-bold leading-[1.06] tracking-[-0.015em] text-slate-900 dark:text-white sm:text-[46px]">
132
+ AXZY UI System
133
+ </h1>
134
+ <p className="mt-5 max-w-[64ch] text-[15.5px] leading-[1.75] text-slate-600 dark:text-slate-300">
135
+ {t("showcase.gettingStarted.heroDesc")}
136
+ </p>
137
+
138
+ <div
139
+ className={`mt-7 inline-flex flex-wrap items-center gap-x-3 gap-y-2 rounded-[10px] border px-4 py-2 ${FILETE}`}
140
+ >
141
+ <FaNpm size={15} className="shrink-0 text-primary-700 dark:text-primary-500" />
142
+ <code className="font-mono text-xs text-slate-700 dark:text-slate-200">
143
+ {INSTALL_CMD}
144
+ </code>
145
+ <span className={`border-l pl-3 ${FILETE}`}>
146
+ <BotonCopiar texto={INSTALL_CMD} />
147
+ </span>
148
+ </div>
149
+ </header>
150
+
151
+ {/* ─── PASOS ─── */}
152
+ <section className="pt-12">
153
+ <SectionHeading
154
+ index={0}
155
+ label={t("showcase.landing.quickstartEyebrow")}
156
+ title={t("showcase.gettingStarted.stepsTitle")}
157
+ subtitle={t("showcase.gettingStarted.stepsSubtitle")}
158
+ className="pb-7"
159
+ />
160
+
161
+ <ol className={`border-t ${FILETE}`}>
162
+ {PASOS.map((paso, indice) => (
163
+ <li
164
+ key={paso.titleKey}
165
+ className={`grid gap-4 border-b py-6 lg:grid-cols-[minmax(0,300px)_minmax(0,1fr)] lg:gap-10 ${FILETE}`}
166
+ >
167
+ <div className="min-w-0">
168
+ <div className="flex items-center gap-3">
169
+ <span className="font-mono text-[11px] tabular-nums text-slate-500 dark:text-slate-400">
170
+ {String(indice + 1).padStart(2, "0")}
171
+ </span>
172
+ <span aria-hidden className="text-primary-700 dark:text-primary-500">{paso.icono}</span>
173
+ <h3 className="font-display text-[16px] font-bold tracking-[-0.02em] text-slate-900 dark:text-white">
174
+ {t(paso.titleKey)}
175
+ </h3>
176
+ </div>
177
+ <p className="mt-2 text-[13.5px] leading-relaxed text-slate-500 dark:text-slate-400">
178
+ {t(paso.descKey)}
179
+ </p>
180
+ </div>
181
+
182
+ <BloqueCodigo code={paso.code} filename={paso.filename} />
183
+ </li>
184
+ ))}
185
+ </ol>
186
+ </section>
187
+
188
+ {/* ─── THEMING ─── */}
189
+ <section className="pt-12">
190
+ <div className={`border-t pt-10 ${FILETE}`}>
191
+ <ITGrid container spacing={8}>
192
+ <ITGrid item xs={12} lg={5}>
193
+ <p className={EYEBROW}>{t("showcase.gettingStarted.themingTitle")}</p>
194
+ <p className="mt-3 text-[14px] leading-relaxed text-slate-600 dark:text-slate-300">
195
+ {t("showcase.gettingStarted.themingDesc")}
196
+ </p>
197
+ <ITFlex align="center" gap={2} wrap="wrap" className="!mt-5">
198
+ <Etiqueta>Tailwind v4</Etiqueta>
199
+ <Etiqueta>Runtime</Etiqueta>
200
+ </ITFlex>
201
+ </ITGrid>
202
+
203
+ <ITGrid item xs={12} lg={7}>
204
+ <BloqueCodigo code={TEMA_CODE} filename="theme.ts" />
205
+ </ITGrid>
206
+ </ITGrid>
207
+ </div>
208
+ </section>
209
+
210
+ </div>
205
211
  );
206
212
  };