Compare commits

...

37 Commits

Author SHA1 Message Date
semantic-release-bot 8744ffe248 chore(release): 0.4.0 [skip ci]
# [0.4.0](https://git.lumeweb.com/LumeWeb/extension/compare/v0.3.0...v0.4.0) (2023-08-13)

### Bug Fixes

* **ci:** change publish step to prepare ([a3ba768](a3ba768885))
* **ci:** echo out url for release zip, and provide sha256 hash checksum. ([265bbe3](265bbe3b91))
* **ci:** install rename, not util-linux ([461e611](461e611670))
* **ci:** install util-linux for rename command ([6659de6](6659de6550))
* **ci:** strip out filename ([13c51dd](13c51dd7d0))

### Features

* add new popup app to go to login, dashboard, and logout ([df1895f](df1895f824))
2023-08-13 17:49:20 +00:00
Derrick Hammer 1cfab9a705
ci: need to use vars not env for EXTENSION_GUID 2023-08-13 13:41:23 -04:00
Derrick Hammer 5772f321ec
ci: only run publish if PKG env is set 2023-08-13 13:34:27 -04:00
Derrick Hammer e7e2c2502b
refactor: update branding icons 2023-08-13 12:42:37 -04:00
semantic-release-bot c70d72f028 chore(release): 0.4.0-develop.5 [skip ci]
# [0.4.0-develop.5](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.4...v0.4.0-develop.5) (2023-08-11)
2023-08-11 10:36:10 +00:00
Derrick Hammer 65a51fcc79
Merge remote-tracking branch 'origin/develop' into develop 2023-08-11 06:34:14 -04:00
Derrick Hammer 831d50f65c
refactor: update account copy 2023-08-11 06:33:57 -04:00
Derrick Hammer 52eb5b1efe
refactor: update onboarding copy 2023-08-11 06:33:37 -04:00
semantic-release-bot 06adae7c1c chore(release): 0.4.0-develop.4 [skip ci]
# [0.4.0-develop.4](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.3...v0.4.0-develop.4) (2023-08-10)
2023-08-10 07:49:35 +00:00
Derrick Hammer 7ebb55ffcf
Merge remote-tracking branch 'origin/develop' into develop 2023-08-10 03:47:25 -04:00
Derrick Hammer 569cb3c5c9
dep: update kernel hash 2023-08-10 03:47:20 -04:00
Derrick Hammer 0b9a78eacc
dep: update libkernel and libweb 2023-08-10 03:47:02 -04:00
semantic-release-bot 3fd78f50b1 chore(release): 0.4.0-develop.3 [skip ci]
# [0.4.0-develop.3](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.2...v0.4.0-develop.3) (2023-08-08)

### Bug Fixes

* **ci:** install rename, not util-linux ([461e611](461e611670))
2023-08-08 18:09:55 +00:00
Derrick Hammer f650a3149c
Merge remote-tracking branch 'origin/develop' into develop 2023-08-08 14:08:11 -04:00
Derrick Hammer 461e611670
fix(ci): install rename, not util-linux 2023-08-08 14:08:07 -04:00
semantic-release-bot e67a9aad4e chore(release): 0.4.0-develop.2 [skip ci]
# [0.4.0-develop.2](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.1...v0.4.0-develop.2) (2023-08-08)

### Bug Fixes

* **ci:** install util-linux for rename command ([6659de6](6659de6550))
2023-08-08 17:50:11 +00:00
Derrick Hammer e76b7f20bd
Merge branch 'develop' of git.lumeweb.com:LumeWeb/extension into develop 2023-08-08 13:48:31 -04:00
Derrick Hammer 6659de6550
fix(ci): install util-linux for rename command 2023-08-08 13:43:26 -04:00
semantic-release-bot 78c8a7864f chore(release): 0.4.0-develop.1 [skip ci]
# [0.4.0-develop.1](https://git.lumeweb.com/LumeWeb/extension/compare/v0.3.0...v0.4.0-develop.1) (2023-08-07)

### Bug Fixes

* **ci:** change publish step to prepare ([a3ba768](a3ba768885))
* **ci:** echo out url for release zip, and provide sha256 hash checksum. ([265bbe3](265bbe3b91))
* **ci:** strip out filename ([13c51dd](13c51dd7d0))

### Features

* add new popup app to go to login, dashboard, and logout ([df1895f](df1895f824))
2023-08-07 05:37:52 +00:00
Derrick Hammer 6074923086
ci: add repository to package.json 2023-08-07 01:36:18 -04:00
Derrick Hammer a3ba768885
fix(ci): change publish step to prepare 2023-08-07 01:34:32 -04:00
Derrick Hammer 13c51dd7d0
fix(ci): strip out filename 2023-08-07 01:12:17 -04:00
Derrick Hammer 265bbe3b91
fix(ci): echo out url for release zip, and provide sha256 hash checksum. 2023-08-07 00:55:07 -04:00
Derrick Hammer 0303eeaf15
ci: missing slash 2023-08-07 00:34:49 -04:00
Derrick Hammer b5ccda8425
ci: use vars not env 2023-08-06 23:52:08 -04:00
Derrick Hammer b37e680d1c
ci: command cleanup 2023-08-06 23:14:34 -04:00
Derrick Hammer 7295325295
ci: sudo required 2023-08-06 23:10:54 -04:00
Derrick Hammer f09c19c3e6
ci: single quotes required 2023-08-06 23:08:52 -04:00
Derrick Hammer 6aa2b9a5b0
ci: wrap in ${{}} 2023-08-06 23:07:13 -04:00
Derrick Hammer ffbe7a7df1
ci: add missing s3 step 2023-08-06 23:05:48 -04:00
Derrick Hammer 7902f6a0bc
ci: only run action on master branch 2023-08-06 22:53:24 -04:00
Derrick Hammer 9ea94740e3
ci: use env for guid 2023-08-06 22:52:09 -04:00
Derrick Hammer 98ce451c74
ci: workflow fixes to s3 and firefox 2023-08-06 22:52:08 -04:00
Derrick Hammer 6611372d73
ci: initial setup 2023-08-06 22:51:25 -04:00
Derrick Hammer 8bcb0e1ea4
dep: update hns resolver module hash 2023-08-04 12:09:46 -04:00
Derrick Hammer 3cd7406d20
dep: update kernel-handshake-client 2023-08-04 12:07:50 -04:00
Derrick Hammer df1895f824
feat: add new popup app to go to login, dashboard, and logout 2023-08-04 11:31:44 -04:00
20 changed files with 4032 additions and 168 deletions

70
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Build/Publish
on:
push:
branches:
- master
- develop
- develop-*
workflow_call:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- name: Install APT Packages
run: sudo apt-get install rename -y
- run: npm ci
- run: npm run build --if-present
env:
NODE_OPTIONS: "--max_old_space_size=4096"
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.GITEA_SSH_KEY }}
known_hosts: ${{ secrets.GITEA_KNOWN_HOST }}
- name: Download YQ
run: |
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq;
sudo chmod +x /usr/bin/yq
- name: Set up S3CMD
uses: s3-actions/s3cmd@v1.5.0
with:
provider: cloudflare
account_id: ${{ secrets.CF_ACCOUNT_ID }}
access_key: ${{ secrets.S3_ACCESS_KEY }}
secret_key: ${{ secrets.S3_SECRET_KEY }}
- name: Publish
run: npm run semantic-release
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish to S3
if: ${{ env.PKG != null }}
run: |
s3cmd put "${{ env.PKG }}" s3://${{ vars.S3_BUCKET }}/$(basename "${{ env.PKG }}")
echo Release Zip: https://extension-release.lumeweb.com/$(basename "${{ env.PKG }}")
echo Release Zip SHA56: $(sha256sum "${{ env.PKG }}" | awk '{print $1}')
- name: Publish to Firefox
uses: yayuyokitano/firefox-addon@v0.0.6-alpha
if: ${{ github.ref_name == 'master' && env.PKG != null }}
with:
api_key: ${{ secrets.AMO_ISSUER }}
api_secret: ${{ secrets.AMO_SECRET }}
guid: ${{ vars.EXTENSION_GUID }}
xpi_path: ${{ env.PKG }}
src_path: ${{ env.PKG_SRC }}
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled && failure() }}
with:
limit-access-to-actor: true

80
.releaserc.json Normal file
View File

@ -0,0 +1,80 @@
{
"plugins": [
[
"@semantic-release/commit-analyzer",
{
"releaseRules": [
{
"breaking": true,
"release": "major"
},
{
"revert": true,
"release": "patch"
},
{
"type": "feat",
"release": "minor"
},
{
"type": "fix",
"release": "patch"
},
{
"type": "perf",
"release": "patch"
},
{
"type": "dep",
"release": "patch"
},
{
"type": "refactor",
"release": "patch"
}
]
}
],
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md"
}
],
[
"@semantic-release/npm",
{
"npmPublish": false
}
],
[
"@semantic-release/exec",
{
"prepareCmd": "./prepare.sh ${nextRelease.version}"
}
],
[
"@semantic-release/git",
{
"assets": [
"package.json",
"CHANGELOG.md",
"npm-shrinkwrap.json",
"assets/manifest.json"
]
}
]
],
"branches": [
"master",
{
"name": "develop",
"prerelease": true
},
{
"name": "develop-*",
"prerelease": true
}
]
}

47
CHANGELOG.md Normal file
View File

@ -0,0 +1,47 @@
# [0.4.0](https://git.lumeweb.com/LumeWeb/extension/compare/v0.3.0...v0.4.0) (2023-08-13)
### Bug Fixes
* **ci:** change publish step to prepare ([a3ba768](https://git.lumeweb.com/LumeWeb/extension/commit/a3ba768885d0102cbd941fce78c089876734be49))
* **ci:** echo out url for release zip, and provide sha256 hash checksum. ([265bbe3](https://git.lumeweb.com/LumeWeb/extension/commit/265bbe3b9171b5711a58a89a70938dd0c709b3ea))
* **ci:** install rename, not util-linux ([461e611](https://git.lumeweb.com/LumeWeb/extension/commit/461e6116707df95d994d47eedb80cdee1a0bbe34))
* **ci:** install util-linux for rename command ([6659de6](https://git.lumeweb.com/LumeWeb/extension/commit/6659de6550a01a3cf0184bc54c8680a1baf89662))
* **ci:** strip out filename ([13c51dd](https://git.lumeweb.com/LumeWeb/extension/commit/13c51dd7d024da830055b7671c371d1292b2c06a))
### Features
* add new popup app to go to login, dashboard, and logout ([df1895f](https://git.lumeweb.com/LumeWeb/extension/commit/df1895f8243b515921210dd6248b4126a96564c6))
# [0.4.0-develop.5](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.4...v0.4.0-develop.5) (2023-08-11)
# [0.4.0-develop.4](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.3...v0.4.0-develop.4) (2023-08-10)
# [0.4.0-develop.3](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.2...v0.4.0-develop.3) (2023-08-08)
### Bug Fixes
* **ci:** install rename, not util-linux ([461e611](https://git.lumeweb.com/LumeWeb/extension/commit/461e6116707df95d994d47eedb80cdee1a0bbe34))
# [0.4.0-develop.2](https://git.lumeweb.com/LumeWeb/extension/compare/v0.4.0-develop.1...v0.4.0-develop.2) (2023-08-08)
### Bug Fixes
* **ci:** install util-linux for rename command ([6659de6](https://git.lumeweb.com/LumeWeb/extension/commit/6659de6550a01a3cf0184bc54c8680a1baf89662))
# [0.4.0-develop.1](https://git.lumeweb.com/LumeWeb/extension/compare/v0.3.0...v0.4.0-develop.1) (2023-08-07)
### Bug Fixes
* **ci:** change publish step to prepare ([a3ba768](https://git.lumeweb.com/LumeWeb/extension/commit/a3ba768885d0102cbd941fce78c089876734be49))
* **ci:** echo out url for release zip, and provide sha256 hash checksum. ([265bbe3](https://git.lumeweb.com/LumeWeb/extension/commit/265bbe3b9171b5711a58a89a70938dd0c709b3ea))
* **ci:** strip out filename ([13c51dd](https://git.lumeweb.com/LumeWeb/extension/commit/13c51dd7d024da830055b7671c371d1292b2c06a))
### Features
* add new popup app to go to login, dashboard, and logout ([df1895f](https://git.lumeweb.com/LumeWeb/extension/commit/df1895f8243b515921210dd6248b4126a96564c6))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,68 +1,73 @@
{
"description": "Lume Web is your decentralized gateway into the web3 internet, the web owned and controlled by its users",
"manifest_version": 2,
"name": "Lume Web",
"version": "0.3.0.3",
"homepage_url": "https://lumeweb.com",
"icons": {
"48": "icon.png",
"96": "icon@2x.png"
"description": "Lume Web is your decentralized gateway into the web3 internet, the web owned and controlled by its users",
"manifest_version": 2,
"name": "Lume Web",
"version": "0.4.0",
"homepage_url": "https://lumeweb.com",
"icons": {
"48": "icon.png",
"96": "icon@2x.png"
},
"permissions": [
"proxy",
"webRequest",
"webRequestBlocking",
"webNavigation",
"menus",
"<all_urls>"
],
"background": {
"scripts": [
"background.js"
]
},
"content_scripts": [
{
"matches": [
"http://kernel.lume/"
],
"js": [
"bootloader.js"
],
"run_at": "document_end",
"all_frames": true
},
"permissions": [
"proxy",
"webRequest",
"webRequestBlocking",
"webNavigation",
"menus",
{
"matches": [
"<all_urls>"
],
"background": {
"scripts": [
"background.js"
]
],
"js": [
"bridge.js"
],
"run_at": "document_end",
"all_frames": true
},
"content_scripts": [
{
"matches": [
"http://kernel.lume/"
],
"js": [
"bootloader.js"
],
"run_at": "document_end",
"all_frames": true
},
{
"matches": [
"<all_urls>"
],
"js": [
"bridge.js"
],
"run_at": "document_end",
"all_frames": true
},
{
"matches": [
"<all_urls>"
],
"js": [
"cryptoLoader.js"
],
"run_at": "document_start",
"all_frames": true
}
],
"web_accessible_resources": [
"icon@2x.png",
"*.html",
"assets/*"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';",
"browser_specific_settings": {
"gecko": {
"id": "contact@lumeweb.com",
"strict_min_version": "91.1.0"
}
{
"matches": [
"<all_urls>"
],
"js": [
"cryptoLoader.js"
],
"run_at": "document_start",
"all_frames": true
}
],
"web_accessible_resources": [
"icon@2x.png",
"*.html",
"assets/*"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';",
"browser_specific_settings": {
"gecko": {
"id": "contact@lumeweb.com",
"strict_min_version": "91.1.0"
}
},
"browser_action": {
"default_icon": "icon.png",
"default_title": "Lume Web",
"default_popup": "popup.html"
}
}

3469
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,14 @@
{
"name": "@lumeweb/extension",
"version": "0.3.0",
"version": "0.4.0",
"description": "Lume Web is your decentralized gateway into the web3 internet, the web owned and controlled by its users",
"main": "index.js",
"type": "module",
"readme": "ERROR: No README data found!",
"_id": "@lumeweb/extension@0.3.0",
"repository": {
"type": "git",
"url": "gitea@git.lumeweb.com:LumeWeb/extension.git"
},
"scripts": {
"prepare": "presetter bootstrap",
"build": "run build",
@ -13,6 +16,7 @@
},
"devDependencies": {
"@lumeweb/presetter-kernel-module-preset": "^0.1.0-develop.44",
"@semantic-release/exec": "^6.0.3",
"@tsconfig/svelte": "^5.0.0",
"@types/object-diff": "^0.0.2",
"@types/react": "^18.2.17",
@ -26,20 +30,21 @@
"sass": "^1.63.6",
"svelte-check": "^3.4.6",
"tailwindcss": "^3.3.3",
"typescript": "^5.1.6"
"typescript": "^5.1.6",
"web-ext": "^7.6.2"
},
"dependencies": {
"@helia/unixfs": "^1.4.0",
"@lumeweb/kernel-dns-client": "^0.1.0-develop.4",
"@lumeweb/kernel-eth-client": "^0.1.0-develop.13",
"@lumeweb/kernel-handshake-client": "^0.1.0-develop.3",
"@lumeweb/kernel-handshake-client": "^0.1.0-develop.4",
"@lumeweb/kernel-ipfs-client": "0.1.0-develop.21",
"@lumeweb/kernel-network-registry-client": "^0.1.0-develop.5",
"@lumeweb/kernel-peer-discovery-client": "0.0.2-develop.10",
"@lumeweb/kernel-swarm-client": "0.1.0-develop.5",
"@lumeweb/libkernel": "0.1.0-develop.34",
"@lumeweb/libkernel": "0.1.0-develop.35",
"@lumeweb/libresolver": "^0.1.0-develop.1",
"@lumeweb/libweb": "0.2.0-develop.27",
"@lumeweb/libweb": "0.2.0-develop.30",
"@lumeweb/tld-enum": "0.1.0-develop.1",
"@noble/ciphers": "^0.1.4",
"@peculiar/webcrypto": "^1.4.3",
@ -60,6 +65,6 @@
"webextension-polyfill": "^0.10.0"
},
"overrides": {
"@lumeweb/libkernel": "0.1.0-develop.34"
"@lumeweb/libkernel": "0.1.0-develop.35"
}
}

15
prepare.sh Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
export VERSION="$1"
export PKG="web-ext-artifacts/lume_web-${VERSION}.zip"
export PKG_SRC="web-ext-artifacts/lume_web-${VERSION}-src.zip"
yq -i '.version = strenv(VERSION)' assets/manifest.json
cp assets/manifest.json dist/
web-ext build -s dist
mkdir -p dist-src
cp -r assets shared src ui *.json .js dist-src/
zip -r "web-ext-artifacts/lume_web-${VERSION}-src.zip" dist-src/
echo "EXTENSION_VERSION=${VERSION}" >> $GITHUB_ENV
echo "PKG=${PKG}" >> $GITHUB_ENV
echo "PKG_SRC=${PKG_SRC}" >> $GITHUB_ENV

View File

@ -85,7 +85,7 @@ export async function doInit() {
const resolvers = [
"zduRfyhiAu871qg14RUapxxsBS4gaFxnWXs1jxf3guk2vVAhSx6vJp1kxo", // CID
"zduPorYNSjbkTipeAtDcW8bfRw4qhEb6rbf6yrMdGcxTthkmNkHfJGyyi7", // ENS
"zduKYXmsGfqDxsERGU2MQdKSjNvuaqe9a3KmYDEXHZWx1AfHPgam7TmCpF", // HNS
"zduKCaTxTn7yx2AcGL3VZeK6WnKKvZ3QhSCQSq7hgjWWqEcCpaiTnFaV51", // HNS
];
for (const resolver of resolvers) {

View File

@ -1,7 +1,7 @@
import { x25519 } from "@noble/curves/ed25519";
export const defaultKernelLink =
"zduQ9EzFDZLM7z7RKbGex8duA29tHKk5gqriPvRRLcr1CUCvi6BYPoxHN7";
"zduU8tCftgnWPaJZrmyjCwCSftsMkSyeR9tjFxbEiBEp5HwxUpvfFJmvg7";
const store = new Map<string, any>(
Object.entries({

View File

@ -149,7 +149,7 @@ p {
#content-text-wrapper {
position: relative;
margin-bottom: 3.2em;
margin-bottom: 6em;
transition: height 500ms, opacity 500ms;
> div {

View File

@ -208,10 +208,7 @@ export default function App() {
<div id="content-text-wrapper" ref={elContentTextWrapper}>
<div id="content-text-default" ref={elContentTextDefault}>
<h1>Access the open web with ease</h1>
<p>
Seamless access to the open web with Lume, integrated
Handshake (HNS) and Ethereum (ENS) Support.
</p>
<p>Seamless access to your favorite networks</p>
</div>
<div
id="content-text-create-account"

View File

@ -25,30 +25,42 @@ const contentPages = [
),
},
{
heading: <>Thank you for supporting an open web.</>,
heading: <>Your means to access all of the open web</>,
content: (
<>
Easy Access to Web3. With native Handshake (HNS) and Ethereum (ENS)
support, you can forget eth.link and hns.is. This is your gateway.
Web3 is made up of a diverse set of open networks and projects, all with
the intention of letting you be in control.
<br /> <br />
You can now <i>freely</i>&nbsp;access all these platforms and services
without a concern for censorship.
</>
),
},
{
heading: <>Thank you for supporting an open web.</>,
heading: <>An early demo</>,
content: (
<>
We are an independent, pure organization. We have decided not to take
money from venture capitalists. Nor do we have a large treasury funding
our work.
Be aware this system is effectively a prototype/product demo/tech demo.
<br /> <br />
It relies on you to provide feedback and the direction you want to see
it evolve.
<br /> <br />
In short, we are here to show you what is possible with web3, and the
rest is in your court!
<br /> <br />
We are starting off with: Handshake, Ethereum, and IPFS.
</>
),
},
{
heading: <>Thank you for supporting an open web.</>,
heading: <>The next step is to create an account</>,
content: (
<>
Stop worrying about being vendor-locked. Remain flexible and reduce your
storage costs by 50% or more. Lume is affordable storage on-demand.
If you are new to web3, this is a 12 word code that represents your
account. <i>Keep it safe</i>. If you share it, that person can access
everything and <b>you cannot revoke access</b>. <br /> <br />
If you are not new, consider this as a wallet, but for the web, not for
crypto.
</>
),
},

144
ui/apps/popup/App.scss Normal file
View File

@ -0,0 +1,144 @@
@font-face {
font-family: 'Jaldi';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("../../fonts/Jaldi-Regular.woff2") format('woff2');
}
body {
background: #1D1D1D;
min-width: 15em;
}
.body {
background: #3B3B3B;
display: flex;
flex-direction: column;
.button-container {
margin: auto;
//max-width: 13.7em;
margin-bottom: 2em;
margin-left: 1em;
margin-right: 1em;
display: flex;
}
button {
display: flex;
border-radius: 5px;
padding-left: 1.6em;
padding-right: 1.6em;
padding-top: 0.8em;
padding-bottom: 0.8em;
margin: auto;
cursor: pointer;
border: none;
font-size: 1em;
color: #F2F2F2;
> svg, span {
flex: 1;
}
}
.dashboard-btn {
background: #1B1B1B;
box-shadow: 1px 0 5px 0 rgb(27, 27, 27, 0.75);
> svg {
margin-right: 1em;
height: 1.2em;
width: 1.2em;
}
}
.login-btn {
background: #1B1B1B;
box-shadow: 1px 0 5px 0 rgb(27, 27, 27, 0.75);
border: none;
&:hover {
background: #3B3B3B;
}
}
}
.connection-text {
font-family: Jaldi;
font-weight: 400;
font-size: 0.875em;
line-height: 2.1em;
color: #BFBFBF;
margin: auto;
padding-left: 2em;
padding-right: 2em;
padding-top: 1em;
margin-bottom: 2em;
}
.connection {
width: 100%;
max-width: 7em;
margin: auto;
margin-top: 2em;
}
.header {
display: flex;
width: 100%;
max-width: 100%;
min-width: 2.75em;
margin-bottom: 0.5em;
.icons {
display: flex;
}
.logo,
.exit,
.logout {
padding: 1em;
flex: 1;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
width: 2em;
height: 2em;
max-width: 1.2em;
max-height: 1.2em;
svg {
width: 100%;
height: 100%;
fill: #8E8E93; // Set the fill color to gray for both icons
}
}
.exit, .logout {
&:hover {
svg {
fill: #62C554;
}
}
}
.logo {
margin-right: auto;
&.connected {
svg {
fill: #62C554;
}
}
}
.exit {
margin-left: auto;
}
}

163
ui/apps/popup/App.tsx Normal file
View File

@ -0,0 +1,163 @@
import "./App.scss";
import { useEffect, useState } from "react";
import { init, loginComplete } from "@lumeweb/libkernel/kernel";
import browser from "webextension-polyfill";
import classNames from "classnames";
import { clearLoginKey } from "../../../shared/keys.js";
export default function App() {
const [loggedIn, setLoggedIn] = useState(false);
useEffect(() => {
init().then(() => {
loginComplete().then(() => {
setLoggedIn(true);
});
});
}, [loggedIn]);
function openDashboard() {
browser.tabs.create({
url: browser.runtime.getURL("dashboard.html"),
active: true,
});
}
function openAccount() {
browser.tabs.create({
url: browser.runtime.getURL("account.html"),
active: true,
});
}
function close() {
window.close();
}
async function logout() {
await clearLoginKey();
window.location.reload();
}
return (
<>
<div className="header">
<div className={classNames("logo", { connected: loggedIn })}>
<svg
viewBox="0 0 339.18999 339.19"
xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-425.68,-251.35)">
<g>
<path d="m 697.89,382.61 c -0.96,-3.95 -3.58,-7.25 -7.1,-9.09 -1.93,-1.01 -4.13,-1.59 -6.46,-1.59 H 653.6 c -20.14,-0.03 -30.35,-10.26 -30.35,-30.42 0,-0.02 0,-0.04 0,-0.06 v 0 -76.11 c 0,-0.55 -0.04,-1.09 -0.1,-1.62 -0.01,-0.13 -0.04,-0.25 -0.06,-0.37 -0.06,-0.41 -0.13,-0.82 -0.23,-1.22 -0.03,-0.12 -0.06,-0.24 -0.09,-0.36 -0.11,-0.42 -0.24,-0.84 -0.39,-1.25 -0.03,-0.08 -0.05,-0.15 -0.08,-0.23 -0.19,-0.48 -0.4,-0.96 -0.64,-1.41 -0.01,-0.03 -0.04,-0.05 -0.05,-0.08 -0.28,-0.52 -0.58,-1.03 -0.92,-1.51 -0.01,-0.01 -0.02,-0.02 -0.03,-0.04 -0.34,-0.47 -0.7,-0.92 -1.09,-1.34 -0.04,-0.05 -0.08,-0.09 -0.13,-0.14 -0.81,-0.86 -1.72,-1.61 -2.71,-2.24 -0.09,-0.06 -0.19,-0.11 -0.28,-0.17 -0.43,-0.26 -0.88,-0.5 -1.34,-0.71 -0.08,-0.04 -0.15,-0.08 -0.23,-0.11 -0.53,-0.23 -1.07,-0.43 -1.63,-0.6 -0.11,-0.03 -0.22,-0.06 -0.33,-0.09 -0.45,-0.12 -0.92,-0.22 -1.39,-0.3 -0.16,-0.03 -0.31,-0.05 -0.47,-0.07 -0.58,-0.07 -1.18,-0.13 -1.78,-0.13 0,0 0,0 0,0 v 0 c -0.73,0 -1.43,0.07 -2.13,0.18 -0.12,0.02 -0.25,0.03 -0.37,0.06 -0.67,0.12 -1.32,0.29 -1.96,0.5 -0.1,0.03 -0.2,0.07 -0.3,0.11 -1.33,0.48 -2.56,1.15 -3.67,1.99 -0.05,0.04 -0.1,0.08 -0.16,0.12 -0.56,0.43 -1.08,0.91 -1.57,1.42 -0.02,0.02 -0.04,0.04 -0.06,0.07 -1,1.07 -1.84,2.3 -2.46,3.65 0,0 0,0.01 0,0.01 -0.3,0.64 -0.54,1.31 -0.74,2 -0.01,0.04 -0.04,0.09 -0.05,0.13 -0.15,0.55 -0.27,1.12 -0.36,1.7 -0.01,0.08 -0.03,0.16 -0.04,0.24 -0.08,0.6 -0.13,1.2 -0.13,1.82 v 76.17 c 0,0.02 0,0.04 0,0.07 0.02,28.2 15.37,58.31 58.36,58.33 0.01,0 0.02,0 0.03,0 0.01,0 0.02,0 0.03,0 h 30.63 c 3.86,0 7.36,-1.57 9.89,-4.1 2.53,-2.53 4.1,-6.03 4.1,-9.89 v -0.02 c -0.01,-1.15 -0.17,-2.24 -0.43,-3.3 z" />
<path d="m 556.94,318.33 c -3.95,0.96 -7.25,3.58 -9.09,7.1 -1.01,1.93 -1.59,4.13 -1.59,6.46 v 30.73 c -0.03,20.14 -10.26,30.35 -30.42,30.35 -0.02,0 -0.04,0 -0.06,0 v 0 h -76.11 c -0.55,0 -1.09,0.04 -1.62,0.1 -0.13,0.01 -0.25,0.04 -0.37,0.06 -0.41,0.06 -0.82,0.13 -1.22,0.23 -0.12,0.03 -0.24,0.06 -0.36,0.09 -0.42,0.11 -0.84,0.24 -1.25,0.39 -0.08,0.03 -0.15,0.05 -0.23,0.08 -0.48,0.19 -0.96,0.4 -1.41,0.64 -0.03,0.01 -0.05,0.04 -0.08,0.05 -0.52,0.28 -1.03,0.58 -1.51,0.92 -0.01,0.01 -0.02,0.02 -0.04,0.03 -0.47,0.34 -0.92,0.7 -1.34,1.09 -0.05,0.04 -0.09,0.08 -0.14,0.13 -0.86,0.81 -1.61,1.72 -2.24,2.71 -0.06,0.09 -0.11,0.19 -0.17,0.28 -0.26,0.43 -0.5,0.88 -0.71,1.34 -0.04,0.08 -0.08,0.15 -0.11,0.23 -0.23,0.53 -0.43,1.07 -0.6,1.63 -0.03,0.11 -0.06,0.22 -0.09,0.33 -0.12,0.45 -0.22,0.92 -0.3,1.39 -0.03,0.16 -0.05,0.31 -0.07,0.47 -0.07,0.58 -0.13,1.18 -0.13,1.78 0,0 0,0 0,0 v 0 c 0,0.73 0.07,1.43 0.18,2.13 0.02,0.12 0.03,0.25 0.06,0.37 0.12,0.67 0.29,1.32 0.5,1.96 0.03,0.1 0.07,0.2 0.11,0.3 0.48,1.33 1.15,2.56 1.99,3.67 0.04,0.05 0.08,0.1 0.12,0.16 0.43,0.56 0.91,1.08 1.42,1.57 0.02,0.02 0.04,0.04 0.07,0.06 1.07,1 2.3,1.84 3.65,2.46 0,0 0.01,0 0.01,0 0.64,0.3 1.31,0.54 2,0.74 0.04,0.01 0.09,0.04 0.13,0.05 0.55,0.15 1.12,0.27 1.7,0.36 0.08,0.01 0.16,0.03 0.24,0.04 0.6,0.08 1.2,0.13 1.82,0.13 h 76.17 c 0.02,0 0.04,0 0.07,0 28.2,-0.02 58.31,-15.37 58.33,-58.36 0,-0.01 0,-0.02 0,-0.03 0,-0.01 0,-0.02 0,-0.03 v -30.63 c 0,-3.86 -1.57,-7.36 -4.1,-9.89 -2.53,-2.53 -6.03,-4.1 -9.89,-4.1 h -0.02 c -1.15,0.01 -2.24,0.17 -3.3,0.43 z" />
<path d="m 492.66,459.28 c 0.96,3.95 3.58,7.25 7.1,9.09 1.93,1.01 4.13,1.59 6.46,1.59 h 30.73 c 20.14,0.03 30.35,10.26 30.35,30.42 0,0.02 0,0.04 0,0.06 v 0 76.11 c 0,0.55 0.04,1.09 0.1,1.62 0.01,0.13 0.04,0.25 0.06,0.37 0.06,0.41 0.13,0.82 0.23,1.22 0.03,0.12 0.06,0.24 0.09,0.36 0.11,0.42 0.24,0.84 0.39,1.25 0.03,0.08 0.05,0.15 0.08,0.23 0.19,0.48 0.4,0.96 0.64,1.41 0.01,0.03 0.04,0.05 0.05,0.08 0.28,0.52 0.58,1.03 0.92,1.51 0.01,0.01 0.02,0.02 0.03,0.04 0.34,0.47 0.7,0.92 1.09,1.34 0.04,0.05 0.08,0.09 0.13,0.14 0.81,0.86 1.72,1.61 2.71,2.24 0.09,0.06 0.19,0.11 0.28,0.17 0.43,0.26 0.88,0.5 1.34,0.71 0.08,0.04 0.15,0.08 0.23,0.11 0.53,0.23 1.07,0.43 1.63,0.6 0.11,0.03 0.22,0.06 0.33,0.09 0.45,0.12 0.92,0.22 1.39,0.3 0.16,0.03 0.31,0.05 0.47,0.07 0.58,0.07 1.18,0.13 1.78,0.13 0,0 0,0 0,0 v 0 c 0.73,0 1.43,-0.07 2.13,-0.18 0.12,-0.02 0.25,-0.03 0.37,-0.06 0.67,-0.12 1.32,-0.29 1.96,-0.5 0.1,-0.03 0.2,-0.07 0.3,-0.11 1.33,-0.48 2.56,-1.15 3.67,-1.99 0.05,-0.04 0.1,-0.08 0.16,-0.12 0.56,-0.43 1.08,-0.91 1.57,-1.42 0.02,-0.02 0.04,-0.04 0.06,-0.07 1,-1.07 1.84,-2.3 2.46,-3.65 0,0 0,-0.01 0,-0.01 0.3,-0.64 0.54,-1.31 0.74,-2 0.01,-0.04 0.04,-0.09 0.05,-0.13 0.15,-0.55 0.27,-1.12 0.36,-1.7 0.01,-0.08 0.03,-0.16 0.04,-0.24 0.08,-0.6 0.13,-1.2 0.13,-1.82 v -76.17 c 0,-0.02 0,-0.04 0,-0.07 -0.02,-28.2 -15.37,-58.31 -58.36,-58.33 -0.01,0 -0.02,0 -0.03,0 -0.01,0 -0.02,0 -0.03,0 h -30.63 c -3.86,0 -7.36,1.57 -9.89,4.1 -2.53,2.53 -4.1,6.03 -4.1,9.89 v 0.02 c 0.01,1.15 0.17,2.24 0.43,3.3 z" />
<path d="m 633.61,523.56 c 3.95,-0.96 7.25,-3.58 9.09,-7.1 1.01,-1.93 1.59,-4.13 1.59,-6.46 v -30.73 c 0.03,-20.14 10.26,-30.35 30.42,-30.35 0.02,0 0.04,0 0.06,0 v 0 h 76.11 c 0.55,0 1.09,-0.04 1.62,-0.1 0.13,-0.01 0.25,-0.04 0.37,-0.06 0.41,-0.06 0.82,-0.13 1.22,-0.23 0.12,-0.03 0.24,-0.06 0.36,-0.09 0.42,-0.11 0.84,-0.24 1.25,-0.39 0.08,-0.03 0.15,-0.05 0.23,-0.08 0.48,-0.19 0.96,-0.4 1.41,-0.64 0.03,-0.01 0.05,-0.04 0.08,-0.05 0.52,-0.28 1.03,-0.58 1.51,-0.92 0.01,-0.01 0.02,-0.02 0.04,-0.03 0.47,-0.34 0.92,-0.7 1.34,-1.09 0.05,-0.04 0.09,-0.08 0.14,-0.13 0.86,-0.81 1.61,-1.72 2.24,-2.71 0.06,-0.09 0.11,-0.19 0.17,-0.28 0.26,-0.43 0.5,-0.88 0.71,-1.34 0.04,-0.08 0.08,-0.15 0.11,-0.23 0.23,-0.53 0.43,-1.07 0.6,-1.63 0.03,-0.11 0.06,-0.22 0.09,-0.33 0.12,-0.45 0.22,-0.92 0.3,-1.39 0.03,-0.16 0.05,-0.31 0.07,-0.47 0.07,-0.58 0.13,-1.18 0.13,-1.78 0,0 0,0 0,0 v 0 c 0,-0.73 -0.07,-1.43 -0.18,-2.13 -0.02,-0.12 -0.03,-0.25 -0.06,-0.37 -0.12,-0.67 -0.29,-1.32 -0.5,-1.96 -0.03,-0.1 -0.07,-0.2 -0.11,-0.3 -0.48,-1.33 -1.15,-2.56 -1.99,-3.67 -0.04,-0.05 -0.08,-0.1 -0.12,-0.16 -0.43,-0.56 -0.91,-1.08 -1.42,-1.57 -0.02,-0.02 -0.04,-0.04 -0.07,-0.06 -1.07,-1 -2.3,-1.84 -3.65,-2.46 0,0 -0.01,0 -0.01,0 -0.64,-0.3 -1.31,-0.54 -2,-0.74 -0.04,-0.01 -0.09,-0.04 -0.13,-0.05 -0.55,-0.15 -1.12,-0.27 -1.7,-0.36 -0.08,-0.01 -0.16,-0.03 -0.24,-0.04 -0.6,-0.08 -1.2,-0.13 -1.82,-0.13 H 674.7 c -0.02,0 -0.04,0 -0.07,0 -28.2,0.02 -58.31,15.37 -58.33,58.36 0,0.01 0,0.02 0,0.03 0,0.01 0,0.02 0,0.03 V 510 c 0,3.86 1.57,7.36 4.1,9.89 2.53,2.53 6.03,4.1 9.89,4.1 h 0.02 c 1.15,-0.01 2.24,-0.17 3.3,-0.43 z" />
</g>
</g>
</svg>
</div>
<div className="icons">
{loggedIn && (
<div className="logout" onClick={logout}>
<svg
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
fillRule="evenodd"
clipRule="evenodd"
d="M6.31111 11.2L7.55556 12.4444L12 8L7.55556 3.55556L6.31111 4.8L8.62222 7.11111H0V8.88889H8.62222L6.31111 11.2ZM14.2222 0H1.77778C0.8 0 0 0.8 0 1.77778V5.33333H1.77778V1.77778H14.2222V14.2222H1.77778V10.6667H0V14.2222C0 15.2 0.8 16 1.77778 16H14.2222C15.2 16 16 15.2 16 14.2222V1.77778C16 0.8 15.2 0 14.2222 0Z"
/>
</svg>
</div>
)}
<div className="exit" onClick={close}>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
<g>
<path d="M12.255 6.992a.75.75 0 1 0-1.023-1.097L9.037 7.94 6.992 5.745a.75.75 0 0 0-1.097 1.023L7.94 8.963l-2.195 2.045a.75.75 0 0 0 1.023 1.097l2.195-2.045 2.045 2.195a.75.75 0 0 0 1.097-1.023L10.06 9.037l2.195-2.045z" />
<path
fillRule="evenodd"
d="M.75 9a8.25 8.25 0 1 1 16.5 0A8.25 8.25 0 1 1 .75 9zM9 15.75a6.75 6.75 0 1 1 0-13.5 6.75 6.75 0 1 1 0 13.5z"
/>
</g>
</svg>
</div>
</div>
</div>
<div className="body">
<div className="connection">
<svg viewBox="0 0 113 113" xmlns="http://www.w3.org/2000/svg">
<g clipPath="url(#clip0_625_565)">
<path
d="M24.7188 63.5625H88.2812C101.912 63.5625 113 52.4744 113 38.8438C113 25.2131 101.912 14.125 88.2812 14.125H28.25C28.25 6.32094 21.9291 0 14.125 0C6.32094 0 0 6.32094 0 14.125C0 21.9291 6.32094 28.25 14.125 28.25C19.3371 28.25 23.843 25.3897 26.2937 21.1875H88.2812C98.0134 21.1875 105.938 29.1116 105.938 38.8438C105.938 48.5759 98.0134 56.5 88.2812 56.5H24.7188C11.0881 56.5 0 67.5881 0 81.2188C0 94.8494 11.0881 105.938 24.7188 105.938H86.7063C89.1499 110.14 93.6558 113 98.875 113C106.679 113 113 106.679 113 98.875C113 91.0709 106.679 84.75 98.875 84.75C91.0709 84.75 84.75 91.0709 84.75 98.875H24.7188C14.9866 98.875 7.0625 90.9509 7.0625 81.2188C7.0625 71.4866 14.9866 63.5625 24.7188 63.5625Z"
fill="url(#paint0_linear_625_565)"
/>
</g>
<defs>
<linearGradient
id="paint0_linear_625_565"
x1="56.5"
y1="0"
x2="56.5"
y2="113"
gradientUnits="userSpaceOnUse">
<stop stopColor="#1F6E46" />
<stop offset="1" stopColor="#484848" stopOpacity="0" />
</linearGradient>
<clipPath id="clip0_625_565">
<rect width="113" height="113" fill="white" />
</clipPath>
</defs>
</svg>
</div>
<div className="connection-text">
{!loggedIn && <>Looks like youre not connected.</>}
{loggedIn && <>Connected to Lume Web.</>}
</div>
<div className="button-container">
{loggedIn && (
<button className="dashboard-btn" onClick={openDashboard}>
<svg
width=""
height=""
viewBox=""
fill="none"
xmlns="http://www.w3.org/2000/svg">
<g clipPath="url(#clip0_625_287)">
<path
d="M0 8C0 9.58225 0.469192 11.129 1.34824 12.4446C2.22729 13.7602 3.47672 14.7855 4.93853 15.391C6.40034 15.9965 8.00887 16.155 9.56072 15.8463C11.1126 15.5376 12.538 14.7757 13.6569 13.6569C14.7757 12.538 15.5376 11.1126 15.8463 9.56072C16.155 8.00887 15.9965 6.40034 15.391 4.93853C14.7855 3.47672 13.7602 2.22729 12.4446 1.34824C11.129 0.469192 9.58225 0 8 0C5.87827 0 3.84344 0.842855 2.34315 2.34315C0.842855 3.84344 0 5.87827 0 8Z"
fill="#BFBFBF"
/>
<path
d="M11.4999 10.545V12.0225C11.4999 12.0824 11.4763 12.1399 11.4342 12.1825C11.392 12.2251 11.3348 12.2494 11.2749 12.25H4.4999C4.44 12.2494 4.38277 12.2251 4.34065 12.1825C4.29852 12.1399 4.2749 12.0824 4.2749 12.0225V10.545C4.2749 9.35251 5.8924 8.38501 7.8874 8.38501C9.8824 8.38501 11.4999 9.35251 11.4999 10.545Z"
stroke="#1E1F21"
strokeWidth="2"
strokeMiterlimit="10"
strokeLinecap="round"
/>
<path
d="M7.88747 6.84C8.77389 6.84 9.49247 6.14828 9.49247 5.295C9.49247 4.44172 8.77389 3.75 7.88747 3.75C7.00105 3.75 6.28247 4.44172 6.28247 5.295C6.28247 6.14828 7.00105 6.84 7.88747 6.84Z"
stroke="#1E1F21"
strokeWidth="2"
strokeMiterlimit="10"
strokeLinecap="round"
/>
</g>
<defs>
<clipPath id="clip0_625_287">
<rect width="16" height="16" fill="white" />
</clipPath>
</defs>
</svg>
<span>Dashboard</span>
</button>
)}
{!loggedIn && (
<button className="login-btn" onClick={openAccount}>
<span>Login</span>
</button>
)}
</div>
</div>
</>
);
}

11
ui/popup.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lume Web</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="./popup.js"></script>
</body>
</html>

8
ui/popup.js Normal file
View File

@ -0,0 +1,8 @@
import { createRoot } from "react-dom";
import React from "react";
import App from "./apps/popup/App.tsx";
const root = createRoot(document.getElementById("app"));
root.render(React.createElement(App));

View File

@ -3,6 +3,7 @@ module.exports = {
"./onboarding.html",
"./account.html",
"./dashboard.html",
"./popup.html",
"./src/**/*.{js,ts, tsx}",
],
mode: "jit",

View File

@ -12,6 +12,7 @@ export default defineConfig({
onboarding: resolve(__dirname, "onboarding.html"),
account: resolve(__dirname, "account.html"),
dashboard: resolve(__dirname, "dashboard.html"),
popup: resolve(__dirname, "popup.html"),
},
},
minify: false,