{"_id":"@atlar-widgets/ramp-ui","_rev":"2-4a4c06ac0dbdd67cb387f42aa193ade0","name":"@atlar-widgets/ramp-ui","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.4":{"name":"@atlar-widgets/ramp-ui","version":"0.1.4","_id":"@atlar-widgets/ramp-ui@0.1.4","maintainers":[{"name":"hfribeiro","email":"ribeirh02@gmail.com"}],"dist":{"shasum":"5a20e7c4049ff08a782b668b6e539b900851f8f7","tarball":"https://registry.npmjs.org/@atlar-widgets/ramp-ui/-/ramp-ui-0.1.4.tgz","fileCount":13,"integrity":"sha512-iCHAxsK6V4Ot9d89Nh5eyoqqTFQYjsv7VNfOrqMCR9vSL2RZcLGSnwg2G1otzGomoisPBAqeYx7pRQEsG06B+w==","signatures":[{"sig":"MEYCIQDzkfyntuTBTirfj37kRDn1V0XkUdoD5kG3Zut/30cFSQIhANGzktF27HuW+nhQChskFzpOQBHhI94yaF0r/kDKA2Xf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2364606},"main":"dist/index.iife.js","type":"module","types":"dist/src/index.d.ts","engines":{"node":">=18"},"gitHead":"f0bee2ba101366b744c04b1290e18a3f325b5ee2","scripts":{"dev":"vite dev","lint":"eslint .","test":"vitest run --coverage","build":"vite build -c vite.config.lib.ts && tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationMap false --outDir dist","format":"prettier --write \"**/*\"","prepare":"git config core.hooksPath .husky && chmod +x .husky/pre-commit || true","format:check":"prettier --check \"**/*\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"hfribeiro","email":"ribeirh02@gmail.com"},"overrides":{"@testing-library/react":{"react":"^19","react-dom":"^19"}},"_npmVersion":"10.9.8","description":"RAMP antenna control widget — consolidated site tracking, targeting and status view","directories":{},"lint-staged":{"*.{js,jsx,ts,tsx}":["prettier --write","eslint --fix"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"sideEffects":true,"_nodeVersion":"22.23.1","dependencies":{"@mui/material":"^7","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/icons-material":"^7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8","vite":"^6","jsdom":"^26.1.0","react":"^19","eslint":"^9.34.0","vitest":"^3.2.4","globals":"^16.3.0","graphql":"^16","prettier":"^3.6.2","react-dom":"^19","@eslint/js":"^9.34.0","typescript":"~5.7.2","@types/node":"^20","lint-staged":"^16.1.6","react-redux":"^9.2.0","@types/react":"^19","@apollo/client":"^3","@reduxjs/toolkit":"^2","@types/react-dom":"^19","typescript-eslint":"^8.42.0","zen-observable-ts":"^1.2.5","@vitest/coverage-v8":"^3.2.4","junit-report-merger":"^9.0.3","@vitejs/plugin-react":"^4","@testing-library/react":"^16.0.0","eslint-config-prettier":"^10.1.8","eslint-formatter-junit":"^8.40.0","eslint-plugin-prettier":"^5.5.4","@testing-library/jest-dom":"^6.0.0","eslint-plugin-react-hooks":"^5.2.0","esbuild-css-modules-plugin":"^2.7.1","eslint-plugin-react-refresh":"^0.4.20","vite-plugin-css-injected-by-js":"^3.5.1","@ska-octopus-widget-sdk/widget-sdk":"^0.7.10"},"peerDependencies":{"react":"^19","graphql":"^16","react-dom":"^19","react-redux":"^9.2.0","@apollo/client":"^3","@reduxjs/toolkit":"^2","zen-observable-ts":"^1.2.5","@ska-octopus-widget-sdk/widget-sdk":"^0.7.10"},"_npmOperationalInternal":{"tmp":"tmp/ramp-ui_0.1.4_1782927033524_0.5798572265637685","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atlar-widgets/ramp-ui","version":"0.2.0","description":"RAMP antenna control widget — consolidated site tracking, targeting and status view","main":"dist/index.iife.js","types":"dist/src/index.d.ts","sideEffects":true,"scripts":{"build":"vite build -c vite.config.lib.ts && tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationMap false --outDir dist","prepublishOnly":"npm run build","dev":"vite dev","test":"vitest run --coverage","lint":"eslint .","format":"prettier --write \"**/*\"","format:check":"prettier --check \"**/*\"","prepare":"git config core.hooksPath .husky && chmod +x .husky/pre-commit || true"},"peerDependencies":{"@apollo/client":"^3","@reduxjs/toolkit":"^2","@ska-octopus-widget-sdk/widget-sdk":"^0.7.10","graphql":"^16","react":"^19","react-dom":"^19","react-redux":"^9.2.0","zen-observable-ts":"^1.2.5"},"devDependencies":{"@apollo/client":"^3","@eslint/js":"^9.34.0","@reduxjs/toolkit":"^2","@ska-octopus-widget-sdk/widget-sdk":"^0.7.10","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^16.0.0","@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","@vitejs/plugin-react":"^4","@vitest/coverage-v8":"^3.2.4","esbuild-css-modules-plugin":"^2.7.1","eslint":"^9.34.0","eslint-config-prettier":"^10.1.8","eslint-formatter-junit":"^8.40.0","eslint-plugin-prettier":"^5.5.4","eslint-plugin-react-hooks":"^5.2.0","eslint-plugin-react-refresh":"^0.4.20","globals":"^16.3.0","graphql":"^16","jsdom":"^26.1.0","junit-report-merger":"^9.0.3","lint-staged":"^16.1.6","prettier":"^3.6.2","react":"^19","react-dom":"^19","react-redux":"^9.2.0","tsup":"^8","typescript":"~5.7.2","typescript-eslint":"^8.42.0","vite":"^6","vite-plugin-css-injected-by-js":"^3.5.1","vitest":"^3.2.4","zen-observable-ts":"^1.2.5"},"overrides":{"@testing-library/react":{"react":"^19","react-dom":"^19"}},"type":"module","lint-staged":{"*.{js,jsx,ts,tsx}":["prettier --write","eslint --fix"],"*.{json,css,md,yml,yaml}":["prettier --write"]},"engines":{"node":">=18"},"dependencies":{"@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/icons-material":"^7","@mui/material":"^7"},"_id":"@atlar-widgets/ramp-ui@0.2.0","gitHead":"1d426ea4f445a1e844c2470604079fdd66865927","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-hxQQQjQuxITy/c8ktJm3JUSlnugItGVsGvbGUufEr/QcfYwaOMIU+SRtJ6Bfd39uUxhRIVc8d97W6rzgNbg8ow==","shasum":"7de0b61f84d58816f98ac0c25b579cc8a7115f88","tarball":"https://registry.npmjs.org/@atlar-widgets/ramp-ui/-/ramp-ui-0.2.0.tgz","fileCount":14,"unpackedSize":2361455,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDDUbwTrw8QHs2NGYulawnhl08ttWZ9lMRQ1v/g6qz2mQIgQnjxSFBnqlUoWUEb66blWdA6jOmMCO5gWy6kDQq4ngk="}]},"_npmUser":{"name":"hfribeiro","email":"ribeirh02@gmail.com"},"directories":{},"maintainers":[{"name":"hfribeiro","email":"ribeirh02@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ramp-ui_0.2.0_1782929001493_0.8655010301833455"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-01T17:30:33.362Z","modified":"2026-07-01T18:03:21.877Z","0.1.4":"2026-07-01T17:30:33.752Z","0.2.0":"2026-07-01T18:03:21.727Z"},"description":"RAMP antenna control widget — consolidated site tracking, targeting and status view","maintainers":[{"name":"hfribeiro","email":"ribeirh02@gmail.com"}],"readme":"# RAMP Widget\n\nConsolidated antenna-control widget for the Octopus dashboard. Replaces the\nformer three-tab RAMP UI (Site & Tracking / Antenna Target / Status) with a\nsingle focused view:\n\n- **Tracking (primary):** live azimuth/elevation, site & satellite geometry,\n  manual and auto tracking controls.\n- **Status rail (persistent):** controller health, errors/uptime, sensors and\n  LO/Ref oscillator locks.\n- **Advanced (collapsed):** coordination/mount offsets, mechanical backlash,\n  temperature compensation and controller config.\n\nData is fetched via a single GraphQL poll (`rampState`) and the UI follows the\nhost `themes.css` variables (light/dark/blue/green).\n\n```bash\ngit clone <repo-url> ramp-ui\ncd ramp-ui\nnpm install\nnpm run dev\n```\n\n## Backend contract\n\nThe widget expects a `rampState` query — see [src/graphql/ops.ts](src/graphql/ops.ts).\n","readmeFilename":"README.md"}