diff --git a/.github/workflows/build_base_images.yml b/.github/workflows/build_base_images.yml index e64cac59f..902888d43 100644 --- a/.github/workflows/build_base_images.yml +++ b/.github/workflows/build_base_images.yml @@ -26,10 +26,4 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - - run: | - # Required due to a buildx bug. - # See https://github.com/docker/buildx/issues/495#issuecomment-761562905 - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --name multiarch --driver docker-container --use - docker buildx inspect --bootstrap - .ci/build_${{ matrix.os }}.base.sh + - run: scripts/build_and_push_base_images.sh diff --git a/apps/fz_http/assets/css/app.scss b/apps/fz_http/assets/css/app.scss index efda9bbe9..b86c176ad 100644 --- a/apps/fz_http/assets/css/app.scss +++ b/apps/fz_http/assets/css/app.scss @@ -10,3 +10,4 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; @import "~@fortawesome/fontawesome-free/scss/solid.scss"; @import "~@fortawesome/fontawesome-free/scss/regular.scss"; @import "~@fortawesome/fontawesome-free/scss/brands.scss"; +@import "~admin-one-bulma-dashboard/src/scss/main.scss"; diff --git a/apps/fz_http/assets/package-lock.json b/apps/fz_http/assets/package-lock.json index 7066192c6..d6a3d50dd 100644 --- a/apps/fz_http/assets/package-lock.json +++ b/apps/fz_http/assets/package-lock.json @@ -1348,6 +1348,11 @@ "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true }, + "admin-one-bulma-dashboard": { + "version": "git+https://github.com/firezone/admin-one-bulma-dashboard.git#dbbeab13a6eb7f1a172439377f26abbaefa24921", + "from": "git+https://github.com/firezone/admin-one-bulma-dashboard.git", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1606,11 +1611,56 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "bulma": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.2.tgz", - "integrity": "sha512-e14EF+3VSZ488yL/lJH0tR8mFWiEQVCMi/BQUMi2TGMBOk+zrDg4wryuwm/+dRSHJw0gMawp2tsW7X1JYUCE3A==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.3.tgz", + "integrity": "sha512-0d7GNW1PY4ud8TWxdNcP6Cc8Bu7MxcntD/RRLGWuiw/s0a9P+XlH/6QoOIrmbj6o8WWJzJYhytiu9nFjTszk1g==", "dev": true }, + "bulma-checkbox": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bulma-checkbox/-/bulma-checkbox-1.1.1.tgz", + "integrity": "sha512-16aTRbXQBCdfk8nrWSVJCasD28FudeVF+G+mZfMJc2N/xTcU4XXjzQ6Iya1neKOgXkXQMx9nJOH2n8H7LRztNg==", + "dev": true, + "requires": { + "bulma": "^0.9.0" + } + }, + "bulma-radio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bulma-radio/-/bulma-radio-1.1.1.tgz", + "integrity": "sha512-aIHuMbpBGyZYx8KxbQRdjIy/0M9WHWz5VyxMggwxmCadnN0gd7gC/G96WUy9mhaoIfo9yX/Cf8pKQNinKH+w7w==", + "dev": true, + "requires": { + "bulma": "^0.9.0" + } + }, + "bulma-responsive-tables": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bulma-responsive-tables/-/bulma-responsive-tables-1.2.3.tgz", + "integrity": "sha512-3BMCFxqlfDytNEsLU/WXEJPaTI5YJFtTxrSPv40Fz37r2BpOgPkdIvaxP3E/mgAM1WzPfmgdi5U/vknglOzogg==", + "dev": true, + "requires": { + "bulma": "^0.9.0" + } + }, + "bulma-switch-control": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bulma-switch-control/-/bulma-switch-control-1.1.1.tgz", + "integrity": "sha512-uvPhLeiip1P/JZf9nidbA+7cQmUYKzS5vVbzhEAUk0oz6H3hPhHDIef/rUwqig1veRUd7vXBZ1hOcsM9gLxv/A==", + "dev": true, + "requires": { + "bulma": "^0.9.0" + } + }, + "bulma-upload-control": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bulma-upload-control/-/bulma-upload-control-1.2.0.tgz", + "integrity": "sha512-2raueVPVoG3KjHH+7Aok44nGSPIl76qzdkLKX/ziHAOwbiXBrlEYHXca8Hk0UDa0KElLiPT6Eb2Cvz+8FFUwBw==", + "dev": true, + "requires": { + "bulma": "^0.9.0" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1877,9 +1927,9 @@ "dev": true }, "css-loader": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", - "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", "dev": true, "requires": { "icss-utils": "^5.1.0", @@ -1906,12 +1956,12 @@ } }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.7", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -3949,9 +3999,9 @@ "dev": true }, "sass": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.1.tgz", - "integrity": "sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ==", + "version": "1.35.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.2.tgz", + "integrity": "sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" diff --git a/apps/fz_http/assets/package.json b/apps/fz_http/assets/package.json index 21ae8838a..23173b13d 100644 --- a/apps/fz_http/assets/package.json +++ b/apps/fz_http/assets/package.json @@ -21,17 +21,23 @@ "@babel/core": "^7.14.0", "@babel/preset-env": "^7.14.0", "@fortawesome/fontawesome-free": "^5.15.3", + "admin-one-bulma-dashboard": "git+https://github.com/firezone/admin-one-bulma-dashboard.git", "autoprefixer": "^9.8.6", "babel-loader": "^8.2.2", - "bulma": "^0.9.2", + "bulma": "^0.9.3", + "bulma-checkbox": "^1.1.1", + "bulma-radio": "^1.1.1", + "bulma-responsive-tables": "^1.2.3", + "bulma-switch-control": "^1.1.1", + "bulma-upload-control": "^1.2.0", "copy-webpack-plugin": "^8.1.1", - "css-loader": "^5.2.6", + "css-loader": "^5.2.7", "css-minimizer-webpack-plugin": "^3.0.1", "file-loader": "^6.2.0", "mini-css-extract-plugin": "^1.5.0", "postcss": "^8.2.15", "postcss-loader": "^3.0.0", - "sass": "^1.32.8", + "sass": "^1.35.2", "sass-loader": "^11.0.1", "source-map": "^0.7.3", "url-loader": "^4.1.1", diff --git a/apps/fz_http/assets/webpack.config.js b/apps/fz_http/assets/webpack.config.js index 00bb1ea41..14fe93b52 100644 --- a/apps/fz_http/assets/webpack.config.js +++ b/apps/fz_http/assets/webpack.config.js @@ -15,7 +15,8 @@ module.exports = (env, options) => ({ './js/app.js': glob.sync('./vendor/**/*.js').concat([ // Local JS files to include in the bundle './js/hooks.js', - './js/app.js' + './js/app.js', + './node_modules/admin-one-bulma-dashboard/src/js/main.js' ]) }, output: { diff --git a/apps/fz_http/lib/fz_http_web/controllers/admin_controller.ex b/apps/fz_http/lib/fz_http_web/controllers/admin_controller.ex new file mode 100644 index 000000000..034e745f9 --- /dev/null +++ b/apps/fz_http/lib/fz_http_web/controllers/admin_controller.ex @@ -0,0 +1,12 @@ +defmodule FzHttpWeb.AdminController do + @moduledoc """ + Testing the admin layout + """ + use FzHttpWeb, :controller + + plug :put_root_layout, "admin.html" + + def index(conn, _params) do + render(conn, "index.html") + end +end diff --git a/apps/fz_http/lib/fz_http_web/router.ex b/apps/fz_http/lib/fz_http_web/router.ex index 9c6d9309b..e4acad942 100644 --- a/apps/fz_http/lib/fz_http_web/router.ex +++ b/apps/fz_http/lib/fz_http_web/router.ex @@ -26,6 +26,8 @@ defmodule FzHttpWeb.Router do scope "/", FzHttpWeb do pipe_through :browser + get "/admin", AdminController, :index + live "/sign_in", SessionLive.New, :new live "/sign_up", UserLive.New, :new live "/account", AccountLive.Show, :show diff --git a/apps/fz_http/lib/fz_http_web/templates/admin/index.html.eex b/apps/fz_http/lib/fz_http_web/templates/admin/index.html.eex new file mode 100644 index 000000000..d0e334007 --- /dev/null +++ b/apps/fz_http/lib/fz_http_web/templates/admin/index.html.eex @@ -0,0 +1 @@ +Foobar diff --git a/apps/fz_http/lib/fz_http_web/templates/layout/admin.html.leex b/apps/fz_http/lib/fz_http_web/templates/layout/admin.html.leex new file mode 100644 index 000000000..dc9942f8b --- /dev/null +++ b/apps/fz_http/lib/fz_http_web/templates/layout/admin.html.leex @@ -0,0 +1,666 @@ + + + +
+ + + + <%= csrf_meta_tag() %> + <%= live_title_tag assigns[:page_title] || "FireZone" %> + "/> + + + + + + + ++ + Performance +
+ + + ++ + Clients +
+ + + +| + | Name | +Company | +City | +Progress | +Created | ++ |
|---|---|---|---|---|---|---|
|
+
+
+ |
+ Rebecca Bauch | +Daugherty-Daniel | +South Cory | ++ + | ++ Oct 25, 2020 + | ++ + | +
|
+
+
+ |
+ Felicita Yundt | +Johns-Weissnat | +East Ariel | ++ + | ++ Jan 8, 2020 + | ++ + | +
|
+
+
+ |
+ Mr. Larry Satterfield V | +Hyatt Ltd | +Windlerburgh | ++ + | ++ Dec 18, 2020 + | ++ + | +
|
+
+
+ |
+ Mr. Broderick Kub | +Kshlerin, Bauch and Ernser | +New Kirstenport | ++ + | ++ Sep 13, 2020 + | ++ + | +
|
+
+
+ |
+ Barry Weber | +Schulist, Mosciski and Heidenreich | +East Violettestad | ++ + | ++ Jul 24, 2020 + | ++ + | +
|
+
+
+ |
+ Bert Kautzer MD | +Gerhold and Sons | +Mayeport | ++ + | ++ Mar 30, 2020 + | ++ + | +
|
+
+
+ |
+ Lonzo Steuber | +Skiles Ltd | +Marilouville | ++ + | ++ Feb 12, 2020 + | ++ + | +
|
+
+
+ |
+ Jonathon Hahn | +Flatley Ltd | +Billiemouth | ++ + | ++ Dec 30, 2020 + | ++ + | +
|
+
+
+ |
+ Ryley Wuckert | +Heller-Little | +Emeraldtown | ++ + | ++ Jun 28, 2020 + | ++ + | +
|
+
+
+ |
+ Sienna Hayes | +Conn, Jerde and Douglas | +Jonathanfort | ++ + | ++ Mar 7, 2020 + | ++ + | +
Confirm action
+ +This will permanently delete Some Object
+This is sample modal
+