eatopia-ds 0.0.85

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.
package/README.md ADDED
@@ -0,0 +1,200 @@
1
+ # DS-Eatopia
2
+
3
+ Uma biblioteca de componentes React independente de CSS externo, com todos os estilos embutidos inline.
4
+
5
+ ## Características
6
+
7
+ - ✅ **Zero dependências de CSS externo** - Todos os estilos são inline
8
+ - ✅ **Componentes prontos para uso** - Não precisa configurar Tailwind ou outros frameworks CSS
9
+ - ✅ **Totalmente responsivo** - Funciona em todos os dispositivos
10
+ - ✅ **Mobile-first** - Modal com largura total em dispositivos móveis
11
+ - ✅ **Acessível** - Segue as melhores práticas de acessibilidade
12
+ - ✅ **TypeScript** - Tipagem completa incluída
13
+
14
+ ## Instalação
15
+
16
+ ```bash
17
+ npm install ds-eatopia
18
+ ```
19
+
20
+ ## Uso
21
+
22
+ ### EstoqueCard
23
+
24
+ ```tsx
25
+ import { EstoqueCard, Produto, ContagemInicial } from "ds-eatopia";
26
+
27
+ const produto: Produto = {
28
+ id: 1,
29
+ name: "Arroz Integral",
30
+ sku: "ARROZ001",
31
+ categoria: "Grãos",
32
+ estoque: 50,
33
+ unidades: [
34
+ { label: "kg", value: "1" },
35
+ { label: "Caixa 5kg", value: "5" },
36
+ ],
37
+ unidade_sap: "kg",
38
+ };
39
+
40
+ const contagemInicial: ContagemInicial[] = [
41
+ {
42
+ quantidade: 2,
43
+ unidade: {
44
+ label: "KG",
45
+ value: "1"
46
+ }
47
+ },
48
+ {
49
+ quantidade: 4,
50
+ unidade: {
51
+ label: "PCT 0,5 KG",
52
+ value: "0.5"
53
+ }
54
+ }
55
+ ]
56
+
57
+ function App() {
58
+ return (
59
+ <div>
60
+ <EstoqueCard produto={produto} contagemInicial={contagemInicial} />
61
+ </div>
62
+ );
63
+ }
64
+ ```
65
+
66
+ ### UnitSelect
67
+
68
+ ```tsx
69
+ import { UnitSelect, UnitOption } from "ds-eatopia";
70
+
71
+ function App() {
72
+ const [selectedUnit, setSelectedUnit] = useState("1");
73
+
74
+ const units: UnitOption[] = [
75
+ { label: "kg", value: "1" },
76
+ { label: "Caixa 5kg", value: "5" },
77
+ { label: "Saco 25kg", value: "25" },
78
+ ];
79
+
80
+ return (
81
+ <UnitSelect
82
+ units={units}
83
+ selectedUnit={selectedUnit}
84
+ onUnitChange={setSelectedUnit}
85
+ defaultUnit="1"
86
+ />
87
+ );
88
+ }
89
+ ```
90
+
91
+ ### Responsividade Automática
92
+
93
+ O componente `EstoqueCard` detecta automaticamente dispositivos móveis (≤768px) e ajusta o modal para largura total:
94
+
95
+ - **Desktop/Tablet**: Modal com largura fixa de 400px
96
+ - **Mobile**: Modal com largura total (100%) e padding otimizado
97
+
98
+ ### QuantidadeInput
99
+
100
+ ```tsx
101
+ import { QuantidadeInput } from "ds-eatopia";
102
+
103
+ function App() {
104
+ const [quantidade, setQuantidade] = useState(5);
105
+
106
+ return (
107
+ <QuantidadeInput
108
+ valor={quantidade}
109
+ onChange={setQuantidade}
110
+ atalhos={[10, 25, 50, -10, -25, -50]}
111
+ selectedUnit="kg"
112
+ addStockItem={(valor) => {
113
+ console.log(`Adicionando ${valor} kg ao estoque`);
114
+ }}
115
+ />
116
+ );
117
+ }
118
+ ```
119
+
120
+ ### Atalhos Inteligentes
121
+
122
+ Os atalhos negativos só aparecem quando fazem sentido:
123
+
124
+ - **Valor atual: 5** → Mostra apenas: +10, +25, +50
125
+ - **Valor atual: 15** → Mostra: +10, +25, +50, -10
126
+ - **Valor atual: 60** → Mostra: +10, +25, +50, -10, -25, -50
127
+
128
+ ## Componentes Disponíveis
129
+
130
+ ### EstoqueCard
131
+
132
+ - Gerencia itens de estoque com diferentes unidades
133
+ - Interface intuitiva para adicionar/remover itens
134
+ - Cálculo automático de totais
135
+ - Modal integrado para inserção de novos itens
136
+
137
+ ### QuantidadeInput
138
+
139
+ - Input numérico com controles + e -
140
+ - Atalhos personalizáveis para valores comuns
141
+ - **Atalhos negativos inteligentes** - Só aparecem quando fazem sentido
142
+ - Suporte a unidades de medida
143
+ - Botão para adicionar ao estoque
144
+
145
+ ### UnitSelect
146
+
147
+ - Select customizado e bonito para unidades
148
+ - Navegação por teclado (setas, Enter, Escape)
149
+ - Animações suaves e feedback visual
150
+ - Totalmente acessível (ARIA labels)
151
+ - Suporte a hover e focus states
152
+
153
+ ### Modal
154
+
155
+ - Modal responsivo com animações suaves
156
+ - **Largura total em dispositivos móveis** (≤768px)
157
+ - Seletor de unidades integrado
158
+ - Controle de foco e acessibilidade
159
+
160
+ ## Vantagens
161
+
162
+ ### Sem Dependências Externas
163
+
164
+ - Não precisa instalar Tailwind CSS
165
+ - Não precisa configurar PostCSS
166
+ - Não precisa importar arquivos CSS
167
+ - Funciona em qualquer projeto React
168
+
169
+ ### Performance
170
+
171
+ - Estilos inline são mais rápidos para carregar
172
+ - Sem overhead de frameworks CSS
173
+ - Bundle menor
174
+
175
+ ### Facilidade de Uso
176
+
177
+ - Instale e use imediatamente
178
+ - Sem configuração adicional
179
+ - Compatível com qualquer setup de build
180
+ - **Responsivo automático** - Detecta dispositivos móveis automaticamente
181
+
182
+ ## Desenvolvimento
183
+
184
+ ```bash
185
+ # Instalar dependências
186
+ npm install
187
+
188
+ # Executar em modo de desenvolvimento
189
+ npm run dev
190
+
191
+ # Build para produção
192
+ npm run build
193
+
194
+ # Executar Storybook
195
+ npm run storybook
196
+ ```
197
+
198
+ ## Licença
199
+
200
+ MIT
@@ -0,0 +1 @@
1
+ .storybook-button{display:inline-block;cursor:pointer;border:0;border-radius:.5rem;font-weight:700;line-height:1;font-family:Nunito Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.storybook-button--primary{background-color:#ff4e00;color:#fff}.storybook-button--secondary{box-shadow:#00000026 0 0 0 1px inset;background-color:transparent;color:#333}.storybook-button--small{padding:10px 16px;font-size:12px}.storybook-button--medium{padding:11px 20px;font-size:14px}.storybook-button--large{padding:12px 24px;font-size:16px}.storybook-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(0,0,0,.1);background-color:#0e0f12;padding:15px 20px;font-family:Nunito Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.storybook-header svg{display:inline-block;vertical-align:top}.storybook-header h1{display:inline-block;vertical-align:top;margin:6px 0 6px 10px;font-weight:700;font-size:20px;line-height:1}.storybook-header button+button{margin-left:10px}.storybook-header .welcome{margin-right:10px;color:#333;font-size:14px}
package/build/index.js ADDED
@@ -0,0 +1,17 @@
1
+ import { Button as t } from "./index2.js";
2
+ import { Header as p } from "./index3.js";
3
+ import { Logo as m } from "./index4.js";
4
+ import { List as a } from "./index5.js";
5
+ import { QuantidadeInput as n } from "./index6.js";
6
+ import { EstoqueCard as i } from "./index7.js";
7
+ import { UnitSelect as L } from "./index8.js";
8
+ export {
9
+ t as Button,
10
+ i as EstoqueCard,
11
+ p as Header,
12
+ a as List,
13
+ m as Logo,
14
+ n as QuantidadeInput,
15
+ L as UnitSelect
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,20 @@
1
+ import c from "./index19.js";
2
+ /**
3
+ * @license lucide-react v0.503.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const e = [
9
+ ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
10
+ ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
11
+ ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
12
+ ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }],
13
+ ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
14
+ ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
15
+ ], i = c("grip-vertical", e);
16
+ export {
17
+ e as __iconNode,
18
+ i as default
19
+ };
20
+ //# sourceMappingURL=index12.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index12.js","sources":["../node_modules/lucide-react/dist/esm/icons/grip-vertical.js"],"sourcesContent":["/**\n * @license lucide-react v0.503.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"9\", cy: \"12\", r: \"1\", key: \"1vctgf\" }],\n [\"circle\", { cx: \"9\", cy: \"5\", r: \"1\", key: \"hp0tcf\" }],\n [\"circle\", { cx: \"9\", cy: \"19\", r: \"1\", key: \"fkjjf6\" }],\n [\"circle\", { cx: \"15\", cy: \"12\", r: \"1\", key: \"1tmaij\" }],\n [\"circle\", { cx: \"15\", cy: \"5\", r: \"1\", key: \"19l28e\" }],\n [\"circle\", { cx: \"15\", cy: \"19\", r: \"1\", key: \"f4zoj3\" }]\n];\nconst GripVertical = createLucideIcon(\"grip-vertical\", __iconNode);\n\nexport { __iconNode, GripVertical as default };\n//# sourceMappingURL=grip-vertical.js.map\n"],"names":["__iconNode","GripVertical","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASK,MAACA,IAAa;AAAA,EACjB,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACvD,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,KAAK,UAAU;AAAA,EACtD,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACvD,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACxD,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK,KAAK,UAAU;AAAA,EACvD,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,SAAQ,CAAE;AAC1D,GACMC,IAAeC,EAAiB,iBAAiBF,CAAU;","x_google_ignoreList":[0]}
@@ -0,0 +1,134 @@
1
+ import { j as t } from "./index9.js";
2
+ import { createPortal as c } from "react-dom";
3
+ const h = ({
4
+ isOpen: n,
5
+ onClose: l,
6
+ width: r,
7
+ minHeight: s = "50vh",
8
+ title: a,
9
+ children: i,
10
+ unidades: u,
11
+ selectedUnit: x,
12
+ setSelectedUnit: p
13
+ }) => {
14
+ const d = (o) => {
15
+ o.target === o.currentTarget && l();
16
+ }, e = {
17
+ overlay: {
18
+ position: "fixed",
19
+ inset: 0,
20
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
21
+ display: "flex",
22
+ justifyContent: "center",
23
+ alignItems: "flex-end",
24
+ zIndex: 9999,
25
+ transition: "opacity 0.3s ease-in-out",
26
+ opacity: n ? 1 : 0,
27
+ pointerEvents: n ? "auto" : "none"
28
+ },
29
+ modal: {
30
+ position: "fixed",
31
+ backgroundColor: "white",
32
+ maxWidth: r || "auto",
33
+ margin: "0 auto",
34
+ minHeight: s,
35
+ maxHeight: "90vh",
36
+ width: "100%",
37
+ overflowY: "auto",
38
+ borderRadius: r === "100%" ? "0" : "16px 16px 0 0",
39
+ bottom: 0,
40
+ left: 0,
41
+ right: 0,
42
+ transition: "all 0.3s ease-in-out",
43
+ transform: n ? "translateY(0)" : "translateY(100%)",
44
+ opacity: n ? 1 : 0
45
+ },
46
+ header: {
47
+ position: "sticky",
48
+ top: 0,
49
+ zIndex: 10,
50
+ backgroundColor: "white",
51
+ borderBottom: "1px solid #e5e7eb",
52
+ padding: r === "100%" ? "16px" : "16px 24px",
53
+ borderRadius: r === "100%" ? "0" : "16px 16px 0 0"
54
+ },
55
+ headerContent: {
56
+ display: "flex",
57
+ alignItems: "center",
58
+ justifyContent: "space-between"
59
+ },
60
+ title: {
61
+ fontSize: "20px",
62
+ fontWeight: "600",
63
+ color: "#111827",
64
+ margin: 0
65
+ },
66
+ headerControls: {
67
+ display: "flex",
68
+ alignItems: "center",
69
+ gap: "8px"
70
+ },
71
+ closeButton: {
72
+ padding: "8px",
73
+ color: "#9ca3af",
74
+ border: "none",
75
+ background: "none",
76
+ borderRadius: "8px",
77
+ cursor: "pointer",
78
+ transition: "all 0.2s"
79
+ },
80
+ closeButtonHover: {
81
+ color: "#6b7280",
82
+ backgroundColor: "#f3f4f6"
83
+ },
84
+ content: {
85
+ padding: r === "100%" ? "16px" : "24px"
86
+ }
87
+ };
88
+ return c(
89
+ /* @__PURE__ */ t.jsx("div", { style: e.overlay, onClick: d, children: /* @__PURE__ */ t.jsxs("div", { style: e.modal, onClick: (o) => o.stopPropagation(), children: [
90
+ a && /* @__PURE__ */ t.jsx("div", { style: e.header, children: /* @__PURE__ */ t.jsxs("div", { style: e.headerContent, children: [
91
+ /* @__PURE__ */ t.jsx("h2", { style: e.title, children: a }),
92
+ /* @__PURE__ */ t.jsx("div", { style: e.headerControls, children: /* @__PURE__ */ t.jsx(
93
+ "button",
94
+ {
95
+ type: "button",
96
+ onClick: l,
97
+ style: e.closeButton,
98
+ onMouseEnter: (o) => {
99
+ o.currentTarget.style.color = e.closeButtonHover.color, o.currentTarget.style.backgroundColor = e.closeButtonHover.backgroundColor;
100
+ },
101
+ onMouseLeave: (o) => {
102
+ o.currentTarget.style.color = e.closeButton.color, o.currentTarget.style.backgroundColor = "";
103
+ },
104
+ "aria-label": "Fechar modal",
105
+ children: /* @__PURE__ */ t.jsx(
106
+ "svg",
107
+ {
108
+ style: { width: "24px", height: "24px" },
109
+ fill: "none",
110
+ viewBox: "0 0 24 24",
111
+ stroke: "currentColor",
112
+ children: /* @__PURE__ */ t.jsx(
113
+ "path",
114
+ {
115
+ strokeLinecap: "round",
116
+ strokeLinejoin: "round",
117
+ strokeWidth: 2,
118
+ d: "M6 18L18 6M6 6l12 12"
119
+ }
120
+ )
121
+ }
122
+ )
123
+ }
124
+ ) })
125
+ ] }) }),
126
+ /* @__PURE__ */ t.jsx("div", { style: e.content, children: i })
127
+ ] }) }),
128
+ document.body
129
+ );
130
+ };
131
+ export {
132
+ h as default
133
+ };
134
+ //# sourceMappingURL=index13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index13.js","sources":["../src/components/Modal/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n width?: string;\r\n minHeight?: string;\r\n title?: string;\r\n children: React.ReactNode;\r\n unidades?: { label: string; value: string }[];\r\n selectedUnit?: string;\r\n setSelectedUnit?: (unit: string) => void;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n width,\r\n minHeight = \"50vh\",\r\n title,\r\n children,\r\n unidades,\r\n selectedUnit,\r\n setSelectedUnit,\r\n}) => {\r\n const handleOverlayClick = (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose();\r\n }\r\n };\r\n\r\n // Estilos inline para substituir Tailwind\r\n const styles = {\r\n overlay: {\r\n position: \"fixed\" as const,\r\n inset: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-end\",\r\n zIndex: 9999,\r\n transition: \"opacity 0.3s ease-in-out\",\r\n opacity: isOpen ? 1 : 0,\r\n pointerEvents: isOpen ? (\"auto\" as const) : (\"none\" as const),\r\n },\r\n modal: {\r\n position: \"fixed\" as const,\r\n backgroundColor: \"white\",\r\n maxWidth: width || \"auto\",\r\n margin: \"0 auto\",\r\n minHeight: minHeight,\r\n maxHeight: \"90vh\",\r\n width: \"100%\",\r\n overflowY: \"auto\" as const,\r\n borderRadius: width === \"100%\" ? \"0\" : \"16px 16px 0 0\",\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n transition: \"all 0.3s ease-in-out\",\r\n transform: isOpen ? \"translateY(0)\" : \"translateY(100%)\",\r\n opacity: isOpen ? 1 : 0,\r\n },\r\n header: {\r\n position: \"sticky\" as const,\r\n top: 0,\r\n zIndex: 10,\r\n backgroundColor: \"white\",\r\n borderBottom: \"1px solid #e5e7eb\",\r\n padding: width === \"100%\" ? \"16px\" : \"16px 24px\",\r\n borderRadius: width === \"100%\" ? \"0\" : \"16px 16px 0 0\",\r\n },\r\n headerContent: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n },\r\n title: {\r\n fontSize: \"20px\",\r\n fontWeight: \"600\",\r\n color: \"#111827\",\r\n margin: 0,\r\n },\r\n headerControls: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n },\r\n selectContainer: {\r\n position: \"relative\" as const,\r\n },\r\n select: {\r\n appearance: \"none\" as const,\r\n backgroundColor: \"white\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"6px\",\r\n paddingLeft: \"12px\",\r\n paddingRight: \"40px\",\r\n paddingTop: \"8px\",\r\n paddingBottom: \"8px\",\r\n fontSize: \"14px\",\r\n color: \"#374151\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.2s ease-in-out\",\r\n },\r\n selectHover: {\r\n borderColor: \"#3b82f6\",\r\n },\r\n selectFocus: {\r\n outline: \"none\",\r\n borderColor: \"#3b82f6\",\r\n boxShadow: \"0 0 0 2px rgba(59, 130, 246, 0.2)\",\r\n },\r\n selectArrow: {\r\n position: \"absolute\" as const,\r\n top: \"50%\",\r\n right: \"8px\",\r\n transform: \"translateY(-50%)\",\r\n pointerEvents: \"none\" as const,\r\n color: \"#6b7280\",\r\n },\r\n closeButton: {\r\n padding: \"8px\",\r\n color: \"#9ca3af\",\r\n border: \"none\",\r\n background: \"none\",\r\n borderRadius: \"8px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.2s\",\r\n },\r\n closeButtonHover: {\r\n color: \"#6b7280\",\r\n backgroundColor: \"#f3f4f6\",\r\n },\r\n content: {\r\n padding: width === \"100%\" ? \"16px\" : \"24px\",\r\n },\r\n };\r\n\r\n return createPortal(\r\n <div style={styles.overlay} onClick={handleOverlayClick}>\r\n <div style={styles.modal} onClick={(e) => e.stopPropagation()}>\r\n {title && (\r\n <div style={styles.header}>\r\n <div style={styles.headerContent}>\r\n <h2 style={styles.title}>{title}</h2>\r\n <div style={styles.headerControls}>\r\n {/* <div style={styles.selectContainer}>\r\n <select\r\n value={selectedUnit}\r\n onChange={(e) => setSelectedUnit?.(e.target.value)}\r\n style={styles.select}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.borderColor =\r\n styles.selectHover.borderColor!;\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.borderColor = styles.select.border!;\r\n }}\r\n onFocus={(e) => {\r\n e.target.style.outline = styles.selectFocus.outline!;\r\n e.target.style.borderColor =\r\n styles.selectFocus.borderColor!;\r\n e.target.style.boxShadow = styles.selectFocus.boxShadow!;\r\n }}\r\n onBlur={(e) => {\r\n e.target.style.outline = \"\";\r\n e.target.style.borderColor = styles.select.border!;\r\n e.target.style.boxShadow = \"\";\r\n }}\r\n >\r\n {unidades?.map((unidade) => (\r\n <option key={unidade.value} value={unidade.value}>\r\n {unidade.label}\r\n </option>\r\n ))}\r\n </select>\r\n <div style={styles.selectArrow}>\r\n <svg\r\n style={{ width: \"16px\", height: \"16px\" }}\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M19 9l-7 7-7-7\"\r\n />\r\n </svg>\r\n </div>\r\n </div> */}\r\n <button\r\n type=\"button\"\r\n onClick={onClose}\r\n style={styles.closeButton}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.color =\r\n styles.closeButtonHover.color!;\r\n e.currentTarget.style.backgroundColor =\r\n styles.closeButtonHover.backgroundColor!;\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.color = styles.closeButton.color!;\r\n e.currentTarget.style.backgroundColor = \"\";\r\n }}\r\n aria-label=\"Fechar modal\"\r\n >\r\n <svg\r\n style={{ width: \"24px\", height: \"24px\" }}\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n >\r\n <path\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth={2}\r\n d=\"M6 18L18 6M6 6l12 12\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n <div style={styles.content}>{children}</div>\r\n </div>\r\n </div>,\r\n document.body\r\n );\r\n};\r\n\r\nexport default Modal;\r\n"],"names":["Modal","isOpen","onClose","width","minHeight","title","children","unidades","selectedUnit","setSelectedUnit","handleOverlayClick","e","styles","createPortal","jsxs","jsx"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ var e = { exports: {} };
2
+ export {
3
+ e as __module
4
+ };
5
+ //# sourceMappingURL=index14.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index14.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,29 @@
1
+ import { __exports as t } from "./index17.js";
2
+ import R from "react";
3
+ /**
4
+ * @license React
5
+ * react-jsx-runtime.production.min.js
6
+ *
7
+ * Copyright (c) Facebook, Inc. and its affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ var p;
13
+ function v() {
14
+ if (p) return t;
15
+ p = 1;
16
+ var s = R, m = Symbol.for("react.element"), l = Symbol.for("react.fragment"), c = Object.prototype.hasOwnProperty, d = s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, y = { key: !0, ref: !0, __self: !0, __source: !0 };
17
+ function _(o, r, i) {
18
+ var e, n = {}, u = null, f = null;
19
+ i !== void 0 && (u = "" + i), r.key !== void 0 && (u = "" + r.key), r.ref !== void 0 && (f = r.ref);
20
+ for (e in r) c.call(r, e) && !y.hasOwnProperty(e) && (n[e] = r[e]);
21
+ if (o && o.defaultProps) for (e in r = o.defaultProps, r) n[e] === void 0 && (n[e] = r[e]);
22
+ return { $$typeof: m, type: o, key: u, ref: f, props: n, _owner: d.current };
23
+ }
24
+ return t.Fragment = l, t.jsx = _, t.jsxs = _, t;
25
+ }
26
+ export {
27
+ v as __require
28
+ };
29
+ //# sourceMappingURL=index15.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index15.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n"],"names":["f","require$$0","k","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min"],"mappings":";;;;;;;;;;;;;;;AASa,MAAIA,IAAEC,GAAiBC,IAAE,OAAO,IAAI,eAAe,GAAE,IAAE,OAAO,IAAI,gBAAgB,GAAEC,IAAE,OAAO,UAAU,gBAAeC,IAAEJ,EAAE,mDAAmD,mBAAkBK,IAAE,EAAC,KAAI,IAAG,KAAI,IAAG,QAAO,IAAG,UAAS,GAAE;AAClP,WAASC,EAAEC,GAAEC,GAAEC,GAAE;AAAC,QAAIC,GAAEC,IAAE,CAAA,GAAGC,IAAE,MAAKC,IAAE;AAAK,IAASJ,MAAT,WAAaG,IAAE,KAAGH,IAAYD,EAAE,QAAX,WAAiBI,IAAE,KAAGJ,EAAE,MAAcA,EAAE,QAAX,WAAiBK,IAAEL,EAAE;AAAK,SAAIE,KAAKF,EAAE,CAAAL,EAAE,KAAKK,GAAEE,CAAC,KAAG,CAACL,EAAE,eAAeK,CAAC,MAAIC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,QAAGH,KAAGA,EAAE,aAAa,MAAIG,KAAKF,IAAED,EAAE,cAAaC,EAAE,CAASG,EAAED,CAAC,MAAZ,WAAgBC,EAAED,CAAC,IAAEF,EAAEE,CAAC;AAAG,WAAM,EAAC,UAASR,GAAE,MAAKK,GAAE,KAAIK,GAAE,KAAIC,GAAE,OAAMF,GAAE,QAAOP,EAAE,QAAO;AAAA,EAAC;AAAC,SAAAU,aAAiB,GAAEA,EAAA,MAAYR,GAAEQ,EAAA,OAAaR;;","x_google_ignoreList":[0]}