diff --git a/README.md b/README.md index ff2d241bd..9f2590080 100644 --- a/README.md +++ b/README.md @@ -83,22 +83,6 @@ If you care about efficiency and security, then Infisical is right for you. We are currently working hard to make Infisical more extensive. Need any integrations or want a new feature? Feel free to [create an issue](https://github.com/Infisical/infisical/issues) or [contribute](https://infisical.com/docs/contributing/overview) directly to the repository. -## 🌱 Contributing - -Whether it's big or small, we love contributions ❤️ Check out our guide to see how to [get started](https://infisical.com/docs/contributing/overview). - -Not sure where to get started? You can: - -- [Book a free, non-pressure pairing sessions with one of our teammates](mailto:tony@infisical.com?subject=Pairing%20session&body=I'd%20like%20to%20do%20a%20pairing%20session!)! -- Join our Slack, and ask us any questions there. - -## 💚 Community & Support - -- [Slack](https://join.slack.com/t/infisical-users/shared_invite/zt-1kdbk07ro-RtoyEt_9E~fyzGo_xQYP6g) (For live discussion with the community and the Infisical team) -- [GitHub Discussions](https://github.com/Infisical/infisical/discussions) (For help with building and deeper conversations about features) -- [GitHub Issues](https://github.com/Infisical/infisical-cli/issues) (For any bugs and errors you encounter using Infisical) -- [Twitter](https://twitter.com/infisical) (Get news fast) - ## 🔌 Integrations We're currently setting the foundation and building [integrations](https://infisical.com/docs/integrations/overview) so secrets can be synced everywhere. Any help is welcome! :) @@ -334,6 +318,13 @@ We're currently setting the foundation and building [integrations](https://infis +## 💚 Community & Support + +- [Slack](https://join.slack.com/t/infisical-users/shared_invite/zt-1kdbk07ro-RtoyEt_9E~fyzGo_xQYP6g) (For live discussion with the community and the Infisical team) +- [GitHub Discussions](https://github.com/Infisical/infisical/discussions) (For help with building and deeper conversations about features) +- [GitHub Issues](https://github.com/Infisical/infisical-cli/issues) (For any bugs and errors you encounter using Infisical) +- [Twitter](https://twitter.com/infisical) (Get news fast) + ## 🏘 Open-source vs. paid This repo is entirely MIT licensed, with the exception of the `ee` directory which will contain premium enterprise features requiring a Infisical license in the future. We're currently focused on developing non-enterprise offerings first that should suit most use-cases. @@ -348,6 +339,15 @@ Infisical officially launched as v.1.0 on November 21st, 2022. There are a lot o ![infisical-star-github](https://github.com/Infisical/infisical/blob/main/.github/images/star-infisical.gif?raw=true) +## 🌱 Contributing + +Whether it's big or small, we love contributions ❤️ Check out our guide to see how to [get started](https://infisical.com/docs/contributing/overview). + +Not sure where to get started? You can: + +- [Book a free, non-pressure pairing sessions with one of our teammates](mailto:tony@infisical.com?subject=Pairing%20session&body=I'd%20like%20to%20do%20a%20pairing%20session!)! +- Join our Slack, and ask us any questions there. + ## 🦸 Contributors [//]: contributor-faces diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b0317ff7c..ae2d22998 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -27,6 +27,7 @@ "@radix-ui/react-progress": "^1.0.1", "@radix-ui/react-select": "^1.2.0", "@radix-ui/react-switch": "^1.0.1", + "@radix-ui/react-tabs": "^1.0.2", "@radix-ui/react-toast": "^1.1.2", "@reduxjs/toolkit": "^1.8.3", "@stripe/react-stripe-js": "^1.10.0", @@ -4271,6 +4272,26 @@ "react-dom": "^16.8 || ^17.0 || ^18.0" } }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz", + "integrity": "sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-roving-focus": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, "node_modules/@radix-ui/react-toast": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.2.tgz", @@ -25552,6 +25573,22 @@ "@radix-ui/react-use-size": "1.0.0" } }, + "@radix-ui/react-tabs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz", + "integrity": "sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-id": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-roving-focus": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.0" + } + }, "@radix-ui/react-toast": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 4e2e3e585..28f45a5d6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,6 +34,7 @@ "@radix-ui/react-progress": "^1.0.1", "@radix-ui/react-select": "^1.2.0", "@radix-ui/react-switch": "^1.0.1", + "@radix-ui/react-tabs": "^1.0.2", "@radix-ui/react-toast": "^1.1.2", "@reduxjs/toolkit": "^1.8.3", "@stripe/react-stripe-js": "^1.10.0", diff --git a/frontend/public/images/dragon-book.svg b/frontend/public/images/dragon-book.svg new file mode 100644 index 000000000..31f51eb8d --- /dev/null +++ b/frontend/public/images/dragon-book.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/basic/dialog/AddUserDialog.tsx b/frontend/src/components/basic/dialog/AddUserDialog.tsx index 100ed3025..68ce24696 100644 --- a/frontend/src/components/basic/dialog/AddUserDialog.tsx +++ b/frontend/src/components/basic/dialog/AddUserDialog.tsx @@ -1,7 +1,5 @@ import { Fragment } from 'react'; -import { useRouter } from 'next/router'; import { Dialog, Transition } from '@headlessui/react'; -import { plans } from 'public/data/frequentConstants'; import Button from '../buttons/Button'; import InputField from '../InputField'; @@ -12,7 +10,6 @@ type Props = { submitModal: (email: string) => void; email: string; setEmail: (email: string) => void; - currentPlan: string; orgName: string; }; @@ -22,13 +19,11 @@ const AddUserDialog = ({ submitModal, email, setEmail, - currentPlan, orgName, }: Props) => { const submit = () => { submitModal(email); }; - const router = useRouter(); return (
@@ -81,28 +76,6 @@ const AddUserDialog = ({ isRequired />
- {currentPlan === plans.starter && ( -
- - -
- )}
+
+ +} + +export const TabsObject = () => { + const [downloadCodeCopied, setDownloadCodeCopied] = useState(false); + const [downloadCode2Copied, setDownloadCode2Copied] = useState(false); + const [loginCodeCopied, setLoginCodeCopied] = useState(false); + const [initCodeCopied, setInitCodeCopied] = useState(false); + const [runCodeCopied, setRunCodeCopied] = useState(false); + + return + + + MacOS + + + Windows + + + Arch Linux + + + Other Platforms + + + + + + + +

You can find example of start commands for different frameworks + here + .

+
+ + +
+ + +
+ + + +

You can find example of start commands for different frameworks + here + .

+
+ + + + + +

You can find example of start commands for different frameworks + here + .

+
+
+}; \ No newline at end of file diff --git a/frontend/src/components/v2/Tabs/index.tsx b/frontend/src/components/v2/Tabs/index.tsx new file mode 100644 index 000000000..57f78a430 --- /dev/null +++ b/frontend/src/components/v2/Tabs/index.tsx @@ -0,0 +1,4 @@ +export type { + TabsProps +} from './Tabs'; +export { TabsObject } from './Tabs'; diff --git a/frontend/src/const.ts b/frontend/src/const.ts index bec4f619f..291435f36 100644 --- a/frontend/src/const.ts +++ b/frontend/src/const.ts @@ -45,4 +45,4 @@ const plansProd: Mapping = { export const plans = plansProd || plansDev; -export const leaveConfirmDefaultMessage = 'Do you want to save your results before leaving this page?'; +export const leaveConfirmDefaultMessage = 'Your changes will be lost if you leave the page. Are you sure you want to continue?'; diff --git a/frontend/src/pages/dashboard/[id].tsx b/frontend/src/pages/dashboard/[id].tsx index 740a763af..83ee3be2f 100644 --- a/frontend/src/pages/dashboard/[id].tsx +++ b/frontend/src/pages/dashboard/[id].tsx @@ -423,9 +423,9 @@ export default function Dashboard() { newData!.filter((dataPoint) => dataPoint.id === initDataPoint.id)[0].key !== initDataPoint.key || newData!.filter((dataPoint) => dataPoint.id === initDataPoint.id)[0].comment !== - initDataPoint.comment) || + initDataPoint.comment || newData!.filter((dataPoint) => dataPoint.id === initDataPoint.id)[0]?.tags !== - initDataPoint?.tags + initDataPoint?.tags) ) .map((secret) => secret.id) .includes(newDataPoint.id) diff --git a/frontend/src/pages/home/[id].tsx b/frontend/src/pages/home/[id].tsx index 44427084e..8eb253e7e 100644 --- a/frontend/src/pages/home/[id].tsx +++ b/frontend/src/pages/home/[id].tsx @@ -1,5 +1,6 @@ import { useEffect, useState } from 'react'; import Head from 'next/head'; +import Image from 'next/image'; import { useRouter } from 'next/router'; import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { faSlack } from '@fortawesome/free-brands-svg-icons'; @@ -16,6 +17,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import onboardingCheck from '@app/components/utilities/checks/OnboardingCheck'; import { getTranslatedServerSideProps } from '@app/components/utilities/withTranslateProps'; +import { TabsObject } from '@app/components/v2/Tabs'; import registerUserAction from '../api/userActions/registerUserAction'; @@ -43,7 +45,7 @@ const learningItem = ({
{complete && ( -
- +
+
)}
@@ -72,11 +74,11 @@ const learningItem = ({
{complete ? 'Complete!' : `About ${time}`}
- {complete &&
} + {complete &&
}
); @@ -101,7 +103,7 @@ const learningItem = ({
)} @@ -110,10 +112,10 @@ const learningItem = ({
{subText}
-
+
{complete ? 'Complete!' : `About ${time}`}
- {complete &&
} + {complete &&
}
); }; @@ -142,16 +144,17 @@ export default function Home() { }, []); return ( -
+
Infisical Guide -
-
Your quick start guide
-
+
+
Your quick start guide
+
Click on the items below and follow the instructions.
+
start guise dragon illustration
{learningItem({ text: 'Get to know Infisical', subText: '', @@ -170,17 +173,32 @@ export default function Home() { userAction: 'first_time_secrets_pushed', link: `/dashboard/${router.query.id}` })} - {learningItem({ - text: 'Inject secrets locally', - subText: 'Replace .env files with a more secure and efficient alternative.', - complete: false, - icon: faNetworkWired, - time: '8 min', - link: 'https://infisical.com/docs/getting-started/quickstart' - })} +
+
+
+ + {false && ( +
+ +
+ )} +
+
Inject secrets locally
+
Replace .env files with a more secure and efficient alternative.
+
+
+
+ About 2 min +
+
+ + {false &&
} +
{learningItem({ text: 'Integrate Infisical with your infrastructure', - subText: 'Only a few integrations are currently available. Many more coming soon!', + subText: 'Connect Infisical to various 3rd party services and platforms.', complete: false, icon: faPlug, time: '15 min', diff --git a/frontend/src/pages/requestnewinvite.tsx b/frontend/src/pages/requestnewinvite.tsx index be345d7e7..40f4b0c27 100644 --- a/frontend/src/pages/requestnewinvite.tsx +++ b/frontend/src/pages/requestnewinvite.tsx @@ -20,7 +20,7 @@ export default function RequestNewInvite() { doesn't work, please reach out to us at support@infisical.com

- google logo + invitation expired illustration
diff --git a/frontend/src/pages/settings/billing/[id].tsx b/frontend/src/pages/settings/billing/[id].tsx index 626dbf69d..e1c021a99 100644 --- a/frontend/src/pages/settings/billing/[id].tsx +++ b/frontend/src/pages/settings/billing/[id].tsx @@ -31,7 +31,7 @@ export default function SettingsBilling() { { key: 2, name: 'Team', - price: '$7', + price: '$8', priceExplanation: t('billing:professional.price-explanation')!, text: 'For teams that want to improve their efficiency and security.', buttonTextMain: t('billing:upgrade')!, @@ -41,7 +41,7 @@ export default function SettingsBilling() { { key: 3, name: t('billing:professional.name')!, - price: '$14', + price: '$18', priceExplanation: t('billing:professional.price-explanation')!, text: t('billing:enterprise.text')!, subtext: t('billing:professional.subtext')!, diff --git a/frontend/src/pages/settings/org/[id].tsx b/frontend/src/pages/settings/org/[id].tsx index e0d970c91..562c45c9b 100644 --- a/frontend/src/pages/settings/org/[id].tsx +++ b/frontend/src/pages/settings/org/[id].tsx @@ -222,7 +222,6 @@ export default function SettingsOrg() { submitModal={submitAddUserModal} email={emailUser} setEmail={setEmailUser} - currentPlan={currentPlan} orgName={orgName} />