@soyfri/shared-library 2.0.0-beta.0 → 2.0.0-beta.10

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 (211) hide show
  1. package/dist/README.md +243 -0
  2. package/dist/components/Drawer/Drawer.cjs +14 -17
  3. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  4. package/dist/components/Drawer/Drawer.d.ts +8 -1
  5. package/dist/components/Drawer/Drawer.js +14 -17
  6. package/dist/components/Drawer/Drawer.js.map +1 -1
  7. package/dist/components/Input/Input.definitions.d.ts +1 -0
  8. package/dist/components/RadioGroup/RadioGroup.cjs +202 -0
  9. package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -0
  10. package/dist/components/RadioGroup/RadioGroup.d.ts +53 -0
  11. package/dist/components/RadioGroup/RadioGroup.definitions.d.ts +6 -0
  12. package/dist/components/RadioGroup/RadioGroup.js +202 -0
  13. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  14. package/dist/components/RadioGroup/RadioGroup.sx.d.ts +20 -0
  15. package/dist/components/RadioGroup/RadioGroup.types.d.ts +1 -0
  16. package/dist/components/RadioGroup/index.d.ts +2 -0
  17. package/dist/components/RadioGroup.d.ts +6 -0
  18. package/dist/components/Stepper/Stepper.cjs +136 -23
  19. package/dist/components/Stepper/Stepper.cjs.map +1 -1
  20. package/dist/components/Stepper/Stepper.js +137 -24
  21. package/dist/components/Stepper/Stepper.js.map +1 -1
  22. package/dist/components/Switch/Switch.cjs +181 -0
  23. package/dist/components/Switch/Switch.cjs.map +1 -0
  24. package/dist/components/Switch/Switch.d.ts +43 -0
  25. package/dist/components/Switch/Switch.definitions.d.ts +7 -0
  26. package/dist/components/Switch/Switch.js +181 -0
  27. package/dist/components/Switch/Switch.js.map +1 -0
  28. package/dist/components/Switch/Switch.sx.d.ts +22 -0
  29. package/dist/components/Switch/Switch.types.d.ts +1 -0
  30. package/dist/components/Switch/index.d.ts +2 -0
  31. package/dist/components/Switch.d.ts +6 -0
  32. package/dist/index.cjs +24 -0
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.js +7 -1
  35. package/dist/mui.d.ts +1 -0
  36. package/dist/package.json +207 -0
  37. package/dist/theme/componentStyles.d.ts +1 -1
  38. package/package.json +1 -1
  39. package/src/components/Drawer/Drawer.stories.tsx +168 -0
  40. package/src/components/Drawer/Drawer.tsx +26 -18
  41. package/src/components/Input/Input.definitions.ts +24 -0
  42. package/src/components/Input/Input.stories.tsx +29 -0
  43. package/src/components/RadioGroup/RadioGroup.definitions.ts +177 -0
  44. package/src/components/RadioGroup/RadioGroup.stories.tsx +231 -0
  45. package/src/components/RadioGroup/RadioGroup.sx.ts +75 -0
  46. package/src/components/RadioGroup/RadioGroup.tsx +196 -0
  47. package/src/components/RadioGroup/RadioGroup.types.ts +10 -0
  48. package/src/components/RadioGroup/index.ts +9 -0
  49. package/src/components/Stepper/Stepper.stories.tsx +72 -0
  50. package/src/components/Stepper/Stepper.tsx +139 -4
  51. package/src/components/Switch/Switch.definitions.ts +134 -0
  52. package/src/components/Switch/Switch.stories.tsx +213 -0
  53. package/src/components/Switch/Switch.sx.ts +81 -0
  54. package/src/components/Switch/Switch.tsx +172 -0
  55. package/src/components/Switch/Switch.types.ts +10 -0
  56. package/src/components/Switch/index.ts +9 -0
  57. package/src/mui.ts +10 -0
  58. package/src/theme/componentStyles.ts +3 -1
  59. package/storybook-static/addon-visual-tests-assets/visual-test-illustration.mp4 +0 -0
  60. package/storybook-static/assets/AccountCircle-BDZFsbTw.js +1 -0
  61. package/storybook-static/assets/ActionMenu-EynP8yU1.js +19 -0
  62. package/storybook-static/assets/ActionMenu.stories-DqSqRGix.js +185 -0
  63. package/storybook-static/assets/Alert-3zvTPc0p.js +1 -0
  64. package/storybook-static/assets/AppBar.stories-DcX3M5th.js +172 -0
  65. package/storybook-static/assets/Autocomplete.stories-CXJm8FOT.js +788 -0
  66. package/storybook-static/assets/Avatar-NbFfkZws.js +1 -0
  67. package/storybook-static/assets/Avatar.stories-CwOYCzqU.js +390 -0
  68. package/storybook-static/assets/Box-BnhEcfFm.js +1 -0
  69. package/storybook-static/assets/Button-D9h7OggD.js +1 -0
  70. package/storybook-static/assets/Button-DBpqmVB_.js +1 -0
  71. package/storybook-static/assets/Button.stories-F20dmnjq.js +320 -0
  72. package/storybook-static/assets/ButtonBase-qyaMEhe4.js +74 -0
  73. package/storybook-static/assets/Card.stories-B3NpAhO0.js +154 -0
  74. package/storybook-static/assets/CheckCircleOutline-CEj5mDsl.js +1 -0
  75. package/storybook-static/assets/Chip-C3vKPpzR.js +1 -0
  76. package/storybook-static/assets/Chip.stories-sxcfHVo9.js +333 -0
  77. package/storybook-static/assets/CircularProgress-DC7ZNWwl.js +28 -0
  78. package/storybook-static/assets/Clear-4kYcKvT3.js +1 -0
  79. package/storybook-static/assets/ClipBoard-DvLBdNHe.js +1 -0
  80. package/storybook-static/assets/ClipBoard.stories-BGUo47r6.js +108 -0
  81. package/storybook-static/assets/Close-CgHeRgmh.js +1 -0
  82. package/storybook-static/assets/Close-Cy8nELYU.js +1 -0
  83. package/storybook-static/assets/Color-AVL7NMMY-BJKvwERm.js +1 -0
  84. package/storybook-static/assets/ContentCopy-BfLTDb10.js +1 -0
  85. package/storybook-static/assets/DatePicker-Clkpr-Ku.js +1 -0
  86. package/storybook-static/assets/DatePicker.stories-EaUCMkh3.js +444 -0
  87. package/storybook-static/assets/DateRangePicker.stories-BMlkj-8K.js +390 -0
  88. package/storybook-static/assets/DateTimePicker.stories-B6gdzKq5.js +555 -0
  89. package/storybook-static/assets/DefaultPropsProvider-BGoQxtDa.js +16 -0
  90. package/storybook-static/assets/Delete-D2SMMmIA.js +1 -0
  91. package/storybook-static/assets/DialogContent-BeCDKgax.js +1 -0
  92. package/storybook-static/assets/Divider-BbCj9wT4.js +1 -0
  93. package/storybook-static/assets/DocsRenderer-PQXLIZUC-BebLK5Y_.js +1243 -0
  94. package/storybook-static/assets/Drawer-DcFwy73r.js +1 -0
  95. package/storybook-static/assets/Drawer.stories-C5AZkJBk.js +173 -0
  96. package/storybook-static/assets/EmptyTable-B-RKtgVs.png +0 -0
  97. package/storybook-static/assets/ErrorOutline-D9gM7ART.js +1 -0
  98. package/storybook-static/assets/Fade-Ll96CvH8.js +1 -0
  99. package/storybook-static/assets/Flyout.stories-Cf7z6MNw.js +163 -0
  100. package/storybook-static/assets/Gallery.stories-DdpWVTF6.js +127 -0
  101. package/storybook-static/assets/Grow-8y4FglGK.js +1 -0
  102. package/storybook-static/assets/Home-BRvJEp2L.js +1 -0
  103. package/storybook-static/assets/Icon.stories-D0mUiW_t.js +78 -0
  104. package/storybook-static/assets/IconButton-9OYSTH58.js +1 -0
  105. package/storybook-static/assets/Input-CjX0t4h-.js +1 -0
  106. package/storybook-static/assets/Input.stories-BRxekliy.js +650 -0
  107. package/storybook-static/assets/InputGroup.stories-DH6gUfmn.js +306 -0
  108. package/storybook-static/assets/KeyboardArrowRight-WO_attK2.js +1 -0
  109. package/storybook-static/assets/KeyboardArrowUp-DsyVef-i.js +1 -0
  110. package/storybook-static/assets/ListItem-D3O0103N.js +1 -0
  111. package/storybook-static/assets/ListItemIcon-hca6xN79.js +1 -0
  112. package/storybook-static/assets/ListItemText-BFLAwLdl.js +1 -0
  113. package/storybook-static/assets/Logout-gj-P3AfU.js +1 -0
  114. package/storybook-static/assets/Menu-ClzfjLc3.js +1 -0
  115. package/storybook-static/assets/MenuButton.stories-B-W_QVDt.js +162 -0
  116. package/storybook-static/assets/MenuItem-iU6tAqJI.js +1 -0
  117. package/storybook-static/assets/Modal-3okp9H2i.js +1 -0
  118. package/storybook-static/assets/Modal.stories-DIWzm4qR.js +468 -0
  119. package/storybook-static/assets/MoreVert-BoIVG4gh.js +1 -0
  120. package/storybook-static/assets/Notifications-DY_A-Sho.js +1 -0
  121. package/storybook-static/assets/PageLoader.stories-DmtO1mlm.js +158 -0
  122. package/storybook-static/assets/Paper-SwQBhqI7.js +1 -0
  123. package/storybook-static/assets/Person-CkQl-mpq.js +1 -0
  124. package/storybook-static/assets/PickersModalDialog-Tjnr_cu5.js +10 -0
  125. package/storybook-static/assets/PickersToolbarButton-Tt185-si.js +1 -0
  126. package/storybook-static/assets/Popper-CnCTYXxy.js +1 -0
  127. package/storybook-static/assets/Portal-Cj8XF9Lf.js +1 -0
  128. package/storybook-static/assets/ScrollTopButton.stories-BflQCwNP.js +90 -0
  129. package/storybook-static/assets/Select-CjcuMAY0.js +4 -0
  130. package/storybook-static/assets/Select-DJh2biEb.js +3 -0
  131. package/storybook-static/assets/Select.stories-DU1Gb3I2.js +1103 -0
  132. package/storybook-static/assets/Settings-BLKc1CnO.js +1 -0
  133. package/storybook-static/assets/Snackbar-BtVeKTw6.js +1 -0
  134. package/storybook-static/assets/Stack-D01OUIXi.js +1 -0
  135. package/storybook-static/assets/Stat.stories-Bn9-iuPT.js +60 -0
  136. package/storybook-static/assets/StatusMessage.stories-hnfX8FeU.js +73 -0
  137. package/storybook-static/assets/Stepper-BtKB5ykn.js +2 -0
  138. package/storybook-static/assets/Stepper.stories-CTEZbgPc.js +165 -0
  139. package/storybook-static/assets/Table.stories-CTn2Ktmn.js +1260 -0
  140. package/storybook-static/assets/TableContainer-CzLNaEU-.js +1 -0
  141. package/storybook-static/assets/TableRow-CS88-1HF.js +2 -0
  142. package/storybook-static/assets/Tabs-DLpDOu_n.js +1 -0
  143. package/storybook-static/assets/Tabs.stories-BFVuFy_5.js +159 -0
  144. package/storybook-static/assets/TextField-22T-xHBm.js +1 -0
  145. package/storybook-static/assets/Timeline.stories-DJU_U2Hv.js +97 -0
  146. package/storybook-static/assets/Tooltip-DbnHUxNj.js +1 -0
  147. package/storybook-static/assets/Tooltip.stories-B7tA3dnV.js +66 -0
  148. package/storybook-static/assets/Typography-BgntX2Ep.js +1 -0
  149. package/storybook-static/assets/Wizard.stories-CVrJLK_D.js +23 -0
  150. package/storybook-static/assets/createSimplePaletteValueFilter-bm0fmN_7.js +1 -0
  151. package/storybook-static/assets/createSvgIcon-D_Gca4vA.js +1 -0
  152. package/storybook-static/assets/debounce-Be36O1Ab.js +1 -0
  153. package/storybook-static/assets/emotion-react.browser.esm--g-C9cX9.js +8 -0
  154. package/storybook-static/assets/extendSxProp-CEpa30hT.js +1 -0
  155. package/storybook-static/assets/formField.sx-DMCmZIAa.js +1 -0
  156. package/storybook-static/assets/getReactElementRef-BQ3ANZdy.js +1 -0
  157. package/storybook-static/assets/iframe-BAJnc_4n.js +1079 -0
  158. package/storybook-static/assets/index-B1tlhOpe.js +240 -0
  159. package/storybook-static/assets/index-BF3FAXTk.js +9 -0
  160. package/storybook-static/assets/index-CIeucmOB.js +2 -0
  161. package/storybook-static/assets/index-CY7j4a7o.js +1 -0
  162. package/storybook-static/assets/index-CxkKctw5.js +1 -0
  163. package/storybook-static/assets/isFocusVisible-B8k4qzLc.js +1 -0
  164. package/storybook-static/assets/isMuiElement-CTZSFcY5.js +1 -0
  165. package/storybook-static/assets/jsx-runtime-D_zvdyIk.js +9 -0
  166. package/storybook-static/assets/listItemTextClasses-CC_rwJam.js +1 -0
  167. package/storybook-static/assets/mergeSlotProps-B0UBKBMe.js +1 -0
  168. package/storybook-static/assets/ownerDocument-DW-IO8s5.js +1 -0
  169. package/storybook-static/assets/ownerWindow-HkKU3E4x.js +1 -0
  170. package/storybook-static/assets/preload-helper-PPVm8Dsz.js +1 -0
  171. package/storybook-static/assets/react-18-BUJ64QCV.js +25 -0
  172. package/storybook-static/assets/resolvePreset-CN2aOJJr.js +1 -0
  173. package/storybook-static/assets/useControlled-DsVh1a5j.js +1 -0
  174. package/storybook-static/assets/useForkRef-0ANIrxcF.js +1 -0
  175. package/storybook-static/assets/useId-b4fZxjOL.js +1 -0
  176. package/storybook-static/assets/useMobilePicker-DK-c8xbD.js +1 -0
  177. package/storybook-static/assets/usePreviousProps-WR0rG4aR.js +1 -0
  178. package/storybook-static/assets/useSlot-b6pXgp5_.js +1 -0
  179. package/storybook-static/assets/useSlotProps-C0uMfuBt.js +1 -0
  180. package/storybook-static/assets/useTheme-BmOJK7ra.js +1 -0
  181. package/storybook-static/assets/useThemeProps-DYtxXiUU.js +1 -0
  182. package/storybook-static/assets/useThemeProps-U4yXiZ_5.js +1 -0
  183. package/storybook-static/assets/useTimeout-DNjRaOWc.js +1 -0
  184. package/storybook-static/assets/visuallyHidden-Dan1xhjv.js +1 -0
  185. package/storybook-static/favicon-wrapper.svg +46 -0
  186. package/storybook-static/favicon.svg +1 -0
  187. package/storybook-static/iframe.html +686 -0
  188. package/storybook-static/index.html +160 -0
  189. package/storybook-static/index.json +1 -0
  190. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  191. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  192. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  193. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  194. package/storybook-static/project.json +1 -0
  195. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js +356 -0
  196. package/storybook-static/sb-addons/chromatic-com-storybook-2/manager-bundle.js.LEGAL.txt +40 -0
  197. package/storybook-static/sb-addons/docs-4/manager-bundle.js +151 -0
  198. package/storybook-static/sb-addons/onboarding-1/manager-bundle.js +127 -0
  199. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
  200. package/storybook-static/sb-addons/vitest-3/manager-bundle.js +3 -0
  201. package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
  202. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  203. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  204. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  205. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  206. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  207. package/storybook-static/sb-manager/globals-module-info.js +797 -0
  208. package/storybook-static/sb-manager/globals-runtime.js +69679 -0
  209. package/storybook-static/sb-manager/globals.js +34 -0
  210. package/storybook-static/sb-manager/runtime.js +13195 -0
  211. package/storybook-static/vite-inject-mocker-entry.js +18 -0
@@ -0,0 +1,172 @@
1
+ import { useTheme } from '@mui/material/styles';
2
+ import {
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormHelperText,
6
+ Switch as MuiSwitch,
7
+ type SwitchProps as MuiSwitchProps,
8
+ type SxProps,
9
+ type Theme,
10
+ } from '@mui/material';
11
+ import { Controller, type Control, type RegisterOptions } from 'react-hook-form';
12
+
13
+ import { buildSwitchSx } from './Switch.sx';
14
+ import { resolvePreset } from '../_shared/resolvePreset';
15
+
16
+ // ── Tipos de dominio ─────────────────────────────────────────────────────
17
+ export type SwitchSize = 'small' | 'medium';
18
+ export type SwitchLabelPlacement = 'start' | 'end' | 'top' | 'bottom';
19
+
20
+ // ── Props base (todo lo común entre RHF y controlado) ────────────────────
21
+ export interface BaseSwitchProps
22
+ extends Omit<MuiSwitchProps, 'value' | 'onChange' | 'checked' | 'defaultChecked' | 'size'> {
23
+ /** Texto al lado del switch. Si está ausente, no se renderiza FormControlLabel. */
24
+ label?: string;
25
+ size?: SwitchSize;
26
+ /** Posición del label. Default: 'end' (legacy `FormToggleInput` lo ponía a la izquierda con su flex-stack). */
27
+ labelPlacement?: SwitchLabelPlacement;
28
+ disabled?: boolean;
29
+ error?: boolean;
30
+ helperText?: string;
31
+ /** Renderiza un contenedor con borde alrededor del switch + label. Default: false. */
32
+ bordered?: boolean;
33
+ /** Border radius del contenedor (cuando bordered). Default: 10. */
34
+ borderRadius?: number | string;
35
+ defaultChecked?: boolean;
36
+ /**
37
+ * Nombre del preset de estilo registrado en `theme.styles.Switch`.
38
+ * - `"default"` (o ausente) = estilo built-in del paquete.
39
+ * - Cualquier otro string = mergea el preset encima del estilo built-in.
40
+ */
41
+ preset?: string;
42
+ sx?: SxProps<Theme>;
43
+ }
44
+
45
+ // ── Variantes discriminadas (RHF vs controlado) ──────────────────────────
46
+ export interface RHFSwitchProps extends BaseSwitchProps {
47
+ name: string;
48
+ control: Control<any>;
49
+ validation?: RegisterOptions;
50
+ checked?: never;
51
+ onChange?: never;
52
+ }
53
+
54
+ export interface ControlledSwitchProps extends BaseSwitchProps {
55
+ name?: string;
56
+ control?: never;
57
+ validation?: never;
58
+ checked: boolean;
59
+ onChange: (checked: boolean) => void;
60
+ }
61
+
62
+ // ── API pública final ────────────────────────────────────────────────────
63
+ export type SwitchProps = RHFSwitchProps | ControlledSwitchProps;
64
+
65
+ export const Switch: React.FC<SwitchProps> = (props) => {
66
+ const {
67
+ label,
68
+ size = 'medium',
69
+ labelPlacement = 'end',
70
+ disabled = false,
71
+ error = false,
72
+ helperText,
73
+ bordered = false,
74
+ borderRadius = 10,
75
+ defaultChecked,
76
+ preset,
77
+ sx,
78
+ ...rest
79
+ } = props as ControlledSwitchProps & {
80
+ control?: Control<any>;
81
+ validation?: RegisterOptions;
82
+ };
83
+
84
+ const theme = useTheme();
85
+ const presetSx = resolvePreset('Switch', preset, theme);
86
+
87
+ // Construye el sx con el estado de error efectivo; se llama por rama
88
+ // (RHF usa el error del Controller, controlado usa el prop `error`).
89
+ const buildSx = (effectiveError: boolean) => [
90
+ buildSwitchSx({
91
+ bordered,
92
+ borderRadius,
93
+ hasLabel: !!label,
94
+ error: effectiveError,
95
+ }),
96
+ ...(presetSx ? [presetSx] : []),
97
+ ...(Array.isArray(sx) ? sx : [sx]),
98
+ ];
99
+
100
+ const renderSwitch = (
101
+ checked: boolean,
102
+ onChange: (next: boolean) => void,
103
+ onBlur?: () => void,
104
+ inputRef?: React.Ref<HTMLInputElement>,
105
+ ) => {
106
+ const switchEl = (
107
+ <MuiSwitch
108
+ {...rest}
109
+ size={size}
110
+ checked={!!checked}
111
+ onChange={(_e, next) => onChange(next)}
112
+ onBlur={onBlur}
113
+ inputRef={inputRef}
114
+ disabled={disabled}
115
+ />
116
+ );
117
+
118
+ return label ? (
119
+ <FormControlLabel
120
+ control={switchEl}
121
+ label={label}
122
+ labelPlacement={labelPlacement}
123
+ disabled={disabled}
124
+ />
125
+ ) : (
126
+ switchEl
127
+ );
128
+ };
129
+
130
+ // ── RHF mode ──────────────────────────────────────────────────────────
131
+ if ('control' in props && props.control) {
132
+ const { name, control, validation } = props as RHFSwitchProps;
133
+ return (
134
+ <Controller
135
+ name={name}
136
+ control={control}
137
+ rules={validation}
138
+ defaultValue={defaultChecked}
139
+ render={({ field, fieldState: { error: fieldError } }) => {
140
+ const finalError = !!fieldError || error;
141
+ const finalHelperText = fieldError?.message ?? helperText;
142
+ return (
143
+ <FormControl
144
+ error={finalError}
145
+ disabled={disabled}
146
+ sx={buildSx(finalError)}
147
+ >
148
+ {renderSwitch(
149
+ !!field.value,
150
+ (next) => field.onChange(next),
151
+ field.onBlur,
152
+ field.ref,
153
+ )}
154
+ {finalHelperText && <FormHelperText>{finalHelperText}</FormHelperText>}
155
+ </FormControl>
156
+ );
157
+ }}
158
+ />
159
+ );
160
+ }
161
+
162
+ // ── Controlled mode ───────────────────────────────────────────────────
163
+ const { checked, onChange } = props as ControlledSwitchProps;
164
+ return (
165
+ <FormControl error={error} disabled={disabled} sx={buildSx(error)}>
166
+ {renderSwitch(checked, onChange)}
167
+ {helperText && <FormHelperText>{helperText}</FormHelperText>}
168
+ </FormControl>
169
+ );
170
+ };
171
+
172
+ export default Switch;
@@ -0,0 +1,10 @@
1
+ // Re-export barrel para compatibilidad con imports antiguos.
2
+ // Los tipos viven dentro de Switch.tsx.
3
+ export type {
4
+ SwitchSize,
5
+ SwitchLabelPlacement,
6
+ BaseSwitchProps,
7
+ RHFSwitchProps,
8
+ ControlledSwitchProps,
9
+ SwitchProps,
10
+ } from './Switch';
@@ -0,0 +1,9 @@
1
+ export { Switch, default } from './Switch';
2
+ export type {
3
+ SwitchSize,
4
+ SwitchLabelPlacement,
5
+ BaseSwitchProps,
6
+ RHFSwitchProps,
7
+ ControlledSwitchProps,
8
+ SwitchProps,
9
+ } from './Switch.types';
package/src/mui.ts CHANGED
@@ -22,6 +22,16 @@ export {
22
22
  // ── Tipografía ────────────────────────────────────────────────────────────
23
23
  export { Typography, Link } from '@mui/material';
24
24
 
25
+ // ── Listas ────────────────────────────────────────────────────────────────
26
+ export {
27
+ List,
28
+ ListItem,
29
+ ListItemButton,
30
+ ListItemIcon,
31
+ ListItemText,
32
+ ListSubheader,
33
+ } from '@mui/material';
34
+
25
35
  // ── Feedback / misc ───────────────────────────────────────────────────────
26
36
  export {
27
37
  CircularProgress,
@@ -14,7 +14,9 @@ export type LibraryComponentName =
14
14
  | 'Drawer'
15
15
  | 'AppBar'
16
16
  | 'Card'
17
- | 'ScrollTopButton';
17
+ | 'ScrollTopButton'
18
+ | 'RadioGroup'
19
+ | 'Switch';
18
20
 
19
21
  /**
20
22
  * Un estilo de preset. Puede ser un objeto sx directo o una función del theme
@@ -0,0 +1 @@
1
+ import{j as c}from"./jsx-runtime-D_zvdyIk.js";import{c as o}from"./createSvgIcon-D_Gca4vA.js";const r=o(c.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 4c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m0 14c-2.03 0-4.43-.82-6.14-2.88C7.55 15.8 9.68 15 12 15s4.45.8 6.14 2.12C16.43 19.18 14.03 20 12 20"}));export{r as A};
@@ -0,0 +1,19 @@
1
+ import{j as t}from"./jsx-runtime-D_zvdyIk.js";import{c as j}from"./createSvgIcon-D_Gca4vA.js";import{r as M,R as i}from"./iframe-BAJnc_4n.js";import{M as T}from"./MoreVert-BoIVG4gh.js";import{T as z}from"./Tooltip-DbnHUxNj.js";import{I as k}from"./IconButton-9OYSTH58.js";import{M as E}from"./Menu-ClzfjLc3.js";import{M as q}from"./MenuItem-iU6tAqJI.js";import{L as A}from"./ListItemIcon-hca6xN79.js";import{L as C}from"./ListItemText-BFLAwLdl.js";import{D as w}from"./Divider-BbCj9wT4.js";const F=j(t.jsx("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}));function D({items:h,trigger:r,triggerTooltip:s="Acciones",anchorOrigin:f={vertical:"bottom",horizontal:"right"},transformOrigin:g={vertical:"top",horizontal:"right"},menuSx:v,disabled:o=!1,className:b}){const[c,m]=M.useState(null),x=!!c,l=e=>{o||(e.stopPropagation(),m(e.currentTarget))},u=()=>m(null),y=(e,n)=>{e.stopPropagation(),n.onClick?.(e),u()},I=r?i.isValidElement(r)?i.cloneElement(r,{onClick:l,disabled:o}):t.jsx("span",{onClick:l,children:r}):t.jsx(z,{title:s,arrow:!0,children:t.jsx("span",{children:t.jsx(k,{size:"small",onClick:l,disabled:o,"aria-label":s,children:t.jsx(T,{fontSize:"small"})})})});return t.jsxs("span",{className:b,children:[I,t.jsx(E,{anchorEl:c,open:x,onClose:u,anchorOrigin:f,transformOrigin:g,slotProps:{paper:{sx:{minWidth:180,...v}}},children:h.map((e,n)=>{const p=e.key??`${String(e.label)}-${n}`,d=t.jsxs(q,{disabled:e.disabled,onClick:a=>y(a,e),sx:a=>({color:e.danger?a.palette.error.main:"inherit","& .MuiListItemIcon-root":{color:e.danger?a.palette.error.main:"inherit",minWidth:32}}),children:[e.icon&&t.jsx(A,{children:e.icon}),t.jsx(C,{primary:e.label})]},p);return e.dividerBefore&&n>0?t.jsxs(i.Fragment,{children:[t.jsx(w,{}),d]},`${p}-frag`):d})})]})}D.__docgenInfo={description:`Menú de acciones compacto, pensado para celdas de tabla y cabeceras.
2
+ Reemplaza los patrones \`<Dropdown>\` de react-bootstrap.
3
+
4
+ \`\`\`tsx
5
+ <ActionMenu
6
+ items={[
7
+ { label: 'Editar', icon: <EditIcon />, onClick: handleEdit },
8
+ { label: 'Duplicar', icon: <CopyIcon />, onClick: handleDup },
9
+ { label: 'Eliminar', icon: <TrashIcon />, onClick: handleDel, danger: true, dividerBefore: true },
10
+ ]}
11
+ />
12
+ \`\`\``,methods:[],displayName:"ActionMenu",props:{items:{required:!0,tsType:{name:"Array",elements:[{name:"ActionMenuItem"}],raw:"ActionMenuItem[]"},description:"Lista de items del menú."},trigger:{required:!1,tsType:{name:"ReactNode"},description:`Elemento trigger. Si no se provee, se renderiza un IconButton con icono
13
+ de tres puntos (MoreVertIcon) — el patrón típico de celda de tabla.`},triggerTooltip:{required:!1,tsType:{name:"string"},description:'Texto de tooltip sobre el trigger default. Default: "Acciones".',defaultValue:{value:"'Acciones'",computed:!1}},anchorOrigin:{required:!1,tsType:{name:"signature",type:"object",raw:`{
14
+ vertical: 'top' | 'center' | 'bottom';
15
+ horizontal: 'left' | 'center' | 'right';
16
+ }`,signature:{properties:[{key:"vertical",value:{name:"union",raw:"'top' | 'center' | 'bottom'",elements:[{name:"literal",value:"'top'"},{name:"literal",value:"'center'"},{name:"literal",value:"'bottom'"}],required:!0}},{key:"horizontal",value:{name:"union",raw:"'left' | 'center' | 'right'",elements:[{name:"literal",value:"'left'"},{name:"literal",value:"'center'"},{name:"literal",value:"'right'"}],required:!0}}]}},description:"Anchor origin del menu. Default: { vertical: 'bottom', horizontal: 'right' }.",defaultValue:{value:"{ vertical: 'bottom', horizontal: 'right' }",computed:!1}},transformOrigin:{required:!1,tsType:{name:"signature",type:"object",raw:`{
17
+ vertical: 'top' | 'center' | 'bottom';
18
+ horizontal: 'left' | 'center' | 'right';
19
+ }`,signature:{properties:[{key:"vertical",value:{name:"union",raw:"'top' | 'center' | 'bottom'",elements:[{name:"literal",value:"'top'"},{name:"literal",value:"'center'"},{name:"literal",value:"'bottom'"}],required:!0}},{key:"horizontal",value:{name:"union",raw:"'left' | 'center' | 'right'",elements:[{name:"literal",value:"'left'"},{name:"literal",value:"'center'"},{name:"literal",value:"'right'"}],required:!0}}]}},description:"Transform origin del menu. Default: { vertical: 'top', horizontal: 'right' }.",defaultValue:{value:"{ vertical: 'top', horizontal: 'right' }",computed:!1}},menuSx:{required:!1,tsType:{name:"SxProps",elements:[{name:"Theme"}],raw:"SxProps<Theme>"},description:"sx del Menu (Paper interno)."},disabled:{required:!1,tsType:{name:"boolean"},description:"Deshabilita el trigger entero.",defaultValue:{value:"false",computed:!1}},className:{required:!1,tsType:{name:"string"},description:""}}};export{D as A,F as E};
@@ -0,0 +1,185 @@
1
+ import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{f as o}from"./index-B1tlhOpe.js";import{A as C,E as r}from"./ActionMenu-EynP8yU1.js";import{C as u}from"./ContentCopy-BfLTDb10.js";import{D as m}from"./Delete-D2SMMmIA.js";import{c as p}from"./createSvgIcon-D_Gca4vA.js";import{B as x}from"./Button-DBpqmVB_.js";import{P as h}from"./Paper-SwQBhqI7.js";import{T as j,a as z,b,c as i,d as S}from"./TableRow-CS88-1HF.js";import{C as E}from"./Chip-C3vKPpzR.js";import"./iframe-BAJnc_4n.js";import"./preload-helper-PPVm8Dsz.js";import"./MoreVert-BoIVG4gh.js";import"./Tooltip-DbnHUxNj.js";import"./DefaultPropsProvider-BGoQxtDa.js";import"./useSlotProps-C0uMfuBt.js";import"./useSlot-b6pXgp5_.js";import"./useForkRef-0ANIrxcF.js";import"./useTheme-BmOJK7ra.js";import"./extendSxProp-CEpa30hT.js";import"./useTimeout-DNjRaOWc.js";import"./useControlled-DsVh1a5j.js";import"./useId-b4fZxjOL.js";import"./getReactElementRef-BQ3ANZdy.js";import"./index-CY7j4a7o.js";import"./index-BF3FAXTk.js";import"./Grow-8y4FglGK.js";import"./Popper-CnCTYXxy.js";import"./ownerDocument-DW-IO8s5.js";import"./Portal-Cj8XF9Lf.js";import"./isFocusVisible-B8k4qzLc.js";import"./IconButton-9OYSTH58.js";import"./createSimplePaletteValueFilter-bm0fmN_7.js";import"./ButtonBase-qyaMEhe4.js";import"./emotion-react.browser.esm--g-C9cX9.js";import"./CircularProgress-DC7ZNWwl.js";import"./Menu-ClzfjLc3.js";import"./ownerWindow-HkKU3E4x.js";import"./debounce-Be36O1Ab.js";import"./mergeSlotProps-B0UBKBMe.js";import"./Modal-3okp9H2i.js";import"./Fade-Ll96CvH8.js";import"./MenuItem-iU6tAqJI.js";import"./listItemTextClasses-CC_rwJam.js";import"./ListItemIcon-hca6xN79.js";import"./ListItemText-BFLAwLdl.js";import"./Typography-BgntX2Ep.js";import"./Divider-BbCj9wT4.js";const f=p(e.jsx("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"})),I=p(e.jsx("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"})),k=p(e.jsx("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"})),T=p(e.jsx("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"})),ze={title:"Components/ActionMenu",component:C,tags:["autodocs"],parameters:{docs:{description:{component:"Menú de acciones compacto pensado para celdas de tabla, cabeceras y cualquier lugar donde hagan falta acciones secundarias detrás de un trigger. Reemplaza los patrones `<Dropdown>` de react-bootstrap."}}}},t={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Ver detalle",icon:e.jsx(f,{fontSize:"small"}),onClick:o()}]},parameters:{docs:{description:{story:"Menú básico con trigger de 3 puntos (icono por defecto). Cada item tiene label + icono + onClick."}}}},l={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0,dividerBefore:!0}]},parameters:{docs:{description:{story:"Item final marcado como `danger` (pintado en rojo) con `dividerBefore: true` para separarlo visualmente del resto. Patrón típico para acciones destructivas."}}}},n={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Exportar",icon:e.jsx(I,{fontSize:"small"}),onClick:o(),disabled:!0},{label:"Compartir",icon:e.jsx(k,{fontSize:"small"}),onClick:o(),disabled:!0}]},parameters:{docs:{description:{story:"Items deshabilitados condicionalmente — útil cuando una acción no aplica al estado actual del row (ej. exportar un recurso que aún no se procesó)."}}}},s={args:{items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Duplicar",icon:e.jsx(u,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0}],trigger:e.jsx(x,{variant:"outlined",startIcon:e.jsx(T,{}),children:"Más"})},parameters:{docs:{description:{story:"El trigger por defecto es un IconButton de 3 puntos, pero podés pasar cualquier nodo (botón, chip, icono custom). El `onClick` del menú se inyecta automáticamente al trigger clonado."}}}},c={render:()=>{const g=[{id:1,name:"Comercio A",status:"Activo"},{id:2,name:"Comercio B",status:"Pendiente"},{id:3,name:"Comercio C",status:"Suspendido"}];return e.jsx(h,{sx:{maxWidth:720},children:e.jsxs(j,{size:"small",children:[e.jsx(z,{children:e.jsxs(b,{children:[e.jsx(i,{children:"ID"}),e.jsx(i,{children:"Comercio"}),e.jsx(i,{children:"Estado"}),e.jsx(i,{align:"right",children:"Acciones"})]})}),e.jsx(S,{children:g.map(a=>e.jsxs(b,{hover:!0,children:[e.jsx(i,{children:a.id}),e.jsx(i,{children:a.name}),e.jsx(i,{children:e.jsx(E,{label:a.status,size:"small",color:a.status==="Activo"?"success":a.status==="Pendiente"?"warning":"error"})}),e.jsx(i,{align:"right",children:e.jsx(C,{items:[{label:"Ver detalle",icon:e.jsx(f,{fontSize:"small"}),onClick:o(()=>console.log("Ver",a.id))},{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o(()=>console.log("Editar",a.id))},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(()=>console.log("Eliminar",a.id)),danger:!0,dividerBefore:!0}]})})]},a.id))})]})})},parameters:{docs:{description:{story:"Caso de uso principal: un `ActionMenu` por cada fila de una tabla. Reemplaza exactamente el patrón `DropDownActions` + `react-bootstrap Dropdown` usado hoy en Afiliaciones."}}}},d={args:{disabled:!0,items:[{label:"Editar",icon:e.jsx(r,{fontSize:"small"}),onClick:o()},{label:"Eliminar",icon:e.jsx(m,{fontSize:"small"}),onClick:o(),danger:!0}]},parameters:{docs:{description:{story:"Cuando el row o la acción no tiene permisos, se puede deshabilitar el trigger entero pasando `disabled`."}}}};t.parameters={...t.parameters,docs:{...t.parameters?.docs,source:{originalSource:`{
2
+ args: {
3
+ items: [{
4
+ label: 'Editar',
5
+ icon: <EditIcon fontSize="small" />,
6
+ onClick: fn()
7
+ }, {
8
+ label: 'Duplicar',
9
+ icon: <ContentCopyIcon fontSize="small" />,
10
+ onClick: fn()
11
+ }, {
12
+ label: 'Ver detalle',
13
+ icon: <VisibilityIcon fontSize="small" />,
14
+ onClick: fn()
15
+ }]
16
+ },
17
+ parameters: {
18
+ docs: {
19
+ description: {
20
+ story: 'Menú básico con trigger de 3 puntos (icono por defecto). Cada item tiene label + icono + onClick.'
21
+ }
22
+ }
23
+ }
24
+ }`,...t.parameters?.docs?.source}}};l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
25
+ args: {
26
+ items: [{
27
+ label: 'Editar',
28
+ icon: <EditIcon fontSize="small" />,
29
+ onClick: fn()
30
+ }, {
31
+ label: 'Duplicar',
32
+ icon: <ContentCopyIcon fontSize="small" />,
33
+ onClick: fn()
34
+ }, {
35
+ label: 'Eliminar',
36
+ icon: <DeleteIcon fontSize="small" />,
37
+ onClick: fn(),
38
+ danger: true,
39
+ dividerBefore: true
40
+ }]
41
+ },
42
+ parameters: {
43
+ docs: {
44
+ description: {
45
+ story: 'Item final marcado como \`danger\` (pintado en rojo) con \`dividerBefore: true\` para separarlo visualmente del resto. Patrón típico para acciones destructivas.'
46
+ }
47
+ }
48
+ }
49
+ }`,...l.parameters?.docs?.source}}};n.parameters={...n.parameters,docs:{...n.parameters?.docs,source:{originalSource:`{
50
+ args: {
51
+ items: [{
52
+ label: 'Editar',
53
+ icon: <EditIcon fontSize="small" />,
54
+ onClick: fn()
55
+ }, {
56
+ label: 'Exportar',
57
+ icon: <DownloadIcon fontSize="small" />,
58
+ onClick: fn(),
59
+ disabled: true
60
+ }, {
61
+ label: 'Compartir',
62
+ icon: <ShareIcon fontSize="small" />,
63
+ onClick: fn(),
64
+ disabled: true
65
+ }]
66
+ },
67
+ parameters: {
68
+ docs: {
69
+ description: {
70
+ story: 'Items deshabilitados condicionalmente — útil cuando una acción no aplica al estado actual del row (ej. exportar un recurso que aún no se procesó).'
71
+ }
72
+ }
73
+ }
74
+ }`,...n.parameters?.docs?.source}}};s.parameters={...s.parameters,docs:{...s.parameters?.docs,source:{originalSource:`{
75
+ args: {
76
+ items: [{
77
+ label: 'Editar',
78
+ icon: <EditIcon fontSize="small" />,
79
+ onClick: fn()
80
+ }, {
81
+ label: 'Duplicar',
82
+ icon: <ContentCopyIcon fontSize="small" />,
83
+ onClick: fn()
84
+ }, {
85
+ label: 'Eliminar',
86
+ icon: <DeleteIcon fontSize="small" />,
87
+ onClick: fn(),
88
+ danger: true
89
+ }],
90
+ trigger: <Button variant="outlined" startIcon={<MoreHorizIcon />}>
91
+ Más
92
+ </Button>
93
+ },
94
+ parameters: {
95
+ docs: {
96
+ description: {
97
+ story: 'El trigger por defecto es un IconButton de 3 puntos, pero podés pasar cualquier nodo (botón, chip, icono custom). El \`onClick\` del menú se inyecta automáticamente al trigger clonado.'
98
+ }
99
+ }
100
+ }
101
+ }`,...s.parameters?.docs?.source}}};c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
102
+ render: () => {
103
+ const rows = [{
104
+ id: 1,
105
+ name: 'Comercio A',
106
+ status: 'Activo'
107
+ }, {
108
+ id: 2,
109
+ name: 'Comercio B',
110
+ status: 'Pendiente'
111
+ }, {
112
+ id: 3,
113
+ name: 'Comercio C',
114
+ status: 'Suspendido'
115
+ }];
116
+ return <Paper sx={{
117
+ maxWidth: 720
118
+ }}>
119
+ <Table size="small">
120
+ <TableHead>
121
+ <TableRow>
122
+ <TableCell>ID</TableCell>
123
+ <TableCell>Comercio</TableCell>
124
+ <TableCell>Estado</TableCell>
125
+ <TableCell align="right">Acciones</TableCell>
126
+ </TableRow>
127
+ </TableHead>
128
+ <TableBody>
129
+ {rows.map(row => <TableRow key={row.id} hover>
130
+ <TableCell>{row.id}</TableCell>
131
+ <TableCell>{row.name}</TableCell>
132
+ <TableCell>
133
+ <Chip label={row.status} size="small" color={row.status === 'Activo' ? 'success' : row.status === 'Pendiente' ? 'warning' : 'error'} />
134
+ </TableCell>
135
+ <TableCell align="right">
136
+ <ActionMenu items={[{
137
+ label: 'Ver detalle',
138
+ icon: <VisibilityIcon fontSize="small" />,
139
+ onClick: fn(() => console.log('Ver', row.id))
140
+ }, {
141
+ label: 'Editar',
142
+ icon: <EditIcon fontSize="small" />,
143
+ onClick: fn(() => console.log('Editar', row.id))
144
+ }, {
145
+ label: 'Eliminar',
146
+ icon: <DeleteIcon fontSize="small" />,
147
+ onClick: fn(() => console.log('Eliminar', row.id)),
148
+ danger: true,
149
+ dividerBefore: true
150
+ }]} />
151
+ </TableCell>
152
+ </TableRow>)}
153
+ </TableBody>
154
+ </Table>
155
+ </Paper>;
156
+ },
157
+ parameters: {
158
+ docs: {
159
+ description: {
160
+ story: 'Caso de uso principal: un \`ActionMenu\` por cada fila de una tabla. Reemplaza exactamente el patrón \`DropDownActions\` + \`react-bootstrap Dropdown\` usado hoy en Afiliaciones.'
161
+ }
162
+ }
163
+ }
164
+ }`,...c.parameters?.docs?.source}}};d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
165
+ args: {
166
+ disabled: true,
167
+ items: [{
168
+ label: 'Editar',
169
+ icon: <EditIcon fontSize="small" />,
170
+ onClick: fn()
171
+ }, {
172
+ label: 'Eliminar',
173
+ icon: <DeleteIcon fontSize="small" />,
174
+ onClick: fn(),
175
+ danger: true
176
+ }]
177
+ },
178
+ parameters: {
179
+ docs: {
180
+ description: {
181
+ story: 'Cuando el row o la acción no tiene permisos, se puede deshabilitar el trigger entero pasando \`disabled\`.'
182
+ }
183
+ }
184
+ }
185
+ }`,...d.parameters?.docs?.source}}};const Se=["Default","WithDangerItem","WithDisabledItems","CustomTrigger","InsideTableCell","DisabledTrigger"];export{s as CustomTrigger,t as Default,d as DisabledTrigger,c as InsideTableCell,l as WithDangerItem,n as WithDisabledItems,Se as __namedExportsOrder,ze as default};
@@ -0,0 +1 @@
1
+ import{r as V}from"./iframe-BAJnc_4n.js";import{a as Z,g as D,u as q,s as d,c as G,b as v,d as J,m as K}from"./DefaultPropsProvider-BGoQxtDa.js";import{u as n}from"./useSlot-b6pXgp5_.js";import{c as f}from"./createSimplePaletteValueFilter-bm0fmN_7.js";import{c as u}from"./createSvgIcon-D_Gca4vA.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{C as Q}from"./Close-Cy8nELYU.js";import{I as X}from"./IconButton-9OYSTH58.js";import{P as Y}from"./Paper-SwQBhqI7.js";function _(o){return D("MuiAlert",o)}const M=Z("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]),oo=u(e.jsx("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"})),to=u(e.jsx("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"})),eo=u(e.jsx("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),so=u(e.jsx("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"})),ro=o=>{const{variant:s,color:r,severity:t,classes:i}=o,g={root:["root",`color${v(r||t)}`,`${s}${v(r||t)}`,`${s}`],icon:["icon"],message:["message"],action:["action"]};return J(g,_,i)},lo=d(Y,{name:"MuiAlert",slot:"Root",overridesResolver:(o,s)=>{const{ownerState:r}=o;return[s.root,s[r.variant],s[`${r.variant}${v(r.color||r.severity)}`]]}})(K(({theme:o})=>{const s=o.palette.mode==="light"?o.darken:o.lighten,r=o.palette.mode==="light"?o.lighten:o.darken;return{...o.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(o.palette).filter(f(["light"])).map(([t])=>({props:{colorSeverity:t,variant:"standard"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),backgroundColor:o.vars?o.vars.palette.Alert[`${t}StandardBg`]:r(o.palette[t].light,.9),[`& .${M.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(f(["light"])).map(([t])=>({props:{colorSeverity:t,variant:"outlined"},style:{color:o.vars?o.vars.palette.Alert[`${t}Color`]:s(o.palette[t].light,.6),border:`1px solid ${(o.vars||o).palette[t].light}`,[`& .${M.icon}`]:o.vars?{color:o.vars.palette.Alert[`${t}IconColor`]}:{color:o.palette[t].main}}})),...Object.entries(o.palette).filter(f(["dark"])).map(([t])=>({props:{colorSeverity:t,variant:"filled"},style:{fontWeight:o.typography.fontWeightMedium,...o.vars?{color:o.vars.palette.Alert[`${t}FilledColor`],backgroundColor:o.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:o.palette.mode==="dark"?o.palette[t].dark:o.palette[t].main,color:o.palette.getContrastText(o.palette[t].main)}}}))]}})),ao=d("div",{name:"MuiAlert",slot:"Icon"})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),no=d("div",{name:"MuiAlert",slot:"Message"})({padding:"8px 0",minWidth:0,overflow:"auto"}),io=d("div",{name:"MuiAlert",slot:"Action"})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),j={success:e.jsx(oo,{fontSize:"inherit"}),warning:e.jsx(to,{fontSize:"inherit"}),error:e.jsx(eo,{fontSize:"inherit"}),info:e.jsx(so,{fontSize:"inherit"})},Ao=V.forwardRef(function(s,r){const t=q({props:s,name:"MuiAlert"}),{action:i,children:g,className:P,closeText:m="Close",color:C,components:x={},componentsProps:$={},icon:A,iconMapping:z=j,onClose:S,role:b="alert",severity:c="success",slotProps:L={},slots:k={},variant:h="standard",...B}=t,l={...t,color:C,severity:c,variant:h,colorSeverity:C||c},p=ro(l),a={slots:{closeButton:x.CloseButton,closeIcon:x.CloseIcon,...k},slotProps:{...$,...L}},[R,T]=n("root",{ref:r,shouldForwardComponentProp:!0,className:G(p.root,P),elementType:lo,externalForwardedProps:{...a,...B},ownerState:l,additionalProps:{role:b,elevation:0}}),[w,E]=n("icon",{className:p.icon,elementType:ao,externalForwardedProps:a,ownerState:l}),[O,W]=n("message",{className:p.message,elementType:no,externalForwardedProps:a,ownerState:l}),[y,I]=n("action",{className:p.action,elementType:io,externalForwardedProps:a,ownerState:l}),[F,H]=n("closeButton",{elementType:X,externalForwardedProps:a,ownerState:l}),[N,U]=n("closeIcon",{elementType:Q,externalForwardedProps:a,ownerState:l});return e.jsxs(R,{...T,children:[A!==!1?e.jsx(w,{...E,children:A||z[c]||j[c]}):null,e.jsx(O,{...W,children:g}),i!=null?e.jsx(y,{...I,children:i}):null,i==null&&S?e.jsx(y,{...I,children:e.jsx(F,{size:"small","aria-label":m,title:m,color:"inherit",onClick:S,...H,children:e.jsx(N,{fontSize:"small",...U})})}):null]})});export{Ao as A};