ocearo-ui 0.1.14 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/404.html +1 -1
- package/README.fr.md +200 -0
- package/README.md +62 -155
- package/__next.__PAGE__.txt +9 -0
- package/__next._full.txt +19 -0
- package/__next._head.txt +6 -0
- package/__next._index.txt +5 -0
- package/__next._tree.txt +3 -0
- package/_next/static/1OAeSzdmDSHTKcCCWBdc_/_buildManifest.js +16 -0
- package/_next/static/1OAeSzdmDSHTKcCCWBdc_/_clientMiddlewareManifest.json +1 -0
- package/_next/static/chunks/026b02dd01b65e37.js +1 -0
- package/_next/static/chunks/045c83caa4d15373.js +1 -0
- package/_next/static/chunks/0c7febf3d9c056ee.js +243 -0
- package/_next/static/chunks/149eaabf92bb073c.js +1 -0
- package/_next/static/chunks/1823e19419b12ae6.js +1 -0
- package/_next/static/chunks/19d7af5c164315cb.js +1 -0
- package/_next/static/chunks/1a24eba0d892e1dc.js +1 -0
- package/_next/static/chunks/1a84975c7599d36f.js +1 -0
- package/_next/static/chunks/209be887a3cd714b.js +1 -0
- package/_next/static/chunks/2296899bc46a0855.js +1 -0
- package/_next/static/chunks/24276a9441b3a17c.js +38 -0
- package/_next/static/chunks/3abe6b32c7676e49.js +1 -0
- package/_next/static/chunks/46da3d80b0234973.js +1 -0
- package/_next/static/chunks/4701c1fd00af0aba.js +1 -0
- package/_next/static/chunks/50601e46aa311f4e.js +1 -0
- package/_next/static/chunks/530c5a9cb07bfe47.js +1 -0
- package/_next/static/chunks/55be29098903fc19.js +1 -0
- package/_next/static/chunks/587d36d3311aba3e.js +1 -0
- package/_next/static/chunks/5fa37bbc3bb4edcd.js +1 -0
- package/_next/static/chunks/611f819ef2b8cd4e.js +38 -0
- package/_next/static/chunks/67f54f77fd717350.js +783 -0
- package/_next/static/chunks/727710e55f003daf.js +36 -0
- package/_next/static/chunks/72d89c358c0d5483.js +1 -0
- package/_next/static/chunks/7c60d9d425c20d52.js +1 -0
- package/_next/static/chunks/7d74814a0cc0f1a8.js +1 -0
- package/_next/static/chunks/7f118b65b59f0bb1.js +1 -0
- package/_next/static/chunks/81ee481bed3ff827.js +1 -0
- package/_next/static/chunks/8eb23f0ac435428f.js +1 -0
- package/_next/static/chunks/921d3675605372b8.js +1 -0
- package/_next/static/chunks/9395de7f841f8cc6.js +1 -0
- package/_next/static/chunks/94128f7a9098814a.js +9 -0
- package/_next/static/chunks/a27836f0b1f77ddb.js +9 -0
- package/_next/static/chunks/a2dfb6fc5208ab9b.js +1 -0
- package/_next/static/chunks/a5243176ef1c1147.js +3 -0
- package/_next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/_next/static/chunks/b7cd9a25676911d4.js +135 -0
- package/_next/static/chunks/b7d4903ad528d0c6.js +5 -0
- package/_next/static/chunks/b9d9a7e1cf2f6019.js +1 -0
- package/_next/static/chunks/ba6e6b346e330c1c.js +1 -0
- package/_next/static/chunks/c2ca71308a46ad5c.js +1 -0
- package/_next/static/chunks/c38ea03788f2be0c.js +135 -0
- package/_next/static/chunks/c3e7c45913a0a766.js +1 -0
- package/_next/static/chunks/c4793aebac6a4506.js +54 -0
- package/_next/static/chunks/c5ca29b672fb8724.js +1 -0
- package/_next/static/chunks/c8017b80fde2edc8.js +1 -0
- package/_next/static/chunks/c86a82a0ed86b6f2.js +1 -0
- package/_next/static/chunks/de921644e1dc2156.css +3 -0
- package/_next/static/chunks/eae6a84b628658b8.js +362 -0
- package/_next/static/chunks/ef44382534be9f84.js +1 -0
- package/_next/static/chunks/fba1dfce801bc8b9.js +1 -0
- package/_next/static/chunks/fe9ff98ffedd5a18.js +1 -0
- package/_next/static/chunks/ff1a16fafef87110.js +1 -0
- package/_next/static/chunks/ff5e78db2e2b69dd.js +1 -0
- package/_next/static/chunks/turbopack-67a2be08589a4d64.js +4 -0
- package/_not-found/__next._full.txt +14 -0
- package/_not-found/__next._head.txt +6 -0
- package/_not-found/__next._index.txt +5 -0
- package/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/_not-found/__next._not-found.txt +4 -0
- package/_not-found/__next._tree.txt +2 -0
- package/_not-found.html +1 -0
- package/_not-found.txt +14 -0
- package/index.html +1 -1
- package/index.txt +19 -7
- package/package.json +24 -18
- package/tides/larochelle/download_data.sh +1 -1
- package/_next/static/N96cZS9eZpTU4PbT3MlPa/_buildManifest.js +0 -1
- package/_next/static/chunks/0f8af13e.6652bd734d04208b.js +0 -158
- package/_next/static/chunks/117-35a8eb6f9457406b.js +0 -2
- package/_next/static/chunks/12.a4273af9b82657f2.js +0 -1
- package/_next/static/chunks/138.b9389f70773e44e6.js +0 -1
- package/_next/static/chunks/145.9caac3d586b84999.js +0 -1
- package/_next/static/chunks/154.4e0902ce8b0f7ad1.js +0 -1
- package/_next/static/chunks/188.1839b14fedef7718.js +0 -1
- package/_next/static/chunks/197.bcdd8d0debcb7089.js +0 -1
- package/_next/static/chunks/221.a545399d0aaf207f.js +0 -1
- package/_next/static/chunks/226.8e9a3229837caa21.js +0 -151
- package/_next/static/chunks/250.b26c37701919cf5c.js +0 -658
- package/_next/static/chunks/252.d7cc856ebccc7381.js +0 -1
- package/_next/static/chunks/268.8ed821c518bf7977.js +0 -1
- package/_next/static/chunks/274.f21dd1bea1190823.js +0 -1
- package/_next/static/chunks/353.c2bc481b7d81054f.js +0 -1
- package/_next/static/chunks/412.47bfcc49cfe552a4.js +0 -1
- package/_next/static/chunks/413.69878f8910eb07d8.js +0 -1
- package/_next/static/chunks/487.c2062e37ef29da57.js +0 -1
- package/_next/static/chunks/496.c440e137e5877fb7.js +0 -1
- package/_next/static/chunks/59.c2dfec0c5e965cb5.js +0 -1
- package/_next/static/chunks/610.44fac6b8e6928564.js +0 -1
- package/_next/static/chunks/677.b3c43a3f32b247f4.js +0 -1
- package/_next/static/chunks/687.798c6b33d9165736.js +0 -26
- package/_next/static/chunks/728.3987afab39b00f4e.js +0 -1
- package/_next/static/chunks/73.a6b96572b40c5751.js +0 -1
- package/_next/static/chunks/746-f1a5b23db9004a46.js +0 -1
- package/_next/static/chunks/751.a180d553d77914d3.js +0 -1
- package/_next/static/chunks/79.c90ea1de476d64c2.js +0 -1
- package/_next/static/chunks/870fdd6f.5b9af4fe6d08a9fb.js +0 -1
- package/_next/static/chunks/909.8d7e692d8852e057.js +0 -1
- package/_next/static/chunks/936.e779b5632883831e.js +0 -1
- package/_next/static/chunks/949.e273523eaad35cc5.js +0 -1
- package/_next/static/chunks/967.83ea5cd9e6c9bb4c.js +0 -1
- package/_next/static/chunks/975.8821fdf115b619c5.js +0 -1
- package/_next/static/chunks/app/_not-found/page-1beaea75cf9b93d1.js +0 -1
- package/_next/static/chunks/app/layout-5065440b6db19cf5.js +0 -1
- package/_next/static/chunks/app/page-32b46c3e73a86694.js +0 -1
- package/_next/static/chunks/b536a0f1.0563944ec53282b3.js +0 -197
- package/_next/static/chunks/bd904a5c-fce155daf9e9ba55.js +0 -36
- package/_next/static/chunks/fd9d1056-50d0a3499460e502.js +0 -1
- package/_next/static/chunks/framework-cf2d8f6f8d843863.js +0 -1
- package/_next/static/chunks/main-8dbe8bddfa3a978c.js +0 -1
- package/_next/static/chunks/main-app-ed02033afba81a43.js +0 -1
- package/_next/static/chunks/pages/_app-15e2daefa259f0b5.js +0 -1
- package/_next/static/chunks/pages/_error-28b803cb2479b966.js +0 -1
- package/_next/static/chunks/webpack-154ad04c6b65cdfa.js +0 -1
- package/_next/static/css/ac42e9cb9892c616.css +0 -3
- package/ocearo-ui-0.1.14.tgz +0 -0
- /package/_next/static/{N96cZS9eZpTU4PbT3MlPa → 1OAeSzdmDSHTKcCCWBdc_}/_ssgManifest.js +0 -0
- /package/_next/static/chunks/{polyfills-42372ed130431b0a.js → a6dad97d9634a72d.js} +0 -0
- /package/_next/static/media/{463dafcda517f24f-s.woff → GeistMonoVF-s.2cee7d16.woff} +0 -0
- /package/_next/static/media/{4473ecc91f70f139-s.woff → GeistVF-s.4c3c0b96.woff} +0 -0
package/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><link rel="preconnect" href="/" crossorigin=""/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/ocearo-ui/_next/static/css/ac42e9cb9892c616.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/webpack-154ad04c6b65cdfa.js"/><script src="/ocearo-ui/_next/static/chunks/fd9d1056-50d0a3499460e502.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/117-35a8eb6f9457406b.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/main-app-ed02033afba81a43.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="theme-color" media="(prefers-color-scheme: light)" content="#4bbcd8"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0a2e3d"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><link rel="manifest" href="./manifest.json" crossorigin="use-credentials"/><meta name="format-detection" content="telephone=no"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico" type="image/x-icon"/><link rel="icon" href="./favicon.svg" type="image/svg+xml" sizes="any"/><link rel="icon" href="./favicon-96x96.png" type="image/png" sizes="96x96"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><meta name="next-size-adjust"/><script src="/ocearo-ui/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_d559d3 __variable_692ef5 antialiased"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/ocearo-ui/_next/static/chunks/webpack-154ad04c6b65cdfa.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HC[\"/\",\"\"]\n2:HL[\"/ocearo-ui/_next/static/css/ac42e9cb9892c616.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[12846,[],\"\"]\n5:I[4707,[],\"\"]\n6:I[36423,[],\"\"]\nc:I[61060,[],\"\"]\n7:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n8:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n9:{\"display\":\"inline-block\"}\na:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"N96cZS9eZpTU4PbT3MlPa\",\"assetPrefix\":\"/ocearo-ui\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/css/ac42e9cb9892c616.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{}],[\"$\",\"body\",null,{\"className\":\"__variable_d559d3 __variable_692ef5 antialiased\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$8\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$9\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$a\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: light)\",\"content\":\"#4bbcd8\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: dark)\",\"content\":\"#0a2e3d\"}],[\"$\",\"meta\",\"3\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"4\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"5\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"link\",\"6\",{\"rel\":\"manifest\",\"href\":\"./manifest.json\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"7\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"8\",{\"name\":\"apple-mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"9\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}],[\"$\",\"meta\",\"10\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"11\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"12\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"13\",{\"rel\":\"icon\",\"href\":\"./favicon.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"14\",{\"rel\":\"icon\",\"href\":\"./favicon-96x96.png\",\"type\":\"image/png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",\"15\",{\"rel\":\"apple-touch-icon\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"meta\",\"16\",{\"name\":\"next-size-adjust\"}]]\n4:null\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><!--1OAeSzdmDSHTKcCCWBdc_--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/ocearo-ui/_next/static/chunks/de921644e1dc2156.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/530c5a9cb07bfe47.js"/><script src="/ocearo-ui/_next/static/chunks/b7d4903ad528d0c6.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/045c83caa4d15373.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/turbopack-67a2be08589a4d64.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" media="(prefers-color-scheme: light)" content="#4bbcd8"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0a2e3d"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><link rel="manifest" href="./manifest.json"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico" type="image/x-icon"/><link rel="icon" href="./favicon.svg" type="image/svg+xml" sizes="any"/><link rel="icon" href="./favicon-96x96.png" type="image/png" sizes="96x96"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><script src="/ocearo-ui/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/ocearo-ui/_next/static/chunks/530c5a9cb07bfe47.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"default\"]\n3:I[37457,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"default\"]\n4:I[97367,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"default\"]\n:HL[\"/ocearo-ui/_next/static/chunks/de921644e1dc2156.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"1OAeSzdmDSHTKcCCWBdc_\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/chunks/de921644e1dc2156.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{}],[\"$\",\"body\",null,{\"className\":\"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: light)\",\"content\":\"#4bbcd8\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: dark)\",\"content\":\"#0a2e3d\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[27201,[\"/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js\",\"/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"IconMark\"]\n6:null\na:[[\"$\",\"title\",\"0\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"./manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"4\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"7\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"./favicon.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"10\",{\"rel\":\"icon\",\"href\":\"./favicon-96x96.png\",\"type\":\"image/png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",\"11\",{\"rel\":\"apple-touch-icon\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"$Lc\",\"12\",{}]]\n"])</script></body></html>
|
package/README.fr.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
[](https://github.com/laborima/ocearo-ui/issues)
|
|
2
|
+
[](CONTRIBUTING.md)
|
|
3
|
+
[](https://opensource.org/licenses/Apache-2.0)
|
|
4
|
+
|
|
5
|
+
[English 🇺🇸](README.md)
|
|
6
|
+
|
|
7
|
+
# Ocearo UI
|
|
8
|
+
|
|
9
|
+
**La navigation rendue plus intelligente**
|
|
10
|
+
|
|
11
|
+
**Ocean Robot** va transformer la navigation avec une interface utilisateur (UI) intuitive et visuellement attrayante conçue pour le projet OpenPlotter. Basé sur la plateforme **Signal K**, Ocean Robot collecte et stocke les données du bateau pour fournir des informations en temps réel.
|
|
12
|
+
|
|
13
|
+
Inspiré par l'interface de l'autopilote Tesla, ce système offre une expérience futuriste et épurée adaptée aux navigateurs.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## **Dernières mises à jour (v0.1.16)**
|
|
18
|
+
|
|
19
|
+
- **Physique 3D avancée et Voiles** : Foc/génois et grand-voile en 3D complète avec cambrure dynamique, vrillage et visualisation de l'étai.
|
|
20
|
+
- **Gréement dynamique et tensions** : Visualisation en temps réel des lignes de gréement (pataras, hale-bas, cunningham, bordure) avec des dégradés de couleurs basés sur la tension.
|
|
21
|
+
- **HUD de réglage des voiles** : Indicateurs en arc pour le chariot de GV et les chariots de foc (FP/FS) intégrés au compas 3D.
|
|
22
|
+
- **Autopilote et Navigation** : Vue Autopilote dédiée, widget de Route avec les routes/waypoints Signal K, et laylines 3D haute précision.
|
|
23
|
+
- **Tableau de bord intégré** : Panneau droit avec radar AIS, marées, météo et niveaux de réservoirs pour une vision consolidée.
|
|
24
|
+
- **Surveillance complète** : Nouvelles jauges moteur (temp, pression, carburant), gestion du journal de carburant et vue journal de bord.
|
|
25
|
+
- **Météo et Prévisions** : Contexte météo avec support de l'API de prévisions Signal K et repli sur données hors ligne.
|
|
26
|
+
- **Unités et Chemins configurables** : Support des unités personnalisées (kn, m/s, °C, etc.) et des chemins de données Signal K préférés pour le vent et le cap.
|
|
27
|
+
- **UI/UX améliorée** : Panneau AIS repensé, barres de jauge style Tesla, barres d'outils transparentes et ciel dynamique jour/nuit.
|
|
28
|
+
- **Outils de débogage** : Panneau de débogage dédié avec contrôles de forçage du vent et bascule des axes 3D.
|
|
29
|
+
- **Stack technique moderne** : Migration complète vers Next.js 16, React 19 et Tailwind CSS v4.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## **Caractéristiques Clés**
|
|
34
|
+
|
|
35
|
+
### **Environnement 3D Dynamique**
|
|
36
|
+
- **Voiles Physiques** : Représentation 3D en temps réel de la grand-voile et du foc/génois avec cambrure, vrillage et prise de ris dynamiques selon le vent.
|
|
37
|
+
- **Gréement Interactif** : Visualisation des lignes de gréement (pataras, hale-bas, cunningham, bordure) avec dégradés de couleurs selon la tension.
|
|
38
|
+
- **Compas Intelligent** : **HUD de réglage** intégré affichant les positions recommandées des chariots pour une performance optimale.
|
|
39
|
+
- **Ciel Jour/Nuit** : Éclairage dynamique et environnement océanique synchronisés avec l'heure du navire.
|
|
40
|
+
|
|
41
|
+
### **Navigation et Conscience Situationnelle**
|
|
42
|
+
- **Radar AIS** : Visualisation 3D des navires à proximité avec des panneaux d'informations détaillés.
|
|
43
|
+
- **Routes et Navigation** : Widget dédié pour les routes Signal K, les waypoints et les calculs de navigation en temps réel.
|
|
44
|
+
- **Contexte Environnemental** : Niveaux de marée, prévisions météo (API Signal K) et surveillance de la profondeur avec assiette du navire.
|
|
45
|
+
- **Laylines** : Visualisation haute précision des laylines en 3D pour l'aide à la navigation tactique.
|
|
46
|
+
|
|
47
|
+
### **Systèmes du Navire**
|
|
48
|
+
- **Contrôle Autopilote** : Interface autopilote entièrement intégrée pour une gestion fluide du navire.
|
|
49
|
+
- **Surveillance Moteur** : Jauges complètes pour les températures, pressions et consommation de carburant avec suivi des pleins.
|
|
50
|
+
- **Indicateurs Style Tesla** : Barres modernes haute visibilité pour l'état des batteries et les niveaux de réservoirs.
|
|
51
|
+
- **Interface Personnalisable** : Support de 12 langues et unités configurables (métrique, impérial, nautique).
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## **Vues Principales**
|
|
56
|
+
|
|
57
|
+
### **Vue Croisière**
|
|
58
|
+
- **Visualisation 3D** : Fournit une vue 3D dynamique du navire, affichant des éléments critiques tels que :
|
|
59
|
+
- Direction du vent avec **laylines actives**
|
|
60
|
+
- Compas 3D de haute précision
|
|
61
|
+
- Niveau de profondeur et assiette du navire
|
|
62
|
+
- Navires à proximité représentés en 3D via les données AIS
|
|
63
|
+
- **HUD de réglage des voiles** : Indicateurs en arc en temps réel pour le chariot de GV et les chariots de foc au niveau du compas.
|
|
64
|
+
- Forme de voile basée sur la physique (cambrure et vrillage) reflétant les conditions de vent actuelles.
|
|
65
|
+
|
|
66
|
+

|
|
67
|
+
|
|
68
|
+
### **Vue au Mouillage**
|
|
69
|
+
- Représentation 3D simplifiée du navire avec les données clés au mouillage :
|
|
70
|
+
- Position GPS
|
|
71
|
+
- Heure
|
|
72
|
+
- Niveaux de marée
|
|
73
|
+
- Profondeur
|
|
74
|
+
- État de la batterie
|
|
75
|
+
|
|
76
|
+

|
|
77
|
+
|
|
78
|
+
### **Vue Aide au Stationnement**
|
|
79
|
+
- Utilise les données des caméras et capteurs pour simplifier l'accostage :
|
|
80
|
+
- Affichage des prédictions de trajectoire selon le vent et l'angle de barre
|
|
81
|
+
- Indications de vitesse et flux vidéo en direct de la caméra avant
|
|
82
|
+
- Mise en évidence des places de port disponibles
|
|
83
|
+
|
|
84
|
+
*En cours de développement.*
|
|
85
|
+
|
|
86
|
+

|
|
87
|
+
|
|
88
|
+
### **Autres Vues**
|
|
89
|
+
Visuels additionnels améliorant les fonctionnalités du système :
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+

|
|
93
|
+

|
|
94
|
+

|
|
95
|
+

|
|
96
|
+

|
|
97
|
+

|
|
98
|
+

|
|
99
|
+

|
|
100
|
+

|
|
101
|
+

|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## **Vision pour le Futur**
|
|
107
|
+
La feuille de route d'Ocean Robot inclut des fonctionnalités avancées visant à améliorer la sécurité et l'efficacité :
|
|
108
|
+
|
|
109
|
+
- **Détection d'objets par IA** pour les débris flottants et obstacles
|
|
110
|
+
- Intégration avec des systèmes de caméras avancés (ex: **see.ai**)
|
|
111
|
+
- **Améliorations futures** :
|
|
112
|
+
- Surveillance par caméra des penons pour des suggestions de réglage optimal
|
|
113
|
+
- Visualisation de la bathymétrie en 3D
|
|
114
|
+
- Visualisation des lignes de départ en 3D
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
Démo en direct : https://laborima.github.io/ocearo-ui/
|
|
119
|
+
|
|
120
|
+
Ou installez-le dans Signal K via le paquet NPM : https://www.npmjs.com/package/ocearo-ui
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## **Contribution**
|
|
125
|
+
|
|
126
|
+
Votre soutien rend Ocearo UI meilleur ! Voici comment vous pouvez contribuer :
|
|
127
|
+
|
|
128
|
+
- Signaler des bugs : Aidez-moi à corriger les problèmes en me signalant ce qui ne fonctionne pas.
|
|
129
|
+
- Suggérer des fonctionnalités : Partagez vos idées pour de nouvelles fonctionnalités.
|
|
130
|
+
- Contribuer au code : Soumettez des "pull requests" pour ajouter des fonctionnalités ou corriger des bugs.
|
|
131
|
+
- Soutenir le projet : Aidez à financer l'achat de webcams et de capteurs en m'offrant un café.
|
|
132
|
+
|
|
133
|
+
[](https://www.buymeacoffee.com/laborima)
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## **Développement et Déploiement**
|
|
138
|
+
|
|
139
|
+
### Compilation
|
|
140
|
+
|
|
141
|
+
Cloner les sources :
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
git clone https://github.com/laborima/ocearo-ui.git
|
|
145
|
+
cd ocearo-ui
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Installer les dépendances :
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npm install
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Démarrer le serveur de développement :
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npm run dev
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Accéder à l'interface sur [http://localhost:3000](http://localhost:3000).
|
|
161
|
+
|
|
162
|
+
### Modèles de Bateaux
|
|
163
|
+
Tous les modèles 3D ont une longueur de flottaison de 10 mètres et sont positionnés à 0 sur l'axe Y. Utilisez Blender pour les ajustements.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### Configuration des Marées
|
|
168
|
+
Créez des fichiers JSON sous le chemin suivant :
|
|
169
|
+
`public/tides/${harbor}/${MM}_${yyyy}.json`
|
|
170
|
+
|
|
171
|
+
Un script d'exemple permet de télécharger les données pour La Rochelle.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## **Déploiement sur OpenPlotter**
|
|
176
|
+
|
|
177
|
+
La méthode recommandée est d'utiliser le paquet npm publié.
|
|
178
|
+
Pour déployer votre propre compilation :
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
git clone https://github.com/laborima/ocearo-ui.git
|
|
182
|
+
cd ocearo-ui
|
|
183
|
+
npm install
|
|
184
|
+
NODE_ENV=production npm run build
|
|
185
|
+
scp -r ./out/* pi@openplotter.local:/home/pi/.signalk/node_modules/ocearo-ui
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
⚠ Avertissement de Navigation
|
|
191
|
+
|
|
192
|
+
Utiliser avec précaution – Ne remplace pas les systèmes de navigation officiels.
|
|
193
|
+
|
|
194
|
+
Ocearo UI est conçu pour améliorer la conscience situationnelle et visualiser les données en temps réel. Cependant, ce logiciel n'est pas un système de navigation ou de sécurité certifié.
|
|
195
|
+
|
|
196
|
+
- Vérifiez toujours les données avec les cartes marines officielles et les appareils GPS.
|
|
197
|
+
- Gardez une conscience situationnelle et suivez les règles de sécurité maritime.
|
|
198
|
+
- Les développeurs d'Ocearo UI ne sont pas responsables des incidents ou erreurs de navigation liés à l'utilisation de ce logiciel.
|
|
199
|
+
|
|
200
|
+
En utilisant Ocearo UI, vous acceptez les risques inhérents à l'utilisation d'outils de navigation non certifiés. Naviguez de manière responsable !
|
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
[](CONTRIBUTING.md)
|
|
3
3
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
4
4
|
|
|
5
|
+
[Français 🇫🇷](README.fr.md)
|
|
5
6
|
|
|
6
7
|
# Ocearo UI
|
|
7
8
|
|
|
8
|
-
|
|
9
9
|
**Sailing Made Smarter**
|
|
10
10
|
|
|
11
11
|
**Ocean Robot** is set to transform sailing with an intuitive and visually engaging user interface (UI) designed for the OpenPlotter boat project. Powered by the **Signal K** platform, Ocean Robot gathers and stores boat data to provide real-time insights.
|
|
@@ -14,16 +14,54 @@ Inspired by Tesla's autopilot UI, this system delivers a futuristic and streamli
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## **Latest Updates (v0.1.16)**
|
|
18
|
+
|
|
19
|
+
- **Advanced 3D Physics & Sails**: Full 3D jib/genoa and mainsail with dynamic camber, twist, and forestay visualization.
|
|
20
|
+
- **Dynamic Rigging & Tensions**: Real-time visualization of rigging lines (backstay, vang, cunningham, outhaul) with tension-based color gradients.
|
|
21
|
+
- **Sail Trim HUD**: Compass-style arc indicators for sail car positions (GV/Mainsail and Jib) integrated into the 3D compass.
|
|
22
|
+
- **Autopilot & Navigation**: Dedicated Autopilot view, Course widget with Signal K routes/waypoints, and high-precision 3D laylines.
|
|
23
|
+
- **Integrated Dashboard**: Right-pane dashboard featuring AIS radar, tide, weather, and tank levels for consolidated awareness.
|
|
24
|
+
- **Comprehensive Monitoring**: New engine monitoring gauges (temp, pressure, fuel), fuel log utilities, and logbook view.
|
|
25
|
+
- **Weather & Forecasts**: Weather context with Signal K forecast API support and offline data fallbacks.
|
|
26
|
+
- **Configurable Units & Paths**: Support for custom units (kn, m/s, °C, etc.) and preferred Signal K data paths for wind and heading.
|
|
27
|
+
- **Enhanced UI/UX**: Redesigned AIS panel, Tesla-style gauge bars, transparent toolbars, and dynamic day/night skybox.
|
|
28
|
+
- **Debug Tools**: Dedicated debug panel with wind override controls and 3D axes toggle.
|
|
29
|
+
- **Modern Tech Stack**: Fully migrated to Next.js 16, React 19, and Tailwind CSS v4.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## **Key Features**
|
|
34
|
+
|
|
35
|
+
### **Dynamic 3D Environment**
|
|
36
|
+
- **Physically-based Sails**: Real-time 3D representation of mainsail and jib/genoa with dynamic camber, twist, and reefing based on wind conditions.
|
|
37
|
+
- **Interactive Rigging**: Visualization of rigging lines (backstay, vang, cunningham, outhaul) with tension-based color gradients.
|
|
38
|
+
- **Smart Compass**: Integrated **Sail Trim HUD** showing recommended car positions for optimal performance.
|
|
39
|
+
- **Day/Night Skybox**: Dynamic lighting and ocean environment that synchronizes with vessel time.
|
|
40
|
+
|
|
41
|
+
### **Navigation & Awareness**
|
|
42
|
+
- **AIS Radar**: Real-time 3D visualization of nearby vessels with detailed information panels.
|
|
43
|
+
- **Course & Routing**: Dedicated widget for Signal K routes, waypoints, and real-time course calculations.
|
|
44
|
+
- **Environmental Context**: Integrated tide levels, weather forecasts (Signal K Weather API), and depth monitoring with vessel attitude.
|
|
45
|
+
- **Laylines**: High-precision 3D laylines to assist in tactical navigation.
|
|
46
|
+
|
|
47
|
+
### **Vessel Systems**
|
|
48
|
+
- **Autopilot Control**: Fully integrated autopilot interface for seamless vessel management.
|
|
49
|
+
- **Engine Monitoring**: Comprehensive gauges for temperature, pressure, and fuel consumption with refill tracking.
|
|
50
|
+
- **Tesla-style Indicators**: Modern, high-visibility bars for battery status and tank levels.
|
|
51
|
+
- **Customizable UI**: Support for 12 languages and configurable units (metric, imperial, nautical).
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
17
55
|
## **Core Views**
|
|
18
56
|
|
|
19
57
|
### **Cruising View**
|
|
20
58
|
- **3D Visualization**: Provides a dynamic 3D view of the vessel, displaying critical elements such as:
|
|
21
|
-
- Wind direction with laylines
|
|
22
|
-
- Compass
|
|
23
|
-
- Depth level
|
|
24
|
-
- Nearby
|
|
25
|
-
- Real-time
|
|
26
|
-
|
|
59
|
+
- Wind direction with **active laylines**
|
|
60
|
+
- High-precision 3D Compass
|
|
61
|
+
- Depth level & vessel attitude
|
|
62
|
+
- Nearby vessels represented in 3D using AIS data
|
|
63
|
+
- **Sail Trim HUD**: Real-time arc indicators for mainsail traveller and jib cars at compass level.
|
|
64
|
+
- Physically-based sail shape (camber & twist) reflecting current wind conditions.
|
|
27
65
|
|
|
28
66
|

|
|
29
67
|
|
|
@@ -58,6 +96,10 @@ Additional visuals enhance the system's functionality:
|
|
|
58
96
|

|
|
59
97
|

|
|
60
98
|

|
|
99
|
+

|
|
100
|
+

|
|
101
|
+

|
|
102
|
+

|
|
61
103
|
|
|
62
104
|
---
|
|
63
105
|
|
|
@@ -69,7 +111,6 @@ Ocean Robot's roadmap includes advanced features aimed at enhancing safety and e
|
|
|
69
111
|
- **Future Enhancements**:
|
|
70
112
|
- Camera-based monitoring of sail indicators (*penons*) for optimal sail trim suggestions
|
|
71
113
|
- 3D Bathymetry visualization
|
|
72
|
-
- 3D Laylines visualization
|
|
73
114
|
- 3D Start lines visualization
|
|
74
115
|
|
|
75
116
|
---
|
|
@@ -84,10 +125,10 @@ Or install it in Signal K using the NPM package: https://www.npmjs.com/package/o
|
|
|
84
125
|
|
|
85
126
|
Your support and involvement make Ocearo UI better! Here are some ways you can contribute:
|
|
86
127
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
128
|
+
- Report bugs: Help me squash issues by letting me know when something isn't working as expected.
|
|
129
|
+
- Suggest features: Share your ideas for new features or improvements your feedback shapes the project!
|
|
130
|
+
- Contribute code: Submit pull requests to add features, fix bugs, or improve documentation.
|
|
131
|
+
- Support the project: Help fund the purchase of webcams, and sensors by buying me a coffee.
|
|
91
132
|
|
|
92
133
|
[](https://www.buymeacoffee.com/laborima)
|
|
93
134
|
|
|
@@ -97,7 +138,6 @@ Your support and involvement make Ocearo UI better! Here are some ways you can c
|
|
|
97
138
|
|
|
98
139
|
### Building
|
|
99
140
|
|
|
100
|
-
|
|
101
141
|
Clone sources:
|
|
102
142
|
|
|
103
143
|
```bash
|
|
@@ -108,7 +148,7 @@ cd ocearo-ui
|
|
|
108
148
|
Install dependencies:
|
|
109
149
|
|
|
110
150
|
```bash
|
|
111
|
-
npm install
|
|
151
|
+
npm install
|
|
112
152
|
```
|
|
113
153
|
|
|
114
154
|
Start the development server:
|
|
@@ -125,163 +165,30 @@ Edit the page by modifying `app/page.js`. Changes update automatically as you sa
|
|
|
125
165
|
|
|
126
166
|
All 3D boat models have a waterline length of 10 meters and are positioned at 0 on the Y-axis. Use Blender to make any adjustments.
|
|
127
167
|
|
|
128
|
-
|
|
129
168
|
---
|
|
130
169
|
### Setup Tides Data
|
|
131
170
|
|
|
132
171
|
Create JSON files and stores tide data under the following path:
|
|
133
172
|
|
|
134
|
-
|
|
135
|
-
public/tides/${harbor}/${MM}_${yyyy}.json
|
|
136
|
-
```
|
|
173
|
+
`public/tides/${harbor}/${MM}_${yyyy}.json`
|
|
137
174
|
|
|
138
175
|
A sample script allows downloading tide data for La Rochelle.
|
|
139
176
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
After downloading, the directory structure for La Rochelle will look like this:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
ls public/tides/larochelle/
|
|
146
|
-
01_2025.json 04_2025.json 07_2025.json 10_2025.json download_data.sh
|
|
147
|
-
02_2025.json 05_2025.json 08_2025.json 11_2025.json
|
|
148
|
-
03_2025.json 06_2025.json 09_2025.json 12_2025.json
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
#### JSON Format
|
|
152
|
-
|
|
153
|
-
Each JSON file contains tide data for a specific month. The structure follows this format:
|
|
154
|
-
|
|
155
|
-
```json
|
|
156
|
-
{
|
|
157
|
-
"2025-01-01": [
|
|
158
|
-
[
|
|
159
|
-
"tide.low",
|
|
160
|
-
"11:38",
|
|
161
|
-
"1.45m",
|
|
162
|
-
"---"
|
|
163
|
-
],
|
|
164
|
-
[
|
|
165
|
-
"tide.high",
|
|
166
|
-
"05:21",
|
|
167
|
-
"5.95m",
|
|
168
|
-
"80"
|
|
169
|
-
],
|
|
170
|
-
[
|
|
171
|
-
"tide.low",
|
|
172
|
-
"23:56",
|
|
173
|
-
"1.56m",
|
|
174
|
-
"---"
|
|
175
|
-
],
|
|
176
|
-
[
|
|
177
|
-
"tide.high",
|
|
178
|
-
"17:44",
|
|
179
|
-
"5.7m",
|
|
180
|
-
"81"
|
|
181
|
-
]
|
|
182
|
-
]
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Each tide entry consists of:
|
|
187
|
-
- **Type**: "tide.low" or "tide.high"
|
|
188
|
-
- **Time**: The time of the tide event (HH:MM)
|
|
189
|
-
- **Height**: Tide height in meters
|
|
190
|
-
- **Coefficient**: If applicable, the coefficient value (otherwise "---")
|
|
191
|
-
|
|
192
|
-
### Setup SSL for PWA
|
|
193
|
-
|
|
194
|
-
For complete documentation on setting up SSL, see:
|
|
195
|
-
|
|
196
|
-
[doc/ssl.md](doc/ssl.md)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
### Setup Polar Data
|
|
200
|
-
|
|
201
|
-
The default POLAR file is based on the Dufour 310 (POL11111) from ORC-DATA.
|
|
202
|
-
|
|
203
|
-
For improved polar data, you can download a more accurate dataset from:
|
|
204
|
-
|
|
205
|
-
[ORC Data Repository](https://github.com/jieter/orc-data/blob/master/site/data/)
|
|
206
|
-
|
|
207
|
-
Save the downloaded file under:
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
/public/boats/default/polar/polar.json
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Setup Documentation
|
|
214
|
-
|
|
215
|
-
Create an `index.json` file and place it under:
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
/public/docs/index.json
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
#### JSON Format
|
|
222
|
-
|
|
223
|
-
```json
|
|
224
|
-
[
|
|
225
|
-
{
|
|
226
|
-
"file": "a, c, e Series MFD Notice d_installation 87247-1-FR.pdf",
|
|
227
|
-
"title": "Installation Manual for a, c, e Series MFD"
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
"file": "Manuel propriétaire Dufour 310 Grand Large_2019-06_FR.pdf",
|
|
231
|
-
"title": "Owner's Manual for Dufour 310 Grand Large"
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
"file": "p70 et p70R Notice d_installation et d_utilisation 81355-1-FR.pdf",
|
|
235
|
-
"title": "Installation and User Guide for p70 and p70R"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"file": "OpenCPN User Manual-4-8-6-Sept-18-18-medium-compressed.pdf",
|
|
239
|
-
"title": "OpenCPN User Manual Version 4.8.6"
|
|
240
|
-
}
|
|
241
|
-
]
|
|
242
|
-
```
|
|
177
|
+
---
|
|
243
178
|
|
|
244
179
|
## **Deploying to OpenPlotter**
|
|
245
180
|
|
|
246
181
|
The recommended way is to use the npm published package.
|
|
247
|
-
If you want to deploy your own build
|
|
182
|
+
If you want to deploy your own build:
|
|
248
183
|
|
|
249
184
|
```bash
|
|
250
185
|
git clone https://github.com/laborima/ocearo-ui.git
|
|
251
186
|
cd ocearo-ui
|
|
252
|
-
npm install
|
|
187
|
+
npm install
|
|
253
188
|
NODE_ENV=production npm run build
|
|
254
|
-
scp -r
|
|
189
|
+
scp -r ./out/* pi@openplotter.local:/home/pi/.signalk/node_modules/ocearo-ui
|
|
255
190
|
```
|
|
256
191
|
|
|
257
|
-
### Adding to OpenPlotter Startup
|
|
258
|
-
|
|
259
|
-
Edit the LXDE startup configuration to launch the UI in kiosk mode:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
vi ~/.config/lxsession/LXDE-pi/autostart
|
|
263
|
-
@chromium-browser --start-fullscreen --kiosk --disable-restore-session-state --app=https://localhost:3000/ocearo-ui
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
- `--kiosk`: Launches Chromium in fullscreen mode, preventing exit via keyboard shortcuts.
|
|
267
|
-
- `--disable-restore-session-state`: Prevents Chromium from restoring tabs after unexpected closures.
|
|
268
|
-
- `--noerrdialogs`: Suppresses error dialogs.
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## **Sample Boat Integration**
|
|
273
|
-
|
|
274
|
-

|
|
275
|
-

|
|
276
|
-

|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
|
-
Thanks to OpenPlotter, Signal K, and the MacArthur Hat project for their foundational work. The system also integrates with additional tools such as Windy App, Kip Dashboard, and Freeboard-SK.
|
|
281
|
-
Thanks to Apparent Wind Sail-Trim Simulator https://github.com/flyinggorilla/simulator.atterwind.info for is work on sail representation
|
|
282
|
-
Thanks to https://jieter.github.io/orc-data/site/ for Polar data
|
|
283
|
-
Special thanks to open-source 3D model contributors for enhancing the visual experience.
|
|
284
|
-
|
|
285
192
|
---
|
|
286
193
|
|
|
287
194
|
⚠ Navigation Disclaimer
|
|
@@ -290,8 +197,8 @@ Use with Caution – Not a Substitute for Official Navigation Systems
|
|
|
290
197
|
|
|
291
198
|
Ocearo UI is designed to enhance sailing awareness and provide real-time data visualization. However, this software is not a certified navigation or safety system and should not be relied upon as the sole source of navigational information.
|
|
292
199
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
200
|
+
- Always cross-check data with official marine charts, GPS devices, and other navigation aids.
|
|
201
|
+
- Maintain situational awareness and follow maritime safety regulations.
|
|
202
|
+
- The developers of Ocearo UI are not liable for any incidents, accidents, or navigation errors that may arise from using this software.
|
|
296
203
|
|
|
297
204
|
By using Ocearo UI, you acknowledge and accept the inherent risks of relying on non-certified navigation tools. Always navigate responsibly!
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[47257,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"ClientPageRoot"]
|
|
3
|
+
3:I[81694,["/ocearo-ui/_next/static/chunks/50601e46aa311f4e.js","/ocearo-ui/_next/static/chunks/7c60d9d425c20d52.js","/ocearo-ui/_next/static/chunks/c3e7c45913a0a766.js","/ocearo-ui/_next/static/chunks/727710e55f003daf.js","/ocearo-ui/_next/static/chunks/587d36d3311aba3e.js","/ocearo-ui/_next/static/chunks/8eb23f0ac435428f.js"],"default"]
|
|
4
|
+
6:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"OutletBoundary"]
|
|
5
|
+
7:"$Sreact.suspense"
|
|
6
|
+
0:{"buildId":"1OAeSzdmDSHTKcCCWBdc_","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/50601e46aa311f4e.js","async":true}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/7c60d9d425c20d52.js","async":true}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/c3e7c45913a0a766.js","async":true}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/727710e55f003daf.js","async":true}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/587d36d3311aba3e.js","async":true}],["$","script","script-5",{"src":"/ocearo-ui/_next/static/chunks/8eb23f0ac435428f.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
|
|
7
|
+
4:{}
|
|
8
|
+
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
|
+
8:null
|
package/__next._full.txt
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[39756,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"default"]
|
|
3
|
+
3:I[37457,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"default"]
|
|
4
|
+
4:I[47257,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"ClientPageRoot"]
|
|
5
|
+
5:I[81694,["/ocearo-ui/_next/static/chunks/50601e46aa311f4e.js","/ocearo-ui/_next/static/chunks/7c60d9d425c20d52.js","/ocearo-ui/_next/static/chunks/c3e7c45913a0a766.js","/ocearo-ui/_next/static/chunks/727710e55f003daf.js","/ocearo-ui/_next/static/chunks/587d36d3311aba3e.js","/ocearo-ui/_next/static/chunks/8eb23f0ac435428f.js"],"default"]
|
|
6
|
+
8:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"OutletBoundary"]
|
|
7
|
+
9:"$Sreact.suspense"
|
|
8
|
+
b:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"ViewportBoundary"]
|
|
9
|
+
d:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"MetadataBoundary"]
|
|
10
|
+
f:I[68027,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"default"]
|
|
11
|
+
:HL["/ocearo-ui/_next/static/chunks/de921644e1dc2156.css","style"]
|
|
12
|
+
:HC["/",""]
|
|
13
|
+
0:{"P":null,"b":"1OAeSzdmDSHTKcCCWBdc_","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/de921644e1dc2156.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/50601e46aa311f4e.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/7c60d9d425c20d52.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/c3e7c45913a0a766.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/727710e55f003daf.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/587d36d3311aba3e.js","async":true,"nonce":"$undefined"}],["$","script","script-5",{"src":"/ocearo-ui/_next/static/chunks/8eb23f0ac435428f.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[]],"S":true}
|
|
14
|
+
6:{}
|
|
15
|
+
7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
16
|
+
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","2",{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"#4bbcd8"}],["$","meta","3",{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"#0a2e3d"}]]
|
|
17
|
+
10:I[27201,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"IconMark"]
|
|
18
|
+
a:null
|
|
19
|
+
e:[["$","title","0",{"children":"Ocearo"}],["$","meta","1",{"name":"description","content":"Sailing made smarter"}],["$","link","2",{"rel":"manifest","href":"./manifest.json","crossOrigin":"$undefined"}],["$","meta","3",{"name":"format-detection","content":"telephone=no"}],["$","meta","4",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","5",{"name":"apple-mobile-web-app-title","content":"Ocearo"}],["$","meta","6",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","7",{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link","8",{"rel":"icon","href":"./favicon.ico","type":"image/x-icon"}],["$","link","9",{"rel":"icon","href":"./favicon.svg","type":"image/svg+xml","sizes":"any"}],["$","link","10",{"rel":"icon","href":"./favicon-96x96.png","type":"image/png","sizes":"96x96"}],["$","link","11",{"rel":"apple-touch-icon","href":"./apple-touch-icon.png"}],["$","$L10","12",{}]]
|
package/__next._head.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"ViewportBoundary"]
|
|
3
|
+
3:I[97367,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"MetadataBoundary"]
|
|
4
|
+
4:"$Sreact.suspense"
|
|
5
|
+
5:I[27201,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"IconMark"]
|
|
6
|
+
0:{"buildId":"1OAeSzdmDSHTKcCCWBdc_","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],["$","meta","2",{"name":"theme-color","media":"(prefers-color-scheme: light)","content":"#4bbcd8"}],["$","meta","3",{"name":"theme-color","media":"(prefers-color-scheme: dark)","content":"#0a2e3d"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Ocearo"}],["$","meta","1",{"name":"description","content":"Sailing made smarter"}],["$","link","2",{"rel":"manifest","href":"./manifest.json"}],["$","meta","3",{"name":"format-detection","content":"telephone=no"}],["$","meta","4",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","5",{"name":"apple-mobile-web-app-title","content":"Ocearo"}],["$","meta","6",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","7",{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link","8",{"rel":"icon","href":"./favicon.ico","type":"image/x-icon"}],["$","link","9",{"rel":"icon","href":"./favicon.svg","type":"image/svg+xml","sizes":"any"}],["$","link","10",{"rel":"icon","href":"./favicon-96x96.png","type":"image/png","sizes":"96x96"}],["$","link","11",{"rel":"apple-touch-icon","href":"./apple-touch-icon.png"}],["$","$L5","12",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
1:"$Sreact.fragment"
|
|
2
|
+
2:I[39756,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"default"]
|
|
3
|
+
3:I[37457,["/ocearo-ui/_next/static/chunks/ff1a16fafef87110.js","/ocearo-ui/_next/static/chunks/a2dfb6fc5208ab9b.js"],"default"]
|
|
4
|
+
:HL["/ocearo-ui/_next/static/chunks/de921644e1dc2156.css","style"]
|
|
5
|
+
0:{"buildId":"1OAeSzdmDSHTKcCCWBdc_","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/de921644e1dc2156.css","precedence":"next"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"loading":null,"isPartial":false}
|