{"_id":"@laboratoria/sdk-react","_rev":"37-4bc61df632632e99d285231dd549716c","name":"@laboratoria/sdk-react","dist-tags":{"next":"11.0.0-beta.2","latest":"11.1.0"},"versions":{"8.1.0-beta.0":{"name":"@laboratoria/sdk-react","version":"8.1.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-react@8.1.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"3ea94ddc98639f6956b811072c2b85fdd42d3585","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.1.0-beta.0.tgz","fileCount":77,"integrity":"sha512-gsfMFo/BpkaVyUnsDwXUnemEIU4RbmooeEA06O+oxv3w1eW4JT94pFEhx3311uYCvoI3bjt/9+HX/32oy6RQ9w==","signatures":[{"sig":"MEYCIQDaJzhqBvA+tPU2Mw85neJsDTj+dPMoJOEyYd7wE09ZyQIhAIJa58urbgu3AWeac9LYH1TfYXthC1R5uG6fimFx6b0s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164947},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"1ebf13415e273f23ea88f26ff24a83f38a69697d","scripts":{"test":"vitest run --coverage","link-sdk":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.3","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.10.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.100.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.1.0-beta.0_1707824527289_0.8430128733966755","host":"s3://npm-registry-packages"}},"8.1.0-beta.1":{"name":"@laboratoria/sdk-react","version":"8.1.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-react@8.1.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"1856001ec36d755b74e004ad57248fa499a62baa","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.1.0-beta.1.tgz","fileCount":77,"integrity":"sha512-giv92JcnQ+ILGfS0JKwq1m8RD/UsLkN4ws5okk3RKVUMw4iR9+hpHQXIPAU46FCUHPN2qiLnaEe3/ir1jeMZlg==","signatures":[{"sig":"MEYCIQCY+k5ITzqLAmiwpXf+0kMFL7SWV+ddXFf4zJ7fTWtULQIhAJvJ9mQjx7LKkaJQHIb+2gdt5F3YhOrcWgKDG+igM6OA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167296},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar con las siguientes variables de entorno:\n\n* `FIREBASE_API_KEY`\n* `FIREBASE_PROJECT`\n* `LABORATORIA_CORE_API_URL`\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente\n* `VERSION`\n* `SENTRY_DSN`\n\n## Componentes\n\n* [`Loading`](./src/Loading)\n* [`ModelForm`](./src/ModelForm)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`DistinctFilter`](./src/DistinctFilter)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n<!--\nIcons?\n\n* `logo.svg`\n* `isotipo.svg`\n-->\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n  createTheme,\n  ThemeProvider,\n  StyledEngineProvider,\n} from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\n// Importamos `AppProvider` y `themeConfig`\nimport { AppProvider, themeConfig } from '@laboratoria/sdk-react';\n// Importamos el CSS base...\nimport '@laboratoria/sdk-react/src/theme/index.css';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <StyledEngineProvider injectFirst>\n      <ThemeProvider theme={createTheme(themeConfig)}>\n        <AppProvider>\n          <CssBaseline />\n          <App />\n        </AppProvider>\n      </ThemeProvider>\n    </StyledEngineProvider>\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"dea2c001a480fae4e75d341918f683c8b4d05990","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.100.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.1.0-beta.1_1707846101097_0.4800715218521141","host":"s3://npm-registry-packages"}},"8.1.0":{"name":"@laboratoria/sdk-react","version":"8.1.0","license":"MIT","_id":"@laboratoria/sdk-react@8.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9ec6252acb452b2362f00da8caa20fde8764bf0c","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.1.0.tgz","fileCount":77,"integrity":"sha512-G67GOg6zSOZK6MuwBC3rLMfbiuuqsEs2rjavhlqHFNnikbtwUIkjmFd7x5oCgXz10REJzGKaj6Te+jYimj7E/g==","signatures":[{"sig":"MEYCIQDi8UhDBE+UZwgYWWE+fVE6MUy++cNwWalg/MsH0+mx1gIhAJZfx1M3vvS2ewOzcpQyzQhg0Y9Fh8U3MZ69XmpieRx9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167289},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"6ca74a9da05a59623184c919fa299e5874aa7670","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.100.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.1.0_1707846345087_0.7363875641694437","host":"s3://npm-registry-packages"}},"8.1.1":{"name":"@laboratoria/sdk-react","version":"8.1.1","license":"MIT","_id":"@laboratoria/sdk-react@8.1.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"3bd09957868c58f43144939297c58619d8943c99","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.1.1.tgz","fileCount":77,"integrity":"sha512-JakayuW5E/CK+A1Jr1KCj11arks6FX6reQcpTORcSydkB4NsuOZcHJS5NO0V3SBPluaHdF8/gb8piLngi5wjxw==","signatures":[{"sig":"MEQCIDuXPJWGF7Rh5Tr/B/UBhyFzY6JF/S1BSxU9CXx+rSmyAiBcZ8lTaHMER2peRK3Jhub3zT6OEPib+r5JY/CdAh6TOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167289},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"7c2bbf8f43745512c54f3862689f3d8de418a503","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.101.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.2.1"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.1.1_1707847106637_0.7010080407384343","host":"s3://npm-registry-packages"}},"8.2.0":{"name":"@laboratoria/sdk-react","version":"8.2.0","license":"MIT","_id":"@laboratoria/sdk-react@8.2.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9f1dc6678a9509a2fd971bc588be70b3384867da","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.2.0.tgz","fileCount":77,"integrity":"sha512-xfmVwkk/4xWjsvUrhvCL6qmffcQc+VM2Qk/ucqWdzIJ9/vhiytIrc7EAgLpvimErLmitMwhgAWOcFX76h0E3gg==","signatures":[{"sig":"MEUCIQDKBi3OWvy1IpwV17Efz5IdAPcyyHYntcFoVzgcSreDUQIgNtV9ZgxGrwTdAEBIfg9VmQk7FPBOcOoAwj2oHxYgjUk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167500},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"e92fb1885f66d73f9ea0f93e8d5692e829a40c01","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.101.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.2.3","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.2.0_1707979434245_0.16908523978703816","host":"s3://npm-registry-packages"}},"8.3.0-beta.0":{"name":"@laboratoria/sdk-react","version":"8.3.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-react@8.3.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e99c03e743396ef03d8f73eeccd961b8bab38cb9","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.3.0-beta.0.tgz","fileCount":77,"integrity":"sha512-8jczCljQPV9HXyIKoe27oE9AijMYxFQFPQ/9Anl+GMvvYnN9amaOXxMOOT50OPpzrD5BZmM/ah3BELR8GFJirA==","signatures":[{"sig":"MEYCIQDG+q2TgQCNMfG0LVoxhFaigeRjaczuLZtiUeI9SHoUkAIhAOwhtUcPTEJjj/5+pXellM9u7DJEW/RGsJO0C5/l5IBl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167513},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar con las siguientes variables de entorno:\n\n* `FIREBASE_API_KEY`\n* `FIREBASE_PROJECT`\n* `LABORATORIA_CORE_API_URL`\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente\n* `VERSION`\n* `SENTRY_DSN`\n\n## Componentes\n\n* [`Loading`](./src/Loading)\n* [`ModelForm`](./src/ModelForm)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`DistinctFilter`](./src/DistinctFilter)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n<!--\nIcons?\n\n* `logo.svg`\n* `isotipo.svg`\n-->\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n  createTheme,\n  ThemeProvider,\n  StyledEngineProvider,\n} from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\n// Importamos `AppProvider` y `themeConfig`\nimport { AppProvider, themeConfig } from '@laboratoria/sdk-react';\n// Importamos el CSS base...\nimport '@laboratoria/sdk-react/src/theme/index.css';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <StyledEngineProvider injectFirst>\n      <ThemeProvider theme={createTheme(themeConfig)}>\n        <AppProvider>\n          <CssBaseline />\n          <App />\n        </AppProvider>\n      </ThemeProvider>\n    </StyledEngineProvider>\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"8bb7046db89522e57769d443c0d38f596c46dcc3","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.101.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0-beta.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.3.0-beta.0_1707990221486_0.3903992459313459","host":"s3://npm-registry-packages"}},"8.3.0-beta.1":{"name":"@laboratoria/sdk-react","version":"8.3.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-react@8.3.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"88af37bd96f6f2ec9b79cbe02a966524c07dae7f","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-8.3.0-beta.1.tgz","fileCount":77,"integrity":"sha512-4vzh+5+AI7aVnq4S5LGmIlRQnurr1x3vBwznrE77xyBR7XjIUbnneb1rOW7+lWW1eheBHC/GAQk14A1XcyI26Q==","signatures":[{"sig":"MEYCIQC1uwXJWywaWfZs2gIxeSLkl85m/ZeUH86S1z8BVQAKMQIhAP98RPfMzEVWq91Rgu9MK94gkqCxc0XVUcwr6UCBDBsj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169254},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variabl normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n  createTheme,\n  ThemeProvider,\n  StyledEngineProvider,\n} from '@mui/material/styles';\nimport CssBaseline from '@mui/material/CssBaseline';\n// Importamos `AppProvider` y `themeConfig`\nimport { AppProvider, themeConfig } from '@laboratoria/sdk-react';\n// Importamos el CSS base...\nimport '@laboratoria/sdk-react/src/theme/index.css';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <StyledEngineProvider injectFirst>\n      <ThemeProvider theme={createTheme(themeConfig)}>\n        <AppProvider>\n          <CssBaseline />\n          <App />\n        </AppProvider>\n      </ThemeProvider>\n    </StyledEngineProvider>\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"5ee601741ecc93d3013e1787692c339d16676e6c","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","highlight.js":"^11.9.0","@sentry/react":"^7.101.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0-beta.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.0","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_8.3.0-beta.1_1708378272355_0.3424906907166019","host":"s3://npm-registry-packages"}},"9.0.0-beta.1":{"name":"@laboratoria/sdk-react","version":"9.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-react@9.0.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"f76b870ba55c97059d63e68a8f47b1dc7c108804","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.0.0-beta.1.tgz","fileCount":78,"integrity":"sha512-nocP668oLOszueFQV+medFg9SlnB9YK/TE2N8bZilBDp/6IQ1i73oprLejbJ5mnm0PVKmIPRc7pYbidbC6nD1g==","signatures":[{"sig":"MEUCIQD9HRK4OZjNVh9QQlB4ls3Razs4u1D4/AYxiBnTNnv8nwIgRnO0wju40OIgGBkIMdZN2o8F/1Zf2T822NWx9GsOI70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170664},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"c01aa1843b14ef1311e6a8a1290604f349c2aa9e","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.106.2","highlight.js":"^11.9.0","@sentry/react":"^7.101.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.0","@vitest/coverage-v8":"^1.3.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.0.0-beta.1_1708425397330_0.34566700143482354","host":"s3://npm-registry-packages"}},"9.0.0-beta.2":{"name":"@laboratoria/sdk-react","version":"9.0.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-react@9.0.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"95c45a7dec449138b338712e0034f520da398712","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.0.0-beta.2.tgz","fileCount":78,"integrity":"sha512-bF97ef89fP8ItS8esnXBsr5K61pK99beMT/tjNhUVHqcS+4J7H7mshTImJ4P0rhLmyzmouFz7ByGLhotnJKlMA==","signatures":[{"sig":"MEUCIHitUuSVC2tg3g93xRW+WeBE8Wcvf9rOFTLEPd71wdfCAiEApqq5rxj/EL+bXKxVh0W4Q383kTJqW2mMHYmifgwxUSA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170880},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"bd049053171cbe9d6c5118be3a47e94c68b03ca6","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.106.2","highlight.js":"^11.9.0","@sentry/react":"^7.101.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.0","@vitest/coverage-v8":"^1.3.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.0.0-beta.2_1708430523580_0.49956257171578344","host":"s3://npm-registry-packages"}},"9.0.0":{"name":"@laboratoria/sdk-react","version":"9.0.0","license":"MIT","_id":"@laboratoria/sdk-react@9.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"0d706087cf1812b67ea342a845a2cb2c285bb199","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.0.0.tgz","fileCount":78,"integrity":"sha512-zt+scXGoMKU8+Q5T9nv5GVVN7mChZv2BlRkiJPr0qHaiOt8a1WyfOJfX6AT64k/ZUdKHRJaaDl/6pIQsppXkmg==","signatures":[{"sig":"MEQCIAasUM+2Oe+8Lp8Jj7Wb2M8wrmkcXblR8RxaUFVW2tswAiAOOiblUQYsUD2/SxckwiUVwzOK8ZzhpsEuSKbDbScQOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170873},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"9873c129a11fcfcc1d4180981945f411289dd4bc","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.106.2","highlight.js":"^11.9.0","@sentry/react":"^7.101.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.0","@vitest/coverage-v8":"^1.3.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.0.0_1708449528027_0.31635508797843914","host":"s3://npm-registry-packages"}},"9.0.1":{"name":"@laboratoria/sdk-react","version":"9.0.1","license":"MIT","_id":"@laboratoria/sdk-react@9.0.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"5d8902879dcbdb7d00dc9d4ea6c99a3001f2bbd7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.0.1.tgz","fileCount":79,"integrity":"sha512-JF5DNCguUBHce6KuYemiI3jHOZfBJSQiO8eECVzAR02Rc/TgLRhALZHDD9OwSALo2Gu/U3zDi9m+Ts++crvWgg==","signatures":[{"sig":"MEQCIGGLnSVbzmt/8Y2YGm5cFCQxuhct8OU8ZjvGGOML3MRiAiBDQ/2d8W95rc7KRTVBkwsv+/hyrjtM3MJ/1k/jF1fo/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171095},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"1f6f2755bfa67c17835af3e71fc33fdf5f6f43d1","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.0","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.108.0","highlight.js":"^11.9.0","@sentry/react":"^7.102.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.1","@vitest/coverage-v8":"^1.3.1","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.0.1_1708507167398_0.8107408067159347","host":"s3://npm-registry-packages"}},"9.0.2":{"name":"@laboratoria/sdk-react","version":"9.0.2","license":"MIT","_id":"@laboratoria/sdk-react@9.0.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"33900ea0f1e9767060948fc87f01a0ae6e67b286","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.0.2.tgz","fileCount":79,"integrity":"sha512-G4Z99kKakl7SoOtklJq23P8BtdeT9VBrFx775i4p1idRv68tctd2ImQtRNPkFlpD/04vA7ATDGfviMStIsGqEQ==","signatures":[{"sig":"MEUCIHtZ+uaLyOH/68xQHm/NyRzHeR91ziUcx3t03H3iUkzlAiEAmnMISI5czdmJMvWQ8lQsMIHPlV5ZWgMaJdzMWJqp8/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171190},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"001aeab0ff49426baaed98a5b91f8fbc39e5aca5","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.1","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.108.0","highlight.js":"^11.9.0","@sentry/react":"^7.102.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.3.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.1","@vitest/coverage-v8":"^1.3.1","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.10","@mui/material":"^5.15.10","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.10"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.0.2_1708511282022_0.050408498284072456","host":"s3://npm-registry-packages"}},"9.1.0":{"name":"@laboratoria/sdk-react","version":"9.1.0","license":"MIT","_id":"@laboratoria/sdk-react@9.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"581361a032b257a758bbcd23b1ad7afad760ecab","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.1.0.tgz","fileCount":79,"integrity":"sha512-3tDyK9D6VmjcH7dCbgkPiqZh8RVADCelH4emiDx/UmmAnuclsoSOUXNSsuk+B4QgaK0kklxDCdWA7PJFHxn0gw==","signatures":[{"sig":"MEQCID4ILdIfJnGVYqGciN0HButUasEeYUfROL6Sd5tP33tDAiAFvKQYuK64LewIy93BhruZuQtUaRlpanxNj1r8H6/2+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171368},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"fc17b5435c2056a3adb395044d9023091249c02e","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.1","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.6","posthog-js":"^1.108.3","highlight.js":"^11.9.0","@sentry/react":"^7.102.1","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.4.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.3.1","@vitest/coverage-v8":"^1.3.1","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.11","@mui/material":"^5.15.11","react-router-dom":"^6.22.1","@mui/icons-material":"^5.15.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.1.0_1708958956934_0.9698845727843357","host":"s3://npm-registry-packages"}},"9.1.1":{"name":"@laboratoria/sdk-react","version":"9.1.1","license":"MIT","_id":"@laboratoria/sdk-react@9.1.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"65a8a125305121750214bba3ed1899454303706e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.1.1.tgz","fileCount":79,"integrity":"sha512-eg7K11hiJk6nMiYbmqIwbDeTGQM6nBix3gBmdO4ZMZaMI8RT4u7IKVS5Jlp3P/WBwv2Bu9WQMM58VCwk18AHJA==","signatures":[{"sig":"MEYCIQDxjBsXlTvSH5rNKsHtx6LmBhRoY1pB4/icUeRmfDsP8AIhAI2J+eQ218ee8bG4/XBSPLad44nU9NDIahyhQFnuJng4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171368},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"51b9d2ec3c16476bd7f9b26bb90c4164a4d72ecb","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.11.1","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.32.7","posthog-js":"^1.116.3","highlight.js":"^11.9.0","@sentry/react":"^7.107.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.5.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.4.0","@vitest/coverage-v8":"^1.4.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.14","@mui/material":"^5.15.14","react-router-dom":"^6.22.3","@mui/icons-material":"^5.15.14"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.1.1_1711017639206_0.6960085915780045","host":"s3://npm-registry-packages"}},"9.2.0-beta.0":{"name":"@laboratoria/sdk-react","version":"9.2.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"eaf47afa0fdaded82cd4972e3f6a4d5320ad3ef1","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0-beta.0.tgz","fileCount":79,"integrity":"sha512-HtsGz+8Hjr9xW+zQObbiiAZq+LR+R75I4XSAM+H28LBEFI2CPd6V53ONBnTnoqEgisiW08Bqa/xSCZYZq9KG7Q==","signatures":[{"sig":"MEUCIHWoSRrEX6/mNFSpyDUDI6MRNOOg/GmNFkYGmB8B5L7JAiEAm9RI4q5Z44csSic8OCfSi5b+uxt8kuqptMJrB+UhiOM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172633},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"6605e19432672cb4929d165295879843b9dbe0ba","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.1","posthog-js":"^1.129.0","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.5.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.5.1","@vitest/coverage-v8":"^1.5.1","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.14","@mui/material":"^5.15.14","react-router-dom":"^6.22.3","@mui/icons-material":"^5.15.14"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0-beta.0_1713988708212_0.5600556249457946","host":"s3://npm-registry-packages"}},"9.2.0-beta.1":{"name":"@laboratoria/sdk-react","version":"9.2.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"f4703fca56e81e6e77e61e6255bcd7ed11a6e215","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0-beta.1.tgz","fileCount":79,"integrity":"sha512-XH5UjOvuHJxPf50gtELAcJz1tzWSzMfbADxLhggIZ/9flXELiyqQUDa/7TgIlaXGdYkJbGCVT6TD07SQDmfC+Q==","signatures":[{"sig":"MEYCIQCjLLwqkty+o//TPeWJ33FxHzt2C6EdTyeLpvtnkbW4vQIhAJw9VTNsCq2H0WJZOJLmYXzk/4LFux7RD5t9ZREt8j4c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172708},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"471d7de7d4fe0b3f4b1ec88b77b84b44435c7a99","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.1","posthog-js":"^1.129.0","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.6.0-beta.1","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.15","@mui/material":"^5.15.15","react-router-dom":"^6.23.0","@mui/icons-material":"^5.15.15"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0-beta.1_1714058942891_0.7174586277270409","host":"s3://npm-registry-packages"}},"9.2.0-beta.2":{"name":"@laboratoria/sdk-react","version":"9.2.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"730e0fb6aabb1fdf890ca2e0321823404217a137","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0-beta.2.tgz","fileCount":79,"integrity":"sha512-IT0z8QAyDTi+Mqmc4X5HtL1OjK4o3HCB7k+aL/ZOTYA3c7w6NHhoMLkKNYyiMQoD4w5Sw2jnQhbHetGikPgCLQ==","signatures":[{"sig":"MEYCIQCE9PPtMh0DYPpForvw/RZpB3N1foQIlJZLOGo7nnJUhgIhAJkHMGJtQZ994gNjhg7ixBLctDDRvaEjOhzX4m1Ykm1p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172708},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"2269edaa0b1c997fc7cdb37d40d69ef5d634a731","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.1","posthog-js":"^1.129.0","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.6.0-beta.2","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.15","@mui/material":"^5.15.15","react-router-dom":"^6.23.0","@mui/icons-material":"^5.15.15"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0-beta.2_1714075874501_0.27361875855988527","host":"s3://npm-registry-packages"}},"9.2.0-beta.3":{"name":"@laboratoria/sdk-react","version":"9.2.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0-beta.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"fbc81cda91d602ff40e355e305ffc5dc2edf2a7c","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0-beta.3.tgz","fileCount":79,"integrity":"sha512-Dbk/jN0UwXtaJTyvwn7EXGrfco1E7mZLF0RCvdC4HUuxuYOJ4fKgXhNBtHwC2LsCVQYazmf0Yw+0P7mCY0JtrQ==","signatures":[{"sig":"MEUCIQCzOlnpc2pINpZOSchjFJts4f+M5dX9uPAcgInU22NsVwIgaqQ7VPPHQTgKt/X4lzwva9fNXTaWly/sxtETaIHf0vs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172708},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"005c0e233466784f6c71fd9cbd4de80a924bcfa6","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.1","posthog-js":"^1.129.0","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.6.0-beta.4","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.15","@mui/material":"^5.15.15","react-router-dom":"^6.23.0","@mui/icons-material":"^5.15.15"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0-beta.3_1714135614857_0.4518297417868187","host":"s3://npm-registry-packages"}},"9.2.0-beta.4":{"name":"@laboratoria/sdk-react","version":"9.2.0-beta.4","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0-beta.4","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"bc7993a8c323dad98f77bbcc43292b75befe93b0","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0-beta.4.tgz","fileCount":79,"integrity":"sha512-PxtiecYSe+1znc076QfHUr/kzIFkpqyXrdp/H6/fmba+J5mBOOAJmHKB9d9d84FQA7jLrIl9tUf4FfvPpTJqlg==","signatures":[{"sig":"MEQCIC/EdqQaef0fmPahZqr8KdjlTLvvWLGLnMHF7CtQGu9JAiB9kUVe/FKaDmTg80TiwvDRTjkhopwgmbJEed1TfONF7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172708},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"4eea93de659594b0be41170f2c807aecd8c4f67e","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.1","posthog-js":"^1.129.0","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.6.0-beta.5","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.15","@mui/material":"^5.15.15","react-router-dom":"^6.23.0","@mui/icons-material":"^5.15.15"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0-beta.4_1714166356075_0.4668089192368068","host":"s3://npm-registry-packages"}},"9.2.0":{"name":"@laboratoria/sdk-react","version":"9.2.0","license":"MIT","_id":"@laboratoria/sdk-react@9.2.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"aa3d95cb1069fa1d4edbda9c20322316d3e67fbe","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-9.2.0.tgz","fileCount":79,"integrity":"sha512-S/oqZnlBtaYjqYfZeGQaaHX2RrVvk3bqVnQiCm3nmFyvf8sVPxhs4pfsmqJ8hObGxQUfBjHv+MYg9+KDA4JWKA==","signatures":[{"sig":"MEQCIBGkPY1fZ3Amcvh6J45C1eq+Bi8c2983vdukETGngvSuAiAR0q5pRj0X8GcqpZ5qvQXKotpp95sub8fvalZdZtxYSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172694},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"e048ee50d9eeb37ede29dd17d172c8dc88ec4d47","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.12.2","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.2","posthog-js":"^1.131.4","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^7.6.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.0.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.17","@mui/material":"^5.15.17","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.17"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_9.2.0_1715707126963_0.49429587923111473","host":"s3://npm-registry-packages"}},"10.0.0-alpha.0":{"name":"@laboratoria/sdk-react","version":"10.0.0-alpha.0","license":"MIT","_id":"@laboratoria/sdk-react@10.0.0-alpha.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8cb5a75e6040d060bf60305aa0e765a2e8972d8b","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.0.0-alpha.0.tgz","fileCount":79,"integrity":"sha512-0KWFg/A1rFtSi7hN1uFC9SVR3AxFhSt8SUiujR/rF6WBpVrRfxEK2HaNqLylrHek1rtc11UPj3kn8zjWxXCh3A==","signatures":[{"sig":"MEUCIQCvrbINnAKnKM0fCKZ+/s7mmp8zN6Ctcv8Tm3t6KCZIcQIgZnIiAhcRslvELThkjNl5lsAXDzdyheqXrAuQw1fNsDk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172830},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"be5ab83a64e344375b6d9772d806fa03dd22b60c","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.2","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.13.1","dependencies":{"react-ace":"^10.1.0","ace-builds":"^1.33.2","posthog-js":"^1.131.4","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0-alpha.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.0.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.17","@mui/material":"^5.15.17","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.17"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.0.0-alpha.0_1716834152382_0.019752124852657094","host":"s3://npm-registry-packages"}},"10.0.0-alpha.1":{"name":"@laboratoria/sdk-react","version":"10.0.0-alpha.1","license":"MIT","_id":"@laboratoria/sdk-react@10.0.0-alpha.1","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8a5b51204d2d25ef11e6aa414d2b8ea020e8bace","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.0.0-alpha.1.tgz","fileCount":79,"integrity":"sha512-pa1BhMrHaBqV3U3BmuWXgGrkGgCiXyI/ehmYJcs+FbgSXNFr717pzxtgfzDkGktgp2KweG6AJATx6EpqdUZEUQ==","signatures":[{"sig":"MEQCIBbvN0ynKhKl+/WxK88FU8BBf3/HJMeNhOuZqPKW7ELcAiAZrvkTS27lWfKZDQwJvNYsAndqeDicTkot/3eZlSCLHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172954},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"ab86084970d1e1c7ba22b2a58109681fd00f46a2","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.2","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.13.1","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.34.2","posthog-js":"^1.136.7","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0-alpha.2","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.19","@mui/material":"^5.15.19","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.19"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.0.0-alpha.1_1717534665094_0.07075872036699749","host":"s3://npm-registry-packages"}},"10.0.0-alpha.2":{"name":"@laboratoria/sdk-react","version":"10.0.0-alpha.2","license":"MIT","_id":"@laboratoria/sdk-react@10.0.0-alpha.2","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"008c0ca64c19385e89e596860a1bf0a16bf07a8e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.0.0-alpha.2.tgz","fileCount":79,"integrity":"sha512-7gaRa3E9hNz1noOS++SRg/ltVvZfaQVGavUDNJTE461nQgTIV7nzWxSI90Qf7XSUhN2ZuNS1wmBavXl2lK1HPA==","signatures":[{"sig":"MEUCIQCzmTa435erIBYqezpWfPhB0uqnscThR7U5aWakKjmlUAIgBTrNrwkp3wsgDyj9UJZr5KJsyrcNkfSdyotjHt2SRZs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173339},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"57f543730aaf429c9951a35dec389ce994910b4c","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.34.2","posthog-js":"^1.138.3","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0-alpha.2","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.19","@mui/material":"^5.15.19","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.19"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.0.0-alpha.2_1718031666908_0.5523213094481223","host":"s3://npm-registry-packages"}},"10.0.0-beta.0":{"name":"@laboratoria/sdk-react","version":"10.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-react@10.0.0-beta.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"414e3a77b9652c4db88655038d64ad3b731c52d2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.0.0-beta.0.tgz","fileCount":79,"integrity":"sha512-6MG1PVJbDeXMtR2msHjY7IRacUGutabsT0eMeYXTNywg7Mwv97sWzLlVbgTqdYXGu6Kn2E8weK58ZDzjBF77MQ==","signatures":[{"sig":"MEUCIGDS8mycYbjZk4cNg9T/EAXcONxxlTf4loD8KcOvmkUEAiEAgMqkR5qBugwKvYe52dS/KZSnswcy4KGCc8dEyQWnlMk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173329},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/material\": \"^5.5.3\",\n    \"@mui/styles\": \"^5.5.3\",\n    \"react\": \"^17.0.2\",\n    \"react-dom\": \"^17.0.2\",\n    \"react-router-dom\": \"^6.3.0\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"bf19253278880da395cfd9d37e41d3298cb95593","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.34.2","posthog-js":"^1.138.3","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.19","@mui/material":"^5.15.19","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.19"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.0.0-beta.0_1718121699394_0.7628496006382726","host":"s3://npm-registry-packages"}},"10.0.0":{"name":"@laboratoria/sdk-react","version":"10.0.0","license":"MIT","_id":"@laboratoria/sdk-react@10.0.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"f4fc2806c5653a7a777bbf44453c927da27bebca","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.0.0.tgz","fileCount":79,"integrity":"sha512-BZujm/OpfeMxtsiCkpqVUMHXFWoHZSeaSGM3W0W8F0DCgu25C/HEfBLU5IvOs889Poe/Jap1AKcSDDIwYTN2wQ==","signatures":[{"sig":"MEUCIEBYFsRNoXc7T210EnQEIhV2d32eRnwFF/uWgFyO1OSqAiEA2FUXtKVD51VpU0zvZIpsapHin7dIoxaLRWgUnSflnU0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173323},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"2629b1f5d6579fddc4fc8a2f8eaab2d06b34d01d","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.34.2","posthog-js":"^1.138.3","highlight.js":"^11.9.0","@sentry/react":"^7.112.2","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.19","@mui/material":"^5.15.19","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.19"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.0.0_1718122080967_0.35010033977999777","host":"s3://npm-registry-packages"}},"10.1.0":{"name":"@laboratoria/sdk-react","version":"10.1.0","license":"MIT","_id":"@laboratoria/sdk-react@10.1.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4d38265dce9a5e5a665f89e139244e619d5530f3","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-10.1.0.tgz","fileCount":83,"integrity":"sha512-L72tBBjXAa1RmaotPyqWkuneGFjT3vfdIb9zGamFqF6drH9NpUtyl3P5+x8KFKhItL2iLX/hak5X1M4XlFbu2w==","signatures":[{"sig":"MEUCIQCEIJLpLsjr6Ve6+NlpX9dqJsai2C0N6u6XIb5svd8hRwIgcYnp2Kutrguh2B13A6pDzEGPPSi9Ge5r7rwWJoaa9P4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182729},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"481e9cbf91491a89a922f78d0807e0ac0e0cf4a2","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^7.117.0","mui-tel-input":"^3.2.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^12.1.5"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","@mui/styles":"^5.15.20","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_10.1.0_1718290662743_0.591301738729","host":"s3://npm-registry-packages"}},"11.0.0-beta.0":{"name":"@laboratoria/sdk-react","version":"11.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-react@11.0.0-beta.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"29462f83d8a7295a1ad4515190f1e61411e8ef23","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.0-beta.0.tgz","fileCount":83,"integrity":"sha512-II40lwPFie4I7ykizUWf7hUP8gPIC+Yxzz9ZeaVQeLpPKyzejT7CqJowckAc8OTzxO8CcQtGmCA4zwvkL5maxg==","signatures":[{"sig":"MEUCIC0TiBeAHX6stIShj3wvX50PARHUsDwZ5VZ2mBgWyHTwAiEAx8YMnlI9dT/ErmaPJji0E3cHQ9aSIwz6mLQ9G2/e9Mc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182524},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/icons-material\": \"^5.15.20\",\n    \"@mui/material\": \"^5.15.20\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-router-dom\": \"^6.23.1\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"c3435a0ede233207fb72f36c4f9bcc9ca5cf48dd","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^7.117.0","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.0-beta.0_1718468728602_0.7853403107237715","host":"s3://npm-registry-packages"}},"11.0.0-beta.1":{"name":"@laboratoria/sdk-react","version":"11.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-react@11.0.0-beta.1","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"0c137ee3bcb330f76c78b1006716463836106099","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.0-beta.1.tgz","fileCount":83,"integrity":"sha512-XMyYY/cEdLWM2oJhVe4VI6I5cGJcMGQyPJuNsYralwR+wDfM+3ExbaNY/adELc7Uod+CzTb7U1K5JapEqBLiSA==","signatures":[{"sig":"MEUCIQDmmKmkP9W64sEoil7ge4c7kiEqpChUQ0ae2f5fRj8LcgIgQIx/uEuQK+Syqw0PGJRO3QVIAOYcT9MVBWCyGUJIgUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182537},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/icons-material\": \"^5.15.20\",\n    \"@mui/material\": \"^5.15.20\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-router-dom\": \"^6.23.1\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"e1e503f8e0449cde6591605d114c0c0ae8a4974d","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^8.9.2","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.0-beta.1_1718472490156_0.22697854369414783","host":"s3://npm-registry-packages"}},"11.0.0-beta.2":{"name":"@laboratoria/sdk-react","version":"11.0.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-react@11.0.0-beta.2","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"06d7a208d5c7e2835bdd3e205e7cf2491d7bea1d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.0-beta.2.tgz","fileCount":83,"integrity":"sha512-1nEefi/39BZ8Eu8g9/cMPPeGecBGyoM4nUw5kkWJgj1B3e81KHtT7igQrMmnnO73hbfbj57pZZ4FpcR8JPw6Fg==","signatures":[{"sig":"MEUCIQDbfeiDd3pfplC4HCgZqB0DdI8fkK97JZExHBBzl+/pSgIgNjxYv2rEgFi88vJsjbrsC41PeOO8lAb0GrgoD1dZKZU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182512},"main":"./src/index.js","type":"module","module":"./src/index.js","readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/icons-material\": \"^5.15.20\",\n    \"@mui/material\": \"^5.15.20\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-router-dom\": \"^6.23.1\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","engines":{"node":">=18"},"gitHead":"bb745d571a9f847389df5ad3a073b2a70d6d0ed6","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^8.9.2","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.0-beta.2_1718721982138_0.03373576615793494","host":"s3://npm-registry-packages"}},"11.0.0":{"name":"@laboratoria/sdk-react","version":"11.0.0","license":"MIT","_id":"@laboratoria/sdk-react@11.0.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"caaf385fc2926ceaab31f65a1d22e7de9de4e1dc","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.0.tgz","fileCount":83,"integrity":"sha512-o3kZy92MdKqRoonEy9mLbLYL+aYuOUyG7vz14BqFP1RSaUEKiTXfde3t+oaN13+tXaf5xR5ynjpDVH51G82NUw==","signatures":[{"sig":"MEUCIEs/v3+gCd2fzSgkqabFiJw0VbWOe+PXoAiwhfpHKaTUAiEAlIjj/XGZM3cyupCD0fvD7lla0E4JdH+0vw49qV+8vlQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182505},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"789b735b397434f88a2a4565acbb5e1f61c8b5e4","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^8.9.2","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.0_1718790826954_0.36368752355636746","host":"s3://npm-registry-packages"}},"11.0.1":{"name":"@laboratoria/sdk-react","version":"11.0.1","license":"MIT","_id":"@laboratoria/sdk-react@11.0.1","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"bafda3cc551975d7896ab80e2e37651e63bce849","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.1.tgz","fileCount":83,"integrity":"sha512-MlV8ZQpOhYzu3vNPOdf/dgWjXdwzclHA7638vo01t7LV6HTNcon7FDRKnmeJdgQNK1QZD1x2Q6IHSob6FiPrLw==","signatures":[{"sig":"MEQCIGsIcg6KNnmgZkc1k/jo2/AEOE+L2eb0yRpr4ta0zFrbAiAnz/F0mYHYBmMiCmazD8YTw8qoxbQsxxt7vSeR5ZqifA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182520},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"0487f6f19b4829adfe56f0ba83efe314a8eb844e","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^8.10.0","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.1_1718813921929_0.1382618922234613","host":"s3://npm-registry-packages"}},"11.0.2":{"name":"@laboratoria/sdk-react","version":"11.0.2","license":"MIT","_id":"@laboratoria/sdk-react@11.0.2","dist":{"shasum":"526031e22b25a0ff5d378bd50c3cb7a5d2628baa","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.0.2.tgz","fileCount":83,"integrity":"sha512-1+UPKFO3CwpgbmTLFPjls8zU4rhgTgQVHI4uW0R6vvhQIL99A/9bGjEWQRSPjulkmPgI60vMCGydW0DQPzYxwQ==","signatures":[{"sig":"MEUCIBE6X5RIDeSY0z+o8CinKDpco5WBJfeFJFNjWZQFwxEqAiEAsH2XU5mzVQ6Jz5U2d8VXIeisF3MEyPy677111Vu+5hs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182764},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"4bbc3978b9814477951eb1bd2b6ac09c57e3ab14","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^11.0.1","ace-builds":"^1.35.0","posthog-js":"^1.139.1","highlight.js":"^11.9.0","@sentry/react":"^8.10.0","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.0.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.23.1","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.0.2_1718910748858_0.5203083748946429","host":"s3://npm-registry-packages"}},"11.1.0":{"name":"@laboratoria/sdk-react","version":"11.1.0","license":"MIT","_id":"@laboratoria/sdk-react@11.1.0","dist":{"shasum":"e8db6480fa5e4abf1d9172e57350327985995348","tarball":"https://registry.npmjs.org/@laboratoria/sdk-react/-/sdk-react-11.1.0.tgz","fileCount":83,"integrity":"sha512-vKT2T0PwLu7PSl+L00UptGFmzdjotjptWbySenIeR6j/3zC227pnH3fERSeaVBJbghJilkl+nCjryXC6vw+4sg==","signatures":[{"sig":"MEUCIDX3d3evqiEivUyYku89Afn0LVVFmaHAq1/PQwc0nlqJAiEA2/fk7nxbAFwiTCcR/rRFoZ6dcnGIeZLmnfqn6AQoFAw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182950},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"gitHead":"a3a4e23ec6bfc9a923fa910c0e02251b2e682b53","scripts":{"test":"vitest run --coverage","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'","link-sdk-js":"rm -rf node_modules/@laboratoria/sdk-js && ln -s ../../../sdk-js node_modules/@laboratoria/"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react-ace":"^12.0.0","ace-builds":"^1.35.0","posthog-js":"^1.141.4","highlight.js":"^11.9.0","@sentry/react":"^8.12.0","mui-tel-input":"^5.1.2","lodash.debounce":"^4.0.8","@laboratoria/sdk-js":"^8.1.0","country-flag-emoji-polyfill":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0","@testing-library/react":"^16.0.0"},"peerDependencies":{"react":"^18.3.1","react-dom":"^18.3.1","@mui/material":"^5.15.20","react-router-dom":"^6.24.0","@mui/icons-material":"^5.15.20"},"_npmOperationalInternal":{"tmp":"tmp/sdk-react_11.1.0_1719423635713_0.5380222639131387","host":"s3://npm-registry-packages"}}},"time":{"created":"2024-02-13T11:42:07.180Z","modified":"2025-11-26T17:52:20.049Z","8.1.0-beta.0":"2024-02-13T11:42:07.470Z","8.1.0-beta.1":"2024-02-13T17:41:41.327Z","8.1.0":"2024-02-13T17:45:45.264Z","8.1.1":"2024-02-13T17:58:26.888Z","8.2.0":"2024-02-15T06:43:54.395Z","8.3.0-beta.0":"2024-02-15T09:43:41.669Z","8.3.0-beta.1":"2024-02-19T21:31:12.571Z","9.0.0-beta.1":"2024-02-20T10:36:37.468Z","9.0.0-beta.2":"2024-02-20T12:02:03.816Z","9.0.0":"2024-02-20T17:18:48.236Z","9.0.1":"2024-02-21T09:19:27.611Z","9.0.2":"2024-02-21T10:28:02.228Z","9.1.0":"2024-02-26T14:49:17.110Z","9.1.1":"2024-03-21T10:40:39.442Z","9.2.0-beta.0":"2024-04-24T19:58:28.396Z","9.2.0-beta.1":"2024-04-25T15:29:03.126Z","9.2.0-beta.2":"2024-04-25T20:11:14.702Z","9.2.0-beta.3":"2024-04-26T12:46:55.023Z","9.2.0-beta.4":"2024-04-26T21:19:16.266Z","9.2.0":"2024-05-14T17:18:47.155Z","10.0.0-alpha.0":"2024-05-27T18:22:32.571Z","10.0.0-alpha.1":"2024-06-04T20:57:45.275Z","10.0.0-alpha.2":"2024-06-10T15:01:07.161Z","10.0.0-beta.0":"2024-06-11T16:01:39.580Z","10.0.0":"2024-06-11T16:08:01.169Z","10.1.0":"2024-06-13T14:57:42.958Z","11.0.0-beta.0":"2024-06-15T16:25:28.793Z","11.0.0-beta.1":"2024-06-15T17:28:10.337Z","11.0.0-beta.2":"2024-06-18T14:46:22.333Z","11.0.0":"2024-06-19T09:53:47.101Z","11.0.1":"2024-06-19T16:18:42.241Z","11.0.2":"2024-06-20T19:12:29.062Z","11.1.0":"2024-06-26T17:40:35.995Z"},"license":"MIT","description":"Este repo contiene componentes, hooks y otras cositas que queremos reusar entre varias interfaces de Laboratoria. Este módulo depende de [`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y contiene un _hook_ (`useApp`) que nos da ","maintainers":[{"email":"mariano.crowe@laboratoria.la","name":"mariano-laboratoria"}],"readme":"# @laboratoria/sdk-react\n\nEste repo contiene componentes, hooks y otras cositas que queremos reusar entre\nvarias interfaces de Laboratoria. Este módulo depende de\n[`@laboratoria/sdk-js`](https://www.npmjs.com/package/@laboratoria/sdk-js) y\ncontiene un _hook_ (`useApp`) que nos da acceso al objeto `app` del SDK. Con lo\ncual, si estás usando este módulo desde una app en React, no necesitas instalar\ndirectamente `@laboratoria/sdk-js`.\n\nSe asume que las interfaces en cuestión todas usan [React](https://reactjs.org/),\n[React router DOM](https://reactrouter.com/) y [MUI](https://mui.com/).\n\n```json\n{\n  \"peerDependencies\": {\n    \"@mui/icons-material\": \"^5.15.20\",\n    \"@mui/material\": \"^5.15.20\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-router-dom\": \"^6.23.1\"\n  }\n}\n```\n\n## Variables de entorno\n\n* `FIREBASE_PROJECT`: Identificador del proyecto de [Firebase](https://firebase.google.com/)\n  a usar para auth.\n* `FIREBASE_API_KEY`: Llave pública del proyecto de Firebase que usar para\n  autenticación.\n* `LABORATORIA_CORE_API_URL`: URL a API HTTP de `core`. Por defecto es\n  `https://us-central1-outpost-272720.cloudfunctions.net/core-api/`.\n* `GA_ID`: para registrar los _eventos_ de [Google Analytics](./src/googleAnalyticsTag/index.js)\n  en el proyecto correspondiente.\n* `SENTRY_DSN`: Identificador de [Sentry](https://sentry.io/) para ingestión de\n  errores. Si no está presente, no se envían errores a Sentry.\n* `VERSION`: Versión de la interfaz que hace uso de `sdk-react`. Este valor se\n  usa al reportar errores a Sentry. Esta variable normalmente la seteamos desde\n  `vite.config.js` de la app que usa `sdk-react`. Por [ejemplo](https://github.com/Laboratoria/bootcamp.laboratoria.la/blob/7c04c76f6e2dcb4a450057626d449dd8f14845ab/vite.config.js#L29).\n* `PUBLIC_POSTHOG_KEY`: Llave pública del proyecto en Posthog donde enviar\n  datos. Si no está presente no se inicializa el SDK de Posthog.\n* `PUBLIC_POSTHOG_HOST`: Host the Posthog. (ver configuración de Posthog)\n\n## Hooks\n\n* [`useApp`](./src/app/)\n\nEl _hook_ `useApp` nos da una referencia al objeto `app` de\n`@laboratoria/sdk-js`, el cual se puede configurar a través de variables de\nentorno.\n\n## Componentes\n\n* [`BooleanPicker`](./src/BooleanPicker)\n* [`Challenge`](./src/Challenge)\n* [`Challenges`](./src/Challenges)\n* [`Content`](./src/Content)\n* [`CurrencyTextField`](./src/CurrencyTextField)\n* [`CustomTextField`](./src/CustomTextField)\n* [`DistinctFilter`](./src/DistinctFilter)\n* [`EnumPicker`](./src/EnumPicker)\n* [`Flag`](./src/Flag)\n* [`Loading`](./src/Loading)\n* [`MainBackground`](./src/MainBackground)\n* [`ModelAutocomplete`](./src/ModelAutocomplete)\n* [`ModelForm`](./src/ModelForm)\n* [`PhoneTextField`](./src/PhoneTextField)\n* [`ScrollRestoration`](./src/ScrollRestoration)\n* [`StudentProjectResults`](./src/StudentProjectResults)\n* [`UserAvatar`](./src/UserAvatar)\n\n## MUI\n\n* [`themeConfig`](./theme/index.js)\n* [Base CSS](./theme/index.css)\n\n## Example\n\nAgregamos fuentes via hoja de estilos en HTML.\n\n```html\n<link\n  href=\"https://fonts.googleapis.com/css2?family=Bitter:wght@100;200;400;500;700&family=Open+Sans:wght@300;400;500;700&display=swap\"\n  rel=\"stylesheet\">\n```\n\nEn archivo _main_ o _index_ de nuestra aplicación:\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AppProvider } from '@laboratoria/sdk-react';\nimport App from './components/App';\n\nReactDOM.render(\n  <React.StrictMode>\n    <AppProvider\n      App={App}\n      productionHostname=\"admin.laboratoria.la\"\n    />\n  </React.StrictMode>,\n  document.getElementById('root')\n);\n```\n\n## Workers\n\nEste repo incluye unos Web Workers (`src/workers/`) que debes incluir en tu\ncarpeta `public` o similar, para que estén disponibles el la raíz del servidor\nweb.\n\n***\n\n## Dev install\n\nPara usar este repo _linkeado_ localmente en otros repos que lo usen como\ndependencia (`laboratoria.la`, `admin`, etc):\n\n```sh\n# en @laboratoria/sdk-react\nrm -rf node_modules\nnpm i --omit peer\nnpm run link-sdk-js\n\n# en repo que usa @laboratoria/sdk-react\nnpm run link-sdk-react\nrm -rf node_modules/.vite* && npm start\n```\n","readmeFilename":"README.md"}