@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,53 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './popover.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITPopover
7
-
8
- Floating content panel triggered by click on a trigger element. Supports four position placements and offers both uncontrolled (click toggle) and controlled (`isOpen`/`onClose`) modes.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `trigger` | `ReactNode` | — | Element that triggers the popover when clicked. |
15
- | `children` | `ReactNode` | — | Content rendered inside the popover panel. |
16
- | `position` | `"top" \| "bottom" \| "left" \| "right"` | `"bottom"` | Position of the popover relative to the trigger element. |
17
- | `isOpen` | `boolean` | — | Controlled open state. When provided, the component acts in controlled mode. |
18
- | `onClose` | `() => void` | — | Callback fired when the popover is closed in controlled mode. |
19
- | `className` | `string` | — | Additional CSS classes for the container. |
20
-
21
- ## Usage
22
-
23
- ```tsx
24
- import { ITPopover } from '@axzydev/axzy_ui_system';
25
-
26
- <ITPopover trigger={<ITButton label="Abrir" />}>
27
- <button>Editar</button>
28
- <button>Eliminar</button>
29
- </ITPopover>
30
-
31
- <ITPopover
32
- trigger={<ITButton label="Controlled" />}
33
- position="top"
34
- isOpen={open}
35
- onClose={() => setOpen(false)}
36
- >
37
- <p>Contenido controlado</p>
38
- </ITPopover>
39
- ```
40
-
41
- ## Notes
42
-
43
- - Default mode is uncontrolled: clicking the trigger toggles the popover open/closed.
44
- - Controlled mode via `isOpen` and `onClose` allows external state management.
45
- - Four positions available: `top`, `bottom`, `left`, `right` relative to the trigger element.
46
- - Popover is dismissed automatically when clicking outside the panel.
47
- - Ideal for dropdown menus, action lists, and contextual tool panels.
48
-
49
- ## Stories
50
-
51
- <Primary />
52
- <Controls />
53
- <Stories />
@@ -1,24 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import ITPopover from "@/components/atoms/popover/popover";
3
- import ITButton from "@/components/atoms/button/button";
4
- import ITStack from "@/components/atoms/stack/stack";
5
-
6
- const meta: Meta<typeof ITPopover> = {
7
- title: "Components/Overlay/ITPopover",
8
- component: ITPopover,
9
- };
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof ITPopover>;
13
-
14
- export const Default: Story = {
15
- render: () => (
16
- <ITPopover trigger={<ITButton label="Abrir Popover" />}>
17
- <ITStack spacing={2}>
18
- <p className="text-sm font-semibold">Opciones</p>
19
- <button className="text-sm text-left text-slate-600 hover:text-slate-800">Editar</button>
20
- <button className="text-sm text-left text-slate-600 hover:text-slate-800">Eliminar</button>
21
- </ITStack>
22
- </ITPopover>
23
- ),
24
- };
@@ -1,48 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './progress.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITProgress
7
-
8
- Progress indicator with determinate and indeterminate variants. Supports multiple semantic colors and three sizes for indicating completion or loading states.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `value` | `number` | `0` | Current progress value. |
15
- | `max` | `number` | `100` | Maximum progress value. |
16
- | `variant` | `"determinate" \| "indeterminate"` | `"determinate"` | Progress variant. `"determinate"` shows a fixed-width fill, `"indeterminate"` shows an animated pulsing bar. |
17
- | `color` | `"primary" \| "secondary" \| "success" \| "danger" \| "warning" \| "info" \| "purple" \| "error" \| "gray"` | `"primary"` | Semantic color for the progress fill. |
18
- | `size` | `"sm" \| "md" \| "lg"` | `"md"` | Height and visual scale of the progress bar. |
19
- | `className` | `string` | — | Additional CSS classes for the container. |
20
- | `style` | `CSSProperties` | — | Inline styles applied to the container. |
21
-
22
- ## Usage
23
-
24
- ```tsx
25
- import { ITProgress } from '@axzydev/axzy_ui_system';
26
-
27
- <ITProgress value={70} />
28
-
29
- <ITProgress value={45} color="success" size="lg" />
30
-
31
- <ITProgress variant="indeterminate" />
32
-
33
- <ITProgress value={90} color="danger" size="sm" />
34
- ```
35
-
36
- ## Notes
37
-
38
- - `determinate` mode shows a solid fill proportional to `value / max`.
39
- - `indeterminate` mode renders a continuous animated bar for loading states where progress is unknown.
40
- - All nine semantic colors are available for the fill.
41
- - Sizes `sm`, `md`, and `lg` control bar height and overall scale.
42
- - Use `style` for custom width or container-level overrides.
43
-
44
- ## Stories
45
-
46
- <Primary />
47
- <Controls />
48
- <Stories />
@@ -1,39 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { useState } from "react";
3
- import ITProgress from "@/components/atoms/progress/progress";
4
- import ITButton from "@/components/atoms/button/button";
5
-
6
- const meta: Meta<typeof ITProgress> = {
7
- title: "Components/Feedback/ITProgress",
8
- component: ITProgress,
9
- };
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof ITProgress>;
13
-
14
- export const Determinate: Story = {
15
- render: () => {
16
- const [val, setVal] = useState(0);
17
- return (
18
- <div className="space-y-3">
19
- <ITProgress value={val} />
20
- <ITButton label="+10%" onClick={() => setVal(v => Math.min(v + 10, 100))} />
21
- </div>
22
- );
23
- },
24
- };
25
-
26
- export const Indeterminate: Story = {
27
- args: { variant: "indeterminate" },
28
- };
29
-
30
- export const Colors: Story = {
31
- render: () => (
32
- <div className="space-y-3">
33
- <ITProgress value={70} color="primary" />
34
- <ITProgress value={70} color="success" />
35
- <ITProgress value={70} color="danger" />
36
- <ITProgress value={70} color="warning" />
37
- </div>
38
- ),
39
- };
@@ -1,62 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './radio.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITRadioGroup
7
-
8
- Radio button group for selecting a single option from a set. Supports horizontal and vertical layouts, disabled state, and an options-array API for declarative rendering.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `name` | `string` | — | Name attribute for the radio input group. Used for form accessibility. |
15
- | `value` | `string` | — | Currently selected value (controlled). |
16
- | `onChange` | `(value: string) => void` | — | Callback fired when a radio option is selected. |
17
- | `options` | `ITRadioOption[]` | — | Array of radio options: `{ value: string, label: ReactNode }`. |
18
- | `disabled` | `boolean` | `false` | Whether the entire radio group is disabled. |
19
- | `direction` | `"row" \| "column"` | `"column"` | Layout direction of the radio options. |
20
- | `className` | `string` | — | Additional CSS classes for the container. |
21
-
22
- ## Usage
23
-
24
- ```tsx
25
- import { ITRadioGroup } from '@axzydev/axzy_ui_system';
26
-
27
- <ITRadioGroup
28
- name="size"
29
- value={selected}
30
- onChange={setSelected}
31
- options={[
32
- { value: "sm", label: "Small" },
33
- { value: "md", label: "Medium" },
34
- { value: "lg", label: "Large" },
35
- ]}
36
- />
37
-
38
- <ITRadioGroup
39
- name="layout"
40
- value={selected}
41
- onChange={setSelected}
42
- direction="row"
43
- options={[
44
- { value: "option1", label: "Option 1" },
45
- { value: "option2", label: "Option 2" },
46
- ]}
47
- />
48
- ```
49
-
50
- ## Notes
51
-
52
- - Fully controlled component: `value` and `onChange` must be provided.
53
- - `direction="column"` stacks options vertically; `direction="row"` lays them out horizontally.
54
- - `disabled` disables all radio inputs in the group at once.
55
- - Label accepts `ReactNode`, allowing rich content like icons or custom markup.
56
- - Group uses a shared `name` attribute, ensuring mutual exclusivity across options.
57
-
58
- ## Stories
59
-
60
- <Primary />
61
- <Controls />
62
- <Stories />
@@ -1,48 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { useState } from "react";
3
- import ITRadioGroup from "@/components/atoms/radio/radio";
4
-
5
- const meta: Meta<typeof ITRadioGroup> = {
6
- title: "Components/Inputs/ITRadioGroup",
7
- component: ITRadioGroup,
8
- };
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof ITRadioGroup>;
12
-
13
- export const Default: Story = {
14
- render: () => {
15
- const [val, setVal] = useState("option1");
16
- return (
17
- <ITRadioGroup
18
- name="example"
19
- value={val}
20
- onChange={setVal}
21
- options={[
22
- { value: "option1", label: "Opción 1" },
23
- { value: "option2", label: "Opción 2" },
24
- { value: "option3", label: "Opción 3" },
25
- ]}
26
- />
27
- );
28
- },
29
- };
30
-
31
- export const Row: Story = {
32
- render: () => {
33
- const [val, setVal] = useState("sm");
34
- return (
35
- <ITRadioGroup
36
- name="size"
37
- value={val}
38
- onChange={setVal}
39
- direction="row"
40
- options={[
41
- { value: "sm", label: "Chico" },
42
- { value: "md", label: "Mediano" },
43
- { value: "lg", label: "Grande" },
44
- ]}
45
- />
46
- );
47
- },
48
- };
@@ -1,60 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './segmented-control.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITSegmentedControl
7
-
8
- iOS-style segmented toggle for mutually exclusive options with optional icons. Supports two sizes and a disabled state. Ideal for filter and view switching.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `options` | `ISegmentedOption[]` | — | Array of mutually exclusive options: `{ value: string, label: string, icon?: ReactNode }`. |
15
- | `value` | `string` | — | Currently selected value (controlled). |
16
- | `onChange` | `(value: string) => void` | — | Callback fired when the user selects a different option. |
17
- | `size` | `"sm" \| "md"` | `"md"` | Control size. |
18
- | `className` | `string` | — | Additional CSS classes on the container. |
19
- | `disabled` | `boolean` | `false` | Whether the entire control is disabled. |
20
-
21
- ## Usage
22
-
23
- ```tsx
24
- import { ITSegmentedControl } from '@axzydev/axzy_ui_system';
25
-
26
- <ITSegmentedControl
27
- options={[
28
- { value: "day", label: "Day" },
29
- { value: "week", label: "Week" },
30
- { value: "month", label: "Month" },
31
- ]}
32
- value={selected}
33
- onChange={setSelected}
34
- />
35
-
36
- <ITSegmentedControl
37
- size="sm"
38
- options={[
39
- { value: "list", label: "List", icon: <FaList /> },
40
- { value: "grid", label: "Grid", icon: <FaTh /> },
41
- ]}
42
- value={view}
43
- onChange={setView}
44
- />
45
- ```
46
-
47
- ## Notes
48
-
49
- - Only one option can be selected at a time — mutually exclusive by design.
50
- - Each option may include an optional `icon` rendered alongside the label.
51
- - Two sizes available: `sm` (compact) and `md` (default).
52
- - `disabled` applies to all segments simultaneously.
53
- - Commonly used for view toggling (list/grid), date range selection (day/week/month), and filter switching.
54
- - Fully controlled component: `value` and `onChange` are required.
55
-
56
- ## Stories
57
-
58
- <Primary />
59
- <Controls />
60
- <Stories />
@@ -1,62 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { useState } from "react";
3
- import { FaList, FaTh } from "react-icons/fa";
4
- import ITSegmentedControl from "@/components/atoms/segmented-control/segmented-control";
5
-
6
- const meta: Meta<typeof ITSegmentedControl> = {
7
- title: "Components/Inputs/ITSegmentedControl",
8
- component: ITSegmentedControl,
9
- };
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof ITSegmentedControl>;
13
-
14
- export const Default: Story = {
15
- render: () => {
16
- const [val, setVal] = useState("day");
17
- return (
18
- <ITSegmentedControl
19
- options={[
20
- { value: "day", label: "Día" },
21
- { value: "week", label: "Semana" },
22
- { value: "month", label: "Mes" },
23
- ]}
24
- value={val}
25
- onChange={setVal}
26
- />
27
- );
28
- },
29
- };
30
-
31
- export const WithIcons: Story = {
32
- render: () => {
33
- const [val, setVal] = useState("list");
34
- return (
35
- <ITSegmentedControl
36
- options={[
37
- { value: "list", label: "Lista", icon: <FaList size={10} /> },
38
- { value: "grid", label: "Grid", icon: <FaTh size={10} /> },
39
- ]}
40
- value={val}
41
- onChange={setVal}
42
- />
43
- );
44
- },
45
- };
46
-
47
- export const Small: Story = {
48
- render: () => {
49
- const [val, setVal] = useState("sm");
50
- return (
51
- <ITSegmentedControl
52
- size="sm"
53
- options={[
54
- { value: "sm", label: "Chico" },
55
- { value: "md", label: "Mediano" },
56
- ]}
57
- value={val}
58
- onChange={setVal}
59
- />
60
- );
61
- },
62
- };
@@ -1,43 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './skeleton.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITSkeleton
7
-
8
- Content placeholder loaders used during data loading to indicate upcoming content.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `variant` | `'text' \| 'circular' \| 'rectangular' \| 'rounded'` | `'text'` | Shape of the skeleton placeholder |
15
- | `animation` | `'pulse' \| 'wave' \| 'none'` | `'pulse'` | Animation style |
16
- | `width` | `number \| string` | — | Width of the skeleton |
17
- | `height` | `number \| string` | — | Height of the skeleton |
18
- | `count` | `number` | `1` | Number of skeleton items to render |
19
-
20
- ## Usage
21
-
22
- ```tsx
23
- import { ITSkeleton } from '@axzydev/axzy_ui_system';
24
-
25
- <ITSkeleton />
26
- <ITSkeleton variant="circular" width={40} height={40} />
27
- <ITSkeleton variant="rectangular" width="100%" height={200} animation="wave" />
28
- <ITSkeleton variant="text" count={3} />
29
- ```
30
-
31
- ## Notes
32
-
33
- - Use during data loading to reduce perceived wait time
34
- - `count` prop repeats the skeleton for placeholder lists or paragraphs
35
- - `rectangular` variant suits image or card placeholders
36
- - `circular` variant suits avatar or icon placeholders
37
- - Set `animation="none"` for static placeholders
38
-
39
- ## Stories
40
-
41
- <Primary />
42
- <Controls />
43
- <Stories />
@@ -1,29 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import ITSkeleton from "@/components/atoms/skeleton/skeleton";
3
- import ITStack from "@/components/atoms/stack/stack";
4
-
5
- const meta: Meta<typeof ITSkeleton> = {
6
- title: "Components/Feedback/ITSkeleton",
7
- component: ITSkeleton,
8
- };
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof ITSkeleton>;
12
-
13
- export const Text: Story = {
14
- render: () => (
15
- <ITStack spacing={2}>
16
- <ITSkeleton variant="text" width="60%" />
17
- <ITSkeleton variant="text" />
18
- <ITSkeleton variant="text" width="80%" />
19
- </ITStack>
20
- ),
21
- };
22
-
23
- export const Circular: Story = {
24
- args: { variant: "circular", width: 48, height: 48 },
25
- };
26
-
27
- export const Rectangular: Story = {
28
- args: { variant: "rectangular", width: "100%", height: 160 },
29
- };
@@ -1,46 +0,0 @@
1
- import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
- import * as StoriesData from './slide.stories';
3
-
4
- <Meta of={StoriesData} />
5
-
6
- # ITSlideToggle
7
-
8
- iOS-style toggle switch for boolean settings. Supports controlled and uncontrolled modes.
9
-
10
- ## Props
11
-
12
- | Prop | Type | Default | Description |
13
- |------|------|---------|-------------|
14
- | `checked` | `boolean` | — | Controlled checked state |
15
- | `defaultChecked` | `boolean` | `false` | Uncontrolled default state |
16
- | `onChange` | `(checked: boolean) => void` | — | Change handler |
17
- | `label` | `string` | — | Label text |
18
- | `labelPosition` | `'left' \| 'right'` | `'right'` | Label placement |
19
- | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Toggle size |
20
- | `color` | `'primary' \| 'secondary' \| 'success' \| 'warning' \| 'danger' \| 'info' \| 'neutral'` | `'primary'` | Color theme when checked |
21
- | `disabled` | `boolean` | `false` | Disables the toggle |
22
-
23
- ## Usage
24
-
25
- ```tsx
26
- import { ITSlideToggle } from '@axzydev/axzy_ui_system';
27
-
28
- <ITSlideToggle />
29
- <ITSlideToggle label="Enable notifications" defaultChecked />
30
- <ITSlideToggle label="Dark mode" labelPosition="left" size="sm" color="success" />
31
- <ITSlideToggle disabled label="Locked" />
32
- ```
33
-
34
- ## Notes
35
-
36
- - Controlled mode via `checked` + `onChange`
37
- - Uncontrolled mode via `defaultChecked`
38
- - Label renders alongside the toggle with configurable position
39
- - Seven semantic color themes available
40
- - Three sizes: sm (small), md (medium), lg (large)
41
-
42
- ## Stories
43
-
44
- <Primary />
45
- <Controls />
46
- <Stories />
@@ -1,120 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import ITSlideToggle from "@/components/atoms/slide/slide";
3
- import { useState } from "react";
4
-
5
- const meta: Meta<typeof ITSlideToggle> = {
6
- title: "Components/Form Elements/ITSlideToggle",
7
- component: ITSlideToggle,
8
- parameters: {
9
- layout: "centered",
10
- },
11
- argTypes: {
12
- activeColor: {
13
- control: "select",
14
- options: ["primary", "secondary", "success", "danger", "warning", "info", "purple"],
15
- },
16
- size: {
17
- control: "select",
18
- options: ["sm", "md", "lg"],
19
- },
20
- disabled: {
21
- control: "boolean",
22
- },
23
- isOn: {
24
- control: "boolean",
25
- },
26
- initialState: {
27
- control: "boolean",
28
- },
29
- },
30
- };
31
-
32
- export default meta;
33
- type Story = StoryObj<typeof ITSlideToggle>;
34
-
35
- export const Default: Story = {
36
- args: {
37
- activeColor: "success",
38
- size: "md",
39
- },
40
- };
41
-
42
- export const CheckedUncontrolled: Story = {
43
- args: {
44
- initialState: true,
45
- activeColor: "primary",
46
- },
47
- };
48
-
49
- const ControlledSlideWrapper = (args: any) => {
50
- const [isOn, setIsOn] = useState(false);
51
- return (
52
- <div className="flex flex-col gap-4 items-center">
53
- <ITSlideToggle {...args} isOn={isOn} onToggle={setIsOn} />
54
- <span className="text-sm font-medium text-gray-500">
55
- External State: {isOn ? "ON" : "OFF"}
56
- </span>
57
- </div>
58
- );
59
- };
60
-
61
- export const Controlled: Story = {
62
- render: (args) => <ControlledSlideWrapper {...args} />,
63
- args: {
64
- activeColor: "info",
65
- size: "lg",
66
- },
67
- };
68
-
69
- export const Sizes: Story = {
70
- render: (args) => (
71
- <div className="flex flex-col gap-6 items-center">
72
- <div className="flex items-center gap-4">
73
- <span className="w-16 text-sm text-gray-500 font-bold">Small</span>
74
- <ITSlideToggle {...args} size="sm" initialState={true} />
75
- </div>
76
- <div className="flex items-center gap-4">
77
- <span className="w-16 text-sm text-gray-500 font-bold">Medium</span>
78
- <ITSlideToggle {...args} size="md" initialState={true} />
79
- </div>
80
- <div className="flex items-center gap-4">
81
- <span className="w-16 text-sm text-gray-500 font-bold">Large</span>
82
- <ITSlideToggle {...args} size="lg" initialState={true} />
83
- </div>
84
- </div>
85
- ),
86
- args: {
87
- activeColor: "primary"
88
- }
89
- };
90
-
91
- export const Disabled: Story = {
92
- render: (args) => (
93
- <div className="flex gap-8">
94
- <div className="flex flex-col gap-2 items-center">
95
- <span className="text-sm text-gray-500">Off</span>
96
- <ITSlideToggle {...args} initialState={false} />
97
- </div>
98
- <div className="flex flex-col gap-2 items-center">
99
- <span className="text-sm text-gray-500">On</span>
100
- <ITSlideToggle {...args} initialState={true} />
101
- </div>
102
- </div>
103
- ),
104
- args: {
105
- disabled: true,
106
- },
107
- };
108
-
109
- export const Colors: Story = {
110
- render: (args) => (
111
- <div className="flex flex-col gap-4">
112
- {(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'purple'] as const).map((col) => (
113
- <div key={col} className="flex items-center gap-4">
114
- <span className="w-24 text-sm text-gray-500 font-bold capitalize">{col}</span>
115
- <ITSlideToggle {...args} activeColor={col} initialState={true} />
116
- </div>
117
- ))}
118
- </div>
119
- ),
120
- };