@axzydev/axzy_ui_system 1.4.8 → 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 (223) hide show
  1. package/README.md +2 -11
  2. package/dist/index.cjs +1826 -1351
  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 +115 -14
  7. package/dist/index.d.ts +115 -14
  8. package/dist/index.js +1481 -1010
  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.tsx +30 -28
  39. package/src/components/molecules/time-picker/timePicker.tsx +8 -6
  40. package/src/components/molecules/wysiwyg/wysiwyg.tsx +23 -12
  41. package/src/components/organisms/confirm-dialog/confirm-dialog.props.ts +4 -4
  42. package/src/components/organisms/confirm-dialog/confirm-dialog.tsx +16 -8
  43. package/src/components/organisms/data-table/dataTable.tsx +31 -25
  44. package/src/components/organisms/dialog/dialog.tsx +3 -0
  45. package/src/components/organisms/drawer/drawer.tsx +3 -0
  46. package/src/components/organisms/dropfile/dropfile.tsx +19 -17
  47. package/src/components/organisms/form-builder/fieldRenderer.tsx +4 -2
  48. package/src/components/organisms/navbar/navbar.tsx +4 -2
  49. package/src/components/organisms/page-header/page-header.tsx +3 -1
  50. package/src/components/organisms/searchTable/components/PaginationControls.tsx +8 -6
  51. package/src/components/organisms/searchTable/components/PaginationInfo.tsx +3 -1
  52. package/src/components/organisms/searchTable/components/SearchAndSortBar.tsx +7 -5
  53. package/src/components/organisms/searchTable/components/SearchInput.tsx +4 -2
  54. package/src/components/organisms/searchTable/components/SortButton.tsx +13 -11
  55. package/src/components/organisms/searchTable/components/TableEmptyState.tsx +4 -2
  56. package/src/components/organisms/searchTable/components/TableRow.tsx +6 -4
  57. package/src/components/organisms/searchTable/searchTable.tsx +4 -2
  58. package/src/components/organisms/sidebar/sidebar.props.ts +1 -1
  59. package/src/components/organisms/sidebar/sidebar.tsx +9 -4
  60. package/src/components/organisms/toast/toast.tsx +3 -1
  61. package/src/components/organisms/topbar/topbar.tsx +4 -2
  62. package/src/components/templates/page/page.props.ts +4 -4
  63. package/src/components/templates/page/page.tsx +6 -4
  64. package/src/components/theme-provider/themeProvider.tsx +28 -17
  65. package/src/dev.css +77 -2
  66. package/src/global.d.ts +10 -0
  67. package/src/i18n/context.ts +9 -0
  68. package/src/i18n/index.ts +22 -0
  69. package/src/i18n/locales/en.ts +163 -0
  70. package/src/i18n/locales/es.ts +165 -0
  71. package/src/i18n/provider.tsx +44 -0
  72. package/src/i18n/translator.ts +82 -0
  73. package/src/i18n/types.ts +54 -0
  74. package/src/i18n/useITTranslation.ts +20 -0
  75. package/src/index.css +0 -1
  76. package/src/index.ts +7 -1
  77. package/src/sandbox/LandingShowcase.tsx +224 -580
  78. package/src/sandbox/NotFoundShowcase.tsx +51 -36
  79. package/src/sandbox/TopbarSearch.tsx +6 -4
  80. package/src/sandbox/controls.tsx +180 -0
  81. package/src/sandbox/i18n.ts +1929 -0
  82. package/src/sandbox/icons.tsx +25 -0
  83. package/src/sandbox/locale.tsx +72 -0
  84. package/src/sandbox/ui.tsx +377 -0
  85. package/src/sandbox/useHashRoute.ts +46 -10
  86. package/src/showcases/DataShowcases.tsx +103 -87
  87. package/src/showcases/FeedbackShowcases.tsx +37 -30
  88. package/src/showcases/FormShowcases.tsx +302 -214
  89. package/src/showcases/GettingStartedShowcase.tsx +151 -145
  90. package/src/showcases/HelpShowcase.tsx +126 -128
  91. package/src/showcases/HomeShowcase.tsx +678 -482
  92. package/src/showcases/LayoutPrimitivesShowcases.tsx +129 -114
  93. package/src/showcases/NavigationShowcases.tsx +45 -37
  94. package/src/showcases/PageShowcases.tsx +171 -152
  95. package/src/showcases/ProductoDetalle.tsx +272 -129
  96. package/src/showcases/ShowcaseLayout.tsx +270 -216
  97. package/src/showcases/SizesShowcase.tsx +123 -64
  98. package/src/showcases/StructureShowcases.tsx +157 -131
  99. package/src/showcases/portfolioUi.tsx +153 -0
  100. package/src/showcases/techIcons.ts +3 -0
  101. package/src/utils/table.utils.ts +10 -2
  102. package/src/components/atoms/avatar/avatar.doc.mdx +0 -48
  103. package/src/components/atoms/avatar/avatar.stories.tsx +0 -64
  104. package/src/components/atoms/badget/badget.doc.mdx +0 -46
  105. package/src/components/atoms/badget/badget.stories.tsx +0 -75
  106. package/src/components/atoms/button/button.doc.mdx +0 -59
  107. package/src/components/atoms/button/button.stories.tsx +0 -173
  108. package/src/components/atoms/checkbox/checkbox.doc.mdx +0 -54
  109. package/src/components/atoms/checkbox/checkbox.stories.tsx +0 -53
  110. package/src/components/atoms/chip/chip.doc.mdx +0 -47
  111. package/src/components/atoms/chip/chip.stories.tsx +0 -64
  112. package/src/components/atoms/divider/divider.doc.mdx +0 -42
  113. package/src/components/atoms/divider/divider.stories.tsx +0 -33
  114. package/src/components/atoms/flex/flex.doc.mdx +0 -59
  115. package/src/components/atoms/flex/flex.stories.tsx +0 -70
  116. package/src/components/atoms/grid/grid.doc.mdx +0 -54
  117. package/src/components/atoms/grid/grid.stories.tsx +0 -71
  118. package/src/components/atoms/image/image.doc.mdx +0 -44
  119. package/src/components/atoms/image/image.stories.tsx +0 -48
  120. package/src/components/atoms/input/input.doc.mdx +0 -70
  121. package/src/components/atoms/input/input.stories.tsx +0 -113
  122. package/src/components/atoms/input-number/input-number.doc.mdx +0 -74
  123. package/src/components/atoms/input-number/input-number.stories.tsx +0 -111
  124. package/src/components/atoms/loader/loader.doc.mdx +0 -43
  125. package/src/components/atoms/loader/loader.stories.tsx +0 -104
  126. package/src/components/atoms/popover/popover.doc.mdx +0 -53
  127. package/src/components/atoms/popover/popover.stories.tsx +0 -24
  128. package/src/components/atoms/progress/progress.doc.mdx +0 -48
  129. package/src/components/atoms/progress/progress.stories.tsx +0 -39
  130. package/src/components/atoms/radio/radio.doc.mdx +0 -62
  131. package/src/components/atoms/radio/radio.stories.tsx +0 -48
  132. package/src/components/atoms/segmented-control/segmented-control.doc.mdx +0 -60
  133. package/src/components/atoms/segmented-control/segmented-control.stories.tsx +0 -62
  134. package/src/components/atoms/skeleton/skeleton.doc.mdx +0 -43
  135. package/src/components/atoms/skeleton/skeleton.stories.tsx +0 -29
  136. package/src/components/atoms/slide/slide.doc.mdx +0 -46
  137. package/src/components/atoms/slide/slide.stories.tsx +0 -120
  138. package/src/components/atoms/slider/slider.doc.mdx +0 -49
  139. package/src/components/atoms/slider/slider.stories.tsx +0 -29
  140. package/src/components/atoms/stack/stack.doc.mdx +0 -126
  141. package/src/components/atoms/stack/stack.stories.tsx +0 -283
  142. package/src/components/atoms/text/text.doc.mdx +0 -41
  143. package/src/components/atoms/text/text.stories.tsx +0 -66
  144. package/src/components/atoms/textarea/textarea.doc.mdx +0 -64
  145. package/src/components/atoms/textarea/textarea.stories.tsx +0 -26
  146. package/src/components/atoms/tooltip/tooltip.doc.mdx +0 -47
  147. package/src/components/atoms/tooltip/tooltip.stories.tsx +0 -19
  148. package/src/components/isolation/isolation.stories.tsx +0 -202
  149. package/src/components/molecules/accordion/accordion.doc.mdx +0 -47
  150. package/src/components/molecules/accordion/accordion.stories.tsx +0 -68
  151. package/src/components/molecules/alert/alert.doc.mdx +0 -48
  152. package/src/components/molecules/alert/alert.stories.tsx +0 -40
  153. package/src/components/molecules/breadcrumbs/breadcrumbs.doc.mdx +0 -57
  154. package/src/components/molecules/breadcrumbs/breadcrumbs.stories.tsx +0 -20
  155. package/src/components/molecules/calendar/calendar.doc.mdx +0 -76
  156. package/src/components/molecules/calendar/calendar.stories.tsx +0 -90
  157. package/src/components/molecules/card/card.doc.mdx +0 -54
  158. package/src/components/molecules/card/card.stories.tsx +0 -57
  159. package/src/components/molecules/chip-input/chip-input.doc.mdx +0 -44
  160. package/src/components/molecules/chip-input/chip-input.stories.tsx +0 -52
  161. package/src/components/molecules/date-picker/date-picker.doc.mdx +0 -65
  162. package/src/components/molecules/date-picker/date-picker.stories.tsx +0 -88
  163. package/src/components/molecules/dropdown-menu/dropdown-menu.doc.mdx +0 -46
  164. package/src/components/molecules/dropdown-menu/dropdown-menu.stories.tsx +0 -41
  165. package/src/components/molecules/empty-state/empty-state.doc.mdx +0 -50
  166. package/src/components/molecules/empty-state/empty-state.stories.tsx +0 -19
  167. package/src/components/molecules/field/field.doc.mdx +0 -43
  168. package/src/components/molecules/field/field.stories.tsx +0 -42
  169. package/src/components/molecules/form-header/form-header.doc.mdx +0 -38
  170. package/src/components/molecules/form-header/form-header.stories.tsx +0 -52
  171. package/src/components/molecules/masked-input/masked-input.doc.mdx +0 -78
  172. package/src/components/molecules/masked-input/masked-input.stories.tsx +0 -126
  173. package/src/components/molecules/multi-select/multi-select.doc.mdx +0 -55
  174. package/src/components/molecules/multi-select/multi-select.stories.tsx +0 -59
  175. package/src/components/molecules/pagination/pagination.doc.mdx +0 -62
  176. package/src/components/molecules/pagination/pagination.stories.tsx +0 -110
  177. package/src/components/molecules/search-select/search-select.doc.mdx +0 -77
  178. package/src/components/molecules/search-select/search-select.stories.tsx +0 -146
  179. package/src/components/molecules/select/select.doc.mdx +0 -75
  180. package/src/components/molecules/select/select.stories.tsx +0 -85
  181. package/src/components/molecules/stat-card/stat-card.doc.mdx +0 -48
  182. package/src/components/molecules/stat-card/stat-card.stories.tsx +0 -40
  183. package/src/components/molecules/stepper/stepper.doc.mdx +0 -54
  184. package/src/components/molecules/stepper/stepper.stories.tsx +0 -154
  185. package/src/components/molecules/table/table.doc.mdx +0 -140
  186. package/src/components/molecules/table/table.stories.tsx +0 -402
  187. package/src/components/molecules/tabs/tabs.doc.mdx +0 -52
  188. package/src/components/molecules/tabs/tabs.stories.tsx +0 -31
  189. package/src/components/molecules/time-picker/timePicker.doc.mdx +0 -68
  190. package/src/components/molecules/time-picker/timePicker.stories.tsx +0 -130
  191. package/src/components/molecules/wysiwyg/wysiwyg.stories.tsx +0 -95
  192. package/src/components/organisms/confirm-dialog/confirm-dialog.doc.mdx +0 -60
  193. package/src/components/organisms/confirm-dialog/confirm-dialog.stories.tsx +0 -32
  194. package/src/components/organisms/data-table/ITDataTable.doc.mdx +0 -132
  195. package/src/components/organisms/data-table/ITDataTable.stories.tsx +0 -353
  196. package/src/components/organisms/dialog/dialog.doc.mdx +0 -54
  197. package/src/components/organisms/dialog/dialog.stories.tsx +0 -126
  198. package/src/components/organisms/drawer/drawer.doc.mdx +0 -59
  199. package/src/components/organisms/drawer/drawer.stories.tsx +0 -40
  200. package/src/components/organisms/dropfile/dropfile.doc.mdx +0 -74
  201. package/src/components/organisms/dropfile/dropfile.stories.tsx +0 -93
  202. package/src/components/organisms/form-builder/formBuilder.doc.mdx +0 -251
  203. package/src/components/organisms/form-builder/formBuilder.stories.tsx +0 -914
  204. package/src/components/organisms/navbar/navbar.doc.mdx +0 -77
  205. package/src/components/organisms/navbar/navbar.stories.tsx +0 -83
  206. package/src/components/organisms/page-header/page-header.doc.mdx +0 -54
  207. package/src/components/organisms/page-header/page-header.stories.tsx +0 -74
  208. package/src/components/organisms/searchTable/searchTable.doc.mdx +0 -79
  209. package/src/components/organisms/searchTable/searchTable.stories.tsx +0 -73
  210. package/src/components/organisms/sidebar/sidebar.doc.mdx +0 -176
  211. package/src/components/organisms/sidebar/sidebar.stories.tsx +0 -234
  212. package/src/components/organisms/toast/toast.doc.mdx +0 -50
  213. package/src/components/organisms/toast/toast.stories.tsx +0 -137
  214. package/src/components/organisms/topbar/topbar.doc.mdx +0 -72
  215. package/src/components/organisms/topbar/topbar.stories.tsx +0 -79
  216. package/src/components/organisms/triple-filter/tripleFilter.doc.mdx +0 -62
  217. package/src/components/organisms/triple-filter/tripleFilter.stories.tsx +0 -31
  218. package/src/components/templates/layout/layout.doc.mdx +0 -53
  219. package/src/components/templates/layout/layout.stories.tsx +0 -113
  220. package/src/components/templates/page/page.doc.mdx +0 -86
  221. package/src/components/templates/page/page.stories.tsx +0 -97
  222. package/src/components/theme-provider/themeProvider.doc.mdx +0 -85
  223. 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
  };