diff --git a/.github/ISSUE_TEMPLATE/BOUNTY.yml b/.github/ISSUE_TEMPLATE/BOUNTY.yml new file mode 100644 index 00000000..b3f9a807 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BOUNTY.yml @@ -0,0 +1,131 @@ +name: "Simple Bounty" +description: "Use this template to create a HEROES Simple Bounty via Github bot" +title: "Bounty: " +labels: ["bounty"] +assignees: heroes-bot-test +body: + - type: markdown + attributes: + value: | + Hi! Let's set up your bounty! Please don't change the template - @heroes-bot-test won't be able to help you. + + - type: dropdown + id: type + attributes: + label: What talent are you looking for? + options: + - Marketing + - Development + - Design + - Other + - Content + - Research + - Audit + + - type: textarea + id: description + attributes: + label: What you need to be done? + + - type: dropdown + id: tags + attributes: + label: Tags + description: Add tags that match the topic of the work + multiple: true + options: + - API + - Blockchain + - Community + - CSS + - DAO + - dApp + - DeFi + - Design + - Documentation + - HTML + - Javascript + - NFT + - React + - Rust + - Smart contract + - Typescript + - UI/UX + - web3 + - Translation + - Illustration + - Branding + - Copywriting + - Blogging + - Editing + - Video Creation + - Social Media + - Graphic Design + - Transcription + - Product Design + - Artificial Intelligence + - Quality Assurance + - Risk Assessment + - Security Audit + - Bug Bounty + - Code Review + - Blockchain Security + - Smart Contract Testing + - Penetration Testing + - Vulnerability Assessment + - BOS + - News + - Hackathon + - NEARCON2023 + - NEARWEEK + + - type: input + id: deadline + attributes: + label: Deadline + description: "Set a deadline for your bounty. Please enter the date in format: DD.MM.YYYY" + placeholder: "19.05.2027" + + - type: dropdown + id: currencyType + attributes: + label: Currency + description: What is the currency you want to pay? + options: + - USDC.e + - USDT.e + - DAI + - wNEAR + - USDt + - XP + - marmaj + - NEKO + - JUMP + - USDC + - NEARVIDIA + default: 0 + validations: + required: true + + - type: input + id: currencyAmount + attributes: + label: Amount + description: How much it will be cost? + + - type: markdown + attributes: + value: "## Advanced settings" + + - type: checkboxes + id: kyc + attributes: + label: KYC + description: "Use HEROES' KYC Verification, only applicants who passed HEROES' KYC can apply and work on this bounty!" + options: + - label: Use KYC Verification + + - type: markdown + attributes: + value: | + ### This cannot be changed once the bounty is live! diff --git a/.github/workflows/release-mainnet.yml b/.github/workflows/release-mainnet.yml deleted file mode 100644 index a57dd44e..00000000 --- a/.github/workflows/release-mainnet.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Deploy Components to Mainnet - -on: - push: - branches: [main] - -jobs: - deploy-mainnet: - uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main - with: - deploy-env: "mainnet" - bw-legacy: false - app-name: "builddao" - deploy-account-address: ${{ vars.BOS_SIGNER_ACCOUNT_ID }} - signer-account-address: ${{ vars.BOS_SIGNER_ACCOUNT_ID }} - signer-public-key: ${{ vars.BOS_SIGNER_PUBLIC_KEY }} - secrets: - SIGNER_PRIVATE_KEY: ${{ secrets.BOS_SIGNER_PRIVATE_KEY }} diff --git a/.github/workflows/release-new-mainnet.yml b/.github/workflows/release-new-mainnet.yml new file mode 100644 index 00000000..8c46b71a --- /dev/null +++ b/.github/workflows/release-new-mainnet.yml @@ -0,0 +1,20 @@ +name: Deploy Components to Mainnet + +on: + push: + branches: [main] + paths: + - apps/new/** + +jobs: + deploy-new-mainnet: + uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main + with: + deploy-env: "mainnet" + bw-legacy: false + app-name: "new" + deploy-account-address: "builddao.near" + signer-account-address: "builddao.near" + signer-public-key: "" + secrets: + SIGNER_PRIVATE_KEY: ${{ secrets.BOS_BUILDDAO_SIGNER_PRIVATE_KEY }} diff --git a/.github/workflows/release-new-testnet.yml b/.github/workflows/release-new-testnet.yml new file mode 100644 index 00000000..8566f512 --- /dev/null +++ b/.github/workflows/release-new-testnet.yml @@ -0,0 +1,21 @@ +name: Deploy Components to Testnet + +on: + push: + branches: [develop] + paths: + - apps/new/** + +jobs: + deploy-new-testnet: + uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main + with: + build-env: "testnet" + deploy-env: "testnet" + bw-legacy: false + app-name: "new" + deploy-account-address: "builddao.testnet" + signer-account-address: "builddao.testnet" + signer-public-key: "ed25519:6ycWXZES2zEGPurZqP35AUQx92aAzuS7r9ea1GcSQQiT" + secrets: + SIGNER_PRIVATE_KEY: ${{ secrets.BOS_BUILDDAO_TESTNET_SIGNER_PRIVATE_KEY }} diff --git a/.github/workflows/release-old-mainnet.yml b/.github/workflows/release-old-mainnet.yml new file mode 100644 index 00000000..84144209 --- /dev/null +++ b/.github/workflows/release-old-mainnet.yml @@ -0,0 +1,20 @@ +name: Deploy Components to Mainnet + +on: + push: + branches: [main] + paths: + - apps/old/** + +jobs: + deploy-old-mainnet: + uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main + with: + deploy-env: "mainnet" + bw-legacy: false + app-name: "old" + deploy-account-address: "buildhub.near" + signer-account-address: "buildhub.near" + signer-public-key: "ed25519:9xbjTrmijSb1WcGVimKULy132qND5r6GJjexmQCa6Jfy" + secrets: + SIGNER_PRIVATE_KEY: ${{ secrets.BOS_BUILDHUB_SIGNER_PRIVATE_KEY }} diff --git a/.github/workflows/release-old-testnet.yml b/.github/workflows/release-old-testnet.yml new file mode 100644 index 00000000..c0173f7e --- /dev/null +++ b/.github/workflows/release-old-testnet.yml @@ -0,0 +1,21 @@ +name: Deploy Components to Testnet + +on: + push: + branches: [develop] + paths: + - apps/old/** + +jobs: + deploy-old-testnet: + uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main + with: + build-env: "testnet" + deploy-env: "testnet" + bw-legacy: false + app-name: "old" + deploy-account-address: "buildhub.testnet" + signer-account-address: "buildhub.testnet" + signer-public-key: "ed25519:C4PKraMoeA21tnKvPda2x4JtvYdQ8e7NFgr43hKnsSxe" + secrets: + SIGNER_PRIVATE_KEY: ${{ secrets.BOS_BUILDHUB_TESTNET_SIGNER_PRIVATE_KEY }} diff --git a/.github/workflows/release-testnet.yml b/.github/workflows/release-testnet.yml deleted file mode 100644 index 7b4dd42f..00000000 --- a/.github/workflows/release-testnet.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Deploy Components to Testnet - -on: - push: - branches: [develop] - -jobs: - deploy-staging: - uses: nearbuilders/bos-workspace/.github/workflows/deploy.yml@main - with: - build-env: "testnet" - deploy-env: "testnet" - bw-legacy: false - app-name: "builddao" - deploy-account-address: builddao.testnet - signer-account-address: builddao.testnet - signer-public-key: ed25519:6ycWXZES2zEGPurZqP35AUQx92aAzuS7r9ea1GcSQQiT - secrets: - SIGNER_PRIVATE_KEY: ${{ secrets.BOS_TESTNET_SIGNER_PRIVATE_KEY }} diff --git a/.gitignore b/.gitignore index bb8d4523..e0ed2d14 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ yarn-error.log* target neardev data.json +/test-results diff --git a/CHANGELOG.md b/CHANGELOG.md index 52ca4a32..8314fc4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Change Log +## Version v1.x.x - 2024-MM-DD + +### Features + +- Enabled commit modal bypass. #260 + +### Bug Fixes + +- + +### Refactor and chores + +- + ## Version v1.0.0 - 2024-05-14 ### Features diff --git a/CODEOWNERS b/CODEOWNERS index afcb2db1..dffd3435 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -- @Megha-Dev-19 @itexpert120 @Jikugodwill @elliotBraem @saadiqbal-dev +* @Megha-Dev-19 @itexpert120 @Jikugodwill @elliotBraem @saadiqbal-dev diff --git a/aliases.mainnet.json b/aliases.mainnet.json index 6e384ff0..50c01a79 100644 --- a/aliases.mainnet.json +++ b/aliases.mainnet.json @@ -3,5 +3,7 @@ "mob": "mob.near", "near": "near", "socialdb": "social.near", - "gateway_url": "https://nearbuilders.org" + "gateway_url": "https://nearbuilders.org", + "new": "builddao.near", + "old": "buildhub.near" } diff --git a/aliases.testnet.json b/aliases.testnet.json index 9fd399f7..ef50d07f 100644 --- a/aliases.testnet.json +++ b/aliases.testnet.json @@ -3,5 +3,7 @@ "mob": "mike.testnet", "near": "discom.testnet", "socialdb": "v1.social08.testnet", - "gateway_url": "https://test.nearbuilders.org" + "gateway_url": "https://test.nearbuilders.org", + "new": "builddao.testnet", + "old": "buildhub.testnet" } diff --git a/apps/builddao/data.json b/apps/builddao/data.json deleted file mode 100644 index e4396395..00000000 --- a/apps/builddao/data.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "buildhub.near": {} -} diff --git a/apps/builddao/widget/components/UploadField.jsx b/apps/builddao/widget/components/UploadField.jsx deleted file mode 100644 index 5c0fd5c2..00000000 --- a/apps/builddao/widget/components/UploadField.jsx +++ /dev/null @@ -1,69 +0,0 @@ -const { Button } = VM.require("${config_account}/widget/components.Button") || { - Button: () => <>, -}; - -const UploadContainer = styled.div` - display: flex; - max-width: 390px; - min-height: 200px; - width: 100%; - height: 100%; - padding: 24px; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 24px; - - border-radius: 16px; - border: 1px dashed var(--stroke-color, rgba(255, 255, 255, 0.2)); - background: ${(props) => - props.background ? "var(--bg-2, #23242B)" : "var(--bg-1, #000000)"}; - - p { - color: var(--font-color, #fff); - text-align: center; - - /* Body/Medium-16px */ - font-size: 16px; - font-style: normal; - font-weight: 500; - line-height: normal; - margin: 0; - } - - p.secondary { - color: var(--font-muted-color, #cdd0d5); - text-align: center; - font-size: 12px; - font-style: normal; - font-weight: 400; - line-height: 16px; /* 133.333% */ - } - - i { - color: var(--font-color, #fff); - font-size: 2rem; - } -`; - -function UploadField({ background }) { - return ( - - -
-

Choose a file or drag & drop it here.

-

- JPEG, PNG, PDF, and MP4 formats, up to 50 MB. -

-
- -
- ); -} - -return { UploadField }; diff --git a/apps/builddao/widget/components/modals/projects/Create.jsx b/apps/builddao/widget/components/modals/projects/Create.jsx deleted file mode 100644 index 56e3d0ca..00000000 --- a/apps/builddao/widget/components/modals/projects/Create.jsx +++ /dev/null @@ -1,574 +0,0 @@ -const accountId = context.accountId; -const { Modal, Button, InputField, TextEditor } = VM.require( - "${config_account}/widget/components", -) || { - Modal: () => <>, - Button: () => <>, - InputField: () => <>, - TextEditor: () => <>, -}; -const { normalize } = VM.require("${alias_devs}/widget/lib.stringUtils") || { - normalize: () => {}, -}; - -const isNearAddress = (address) => { - if (typeof address !== "string") { - return false; - } - - // Check for unnamed wallet address format - if (address.length === 64 && /^[0-9A-F]+$/i.test(address)) { - return true; - } - - // Existing logic for account name validation (assuming .near or .testnet suffix) - if (!address.endsWith(".near") && !address.endsWith(".testnet")) { - return false; - } - - const parts = address.split("."); - - if (parts[0].length < 2 || parts[0].length > 32) { - return false; - } - - if (!/^[a-z0-9_-]+$/i.test(parts[0])) { - return false; - } - - return true; -}; - -const showModal = props.showModal; -const toggleModal = props.toggleModal; -const togglePotlockImportModal = props.togglePotlockImportModal ?? (() => {}); -const toggle = props.toggle; - -const tabs = [ - { id: "overview", label: "Overview", disabled: true, checked: true }, - { id: "activity", label: "Activity", checked: true }, - { id: "tasks", label: "Tasks", checked: true }, - // Uncomment after the support is added - // { id: "discussion", label: "Discussion", checked: false }, - // { id: "code", label: "Code", checked: false }, - // { id: "roadmap", label: "Roadmap", checked: false }, -]; - -const app = props.app ?? "${config_account}"; - -const poltlockProjectId = props.poltlockProjectId; -const potlockProjectProfile = null; -const potlockProjectTags = null; - -if (poltlockProjectId) { - potlockProjectProfile = Social.getr(`${poltlockProjectId}/profile`); -} - -const [tags, setTags] = useState(props.filters.tags ?? []); -const [projectAccount, setProjectAccount] = useState(accountId); -const [title, setTitle] = useState(""); -const [description, setDescription] = useState(""); -const [location, setLocation] = useState(""); -const [contributors, setContributors] = useState(""); -const [twitter, setTwitter] = useState(""); -const [gitHub, setGitHub] = useState(""); -const [telegram, setTelegram] = useState(""); -const [website, setWebsite] = useState(""); -const [selectedTabs, setSelectedTabs] = useState( - new Set(tabs.filter((tab) => tab.checked).map((tab) => tab.id.toLowerCase())), -); -const [avatar, setAvatar] = useState(""); -const [coverImage, setCoverImage] = useState(""); -const [teamSize, setTeamSize] = useState(teamSize ?? ""); -const [invalidContributorFound, setInvalidContributorFound] = useState(false); -const [invalidProjectAccount, setInvalidProjectAccount] = useState(false); - -function removeWhiteSpace(str) { - return str.replace(/\s/g, ""); -} - -useEffect(() => { - if (potlockProjectProfile && !title) { - const { - name, - description, - image, - backgroundImage, - linktree, - plTeam, - plCategories, - tags, - } = potlockProjectProfile; - const { twitter, github, telegram, website } = linktree; - setTitle(name); - setDescription(description); - setContributors(JSON.parse(plTeam ?? "[]")); - setTwitter(linktree.twitter ? `https://twitter.com/${twitter}` : null); - setGitHub(linktree.github ? `https://github.com/${github}` : null); - setTelegram(linktree.telegram ? `https://t.me/${telegram}` : null); - setWebsite( - website - ? website.includes("https://") - ? website - : `https://${website}` - : null, - ); - setAvatar(image); - setCoverImage(backgroundImage); - setProjectAccount(poltlockProjectId); - setTags( - (plCategories - ? JSON.parse(plCategories ?? "[]") - : Object.keys(tags ?? {}) - ).map((i) => removeWhiteSpace(i)), - ); - } -}, [potlockProjectProfile]); - -const handleCheckboxChange = (event) => { - const { id } = event.target; - const newSelectedTabs = new Set(selectedTabs); // Create a copy to avoid mutation - if (event.target.checked) { - newSelectedTabs.add(id.toLowerCase()); - } else { - newSelectedTabs.delete(id.toLowerCase()); - } - setSelectedTabs(newSelectedTabs); -}; - -const following = Social.get(`${context.accountId}/graph/follow/*`); -const followingAccountSuggestion = following && Object.keys(following); - -const handleTags = (tags) => { - let filtered = tags.map((tag) => - removeWhiteSpace(tag.customOption ? tag.label : tag), - ); - setTags(filtered); -}; - -const handleContributors = (contributors) => { - let filtered = contributors.map((contributor) => { - if (contributor.customOption) { - return contributor.label; - } else { - return contributor; - } - }); - const invalidAddress = filtered.find((address) => !isNearAddress(address)); - invalidAddress - ? setInvalidContributorFound(true) - : setInvalidContributorFound(false); - setContributors(filtered); -}; - -function isValidUrl(url) { - const regex = /^(?:(http|https):\/\/)?([^\s]+\.[^\s]+)?(?:\/[\w\-\.]+)*\/?$/; - return regex.test(url); -} - -const websiteUrlHandler = (e) => { - const url = e.target.value; - setWebsite(url); -}; - -const projectAccountIdHandler = (e) => { - const accountId = e.target.value; - const isValid = isNearAddress(accountId); - !isValid ? setInvalidProjectAccount(true) : setInvalidProjectAccount(false); - setProjectAccount(accountId); -}; - -const Main = styled.div` - display: flex; - gap: 1.5rem; - padding: 1rem; - - .form-control { - background: transparent; - } - .lhs { - width: 400px; - > div { - width: 100%; - } - } - .rhs { - width: 400px; - } - - @media only screen and (max-width: 768px) { - flex-direction: column; - .lhs, - .rhs { - width: auto; - } - } - - .form-group { - width: 100%; - & > div > div.p-2 { - background: transparent !important; - border: 1px solid var(--border-color, #ccc); - border-width: 0px 1px 1px; - border-top-style: initial; - border-right-style: solid; - border-bottom-style: solid; - border-left-style: solid; - border-top-color: initial; - border-right-color: rgb(222, 226, 230); - border-bottom-color: rgb(222, 226, 230); - border-left-color: rgb(222, 226, 230); - border-image: initial; - border-bottom-left-radius: 0.375rem; - border-bottom-right-radius: 0.375rem; - min-height: 9em; - * { - color: var(--text-color, #fff); - } - } - .nav-link { - color: var(--text-color, #fff); - } - } - .form-select { - background-color: #000 !important; - height: 100%; - } - .form-check { - display: flex; - flex-direction: row; - justify-content: space-between; - padding-left: 0px; - } - .form-check-input { - background-color: transparent; - border: 1px solid var(--border-color, #ccc); - &:checked { - background-color: var(--primary-color, #38c793); - border-color: var(--primary-color, #38c793); - &:focus { - box-shadow: none; - } - } - &:focus { - box-shadow: none; - } - &:not(:checked):not(:focus) { - background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27%23fff%27/%3e%3c/svg%3e"); - } - } - .location-team { - display: flex; - gap: 10px; - flex-direction: row; - @media only screen and (max-width: 768px) { - column-gap: 20px; - flex-direction: column; - } - } - .err, - .err-p_id { - color: #ff8888; - font-size: 12px; - padding: 0; - margin: 0; - } - .err-p_id { - margin-top: -20px; - } -`; - -function onCreateProject() { - const projectID = normalize(title, "-"); - const project = { - title, - description, - location, - tags, - contributors, - twitter, - github: gitHub, - telegram, - website, - tabs: Array.from(selectedTabs), - profileImage: avatar, - backgroundImage: coverImage, - projectAccountId: projectAccount, - teamSize, - }; - const data = { - project: { - [projectID]: { - "": JSON.stringify(project), - metadata: { - name: title, - description: description, - image: avatar, - backgroundImage: coverImage, - tags: - tags && tags.reduce((obj, item) => ({ ...obj, [item]: "" }), {}), // need to transform, - linktree: { - twitter: twitter, - github: gitHub, - telegram: telegram, - website: website, - }, - }, - }, - }, - [app]: { - project: { - [`${context.accountId}_project_${projectID}`]: "", - }, - }, - }; - if (projectAccount.includes(".sputnik-dao.near")) { - const policy = Near.view(projectAccount, "get_policy"); - const base64 = Buffer.from( - JSON.stringify({ - data: { - [projectAccount]: data, - }, - options: { refund_unused_deposit: true }, - }), - "utf-8", - ).toString("base64"); - Near.call({ - contractName: projectAccount, - methodName: "add_proposal", - args: { - proposal: { - description: `Project creation using BuildDAO created by ${context.accountId}`, - kind: { - FunctionCall: { - receiver_id: "${alias_socialdb}", - actions: [ - { - method_name: "set", - args: base64, - deposit: "100000000000000000000000", - gas: "200000000000000", - }, - ], - }, - }, - }, - }, - deposit: policy?.proposal_bond || 100000000000000000000000, - gas: 200000000000000, - }); - } else { - Social.set(data, { - onCommit: () => { - toggleModal(); - togglePotlockImportModal(); - }, - }); - } -} - -return ( - -
-
- - {invalidProjectAccount && ( -

- Invalid Near Address, please enter a valid near address -

- )} - setTitle(e.target.value)} - /> -
- - setDescription(e)} /> -
-
- setLocation(e.target.value)} - /> -
- - -
-
-
-
- - handleContributors(e)} - /> -
- {invalidContributorFound && ( -

- The address you just entered are invalid, please enter valid near - addresses -

- )} -
- - setTwitter(e.target.value)} - /> - - setGitHub(e.target.value)} - /> - - setTelegram(e.target.value)} - /> - - - -
- -
- {tabs.map((tab) => ( -
- - -
- ))} -
-
-
- - handleTags(e)} - /> -
-
-
-
- - setAvatar({ image }), - }} - /> -
-
- - setCoverImage({ image }), - }} - /> -
-
-
-
- -
-
-); diff --git a/apps/new/bos.config.json b/apps/new/bos.config.json index 1fd40c67..ff29f50f 100644 --- a/apps/new/bos.config.json +++ b/apps/new/bos.config.json @@ -1,10 +1,12 @@ { - "account": "new", + "account": "builddao.near", "aliases": ["../../aliases.mainnet.json"], + "index": "builddao.near/widget/Index", "overrides": { "testnet": { "account": "builddao.testnet", - "aliases": ["../../aliases.testnet.json"] + "aliases": ["../../aliases.testnet.json"], + "index": "builddao.testnet/widget/Index" } } } diff --git a/apps/new/widget/CSS.jsx b/apps/new/widget/CSS.jsx new file mode 100644 index 00000000..31cae4e4 --- /dev/null +++ b/apps/new/widget/CSS.jsx @@ -0,0 +1,185 @@ +const CSS = styled.div` + min-height: 100vh; + + @font-face { + font-family: "Poppins"; + font-weight: 100; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Thin.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Thin.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Thin.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Thin.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Thin.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 200; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraLight.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraLight.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraLight.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraLight.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraLight.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 300; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Light.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Light.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Light.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Light.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Light.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 400; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Regular.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Regular.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Regular.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Regular.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Regular.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 500; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Medium.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Medium.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Medium.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Medium.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Medium.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 600; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-SemiBold.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-SemiBold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-SemiBold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-SemiBold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-SemiBold.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 700; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Bold.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Bold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Bold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Bold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Bold.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 800; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraBold.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraBold.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraBold.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraBold.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-ExtraBold.ttf") + format("truetype"); + font-display: swap; + } + @font-face { + font-family: "Poppins"; + font-weight: 900; + font-style: normal; + src: url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Black.eot"); + src: + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Black.eot?#iefix") + format("embedded-opentype"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Black.woff2") + format("woff2"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Black.woff") + format("woff"), + url("https://cdn.jsdelivr.net/gh/webfontworld/Poppins/Poppins-Black.ttf") + format("truetype"); + font-display: swap; + } + + /* Inter Font */ + @font-face { + font-family: InterVariable; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("https://rsms.me/inter/font-files/InterVariable.woff2?v=4.0") + format("woff2"); + } + @font-face { + font-family: InterVariable; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url("https://rsms.me/inter/font-files/InterVariable-Italic.woff2?v=4.0") + format("woff2"); + } + + /* Fix compose */ + --bg-2: #23242b; + + /* Typeahead Fix */ + .rbt-token-removeable { + background: #007bff; + color: #fff; + } + + .rbt-input-multi { + padding: 12px !important; + } + + .placeholder-glow { + background: var(--bg-1, black); + } +`; + +return { CSS }; diff --git a/apps/new/widget/Icons.jsx b/apps/new/widget/Icons.jsx new file mode 100644 index 00000000..0bb6ea7f --- /dev/null +++ b/apps/new/widget/Icons.jsx @@ -0,0 +1,40 @@ +const BuilderHat = () => ( + + + + + + +); + +return { BuilderHat }; diff --git a/apps/new/widget/Index.jsx b/apps/new/widget/Index.jsx index 43ce2376..6cdeb28b 100644 --- a/apps/new/widget/Index.jsx +++ b/apps/new/widget/Index.jsx @@ -1 +1,109 @@ -return

hello builder

; +const { CSS } = VM.require("${config_account}/widget/CSS") || { + CSS: () => <>, +}; + +const { Footer } = VM.require("${config_account}/widget/components.Footer") || { + Footer: () => <>, +}; + +const config = { + theme: {}, + layout: { + src: "${alias_devs}/widget/Layout", + props: { + variant: "standard", + }, + }, + blocks: { + Header: () => ( + + ), + Footer: () =>