├── .dockerignore ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── PULL_REQUEST_TEMPLATE.md ├── SECURITY.md ├── labeler.yml ├── semantic.yml ├── templates │ └── webpack-diff-comment.md └── workflows │ ├── add-issue-to-prj.yml │ ├── add-pr-to-prj.yml │ ├── images.yml │ ├── integration-test.yml │ ├── nextjs-bundle-analysis.yml │ ├── release.yml │ ├── sdk-integration-test.yml │ ├── semantic.yml │ └── unit-test.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .npmrc ├── .vscode └── settings.json ├── Dockerfile ├── Dockerfile.playwright ├── LICENSE ├── README.md ├── apps ├── console │ ├── .dockerignore │ ├── .env │ ├── .env.example │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .lintstagedrc.js │ ├── CHANGELOG.md │ ├── download-component-icons.ts │ ├── integration-test │ │ ├── helpers │ │ │ ├── actions │ │ │ │ └── pipeline.ts │ │ │ ├── component-helpers │ │ │ │ ├── dropdown.ts │ │ │ │ └── select.ts │ │ │ ├── env.ts │ │ │ └── first-time-login.test.ts │ │ ├── main.test.ts │ │ ├── pages │ │ │ ├── login.page.ts │ │ │ ├── onboarding.page.ts │ │ │ ├── pipeline-builder.page.ts │ │ │ ├── pipeline-list.ts │ │ │ └── pipeline-overview.page.ts │ │ └── tests │ │ │ ├── should-change-component-id.test.ts │ │ │ ├── should-edit-create-start-end-field.test.ts │ │ │ ├── should-unmarshal.test.ts │ │ │ └── skeleton.ts │ ├── next-env.d.ts │ ├── next-env.mjs │ ├── next.config.js │ ├── package.json │ ├── playwright.config.ts │ ├── postcss.config.js │ ├── public │ │ ├── icons │ │ │ ├── anthropic.svg │ │ │ ├── archetype-ai.svg │ │ │ ├── asana.svg │ │ │ ├── audio.svg │ │ │ ├── base64.svg │ │ │ ├── bigquery.svg │ │ │ ├── chroma.svg │ │ │ ├── cohere.svg │ │ │ ├── collection.svg │ │ │ ├── document.svg │ │ │ ├── elasticsearch.svg │ │ │ ├── email.svg │ │ │ ├── fireworks-ai.svg │ │ │ ├── freshdesk.svg │ │ │ ├── gcs.svg │ │ │ ├── github.svg │ │ │ ├── google-drive.svg │ │ │ ├── google-search.svg │ │ │ ├── google-sheets.svg │ │ │ ├── groq.svg │ │ │ ├── http.svg │ │ │ ├── hubspot.svg │ │ │ ├── hugging-face.svg │ │ │ ├── image.svg │ │ │ ├── instill-app.svg │ │ │ ├── instill-artifact.svg │ │ │ ├── instill-model.svg │ │ │ ├── iterator.svg │ │ │ ├── jira.svg │ │ │ ├── json.svg │ │ │ ├── leadiq.svg │ │ │ ├── milvus.svg │ │ │ ├── mistral-ai.svg │ │ │ ├── mongodb.svg │ │ │ ├── numbers.svg │ │ │ ├── ollama.svg │ │ │ ├── openai.svg │ │ │ ├── perplexity-ai.svg │ │ │ ├── pinecone.svg │ │ │ ├── qdrant.svg │ │ │ ├── redis.svg │ │ │ ├── scheduler.svg │ │ │ ├── slack.svg │ │ │ ├── smartlead.svg │ │ │ ├── sql.svg │ │ │ ├── stability-ai.svg │ │ │ ├── text.svg │ │ │ ├── universal-ai.svg │ │ │ ├── video.svg │ │ │ ├── weaviate.svg │ │ │ ├── web.svg │ │ │ ├── webhook.svg │ │ │ ├── whatsapp.svg │ │ │ └── zilliz.svg │ │ └── images │ │ │ ├── auth-page-bg-strip.svg │ │ │ ├── empty-placeholder.svg │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon.ico │ │ │ ├── instill-open-graph.png │ │ │ └── models │ │ │ ├── model-placeholder.svg │ │ │ ├── no-models-placeholder.svg │ │ │ └── no-result.svg │ ├── src │ │ ├── app │ │ │ ├── 404 │ │ │ │ ├── page.tsx │ │ │ │ └── render.tsx │ │ │ ├── (providers) │ │ │ │ ├── amplitude-client-provider.tsx │ │ │ │ ├── react-query-client-provider.tsx │ │ │ │ └── root-provider.tsx │ │ │ ├── [entity] │ │ │ │ ├── catalog │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── chat │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── dashboard │ │ │ │ │ ├── activity │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── render.tsx │ │ │ │ │ ├── cost │ │ │ │ │ │ ├── model │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── render.tsx │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── pipeline │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── render.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── pipeline │ │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── render.tsx │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── render.tsx │ │ │ │ ├── models │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── [...path] │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── render.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── create │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ └── render.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── pipelines │ │ │ │ │ ├── [id] │ │ │ │ │ │ ├── [...path] │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── render.tsx │ │ │ │ │ │ ├── editor │ │ │ │ │ │ │ ├── page.tsx │ │ │ │ │ │ │ └── render.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ └── render.tsx │ │ │ ├── api │ │ │ │ ├── access-token │ │ │ │ │ └── route.ts │ │ │ │ ├── auth │ │ │ │ │ ├── login │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── logout │ │ │ │ │ │ └── route.ts │ │ │ │ ├── integration │ │ │ │ │ └── [...nextauth] │ │ │ │ │ │ └── route.ts │ │ │ │ └── nextauth │ │ │ │ │ ├── redirect-error-page │ │ │ │ │ └── route.ts │ │ │ │ │ └── redirect-signin-page │ │ │ │ │ └── route.ts │ │ │ ├── favicon.ico │ │ │ ├── layout.tsx │ │ │ ├── login │ │ │ │ ├── page.tsx │ │ │ │ └── render.tsx │ │ │ ├── logout │ │ │ │ └── page.tsx │ │ │ ├── onboarding │ │ │ │ ├── page.tsx │ │ │ │ └── render.tsx │ │ │ ├── page.tsx │ │ │ ├── render.tsx │ │ │ ├── robots.ts │ │ │ ├── settings │ │ │ │ ├── account │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── api-tokens │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── integrations │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── profile │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── rendex.tsx │ │ │ │ └── secrets │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── render.tsx │ │ │ └── sitemap.ts │ │ ├── components │ │ │ ├── AuthPageBase.tsx │ │ │ ├── ChangePasswordForm.tsx │ │ │ ├── LoginForm.tsx │ │ │ ├── OnboardingForm.tsx │ │ │ ├── README.md │ │ │ └── index.ts │ │ ├── lib │ │ │ ├── auth │ │ │ │ ├── index.ts │ │ │ │ └── withMiddlewareAuthRequired.ts │ │ │ ├── index.ts │ │ │ ├── use-app-access-token │ │ │ │ ├── client.ts │ │ │ │ ├── index.ts │ │ │ │ └── server.ts │ │ │ └── useAppTrackToken.ts │ │ ├── middleware.ts │ │ ├── pages │ │ │ └── api │ │ │ │ ├── get-user-cookie.ts │ │ │ │ ├── health.tsx │ │ │ │ ├── remove-user-cookie.ts │ │ │ │ └── set-user-cookie.ts │ │ └── styles │ │ │ ├── github-markdown.css │ │ │ ├── global.css │ │ │ ├── prism-rose-pine-moon.css │ │ │ ├── rose-pine-moon.json │ │ │ ├── shiki.css │ │ │ └── tip-tap.css │ ├── tailwind.config.js │ └── tsconfig.json └── instill-form-playground │ ├── .eslintrc.json │ ├── .gitignore │ ├── README.md │ ├── next.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ ├── next.svg │ └── vercel.svg │ ├── src │ ├── mocks │ │ ├── mock-wo-anyOf.json │ │ ├── mock_nested_oneOf.json │ │ ├── mock_nested_simple_oneOf.json │ │ ├── mock_open_ai.json │ │ ├── mock_simple.json │ │ ├── mock_simple_array.json │ │ ├── mock_simple_object_array.json │ │ └── mock_simple_oneOf.json │ ├── pages │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ └── index.tsx │ └── styles │ │ └── globals.css │ ├── tailwind.config.ts │ └── tsconfig.json ├── commitlint.config.js ├── docs ├── cicd.md ├── environment-variables.md ├── instill-auto-form.md ├── integration-connection.md ├── integration-test.md ├── scripts.md ├── sdk-integration-test.md ├── template.md └── test-coverage-list.md ├── entrypoint-playwright.sh ├── entrypoint.sh ├── package.json ├── packages ├── design-system │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .storybook │ │ ├── main.ts │ │ ├── preview-head.html │ │ └── preview.ts │ ├── .vercelignore │ ├── CHANGELOG.md │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.cjs │ ├── public │ │ └── favicon.ico │ ├── setupTests.ts │ ├── src │ │ ├── index.ts │ │ ├── new-ui │ │ │ ├── Accordion │ │ │ │ ├── Accordion.tsx │ │ │ │ └── index.tsx │ │ │ ├── Breadcrumb │ │ │ │ ├── Breadcrumb.stories.tsx │ │ │ │ ├── Breadcrumb.tsx │ │ │ │ └── index.ts │ │ │ ├── Button │ │ │ │ ├── Button.stories.tsx │ │ │ │ ├── Button.tsx │ │ │ │ └── index.ts │ │ │ ├── Checkbox │ │ │ │ ├── Checkbox.stories.tsx │ │ │ │ ├── Checkbox.tsx │ │ │ │ └── index.ts │ │ │ ├── Collapsible │ │ │ │ ├── Collapsible.stories.tsx │ │ │ │ ├── Collapsible.tsx │ │ │ │ └── index.ts │ │ │ ├── Color │ │ │ │ ├── Color.stories.tsx │ │ │ │ ├── Color.tsx │ │ │ │ └── index.ts │ │ │ ├── Combobox │ │ │ │ ├── Combobox.stories.tsx │ │ │ │ ├── Combobox.tsx │ │ │ │ └── index.ts │ │ │ ├── Command │ │ │ │ ├── Command.stories.tsx │ │ │ │ ├── Command.tsx │ │ │ │ └── index.ts │ │ │ ├── ComplicateIcons │ │ │ │ ├── ComplicateIconBase │ │ │ │ │ ├── ComplicateIconBase.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ComplicateIcons.stories.tsx │ │ │ │ ├── Doc.tsx │ │ │ │ ├── Drag.tsx │ │ │ │ ├── GitHub.tsx │ │ │ │ ├── ImageClassification.tsx │ │ │ │ ├── ImageToImage.tsx │ │ │ │ ├── ImageToText.tsx │ │ │ │ ├── InstanceSegmentation.tsx │ │ │ │ ├── KeypointDetection.tsx │ │ │ │ ├── Number.tsx │ │ │ │ ├── ObjectDetection.tsx │ │ │ │ ├── OpticalCharacterRecognition.tsx │ │ │ │ ├── SemanticSegmentation.tsx │ │ │ │ ├── TaskCustom.tsx │ │ │ │ ├── TextEmbedding.tsx │ │ │ │ ├── TextGeneration.tsx │ │ │ │ ├── TextToImage.tsx │ │ │ │ ├── ToggleLeft.tsx │ │ │ │ └── index.ts │ │ │ ├── ContextMenu │ │ │ │ ├── ContextMenu.stories.tsx │ │ │ │ ├── ContextMenu.tsx │ │ │ │ └── index.ts │ │ │ ├── DataTable │ │ │ │ ├── DataTable.stories.tsx │ │ │ │ ├── DataTable.tsx │ │ │ │ ├── DataTablePagination.tsx │ │ │ │ └── index.ts │ │ │ ├── Dialog │ │ │ │ ├── Dialog.stories.tsx │ │ │ │ ├── Dialog.tsx │ │ │ │ └── index.ts │ │ │ ├── DropdownMenu │ │ │ │ ├── DropdownMenu.stories.tsx │ │ │ │ ├── DropdownMenu.tsx │ │ │ │ └── index.ts │ │ │ ├── Field.tsx │ │ │ ├── Form │ │ │ │ ├── Form.stories.tsx │ │ │ │ ├── Form.tsx │ │ │ │ └── index.ts │ │ │ ├── Icons │ │ │ │ ├── Activity.tsx │ │ │ │ ├── AlertCircle.tsx │ │ │ │ ├── AlertTriangle.tsx │ │ │ │ ├── AlignLeft.tsx │ │ │ │ ├── Announcement02.tsx │ │ │ │ ├── ArrowDown.tsx │ │ │ │ ├── ArrowLeft.tsx │ │ │ │ ├── ArrowNarrowLeft.tsx │ │ │ │ ├── ArrowNarrowRight.tsx │ │ │ │ ├── ArrowRight.tsx │ │ │ │ ├── ArrowUp.tsx │ │ │ │ ├── ArrowUpRight.tsx │ │ │ │ ├── Attachment01.tsx │ │ │ │ ├── BankNote01.tsx │ │ │ │ ├── BankNote03.tsx │ │ │ │ ├── BarChartSquare02.tsx │ │ │ │ ├── BookOpen02.tsx │ │ │ │ ├── Box.tsx │ │ │ │ ├── BracketSlash.tsx │ │ │ │ ├── Browser.tsx │ │ │ │ ├── Building05.tsx │ │ │ │ ├── CSVFile.tsx │ │ │ │ ├── CalendarCheck01.tsx │ │ │ │ ├── CardRefresh.tsx │ │ │ │ ├── Check.tsx │ │ │ │ ├── CheckCircle.tsx │ │ │ │ ├── CheckSquare.tsx │ │ │ │ ├── CheckVerified02.tsx │ │ │ │ ├── ChevronDown.tsx │ │ │ │ ├── ChevronDownDouble.tsx │ │ │ │ ├── ChevronLeft.tsx │ │ │ │ ├── ChevronLeftDouble.tsx │ │ │ │ ├── ChevronRight.tsx │ │ │ │ ├── ChevronRightDouble.tsx │ │ │ │ ├── ChevronSelectorVertical.tsx │ │ │ │ ├── ChevronUp.tsx │ │ │ │ ├── ChevronUpDouble.tsx │ │ │ │ ├── Chip01.tsx │ │ │ │ ├── Chip02.tsx │ │ │ │ ├── Circle.tsx │ │ │ │ ├── ClockCheck.tsx │ │ │ │ ├── ClockPlus.tsx │ │ │ │ ├── ClockRewind.tsx │ │ │ │ ├── CodeBrowser.tsx │ │ │ │ ├── CodeSnippet01.tsx │ │ │ │ ├── CodeSnippet02.tsx │ │ │ │ ├── CodeSquare02.tsx │ │ │ │ ├── Coins01.tsx │ │ │ │ ├── CoinsStacked01.tsx │ │ │ │ ├── Copy06.tsx │ │ │ │ ├── Copy07.tsx │ │ │ │ ├── Cube01.tsx │ │ │ │ ├── CubeOutline.tsx │ │ │ │ ├── CurrencyDollar.tsx │ │ │ │ ├── DOCFile.tsx │ │ │ │ ├── DOCXFile.tsx │ │ │ │ ├── Database01.tsx │ │ │ │ ├── Dataflow03.tsx │ │ │ │ ├── Dataflow03Broken.tsx │ │ │ │ ├── DotsGrid.tsx │ │ │ │ ├── DotsHorizontal.tsx │ │ │ │ ├── DotsVertical.tsx │ │ │ │ ├── Download01.tsx │ │ │ │ ├── DownloadCloud01.tsx │ │ │ │ ├── Edit03.tsx │ │ │ │ ├── Edit05.tsx │ │ │ │ ├── Expand01.tsx │ │ │ │ ├── Expand06.tsx │ │ │ │ ├── Eye.tsx │ │ │ │ ├── Eyeoff.tsx │ │ │ │ ├── File02.tsx │ │ │ │ ├── File04.tsx │ │ │ │ ├── File05.tsx │ │ │ │ ├── File06.tsx │ │ │ │ ├── FileDownload03.tsx │ │ │ │ ├── FileMinus01.tsx │ │ │ │ ├── FilePlus01.tsx │ │ │ │ ├── FilePlus02.tsx │ │ │ │ ├── FilterLines.tsx │ │ │ │ ├── Flag04.tsx │ │ │ │ ├── Flag06.tsx │ │ │ │ ├── Folder.tsx │ │ │ │ ├── Gear01.tsx │ │ │ │ ├── GitMerge.tsx │ │ │ │ ├── Globe01.tsx │ │ │ │ ├── GraduationHat.tsx │ │ │ │ ├── HTMLFile.tsx │ │ │ │ ├── Hash2.tsx │ │ │ │ ├── HelpCircle.tsx │ │ │ │ ├── HomeLine.tsx │ │ │ │ ├── IconBase │ │ │ │ │ ├── IconBase.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Icons.stories.tsx │ │ │ │ ├── Image01.tsx │ │ │ │ ├── Image03.tsx │ │ │ │ ├── ImagePlus.tsx │ │ │ │ ├── InfoCircle.tsx │ │ │ │ ├── InfoSquare.tsx │ │ │ │ ├── IntersectSquare.tsx │ │ │ │ ├── LayersTwo01.tsx │ │ │ │ ├── LayoutLeft.tsx │ │ │ │ ├── Lightbulb03.tsx │ │ │ │ ├── Lightning01.tsx │ │ │ │ ├── Lightning02.tsx │ │ │ │ ├── Link01.tsx │ │ │ │ ├── LinkExternal01.tsx │ │ │ │ ├── Lock03.tsx │ │ │ │ ├── LockUnlocked03.tsx │ │ │ │ ├── Logout01.tsx │ │ │ │ ├── Logout03.tsx │ │ │ │ ├── Logout04.tsx │ │ │ │ ├── MDFile.tsx │ │ │ │ ├── MagicWand01.tsx │ │ │ │ ├── Mail01.tsx │ │ │ │ ├── MasterCard.tsx │ │ │ │ ├── Maximize02.tsx │ │ │ │ ├── Menu01.tsx │ │ │ │ ├── MessageChatSquare.tsx │ │ │ │ ├── MessageSmileSquare.tsx │ │ │ │ ├── Minimize01.tsx │ │ │ │ ├── Minus.tsx │ │ │ │ ├── Model.tsx │ │ │ │ ├── MultipleVideo.tsx │ │ │ │ ├── NewModel.tsx │ │ │ │ ├── PDFFile.tsx │ │ │ │ ├── PPTFile.tsx │ │ │ │ ├── PPTXFile.tsx │ │ │ │ ├── PauseCircle.tsx │ │ │ │ ├── Pipeline.tsx │ │ │ │ ├── Play.tsx │ │ │ │ ├── PlayCircle.tsx │ │ │ │ ├── Plus.tsx │ │ │ │ ├── PlusSquare.tsx │ │ │ │ ├── PuzzlePiece01.tsx │ │ │ │ ├── Recording01.tsx │ │ │ │ ├── Recording02.tsx │ │ │ │ ├── Recording03.tsx │ │ │ │ ├── Recording04.tsx │ │ │ │ ├── Recording05.tsx │ │ │ │ ├── ReferenceIconCheck.tsx │ │ │ │ ├── ReferenceIconX.tsx │ │ │ │ ├── RefreshCCW01.tsx │ │ │ │ ├── RefreshCw05.tsx │ │ │ │ ├── Repeat04.tsx │ │ │ │ ├── Rocket01.tsx │ │ │ │ ├── Rocket02.tsx │ │ │ │ ├── Save01.tsx │ │ │ │ ├── Save02.tsx │ │ │ │ ├── Scales02.tsx │ │ │ │ ├── SearchLg.tsx │ │ │ │ ├── SearchMd.tsx │ │ │ │ ├── SearchSm.tsx │ │ │ │ ├── Settings02.tsx │ │ │ │ ├── Share07.tsx │ │ │ │ ├── SlashDivider.tsx │ │ │ │ ├── Sliders01.tsx │ │ │ │ ├── SortLinesDown.tsx │ │ │ │ ├── SortLinesUp.tsx │ │ │ │ ├── Speaker01.tsx │ │ │ │ ├── SpeechRecognition.tsx │ │ │ │ ├── Star06.tsx │ │ │ │ ├── Stop.tsx │ │ │ │ ├── TXTFile.tsx │ │ │ │ ├── Table.tsx │ │ │ │ ├── Tag01.tsx │ │ │ │ ├── Target05.tsx │ │ │ │ ├── TextA.tsx │ │ │ │ ├── TextGenerationChat.tsx │ │ │ │ ├── ThumbsDown.tsx │ │ │ │ ├── Tool01.tsx │ │ │ │ ├── Trash01.tsx │ │ │ │ ├── Trash03.tsx │ │ │ │ ├── TrendUp.tsx │ │ │ │ ├── Truck02.tsx │ │ │ │ ├── Tv03.tsx │ │ │ │ ├── Type01.tsx │ │ │ │ ├── Type02.tsx │ │ │ │ ├── TypePlus.tsx │ │ │ │ ├── Update.tsx │ │ │ │ ├── Upload01.tsx │ │ │ │ ├── UploadCloud01.tsx │ │ │ │ ├── User01.tsx │ │ │ │ ├── User02.tsx │ │ │ │ ├── UserPlus01.tsx │ │ │ │ ├── Video.tsx │ │ │ │ ├── VideoRecorder.tsx │ │ │ │ ├── Visa.tsx │ │ │ │ ├── VisualQuestionAnswering.tsx │ │ │ │ ├── X.tsx │ │ │ │ ├── XLSFile.tsx │ │ │ │ ├── XLSXFile.tsx │ │ │ │ ├── Zap.tsx │ │ │ │ ├── ZapFast.tsx │ │ │ │ ├── ZoomIn.tsx │ │ │ │ ├── ZoomOut.tsx │ │ │ │ └── index.ts │ │ │ ├── Input │ │ │ │ ├── Input.stories.tsx │ │ │ │ ├── Input.tsx │ │ │ │ └── index.ts │ │ │ ├── Label │ │ │ │ ├── Label.stories.tsx │ │ │ │ ├── Label.tsx │ │ │ │ └── index.ts │ │ │ ├── LinkButton │ │ │ │ ├── LinkButton.stories.tsx │ │ │ │ ├── LinkButton.tsx │ │ │ │ └── index.ts │ │ │ ├── Logos │ │ │ │ ├── ATFExpand.tsx │ │ │ │ ├── ATFSquare.tsx │ │ │ │ ├── Anthropic.tsx │ │ │ │ ├── AssemblyAI.tsx │ │ │ │ ├── Cohere.tsx │ │ │ │ ├── HuggingFace.tsx │ │ │ │ ├── InstillCloud.tsx │ │ │ │ ├── InstillSquare.tsx │ │ │ │ ├── Logo.stories.tsx │ │ │ │ ├── LogoBase │ │ │ │ │ ├── LogoBase.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MDLExpand.tsx │ │ │ │ ├── MDLSquare.tsx │ │ │ │ ├── Milvus.tsx │ │ │ │ ├── Number.tsx │ │ │ │ ├── OpenAI.tsx │ │ │ │ ├── Pinecode.tsx │ │ │ │ ├── StabilityAI.tsx │ │ │ │ ├── TwitterDark.tsx │ │ │ │ ├── TwitterLight.tsx │ │ │ │ ├── VDPExpand.tsx │ │ │ │ ├── VDPSquare.tsx │ │ │ │ └── index.ts │ │ │ ├── Menubar │ │ │ │ ├── Menubar.stories.tsx │ │ │ │ ├── Menubar.tsx │ │ │ │ └── index.ts │ │ │ ├── MultiSelect │ │ │ │ ├── MultiSelect.stories.tsx │ │ │ │ ├── MultiSelect.tsx │ │ │ │ └── index.ts │ │ │ ├── Pagination │ │ │ │ ├── Pagination.tsx │ │ │ │ └── index.tsx │ │ │ ├── ParagraphWithHTML │ │ │ │ ├── ParagraphWithHTML.stories.tsx │ │ │ │ ├── ParagraphWithHTML.tsx │ │ │ │ └── index.ts │ │ │ ├── Popover │ │ │ │ ├── Popover.stories.tsx │ │ │ │ ├── Popover.tsx │ │ │ │ └── index.ts │ │ │ ├── Progress │ │ │ │ ├── Progress.stories.tsx │ │ │ │ ├── Progress.tsx │ │ │ │ └── index.ts │ │ │ ├── ScrollArea │ │ │ │ ├── ScrollArea.stories.tsx │ │ │ │ ├── ScrollArea.tsx │ │ │ │ └── index.ts │ │ │ ├── Select │ │ │ │ ├── Select.stories.tsx │ │ │ │ ├── Select.tsx │ │ │ │ └── index.ts │ │ │ ├── Separator │ │ │ │ ├── Separator.stories.tsx │ │ │ │ ├── Separator.tsx │ │ │ │ └── index.ts │ │ │ ├── Skeleton │ │ │ │ ├── Skeleton.tsx │ │ │ │ ├── Skelton.stories.tsx │ │ │ │ └── index.ts │ │ │ ├── Slider │ │ │ │ ├── Slider.stories.tsx │ │ │ │ ├── Slider.tsx │ │ │ │ └── index.ts │ │ │ ├── SonnerToast │ │ │ │ ├── SonnerToast.tsx │ │ │ │ └── index.ts │ │ │ ├── Switch │ │ │ │ ├── Switch.stories.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ └── index.ts │ │ │ ├── Table │ │ │ │ ├── Table.stories.tsx │ │ │ │ ├── Table.tsx │ │ │ │ └── index.ts │ │ │ ├── Tabs │ │ │ │ ├── Tabs.stories.tsx │ │ │ │ ├── Tabs.tsx │ │ │ │ └── index.ts │ │ │ ├── Tag │ │ │ │ ├── Tag.stories.tsx │ │ │ │ ├── Tag.tsx │ │ │ │ └── index.ts │ │ │ ├── TagButton │ │ │ │ ├── TagButton.stories.tsx │ │ │ │ ├── TagButton.tsx │ │ │ │ └── index.ts │ │ │ ├── Textarea │ │ │ │ ├── Textarea.stories.tsx │ │ │ │ ├── Textarea.tsx │ │ │ │ └── index.ts │ │ │ ├── ToggleGroup │ │ │ │ ├── ToggleGroup.stories.tsx │ │ │ │ ├── ToggleGroup.tsx │ │ │ │ └── index.tsx │ │ │ ├── Tooltip │ │ │ │ ├── Tooltip.stories.tsx │ │ │ │ ├── Tooltip.tsx │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── radio-group │ │ │ │ ├── RadioGroup.stories.tsx │ │ │ │ ├── RadioGroup.tsx │ │ │ │ └── index.ts │ │ │ ├── resizable │ │ │ │ ├── Resizable.stories.tsx │ │ │ │ ├── Resizable.tsx │ │ │ │ └── index.ts │ │ │ └── tab-menu │ │ │ │ ├── TabMenu.stories.tsx │ │ │ │ ├── TabMenu.tsx │ │ │ │ └── index.ts │ │ ├── styles │ │ │ └── global.css │ │ ├── types │ │ │ └── general.ts │ │ ├── ui-helpers │ │ │ ├── getModelDefinitionToolkit.tsx │ │ │ ├── getModelInstanceTaskToolkit.tsx │ │ │ ├── getModelRegionToolkit.ts │ │ │ ├── getPipelineModeToolkit.tsx │ │ │ └── index.ts │ │ ├── ui │ │ │ ├── Icons │ │ │ │ ├── AirbyteIcon │ │ │ │ │ ├── AirbyteIcon.stories.tsx │ │ │ │ │ ├── AirbyteIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ArrowIcons │ │ │ │ │ ├── ArrowDownIcon │ │ │ │ │ │ ├── ArrowDownIcon.stories.tsx │ │ │ │ │ │ ├── ArrowDownIcon.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ArrowIconBase │ │ │ │ │ │ ├── ArrowIconBase.stories.tsx │ │ │ │ │ │ ├── ArrowIconBase.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ArrowLeftIcon │ │ │ │ │ │ ├── ArrowLeftIcon.stories.tsx │ │ │ │ │ │ ├── ArrowLeftIcon.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ArrowRightIcon │ │ │ │ │ │ ├── ArrowRightIcon.stories.tsx │ │ │ │ │ │ ├── ArrowRightIcon.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ArrowUpIcon │ │ │ │ │ │ ├── ArrowUpIcon.stories.tsx │ │ │ │ │ │ ├── ArrowUpIcon.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── RotatableArrowIcon │ │ │ │ │ │ ├── RotatableArrowIcon.stories.tsx │ │ │ │ │ │ ├── RotatableArrowIcon.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ArtiVcIcon │ │ │ │ │ ├── ArtiVcIcon.stories.tsx │ │ │ │ │ ├── ArtiVcIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── AsyncArrowsIcon │ │ │ │ │ ├── AsyncArrowsIcon.stories.tsx │ │ │ │ │ ├── AsyncArrowsIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── AsyncIcon │ │ │ │ │ ├── AsyncIcon.stories.tsx │ │ │ │ │ ├── AsyncIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── AwsRdsIcon │ │ │ │ │ ├── AwsRdsIcon.stories.tsx │ │ │ │ │ ├── AwsRdsIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── AwsS3Icon │ │ │ │ │ ├── AwsS3Icon.stories.tsx │ │ │ │ │ ├── AwsS3Icon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── BarChartIcon │ │ │ │ │ ├── BarChartIcon.stories.tsx │ │ │ │ │ ├── BarChartIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── BigQueryIcon │ │ │ │ │ ├── BigQueryIcon.stories.tsx │ │ │ │ │ ├── BigQueryIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── CheckIcon │ │ │ │ │ ├── CheckIcon.stories.tsx │ │ │ │ │ ├── CheckIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ClientIcon │ │ │ │ │ ├── ClientIcon.stories.tsx │ │ │ │ │ ├── ClientIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── CollapseLeftIcon │ │ │ │ │ ├── CollapseLeftIcon.stories.tsx │ │ │ │ │ ├── CollapseLeftIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── CollapseRightIcon │ │ │ │ │ ├── CollapseRightIcon.stories.tsx │ │ │ │ │ ├── CollapseRightIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── CopyIcon │ │ │ │ │ ├── CopyIcon.stories.tsx │ │ │ │ │ ├── CopyIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── CrossIcon │ │ │ │ │ ├── CrossIcon.stories.tsx │ │ │ │ │ ├── CrossIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DataDestinationIcon │ │ │ │ │ ├── DataDestinationIcon.stories.tsx │ │ │ │ │ ├── DataDestinationIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DataSourceIcon │ │ │ │ │ ├── DataSourceIcon.stories.tsx │ │ │ │ │ ├── DataSourceIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DiscordIcon │ │ │ │ │ ├── DiscordIcon.stories.tsx │ │ │ │ │ ├── DiscordIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DocIcon │ │ │ │ │ ├── DocIcon.stories.tsx │ │ │ │ │ ├── DocIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── DoubleArrowIcon │ │ │ │ │ ├── DoubleArrowIcon.stories.tsx │ │ │ │ │ ├── DoubleArrowIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── EyeOffIcon │ │ │ │ │ ├── EyeOffIcon.stories.tsx │ │ │ │ │ ├── EyeOffIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── EyeOnIcon │ │ │ │ │ ├── EyeOnIcon.stories.tsx │ │ │ │ │ ├── EyeOnIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── FacebookIcon │ │ │ │ │ ├── FacebookIcon.stories.tsx │ │ │ │ │ ├── FacebookIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── FilterIcon │ │ │ │ │ ├── FilterIcon.stories.tsx │ │ │ │ │ ├── FilterIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── FolderInUseIcon │ │ │ │ │ ├── FolderInUseIcon.stories.tsx │ │ │ │ │ ├── FolderInUseIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── FolderPlusIcon │ │ │ │ │ ├── FolderPlusIcon.stories.tsx │ │ │ │ │ ├── FolderPlusIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GcsIcon │ │ │ │ │ ├── GcsIcon.stories.tsx │ │ │ │ │ ├── GcsIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GearIcon │ │ │ │ │ ├── GearIcon.stories.tsx │ │ │ │ │ ├── GearIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GitBranchIcon │ │ │ │ │ ├── GitBranchIcon.stories.tsx │ │ │ │ │ ├── GitBranchIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GitCommitIcon │ │ │ │ │ ├── GitCommitIcon.stories.tsx │ │ │ │ │ ├── GitCommitIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GitHubIcon │ │ │ │ │ ├── GitHubIcon.stories.tsx │ │ │ │ │ ├── GitHubIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GitTagIcon │ │ │ │ │ ├── GitTagIcon.stories.tsx │ │ │ │ │ ├── GitTagIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GoogleDriveIcon │ │ │ │ │ ├── GoogleDriveIcon.stories.tsx │ │ │ │ │ ├── GoogleDriveIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GoogleIcon │ │ │ │ │ ├── GoogleIcon.stories.tsx │ │ │ │ │ ├── GoogleIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GoogleSheetIcon │ │ │ │ │ ├── GoogleSheetIcon.stories.tsx │ │ │ │ │ ├── GoogleSheetIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GrpcIcon │ │ │ │ │ ├── GrpcIcon.stories.tsx │ │ │ │ │ ├── GrpcIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── HttpIcon │ │ │ │ │ ├── HttpIcon.stories.tsx │ │ │ │ │ ├── HttpIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── HuggingFaceIcon │ │ │ │ │ ├── HuggingFaceIcon.stories.tsx │ │ │ │ │ ├── HuggingFaceIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── IconBase │ │ │ │ │ ├── IconBase.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── IdIcon │ │ │ │ │ ├── IdIcon.stories.tsx │ │ │ │ │ ├── IdIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ImageClassificationIcon │ │ │ │ │ ├── ImageClassificationIcon.stories.tsx │ │ │ │ │ ├── ImageClassificationIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ImageToImageIcon │ │ │ │ │ ├── ImageToImageIcon.stories.tsx │ │ │ │ │ ├── ImageToImageIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ImageToTextIcon │ │ │ │ │ ├── ImageToImageIcon.stories.tsx │ │ │ │ │ ├── ImageToTextIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── InstanceSegmentationIcon │ │ │ │ │ ├── InstanceSegmentationIcon.stories.tsx │ │ │ │ │ ├── InstanceSegmentationIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── IntercomIcon │ │ │ │ │ ├── IntercomIcon.stories.tsx │ │ │ │ │ ├── IntercomIcon.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── IotIcon │ │ │ │ │ ├── IotIcon.stories.tsx │ │ │ │ │ ├── IotIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── KeypointDetectionIcon │ │ │ │ │ ├── KeypointDetectionIcon.stories.tsx │ │ │ │ │ ├── KeypointDetectionIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── LinkedInIcon │ │ │ │ │ ├── LinkedInIcon.stories.tsx │ │ │ │ │ ├── LinkedInIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── LocalUploadIcon │ │ │ │ │ ├── LocalUploadIcon.stories.tsx │ │ │ │ │ ├── LocalUploadIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MediumIcon │ │ │ │ │ ├── MediumIcon.stories.tsx │ │ │ │ │ ├── MediumIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MenuIcon │ │ │ │ │ ├── MenuIcon.stories.tsx │ │ │ │ │ ├── MenuIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MetabaseIcon │ │ │ │ │ ├── MetabaseIcon.stories.tsx │ │ │ │ │ ├── MetabaseIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MinusIcon │ │ │ │ │ ├── MinusIcon.stories.tsx │ │ │ │ │ ├── MinusIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ModelIcon │ │ │ │ │ ├── ModelIcon.stories.tsx │ │ │ │ │ ├── ModelIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ModelInstanceIcon │ │ │ │ │ ├── ModelInstanceIcon.stories.tsx │ │ │ │ │ ├── ModelInstanceIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MongoDbAtalasIcon │ │ │ │ │ ├── MongoDbAtalasIcon.stories.tsx │ │ │ │ │ ├── MongoDbAtalasIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MongoDbIcon │ │ │ │ │ ├── MongoDbIcon.stories.tsx │ │ │ │ │ ├── MongoDbIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── MySqlIcon │ │ │ │ │ ├── MySqlIcon.stories.tsx │ │ │ │ │ ├── MySqlIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ObjectDetectionIcon │ │ │ │ │ ├── ObjectDetectionIcon.stories.tsx │ │ │ │ │ ├── ObjectDetectionIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── OnnxIcon │ │ │ │ │ ├── OnnxIcon.stories.tsx │ │ │ │ │ ├── OnnxIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── OpticalCharacterRecognitionIcon │ │ │ │ │ ├── OpticalCharacterRecognitionIcon.stories.tsx │ │ │ │ │ ├── OpticalCharacterRecognitionIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PenIcon │ │ │ │ │ ├── PenIcon.stories.tsx │ │ │ │ │ ├── PenIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PinIcon │ │ │ │ │ ├── PinIcon.stories.tsx │ │ │ │ │ ├── PinIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PipelineIcon │ │ │ │ │ ├── PipelineIcon.stories.tsx │ │ │ │ │ ├── PipelineIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PixelCheckIcon │ │ │ │ │ ├── PixelCheckIcon.stories.tsx │ │ │ │ │ ├── PixelCheckIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PixelCrossIcon │ │ │ │ │ ├── PixelCrossIcon.stories.tsx │ │ │ │ │ ├── PixelCrossIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PlusIcon │ │ │ │ │ ├── PlusIcon.stories.tsx │ │ │ │ │ ├── PlusIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PostgreSqlIcon │ │ │ │ │ ├── PostgreSqlIcon.stories.tsx │ │ │ │ │ ├── PostgreSqlIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PyTorchIcon │ │ │ │ │ ├── PyTorchIcon.stories.tsx │ │ │ │ │ ├── PyTorchIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── PythonIcon │ │ │ │ │ ├── PythonIcon.stories.tsx │ │ │ │ │ ├── PythonIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── RedshiftIcon │ │ │ │ │ ├── RedShiftIcon.tsx │ │ │ │ │ ├── RedshiftIcon.stories.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── RefreshIcon │ │ │ │ │ ├── RefreshIcon.stories.tsx │ │ │ │ │ ├── RefreshIcon.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ResourceIcon │ │ │ │ │ ├── ResourceIcon.stories.tsx │ │ │ │ │ ├── ResourceIcon.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── SalesforceIcon │ │ │ │ │ ├── SalesforceIcon.stories.tsx │ │ │ │ │ ├── SalesforceIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SemanticSegmentationIcon │ │ │ │ │ ├── SemanticSegmentationIcon.stories.tsx │ │ │ │ │ ├── SemanticSegmentationIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ShopifyIcon │ │ │ │ │ ├── ShopifyIcon.stories.tsx │ │ │ │ │ ├── ShopifyIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SlackIcon │ │ │ │ │ ├── SlackIcon.stories.tsx │ │ │ │ │ ├── SlackIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SnowflakeIcon │ │ │ │ │ ├── SnowflakeIcon.stories.tsx │ │ │ │ │ ├── SnowflakeIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SquarePlusIcon │ │ │ │ │ ├── SquarePlusIcon.stories.tsx │ │ │ │ │ ├── SquarePlusIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── StatusErrorIcon │ │ │ │ │ ├── StatusErrorIcon.stories.tsx │ │ │ │ │ ├── StatusErrorIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── StatusOffIcon │ │ │ │ │ ├── StatusOffIcon.stories.tsx │ │ │ │ │ ├── StatusOffIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── StatusOnIcon │ │ │ │ │ ├── StatusOnIcon.stories.tsx │ │ │ │ │ ├── StatusOnIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SyncArrowsIcon │ │ │ │ │ ├── SyncArrowsIcon.stories.tsx │ │ │ │ │ ├── SyncArrowsIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── SyncIcon │ │ │ │ │ ├── SyncIcon.stories.tsx │ │ │ │ │ ├── SyncIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── TensorFlowIcon │ │ │ │ │ ├── TensorFlowIcon.stories.tsx │ │ │ │ │ ├── TensorFlowIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── TextGenerationIcon │ │ │ │ │ ├── TextGenerationIcon.stories.tsx │ │ │ │ │ ├── TextGenerationIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── TextToImageIcon │ │ │ │ │ ├── TextToImageIcon.stories.tsx │ │ │ │ │ ├── TextToImageIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ToggleIcon │ │ │ │ │ ├── ToggleIcon.stories.tsx │ │ │ │ │ ├── ToggleIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ToolboxIcon │ │ │ │ │ ├── ToolboxIcon.stories.tsx │ │ │ │ │ ├── ToolboxIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── TwitterIcon │ │ │ │ │ ├── TwitterIcon.stories.tsx │ │ │ │ │ ├── TwitterIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── VersionIcon │ │ │ │ │ ├── VersionIcon.stories.tsx │ │ │ │ │ ├── VersionIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── VisualDataOperatorIcon │ │ │ │ │ ├── VisualDataOperatorIcon.stories.tsx │ │ │ │ │ ├── VisualDataOperatorIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── XIcon │ │ │ │ │ ├── XIcon.stories.tsx │ │ │ │ │ ├── XIcon.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── Logo │ │ │ │ ├── Logo.stories.tsx │ │ │ │ ├── Logo.test.tsx │ │ │ │ ├── Logo.tsx │ │ │ │ ├── ModelLogo.stories.tsx │ │ │ │ ├── ModelLogo.tsx │ │ │ │ ├── VdpLogo.stories.tsx │ │ │ │ ├── VdpLogo.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ └── utils │ │ │ └── index.ts │ ├── tailwind.config.cjs │ ├── tsconfig.json │ ├── tsup.config.ts │ └── vitest.config.ts ├── design-tokens │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── postcss.config.cjs │ ├── src │ │ ├── buildCSSVariables.ts │ │ ├── buildSDTokens.ts │ │ ├── buildTailwindPreset.ts │ │ └── type.ts │ ├── tokens │ │ ├── $metadata.json │ │ ├── $themes.json │ │ ├── global.json │ │ ├── semantic │ │ │ ├── colour.json │ │ │ ├── comp.json │ │ │ └── typography.json │ │ └── theme │ │ │ ├── dark.json │ │ │ └── light.json │ ├── tsconfig.json │ └── vitest.config.ts ├── sdk │ ├── .env │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── generate-mocks │ │ ├── README.md │ │ ├── generate.ts │ │ ├── main.ts │ │ ├── swagger.ts │ │ ├── template.ts │ │ ├── transform.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── generate_mocks.sh │ ├── package.json │ ├── setupTests.ts │ ├── src │ │ ├── application │ │ │ ├── ApplicationClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── artifact │ │ │ ├── ArtifactClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── catalog │ │ │ ├── CatalogClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── chat │ │ │ ├── ChatClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── core │ │ │ ├── credit │ │ │ │ ├── CreditClient.test.ts │ │ │ │ ├── CreditClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── integration │ │ │ │ ├── IntegrationClient.test.ts │ │ │ │ ├── IntegrationClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── membership │ │ │ │ ├── MembershipClient.test.ts │ │ │ │ ├── MembershipClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── metric │ │ │ │ ├── MetricClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── organization │ │ │ │ ├── OrganizationClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── subscription │ │ │ │ ├── SubscriptionClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── token │ │ │ │ ├── TokenClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── type.ts │ │ │ ├── user │ │ │ │ ├── UserClient.test.ts │ │ │ │ ├── UserClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── utils │ │ │ │ ├── UtilsClient.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ ├── helper │ │ │ ├── InstillNameInterpreter.ts │ │ │ ├── UndefinedToNull.ts │ │ │ ├── cellHelper.ts │ │ │ ├── findDoubleNewlineIndex.ts │ │ │ ├── getInstillAdditionalHeaders.test.ts │ │ │ ├── getInstillAdditionalHeaders.ts │ │ │ ├── getQueryString.test.ts │ │ │ ├── getQueryString.ts │ │ │ ├── index.ts │ │ │ └── readableStreamAsyncIterable.ts │ │ ├── index.ts │ │ ├── main │ │ │ ├── index.ts │ │ │ └── resource.ts │ │ ├── model │ │ │ ├── ModelClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── table │ │ │ ├── TableClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── types.ts │ │ └── vdp │ │ │ ├── component │ │ │ ├── ComponentClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── pipeline │ │ │ ├── PipelineClient.test.ts │ │ │ ├── PipelineClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── release │ │ │ ├── ReleaseClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── secret │ │ │ ├── SecretClient.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── trigger │ │ │ ├── TriggerClient.ts │ │ │ ├── index.ts │ │ │ ├── streamHelpers.ts │ │ │ └── types.ts │ │ │ └── types.ts │ ├── tsconfig.json │ ├── tsup.config.ts │ └── vitest.config.ts └── toolkit │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── postcss.config.cjs │ ├── setupTests.ts │ ├── src │ ├── components │ │ ├── AutoresizeInput.tsx │ │ ├── Breadcrumb.tsx │ │ ├── ClonePipelineDialog.tsx │ │ ├── CodeBlock.tsx │ │ ├── CodeString.tsx │ │ ├── CopiedTooltip.tsx │ │ ├── CopyToClipboardButton.tsx │ │ ├── EmptyView.tsx │ │ ├── EntitySelector.tsx │ │ ├── FileInputDropArea.tsx │ │ ├── GeneralDeleteResourceDialog.tsx │ │ ├── HeadExternalLink.tsx │ │ ├── IconWithBackground.tsx │ │ ├── ImageWithFallback.tsx │ │ ├── InlineTextSeparator.tsx │ │ ├── LoadingSpin.tsx │ │ ├── ModelStateLabel.tsx │ │ ├── NamespaceAvatarWithFallback.tsx │ │ ├── PageBase.tsx │ │ ├── PageTitle.tsx │ │ ├── PipelineRunStateLabel.tsx │ │ ├── PlaygroundSkeleton.tsx │ │ ├── ReadmeEditor.tsx │ │ ├── ReferenceHintDataTypeTag.tsx │ │ ├── ReferenceHintTag.tsx │ │ ├── RunStateLabel.tsx │ │ ├── RunsTableSortableColHeader.tsx │ │ ├── SectionHeader.tsx │ │ ├── SonnerToasterWithPosition.tsx │ │ ├── SortIcon.tsx │ │ ├── TableError.tsx │ │ ├── TableHead.tsx │ │ ├── TableLoadingProgress.tsx │ │ ├── TablePlaceholderBase.tsx │ │ ├── UploadImageFieldWithCrop.tsx │ │ ├── UserProfileCard.tsx │ │ ├── VersionDropdownSelector.tsx │ │ ├── WarnUnsavedChangesDialog.tsx │ │ ├── breadcrumb-with-link │ │ │ ├── BreadcrumbWithLink.tsx │ │ │ └── index.ts │ │ ├── card-model │ │ │ ├── CardModel.tsx │ │ │ ├── Menu.tsx │ │ │ ├── Skeleton.tsx │ │ │ ├── Stats.tsx │ │ │ ├── Tags.tsx │ │ │ └── index.tsx │ │ ├── card-pipeline │ │ │ ├── CardPipeline.tsx │ │ │ ├── Menu.tsx │ │ │ ├── Stats.tsx │ │ │ ├── Tags.tsx │ │ │ └── index.ts │ │ ├── cells │ │ │ ├── GeneralStateCell.tsx │ │ │ ├── TableCell.tsx │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── markdown-editor │ │ │ ├── ForwardRefEditor.tsx │ │ │ ├── InitializedMDXEditor.tsx │ │ │ └── index.tsx │ │ └── top-bar │ │ │ ├── AppTopbar.tsx │ │ │ ├── CETopbarDropdown.tsx │ │ │ ├── ChatLink.tsx │ │ │ ├── CloudTopbarDropdown.tsx │ │ │ ├── ExploreLink.tsx │ │ │ ├── NamespaceSwitch.tsx │ │ │ ├── NavLinks.tsx │ │ │ ├── RemainingCredit.tsx │ │ │ ├── TopbarDropdown.tsx │ │ │ └── index.ts │ ├── constant │ │ ├── credit.ts │ │ ├── data-testid.ts │ │ ├── docsBaseUrl.ts │ │ ├── errors.ts │ │ ├── index.ts │ │ ├── integration.ts │ │ ├── model.ts │ │ ├── pipeline.ts │ │ ├── react-query.ts │ │ ├── resourceIdPrefix.ts │ │ └── ui.ts │ ├── index.ts │ ├── lib │ │ ├── amplitude │ │ │ ├── AmplitudeContext.ts │ │ │ ├── helper.ts │ │ │ ├── index.ts │ │ │ ├── type.ts │ │ │ └── useSendAmplitudeData.ts │ │ ├── clientCookies.ts │ │ ├── convertLongNumberToK.ts │ │ ├── convertSentenceToCamelCase.ts │ │ ├── createNaiveRandomString.ts │ │ ├── dashboard │ │ │ ├── calculatePercentageDelta.ts │ │ │ ├── convertTimestampToLocal.ts │ │ │ ├── convertToSecondsAndMilliseconds.ts │ │ │ ├── formatDateTime.ts │ │ │ ├── generateChartData.ts │ │ │ ├── generateModelTriggerChartRecordData.ts │ │ │ ├── generatePipelinesChartData.ts │ │ │ ├── getDateRange.ts │ │ │ ├── getModelTriggersSummary.ts │ │ │ ├── getPipeLineOptions.ts │ │ │ ├── getPipelineTriggersSummary.ts │ │ │ ├── getPreviousTimeframe.ts │ │ │ ├── getTimeInRFC3339Format.ts │ │ │ ├── getTriggersSummary.ts │ │ │ ├── index.ts │ │ │ ├── options.ts │ │ │ ├── orderCountsByTriggerTime.ts │ │ │ ├── parseTriggerStatusLabel.ts │ │ │ ├── sortByDate.ts │ │ │ └── sortByTriggerTime.ts │ │ ├── dot │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── fillArrayWithZero.ts │ │ ├── formatNumberToLocale.ts │ │ ├── generateDateInPast.ts │ │ ├── getCaptializeTwoWordsFromName.tsx │ │ ├── github │ │ │ └── index.ts │ │ ├── hook │ │ │ ├── index.ts │ │ │ ├── useCreateUpdateDeleteResourceGuard.tsx │ │ │ ├── useGuardPipelineBuilderUnsavedChangesNavigation.ts │ │ │ ├── useNavigateBackAfterLogin.tsx │ │ │ ├── useOnScreen.ts │ │ │ ├── useRefSize.ts │ │ │ └── useWindowSize.ts │ │ ├── index.ts │ │ ├── integrations │ │ │ ├── core.ts │ │ │ ├── helpers.ts │ │ │ └── types.ts │ │ ├── isArtifactRelatedInstillFormat.ts │ │ ├── isDownloadableArtifactBlobURL.ts │ │ ├── isPublicModel.ts │ │ ├── isPublicPipeline.ts │ │ ├── isValidURL.ts │ │ ├── markdown │ │ │ ├── MarkdownViewer.tsx │ │ │ ├── index.ts │ │ │ ├── preprocessLatex.test.ts │ │ │ └── preprocessLatex.ts │ │ ├── pathname-evaluator │ │ │ ├── index.ts │ │ │ ├── isModelPlaygroundPage.ts │ │ │ ├── isPipelineBuilderPage.ts │ │ │ └── isPipelineOverviewPage.ts │ │ ├── react-json-view │ │ │ ├── customTheme.tsx │ │ │ └── index.ts │ │ ├── react-query-service │ │ │ ├── application │ │ │ │ ├── index.ts │ │ │ │ ├── useCreateNamespaceAgent.ts │ │ │ │ ├── useCreateNamespaceChat.ts │ │ │ │ ├── useDeleteNamespaceAgent.ts │ │ │ │ ├── useDeleteNamespaceChat.ts │ │ │ │ ├── useListNamespaceAgents.ts │ │ │ │ ├── useListNamespaceChats.ts │ │ │ │ ├── useUpdateNamespaceAgent.ts │ │ │ │ └── useUpdateNamespaceChat.ts │ │ │ ├── artifact │ │ │ │ ├── index.ts │ │ │ │ ├── useDownloadNamespaceObject.ts │ │ │ │ ├── useGetNamespaceObjectDownloadURL.ts │ │ │ │ ├── useGetNamespaceObjectUploadURL.ts │ │ │ │ ├── useNamespaceObjectDownloadURL.ts │ │ │ │ ├── useUploadAndGetDownloadNamespaceObjectURL.ts │ │ │ │ └── useUploadNamespaceObject.ts │ │ │ ├── catalog │ │ │ │ ├── index.ts │ │ │ │ ├── useCreateNamespaceCatalog.ts │ │ │ │ ├── useCreateNamespaceCatalogFile.ts │ │ │ │ ├── useDeleteCatalogFile.tsx │ │ │ │ ├── useDeleteNamespaceCatalog.ts │ │ │ │ ├── useGetNamespaceCatalogFile.ts │ │ │ │ ├── useGetNamespaceCatalogFileSummary.ts │ │ │ │ ├── useGetNamespaceCatalogSingleSourceOfTruthFile.ts │ │ │ │ ├── useListNamespaceCatalogChunks.ts │ │ │ │ ├── useListNamespaceCatalogFiles.ts │ │ │ │ ├── useListNamespaceCatalogs.ts │ │ │ │ ├── useProcessCatalogFiles.ts │ │ │ │ ├── useUpdateCatalogChunk.ts │ │ │ │ └── useUpdateNamespaceCatalog.ts │ │ │ ├── chats │ │ │ │ ├── index.ts │ │ │ │ └── useListNamespaceChatTables.ts │ │ │ ├── connector │ │ │ │ ├── index.ts │ │ │ │ └── useComponentDefinitions.ts │ │ │ ├── hub │ │ │ │ ├── index.ts │ │ │ │ └── useHubStats.ts │ │ │ ├── index.ts │ │ │ ├── integration │ │ │ │ ├── index.ts │ │ │ │ ├── useCreateIntegrationConnection.ts │ │ │ │ ├── useDeleteIntegrationConnection.ts │ │ │ │ ├── useGetIntegration.ts │ │ │ │ ├── useGetNamespaceConnection.ts │ │ │ │ ├── useInfiniteListIntegrations.ts │ │ │ │ ├── useInfiniteListNamespaceConnectionReferencedPipelines.ts │ │ │ │ ├── useInfiniteListNamespaceConnections.ts │ │ │ │ ├── useListNamespaceConnections.ts │ │ │ │ ├── useTestNamespaceConnection.ts │ │ │ │ └── useUpdateNamespaceConnection.ts │ │ │ ├── metric │ │ │ │ ├── index.ts │ │ │ │ ├── useCreditConsumptionChartRecords.ts │ │ │ │ ├── useListModelRunsByRequester.ts │ │ │ │ ├── useListPipelineRunsByRequester.ts │ │ │ │ ├── useModelTriggerCount.ts │ │ │ │ ├── useModelTriggerMetric.ts │ │ │ │ ├── usePipelineTriggerComputationTimeCharts.ts │ │ │ │ ├── usePipelineTriggerMetric.ts │ │ │ │ └── usePipelineTriggers.ts │ │ │ ├── mgmt │ │ │ │ ├── index.ts │ │ │ │ ├── onTriggerInvalidateCredits.ts │ │ │ │ ├── use-api-tokens │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-authenticated-user │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-namespace-type │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-user │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useAPIToken.ts │ │ │ │ ├── useAuthenticatedUserSubscription.ts │ │ │ │ ├── useCreateAPIToken.ts │ │ │ │ ├── useDeleteAPIToken.ts │ │ │ │ ├── useGetNamespaceRemainingInstillCredit.ts │ │ │ │ ├── useListNamespacesRemainingInstillCredit.ts │ │ │ │ ├── useMgmtDefinition.ts │ │ │ │ ├── useUpdateAuthenticatedUser.ts │ │ │ │ └── useUsers.ts │ │ │ ├── misc │ │ │ │ ├── index.ts │ │ │ │ ├── useBlogPosts.ts │ │ │ │ └── useChangelogs.ts │ │ │ ├── model │ │ │ │ ├── index.ts │ │ │ │ ├── onSuccessAfterModelMutation.ts │ │ │ │ ├── use-namespace-model │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-namespace-models │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useCreateNamespaceModel.ts │ │ │ │ ├── useDeleteNamespaceModel.ts │ │ │ │ ├── useInfiniteModels.ts │ │ │ │ ├── useInfiniteNamespaceModelVersions.ts │ │ │ │ ├── useInfiniteNamespaceModels.ts │ │ │ │ ├── useModelAvailableRegions.ts │ │ │ │ ├── useNamespaceModelOperationResult.ts │ │ │ │ ├── useNamespaceModelVersionOperationResult.ts │ │ │ │ ├── usePaginatedNamespaceModelRuns.ts │ │ │ │ ├── useTriggerAsyncNamespaceModelVersion.ts │ │ │ │ ├── useUpdateNamespaceModel.ts │ │ │ │ └── useWatchNamespaceModels.ts │ │ │ ├── organization │ │ │ │ ├── index.ts │ │ │ │ ├── use-organization-memberships │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-organization │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-organizations │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useCreateOrganization.ts │ │ │ │ ├── useDeleteOrganization.ts │ │ │ │ ├── useDeleteOrganizationMembership.ts │ │ │ │ ├── useDeleteUserMembership.ts │ │ │ │ ├── useOrganizationMembership.ts │ │ │ │ ├── useOrganizationSubscription.ts │ │ │ │ ├── useUpdateOrganization.ts │ │ │ │ ├── useUpdateOrganizationMembership.ts │ │ │ │ ├── useUpdateUserMembership.ts │ │ │ │ ├── useUserMembership.ts │ │ │ │ └── useUserMemberships.ts │ │ │ ├── pipeline │ │ │ │ ├── index.ts │ │ │ │ ├── use-namespace-pipeline │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-namespace-pipelines │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useCloneNamespacePipeline.ts │ │ │ │ ├── useCreateNamespacePipeline.ts │ │ │ │ ├── useDeleteNamespacePipeline.ts │ │ │ │ ├── useInfiniteAccessiblePipelines.ts │ │ │ │ ├── useInfiniteNamespacePipelines.ts │ │ │ │ ├── usePaginatedNamepsacePipelineComponentRuns.ts │ │ │ │ ├── usePaginatedNamespacePipelineRuns.ts │ │ │ │ ├── useRenameNamespacePipeline.tsx │ │ │ │ ├── useStreamingTriggerUserPipeline.tsx │ │ │ │ ├── useStreamingTriggerUserPipelineRelease.tsx │ │ │ │ ├── useTriggerNamespacePipeline.tsx │ │ │ │ ├── useTriggerNamespacePipelineRelease.tsx │ │ │ │ └── useUpdateNamespacePipeline.ts │ │ │ ├── queryKeyStore.ts │ │ │ ├── release │ │ │ │ ├── index.ts │ │ │ │ ├── use-namespace-pipeline-releases │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useCreateNamespacePipelineRelease.ts │ │ │ │ ├── useDeleteNamespacePipelineRelease.ts │ │ │ │ ├── useInfiniteNamespacePipelineReleases.ts │ │ │ │ └── useSortedReleases.tsx │ │ │ ├── secret │ │ │ │ ├── index.ts │ │ │ │ ├── use-namespace-secret │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── use-namespace-secrets │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server.ts │ │ │ │ ├── useCreateNamespaceSecret.ts │ │ │ │ └── useDeleteNamespaceSecret.ts │ │ │ ├── table │ │ │ │ ├── index.ts │ │ │ │ ├── useCreateNamespaceTable.ts │ │ │ │ ├── useCreateNamespaceTableRow.ts │ │ │ │ ├── useDeleteNamespaceTable.ts │ │ │ │ ├── useDeleteNamespaceTableRow.ts │ │ │ │ ├── useExportNamespaceTable.ts │ │ │ │ ├── useGetNamespaceTable.ts │ │ │ │ ├── useGetNamespaceTableCell.ts │ │ │ │ ├── useGetNamespaceTableColumnDefinitions.ts │ │ │ │ ├── useListNamespaceTableRows.ts │ │ │ │ ├── useListNamespaceTables.ts │ │ │ │ ├── useLockNamespaceTableCell.ts │ │ │ │ ├── useMoveNamespaceTableRow.ts │ │ │ │ ├── useRecomputeNamespaceTableCell.ts │ │ │ │ ├── useRecomputeNamespaceTableColumn.ts │ │ │ │ ├── useResetNamespaceTableCell.ts │ │ │ │ ├── useUnlockNamespaceTableCell.ts │ │ │ │ ├── useUpdateNamespaceTable.ts │ │ │ │ ├── useUpdateNamespaceTableCell.ts │ │ │ │ ├── useUpdateNamespaceTableColumnDefinitions.ts │ │ │ │ └── useUpdateNamespaceTableRow.ts │ │ │ └── types.ts │ │ ├── sdk-helper │ │ │ ├── checkIsDefinition.ts │ │ │ ├── createInstillAxiosClient.ts │ │ │ ├── getInstillAPIClient.ts │ │ │ ├── getInstillApiErrorMessage.ts │ │ │ ├── getInstillApplicationAPIClient.ts │ │ │ ├── getInstillArtifactAPIClient.ts │ │ │ ├── getInstillCatalogAPIClient.ts │ │ │ ├── getInstillModelAPIClient.ts │ │ │ └── index.ts │ │ ├── store │ │ │ ├── index.ts │ │ │ ├── useConfigureModelFormStore.ts │ │ │ ├── useConfigureSourceFormStore.ts │ │ │ ├── useCreateResourceFormStore.ts │ │ │ ├── useMessageBoxStore.tsx │ │ │ └── useModalStore.ts │ │ ├── stringToHash32Bit.ts │ │ ├── table │ │ │ ├── formatDate.ts │ │ │ └── index.ts │ │ ├── test │ │ │ └── utils.tsx │ │ ├── tip-tap │ │ │ ├── extensions.ts │ │ │ ├── index.ts │ │ │ └── markdown.ts │ │ ├── toastInstillError.ts │ │ ├── toastInstillSuccess.ts │ │ ├── type │ │ │ ├── general.ts │ │ │ ├── index.ts │ │ │ └── zod.ts │ │ ├── use-callback-ref │ │ │ ├── index.ts │ │ │ └── useCallbackRef.tsx │ │ ├── use-controllable-state │ │ │ ├── index.ts │ │ │ └── useControllableState.tsx │ │ ├── use-instill-form │ │ │ ├── components │ │ │ │ ├── common │ │ │ │ │ ├── FieldDescriptionTooltip.tsx │ │ │ │ │ ├── VideoPreview.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── component-output │ │ │ │ │ ├── AudioField.tsx │ │ │ │ │ ├── AudiosField.tsx │ │ │ │ │ ├── CopyButton.tsx │ │ │ │ │ ├── DownloadableFileField.tsx │ │ │ │ │ ├── DownloadableFilesField.tsx │ │ │ │ │ ├── FieldRoot.tsx │ │ │ │ │ ├── ImageField.tsx │ │ │ │ │ ├── ImagesField.tsx │ │ │ │ │ ├── MDTextViewer.tsx │ │ │ │ │ ├── NoOutput.tsx │ │ │ │ │ ├── NumberField.tsx │ │ │ │ │ ├── NumbersField.tsx │ │ │ │ │ ├── ObjectField.tsx │ │ │ │ │ ├── ObjectsField.tsx │ │ │ │ │ ├── TextField.tsx │ │ │ │ │ ├── TextsField.tsx │ │ │ │ │ ├── VideoField.tsx │ │ │ │ │ ├── VideosField.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── regular │ │ │ │ │ ├── BooleanField.tsx │ │ │ │ │ ├── CollapsibleFormGroup.tsx │ │ │ │ │ ├── CredentialTextField.tsx │ │ │ │ │ ├── ImageField.tsx │ │ │ │ │ ├── ImagesField.tsx │ │ │ │ │ ├── ObjectArrayForm.tsx │ │ │ │ │ ├── OneOfConditionField.tsx │ │ │ │ │ ├── SingleSelectField.tsx │ │ │ │ │ ├── TextAreaField.tsx │ │ │ │ │ ├── TextField.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── smart-hint │ │ │ │ │ ├── SmartHintInfoCard.tsx │ │ │ │ │ ├── SmartHintList.tsx │ │ │ │ │ ├── TextArea.tsx │ │ │ │ │ ├── TextField.tsx │ │ │ │ │ ├── getFieldPlaceholder.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── onClickSmartHint.tsx │ │ │ │ │ ├── onInputChange.tsx │ │ │ │ │ ├── onInputKeydown.tsx │ │ │ │ │ ├── useFilteredHints.tsx │ │ │ │ │ └── useValidateReferenceAndTemplate.tsx │ │ │ │ └── trigger-request-form-fields │ │ │ │ │ ├── AudioField.tsx │ │ │ │ │ ├── AudioListItem.tsx │ │ │ │ │ ├── AudiosField.tsx │ │ │ │ │ ├── BooleanField.tsx │ │ │ │ │ ├── FieldHead.tsx │ │ │ │ │ ├── FileAndStringUploadField.tsx │ │ │ │ │ ├── FileField.tsx │ │ │ │ │ ├── FileListItem.tsx │ │ │ │ │ ├── FilesField.tsx │ │ │ │ │ ├── ImageField.tsx │ │ │ │ │ ├── ImagesField.tsx │ │ │ │ │ ├── LongTextField.tsx │ │ │ │ │ ├── NumberField.tsx │ │ │ │ │ ├── NumbersField.tsx │ │ │ │ │ ├── ObjectField.tsx │ │ │ │ │ ├── TextField.tsx │ │ │ │ │ ├── TextareaField.tsx │ │ │ │ │ ├── TextareasField.tsx │ │ │ │ │ ├── TextsField.tsx │ │ │ │ │ ├── UploadFileInput.tsx │ │ │ │ │ ├── VideoField.tsx │ │ │ │ │ ├── VideosField.tsx │ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── pick │ │ │ │ ├── index.ts │ │ │ │ ├── pickComponentOutputFieldsFromInstillFormTree.tsx │ │ │ │ ├── pickConstInfoFromOneOfCondition.ts │ │ │ │ ├── pickDefaultCondition.ts │ │ │ │ ├── pickPipelineTriggerRequestFormFields.tsx │ │ │ │ ├── pickRegularFieldsFromInstillFormTree.tsx │ │ │ │ ├── pickSelectedConditionMap.test.ts │ │ │ │ └── pickSelectedConditionMap.ts │ │ │ ├── transform │ │ │ │ ├── index.ts │ │ │ │ ├── transformInstillFormTreeToDefaultValue.test.ts │ │ │ │ ├── transformInstillFormTreeToDefaultValue.ts │ │ │ │ ├── transformInstillFormTreeToInitialSelectedCondition.test.ts │ │ │ │ ├── transformInstillFormTreeToInitialSelectedCondition.ts │ │ │ │ ├── transformInstillFormTreeToReferenceHints.ts │ │ │ │ ├── transformInstillFormatToHumanReadableFormat.tsx │ │ │ │ ├── transformInstillJSONSchemaToFormTree.test.ts │ │ │ │ ├── transformInstillJSONSchemaToFormTree.ts │ │ │ │ ├── transformInstillJSONSchemaToZod.test.ts │ │ │ │ ├── transformInstillJSONSchemaToZod.ts │ │ │ │ ├── transformPipelineTriggerRequestFieldsToSuperRefineRules.ts │ │ │ │ └── transformPipelineTriggerRequestFieldsToZod.ts │ │ │ ├── types.ts │ │ │ ├── useComponentOutputFields.tsx │ │ │ ├── useInstillForm.test.tsx │ │ │ ├── useInstillForm.tsx │ │ │ ├── useInstillSelectedConditionMap.tsx │ │ │ └── usePipelineTriggerRequestForm.tsx │ │ ├── use-instill-store │ │ │ ├── chatSlice.ts │ │ │ ├── editorSlice.ts │ │ │ ├── featureFlagSlice.ts │ │ │ ├── generalSlice.ts │ │ │ ├── index.ts │ │ │ ├── pipelineBuilderSlice.ts │ │ │ ├── recentlyUsedSlice.ts │ │ │ ├── smartHintSlice.ts │ │ │ ├── tableSlice.ts │ │ │ ├── types.ts │ │ │ └── useInstillStore.ts │ │ ├── use-smart-hint │ │ │ ├── index.ts │ │ │ ├── output-reference-hint │ │ │ │ ├── fields │ │ │ │ │ ├── GroupByFormatField.tsx │ │ │ │ │ ├── ListField.tsx │ │ │ │ │ ├── ObjectArrayField.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pickFieldsFromOutputReferenceHints.tsx │ │ │ │ ├── pickOutputReferenceHintsFromComponent.tsx │ │ │ │ └── useOutputReferenceHintsFields.tsx │ │ │ ├── pickSmartHintsFromAcceptFormats.test.ts │ │ │ ├── pickSmartHintsFromAcceptFormats.ts │ │ │ ├── pickSmartHintsFromNodes.ts │ │ │ ├── transformFormTreeToNestedSmartHints.ts │ │ │ ├── transformFormTreeToSmartHints.test.ts │ │ │ ├── transformFormTreeToSmartHints.ts │ │ │ ├── transformPipelineTriggerRequestFieldsToSmartHints.test.ts │ │ │ ├── transformPipelineTriggerRequestFieldsToSmartHints.ts │ │ │ ├── types.ts │ │ │ └── useSmartHint.ts │ │ ├── useRouteInfo.ts │ │ └── useUserNamespaces.ts │ ├── server │ │ ├── index.ts │ │ └── utility │ │ │ ├── chunk.ts │ │ │ ├── config.ts │ │ │ ├── cookie.ts │ │ │ ├── formatResourceId.ts │ │ │ ├── generateNextMetaBase.tsx │ │ │ ├── generateRandomReadableName.ts │ │ │ ├── getCanvasTextWidth.ts │ │ │ ├── getHumanReadableStringFromTime │ │ │ ├── getHumanReadableStringFromTime.test.ts │ │ │ ├── getHumanReadableStringFromTime.ts │ │ │ └── index.ts │ │ │ ├── getModelTabTitle.ts │ │ │ ├── getPipelineTabTitle.ts │ │ │ ├── groupBy.ts │ │ │ ├── handle.ts │ │ │ ├── index.ts │ │ │ ├── parseResourceId.ts │ │ │ ├── removeObjKey.test.ts │ │ │ ├── removeObjKey.ts │ │ │ ├── validateInstillResourceID.ts │ │ │ └── validateInstillVariableAndOutputKey.ts │ └── view │ │ ├── catalog │ │ ├── CatalogMainView.tsx │ │ ├── components │ │ │ ├── CatalogCard.tsx │ │ │ ├── CatalogCardMenu.tsx │ │ │ ├── CatalogSearchSort.tsx │ │ │ ├── ChunkCard.tsx │ │ │ ├── CloneCatalogDialog.tsx │ │ │ ├── CreateCatalogCard.tsx │ │ │ ├── CreateCatalogDialog.tsx │ │ │ ├── DragAndDropUpload.tsx │ │ │ ├── EditCatalogDialog.tsx │ │ │ ├── EmptyState.tsx │ │ │ ├── FileChunks.tsx │ │ │ ├── FileDetailsOverlay.tsx │ │ │ ├── FilePreview.tsx │ │ │ ├── FileTable.tsx │ │ │ ├── FileTableHeader.tsx │ │ │ ├── FileTableRow.tsx │ │ │ ├── MetadataPreview.tsx │ │ │ ├── OptionSelectButton.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── StatusTag.tsx │ │ │ ├── WarnDiscardFilesDialog.tsx │ │ │ ├── index.ts │ │ │ ├── lib │ │ │ │ ├── constant.ts │ │ │ │ ├── helpers.tsx │ │ │ │ ├── index.ts │ │ │ │ └── uploadFileWithProgress.ts │ │ │ ├── notifications │ │ │ │ ├── AllNamespacesFullNotification.tsx │ │ │ │ ├── CatalogLimitNotification.tsx │ │ │ │ ├── CreditUsageFileNotification.tsx │ │ │ │ ├── DeleteCatalogNotification.tsx │ │ │ │ ├── DeleteFileNotification.tsx │ │ │ │ ├── DuplicateFileNotification.tsx │ │ │ │ ├── FileIsBeingDeletedNotification.tsx │ │ │ │ ├── FileSizeNotification.tsx │ │ │ │ ├── FileTooLongNotification.tsx │ │ │ │ ├── IncorrectFormatFileNotification.tsx │ │ │ │ ├── InsufficientCreditNotification.tsx │ │ │ │ ├── InsufficientStorageBanner.tsx │ │ │ │ ├── InsufficientStorageNotification.tsx │ │ │ │ ├── UpgradePlanLink.tsx │ │ │ │ ├── WarnFileUploadDialog.tsx │ │ │ │ └── index.ts │ │ │ └── tabs │ │ │ │ ├── AskQuestionTab.tsx │ │ │ │ ├── CatalogFilesTab.tsx │ │ │ │ ├── CatalogMainTab.tsx │ │ │ │ ├── ChunkTab.tsx │ │ │ │ ├── GetCatalogTab.tsx │ │ │ │ ├── ImageTab.tsx │ │ │ │ ├── MarkdownTab.tsx │ │ │ │ ├── RetrieveTestTab.tsx │ │ │ │ ├── UploadExploreTab.tsx │ │ │ │ └── index.ts │ │ └── index.ts │ │ ├── chat │ │ ├── ChatInput.tsx │ │ ├── ChatView.tsx │ │ ├── ToolList.tsx │ │ ├── index.ts │ │ └── useToolSuggestionConfig.ts │ │ ├── dashboard │ │ ├── DashboardContainer.tsx │ │ ├── DashboardPipelineDetailsPageMainView.tsx │ │ ├── DashboardPipelineListPageMainView.tsx │ │ ├── DashboardPipelinesTable.tsx │ │ ├── FilterByDay.tsx │ │ ├── PipelineTriggersTable.tsx │ │ ├── RemainingTriggers.tsx │ │ ├── SemiCircleProgress.tsx │ │ ├── StatusTag.tsx │ │ ├── TriggersTablePlaceholder.tsx │ │ ├── UsageSwitch.tsx │ │ ├── activity │ │ │ ├── ActivityTab.tsx │ │ │ ├── DashboardActivityPageMainView.tsx │ │ │ ├── ModelTriggersSummary.tsx │ │ │ ├── ModelsTriggerCountsLineChart.tsx │ │ │ ├── PipelineTriggerCountsLineChart.tsx │ │ │ ├── PipelineTriggersSummary.tsx │ │ │ └── index.ts │ │ ├── cost │ │ │ ├── CostTab.tsx │ │ │ ├── CreditCostTrendChart.tsx │ │ │ ├── index.ts │ │ │ ├── model │ │ │ │ ├── DashboardCostModelPageMainView.tsx │ │ │ │ ├── DashboardListModel.tsx │ │ │ │ └── index.ts │ │ │ └── pipeline │ │ │ │ ├── DashboardCostPipelinePageMainView.tsx │ │ │ │ ├── DashboardListPipeline.tsx │ │ │ │ └── index.ts │ │ ├── index.ts │ │ └── lib │ │ │ ├── constant.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── model │ │ ├── CreateModelForm.tsx │ │ ├── ModelHubCreatePageMainView.tsx │ │ ├── ModelHubListPageMainView.tsx │ │ ├── ModelHubSettingPageMainView.tsx │ │ ├── ModelTablePlaceholder.tsx │ │ ├── ModelsList.tsx │ │ ├── ModelsListPagination.tsx │ │ ├── ModelsTable.tsx │ │ ├── index.ts │ │ └── view-model │ │ │ ├── ModelApi.tsx │ │ │ ├── ModelContentViewer.tsx │ │ │ ├── ModelHead.tsx │ │ │ ├── ModelPlayground.tsx │ │ │ ├── ModelReadme.tsx │ │ │ ├── ModelRunViews │ │ │ ├── List.tsx │ │ │ ├── Run.tsx │ │ │ └── index.ts │ │ │ ├── ModelRuns.tsx │ │ │ ├── ModelSettingsEditForm.tsx │ │ │ ├── ModelVersions.tsx │ │ │ ├── NoVersionsPlaceholder.tsx │ │ │ ├── constants.ts │ │ │ └── index.tsx │ │ ├── not-found │ │ ├── LinkBlock.tsx │ │ ├── NotFoundView.tsx │ │ └── index.ts │ │ ├── pipeline-builder │ │ ├── Flow.tsx │ │ ├── PipelineBuilderMainView.tsx │ │ ├── components │ │ │ ├── BackToLatestVersionTopBar.tsx │ │ │ ├── BottomBar.tsx │ │ │ ├── ComponentOutputReferenceHints.tsx │ │ │ ├── ComponentOutputs.tsx │ │ │ ├── CustomEdge.tsx │ │ │ ├── CustomHandle.tsx │ │ │ ├── OpenAdvancedConfigurationButton.tsx │ │ │ ├── PipelineBuilderCanvas.tsx │ │ │ ├── PipelineToolkitDialog.tsx │ │ │ ├── ReadOnlyPipelineBuilder.tsx │ │ │ ├── RemainingCreditCTA.tsx │ │ │ ├── SelectConnectorDialogItem.tsx │ │ │ ├── VerticalSortableWrapper.tsx │ │ │ ├── canvasPanOnDrag.ts │ │ │ ├── dialogs │ │ │ │ ├── index.ts │ │ │ │ ├── publish-pipeline-dialog │ │ │ │ │ ├── Head.tsx │ │ │ │ │ ├── Metadata.tsx │ │ │ │ │ ├── PublishPipelineDialog.tsx │ │ │ │ │ ├── ReadmeEditor.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── select-component-dialog │ │ │ │ │ ├── AISection.tsx │ │ │ │ │ ├── ApplicationSection.tsx │ │ │ │ │ ├── DataSection.tsx │ │ │ │ │ ├── GenericSection.tsx │ │ │ │ │ ├── OperatorSection.tsx │ │ │ │ │ ├── Section.tsx │ │ │ │ │ ├── SelectComponentDialog.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── share-pipeline-dialog │ │ │ │ │ ├── Head.tsx │ │ │ │ │ ├── SharePipelineDialog.tsx │ │ │ │ │ ├── TabPublish.tsx │ │ │ │ │ ├── TabShare.tsx │ │ │ │ │ ├── UnpublishPipelineDialog.tsx │ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── iterator-editor │ │ │ │ ├── IteratorEditor.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── iterator-input │ │ │ │ │ ├── IterateElementHint.tsx │ │ │ │ │ ├── IteratorInput.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── iterator-output │ │ │ │ │ ├── AddOutputButton.tsx │ │ │ │ │ ├── DeleteOutputButton.tsx │ │ │ │ │ ├── IteratorOutput.tsx │ │ │ │ │ ├── OutputKeyField.tsx │ │ │ │ │ ├── OutputValueInput.tsx │ │ │ │ │ └── OutputValueSelect.tsx │ │ │ ├── nodes │ │ │ │ ├── EmptyNode.tsx │ │ │ │ ├── common │ │ │ │ │ ├── NodeDropdownMenu.tsx │ │ │ │ │ ├── NodeHead.tsx │ │ │ │ │ ├── NodeIDEditor.tsx │ │ │ │ │ ├── NodeSortableFieldWrapper.tsx │ │ │ │ │ ├── NodeWrapper.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── node-bottom-bar │ │ │ │ │ │ ├── NodeBottomBarContent.tsx │ │ │ │ │ │ ├── NodeBottomBarContext.tsx │ │ │ │ │ │ ├── NodeBottomBarMenu.tsx │ │ │ │ │ │ ├── NodeBottomBarOutput.tsx │ │ │ │ │ │ ├── NodeBottomBarSchema.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ ├── control-panel │ │ │ │ │ ├── ControlPanel.tsx │ │ │ │ │ ├── NodeControlPanel.tsx │ │ │ │ │ ├── VariableResponseNodeControlPanel.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── general-node │ │ │ │ │ ├── DataConnectorFreeForm.tsx │ │ │ │ │ ├── GeneralNode.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── iterator-node │ │ │ │ │ ├── IteratorComponentLable.tsx │ │ │ │ │ ├── IteratorNode.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── response-node │ │ │ │ │ ├── ResponseNode.tsx │ │ │ │ │ ├── ResponseNodeFreeForm.tsx │ │ │ │ │ ├── UserDefinedFieldItem.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── variable-node │ │ │ │ │ ├── VariableNode.tsx │ │ │ │ │ ├── VariableNodeFields.tsx │ │ │ │ │ ├── VariableNodeFreeForm.tsx │ │ │ │ │ ├── VariableNodeTypeSelect.tsx │ │ │ │ │ ├── constructFieldKey.ts │ │ │ │ │ └── index.ts │ │ │ ├── release-menu │ │ │ │ ├── Description.tsx │ │ │ │ ├── Head.tsx │ │ │ │ ├── ReleaseMenu.tsx │ │ │ │ ├── SemverSelect.tsx │ │ │ │ └── index.ts │ │ │ ├── right-panel │ │ │ │ ├── PipelineGeneralComponentFormOnRightPanel.tsx │ │ │ │ ├── RightPanel.tsx │ │ │ │ └── index.ts │ │ │ ├── top-control-menu │ │ │ │ ├── PipelineName.tsx │ │ │ │ ├── Release.tsx │ │ │ │ ├── Run.tsx │ │ │ │ ├── Save.tsx │ │ │ │ ├── Share.tsx │ │ │ │ ├── Toolkit.tsx │ │ │ │ ├── TopControlMenu.tsx │ │ │ │ └── index.ts │ │ │ └── triggerPipelineSnippet.ts │ │ ├── index.ts │ │ ├── lib │ │ │ ├── checkComponentType.tsx │ │ │ ├── checkIsValidComponentMetadata.ts │ │ │ ├── checkIsValidPosition.test.ts │ │ │ ├── checkIsValidPosition.ts │ │ │ ├── checkNodeType.tsx │ │ │ ├── composeCompleteNodesUnderEditingIteratorMode.tsx │ │ │ ├── composeEdgesFromNodes.test.ts │ │ │ ├── composeEdgesFromNodes.ts │ │ │ ├── composePipelineComponentMapFromNodes.ts │ │ │ ├── composePipelineInputSnippet.ts │ │ │ ├── composePipelineMetadataMapFromNodes.test.ts │ │ │ ├── composePipelineMetadataMapFromNodes.ts │ │ │ ├── composePipelineRecipeFromNodes.tsx │ │ │ ├── createGraphLayout.tsx │ │ │ ├── createNodesFromPipelineComponents.tsx │ │ │ ├── createNodesFromPipelineRecipe.tsx │ │ │ ├── extractPipelineComponentReferenceFromString.ts │ │ │ ├── extractReferencesFromConfiguration.ts │ │ │ ├── generateNewComponentIndex.test.ts │ │ │ ├── generateUniqueIndex.ts │ │ │ ├── generateUniqueNodeIdFromDefinition.ts │ │ │ ├── getAllNodeID.tsx │ │ │ ├── getGeneralComponentInOutputSchema.ts │ │ │ ├── getPropertiesFromOpenAPISchema.ts │ │ │ ├── getReferencesFromAny.ts │ │ │ ├── getReferencesFromString.test.ts │ │ │ ├── getReferencesFromString.ts │ │ │ ├── hooks │ │ │ │ ├── index.ts │ │ │ │ ├── useAddNodeWithDefinition.tsx │ │ │ │ ├── useCheckIsHidden.tsx │ │ │ │ ├── usePipelineBuilderGraph.tsx │ │ │ │ ├── useRenamePipeline.tsx │ │ │ │ ├── useSavePipeline.tsx │ │ │ │ ├── useUpdaterOnNode.tsx │ │ │ │ └── useUpdaterOnRightPanel.tsx │ │ │ ├── index.ts │ │ │ ├── readFileToBinary.ts │ │ │ ├── recursive-helpers │ │ │ │ ├── index.ts │ │ │ │ ├── recursiveParseNumberToString.test.ts │ │ │ │ ├── recursiveParseNumberToString.ts │ │ │ │ ├── recursiveParseToNum.test.ts │ │ │ │ ├── recursiveParseToNum.ts │ │ │ │ ├── recursiveRemoveUndefinedAndNullFromArray.test.ts │ │ │ │ ├── recursiveRemoveUndefinedAndNullFromArray.ts │ │ │ │ ├── recursiveReplaceNullAndEmptyStringWithUndefined.test.ts │ │ │ │ ├── recursiveReplaceNullAndEmptyStringWithUndefined.ts │ │ │ │ ├── recursiveReplaceTargetValue.test.ts │ │ │ │ └── recursiveReplaceTargetValue.ts │ │ │ └── transformConnectorDefinitionIDToComponentIDPrefix.ts │ │ └── type.ts │ │ ├── pipeline │ │ ├── PipelineTablePlaceholder.tsx │ │ ├── PipelinesTable.tsx │ │ ├── index.ts │ │ ├── view-pipeline │ │ │ ├── Head.tsx │ │ │ ├── Menu.tsx │ │ │ ├── PipelineApi.tsx │ │ │ ├── PipelineContentViewer.tsx │ │ │ ├── PipelinePlayground.tsx │ │ │ ├── PipelinePreview.tsx │ │ │ ├── PipelineReadme.tsx │ │ │ ├── PipelineRunViews │ │ │ │ ├── List.tsx │ │ │ │ ├── Run.tsx │ │ │ │ ├── RunComponents.tsx │ │ │ │ └── index.ts │ │ │ ├── PipelineRuns.tsx │ │ │ ├── PipelineSettings.tsx │ │ │ ├── PipelineVersions.tsx │ │ │ ├── RunButton.tsx │ │ │ ├── ViewPipeline.tsx │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ └── view-pipelines │ │ │ ├── CreatePipelineDialog.tsx │ │ │ ├── PipelinesList.tsx │ │ │ ├── PipelinesListPagination.tsx │ │ │ ├── ViewPipelines.tsx │ │ │ └── index.ts │ │ ├── profile │ │ ├── ProfileSeparator.tsx │ │ ├── index.ts │ │ └── user-profile-view │ │ │ ├── Bio.tsx │ │ │ ├── UserProfileView.tsx │ │ │ └── index.ts │ │ ├── recipe-editor │ │ ├── EditorButtonTooltipWrapper.tsx │ │ ├── EditorContext.tsx │ │ ├── EditorViewBarItem.tsx │ │ ├── EditorViewSectionBar.tsx │ │ ├── HorizontalSortableWrapper.tsx │ │ ├── InOutputEmptyView.tsx │ │ ├── Output.tsx │ │ ├── PreviewEmptyView.tsx │ │ ├── RecipeEditorView.tsx │ │ ├── RunButton.tsx │ │ ├── VscodeEditor.tsx │ │ ├── commands │ │ │ ├── ActionCmdk.tsx │ │ │ ├── CommandShortcutBadge.tsx │ │ │ ├── ComponentCmdo.tsx │ │ │ └── index.ts │ │ ├── dialogs │ │ │ ├── ImportRecipeDialog.tsx │ │ │ ├── PipelineToolkitDialog.tsx │ │ │ ├── index.ts │ │ │ └── share-pipeline-dialog │ │ │ │ ├── Head.tsx │ │ │ │ ├── SharePipelineDialog.tsx │ │ │ │ ├── TabPublish.tsx │ │ │ │ ├── TabShare.tsx │ │ │ │ ├── UnpublishPipelineDialog.tsx │ │ │ │ └── index.ts │ │ ├── flow │ │ │ ├── Flow.tsx │ │ │ ├── index.ts │ │ │ ├── nodes │ │ │ │ ├── ComponentOutputView.tsx │ │ │ │ ├── CustomHandle.tsx │ │ │ │ ├── EventEdge.tsx │ │ │ │ ├── EventErrorEdge.tsx │ │ │ │ ├── EventMessage.tsx │ │ │ │ ├── GeneralEdge.tsx │ │ │ │ ├── GeneralNode.tsx │ │ │ │ ├── IteratorNode.tsx │ │ │ │ ├── NodeBase.tsx │ │ │ │ ├── OutputNode.tsx │ │ │ │ ├── RunOnEventNode.tsx │ │ │ │ ├── StartNode.tsx │ │ │ │ ├── VariableNode.tsx │ │ │ │ ├── WebhookURLView.tsx │ │ │ │ └── index.ts │ │ │ └── types.ts │ │ ├── getting-started-view │ │ │ ├── GettingStartedView.tsx │ │ │ ├── codeTemplate.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── input │ │ │ ├── EventField.tsx │ │ │ ├── Input.tsx │ │ │ ├── index.ts │ │ │ └── parseEventReadableStream.ts │ │ ├── lib │ │ │ ├── PipelineFlowFactory │ │ │ │ ├── PipelineFlowFactory.test.ts │ │ │ │ ├── PipelineFlowFactory.ts │ │ │ │ ├── edgeHelpers │ │ │ │ │ ├── composeEdgesForReference.ts │ │ │ │ │ ├── getConnectableReferencePathsFromRecipe.ts │ │ │ │ │ ├── getUserDefinedReferencesFromRecipe.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── matchReference.ts │ │ │ │ ├── index.ts │ │ │ │ └── nodeHelpers │ │ │ │ │ ├── createNodesFromComponent.ts │ │ │ │ │ ├── createNodesFromOutput.ts │ │ │ │ │ ├── createNodesFromRunOnEvent.ts │ │ │ │ │ ├── createNodesFromVariable.ts │ │ │ │ │ ├── createStartNode.ts │ │ │ │ │ └── index.ts │ │ │ ├── analyzeColonInString.ts │ │ │ ├── checkComponentTypeHelper.ts │ │ │ ├── checkIsValidComponentMetadata.ts │ │ │ ├── checkNodeTypeHelper.ts │ │ │ ├── index.ts │ │ │ ├── keyLineNumberMapHelpers.ts │ │ │ ├── prettifyYaml.ts │ │ │ ├── renderFlowLayout.tsx │ │ │ ├── schema.ts │ │ │ ├── tomorrowTheme.ts │ │ │ ├── useAutonomousEditorRecipeUpdater.ts │ │ │ ├── useDebouncedRecipeUpdater.ts │ │ │ ├── useEditorCommandListener.ts │ │ │ ├── useIsMac.ts │ │ │ └── validateVSCodeYaml.ts │ │ ├── popovers │ │ │ ├── PipelineNamePopover.tsx │ │ │ ├── ReleasePopover.tsx │ │ │ ├── ReleasedVersionPopover.tsx │ │ │ └── index.ts │ │ ├── sidebar │ │ │ ├── ComponentSection.tsx │ │ │ ├── OutputSection.tsx │ │ │ ├── PipelineSection.tsx │ │ │ ├── RemainingCredit.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── SidebarSection.tsx │ │ │ ├── SubscribeCTA.tsx │ │ │ ├── SupportLinks.tsx │ │ │ ├── VariableSection.tsx │ │ │ └── index.ts │ │ └── types.ts │ │ └── settings │ │ ├── FormLabel.tsx │ │ ├── SettingRoot.tsx │ │ ├── SettingSidebar.tsx │ │ ├── SettingTab.tsx │ │ ├── api-tokens │ │ ├── APITokenNameCell.tsx │ │ ├── APITokenTable.tsx │ │ ├── CreateAPITokenDialog.tsx │ │ ├── DeleteAPITokenDialog.tsx │ │ ├── SelectOrganization.tsx │ │ └── index.ts │ │ ├── index.ts │ │ ├── instillUserRoles.ts │ │ ├── integrations │ │ ├── ConnectionForm.tsx │ │ ├── Integrations.tsx │ │ ├── Section.tsx │ │ ├── connectable-integration │ │ │ ├── ConnectableIntegration.tsx │ │ │ ├── ManualSettingDialog.tsx │ │ │ └── index.ts │ │ ├── existing-connection │ │ │ ├── ConnectionItem.tsx │ │ │ ├── ConnectionPipelineList.tsx │ │ │ ├── DeleteConnectionDialog.tsx │ │ │ ├── EditConnectionDialog.tsx │ │ │ ├── ExistingConnection.tsx │ │ │ └── index.ts │ │ └── index.tsx │ │ ├── secrets │ │ ├── CreateSecretDialog.tsx │ │ ├── DeleteSecretDialog.tsx │ │ ├── SecretTable.tsx │ │ └── index.ts │ │ └── user │ │ ├── UserAPITokenTab.tsx │ │ ├── UserAccountTab.tsx │ │ ├── UserIntegrationsTab.tsx │ │ ├── UserProfileTab.tsx │ │ ├── UserSecretTab.tsx │ │ ├── UserSidebar.tsx │ │ └── index.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── tsup.config.ts │ └── vitest.config.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── release-please ├── config.json └── manifest.json ├── scripts ├── docker-build-test.sh ├── docker-build.sh ├── docker-remove.sh ├── docker-run-docker.sh ├── docker-run-host.sh └── docker-run-test.sh ├── toolings ├── eslint │ ├── CHANGELOG.md │ ├── index.js │ └── package.json ├── prettier │ ├── CHANGELOG.md │ ├── index.js │ └── package.json └── typescript │ ├── base.json │ ├── internal-package.json │ └── package.json ├── tsconfig.base.json └── turbo.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @EiffelFly @pinglin @Phelan164 @xiaofei-du 2 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Because 2 | 3 | - (write the reason why we need to consider this PR in a list) 4 | 5 | This commit 6 | 7 | - (write the summary of all commits in this PR in a list) 8 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | If you discover a security issue in this repository, please contact us through security@instill.tech. 2 | 3 | Thanks for helping make the codebase safe for everyone. 4 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | instill base: 2 | - "**" 3 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | # Always validate the PR title AND all the commits 2 | titleAndCommits: true 3 | -------------------------------------------------------------------------------- /.github/templates/webpack-diff-comment.md: -------------------------------------------------------------------------------- 1 | ## Bundle size diff 2 | 3 | Between staging and main 4 | 5 | | Old size | New size | Diff | 6 | | -------- | -------- | ------------------------ | 7 | | {OLD} | {NEW} | {DIFF} ({DIFF_PERCENT}%) | 8 | -------------------------------------------------------------------------------- /.github/workflows/add-issue-to-prj.yml: -------------------------------------------------------------------------------- 1 | name: Add Issue to Frontend Project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | track_issue: 10 | uses: instill-ai/meta/.github/workflows/add-issue-to-prj.yml@main 11 | with: 12 | project_number: 1 # Frontend Project 13 | secrets: 14 | botGitHubToken: ${{ secrets.botGitHubToken }} 15 | -------------------------------------------------------------------------------- /.github/workflows/add-pr-to-prj.yml: -------------------------------------------------------------------------------- 1 | name: Add PR to Frontend Project 2 | 3 | on: 4 | pull_request: 5 | types: 6 | - opened 7 | - ready_for_review 8 | 9 | jobs: 10 | track_pr: 11 | uses: instill-ai/meta/.github/workflows/add-pr-to-prj.yml@main 12 | with: 13 | project_number: 1 # Frontend Project 14 | secrets: 15 | botGitHubToken: ${{ secrets.botGitHubToken }} 16 | -------------------------------------------------------------------------------- /.github/workflows/semantic.yml: -------------------------------------------------------------------------------- 1 | name: Lint PR 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | - edited 8 | - synchronize 9 | 10 | jobs: 11 | main: 12 | name: Validate PR title 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: amannn/action-semantic-pull-request@v4 16 | env: 17 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 18 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "./node_modules/typescript/lib", 3 | "eslint.workingDirectories": [ 4 | "./apps/console", 5 | "./apps/instill-form-playground", 6 | "./packages/eslint-config-cortex", 7 | "./packages/design-system", 8 | "./packages/design-tokens", 9 | "./packages/prettier-config-cortex", 10 | "./packages/toolkit" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apps/console/.env.example: -------------------------------------------------------------------------------- 1 | # Integration 2 | NEXTAUTH_URL= 3 | NEXTAUTH_URL_INTERNAL= 4 | INTEGRATION_GITHUB_CLIENT_ID= 5 | INTEGRATION_GITHUB_CLIENT_SECRET= 6 | INTEGRATION_SLACK_CLIENT_ID= 7 | INTEGRATION_SLACK_CLIENT_SECRET= 8 | INTEGRATION_GOOGLE_DRIVE_CLIENT_ID= 9 | INTEGRATION_GOOGLE_DRIVE_CLIENT_SECRET= 10 | INTEGRATION_GOOGLE_SHEETS_CLIENT_ID= 11 | INTEGRATION_GOOGLE_SHEETS_CLIENT_SECRET= 12 | 13 | # Added by `npx auth`. Read more: https://cli.authjs.dev 14 | AUTH_SECRET= 15 | 16 | # For downloading component icons 17 | GITHUB_TOKEN= 18 | -------------------------------------------------------------------------------- /apps/console/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | module.exports = { 4 | root: true, 5 | extends: ["next/core-web-vitals"], 6 | ignorePatterns: [".eslintrc.cjs"], 7 | parserOptions: { 8 | project: path.join(__dirname, "tsconfig.json"), 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /apps/console/.lintstagedrc.js: -------------------------------------------------------------------------------- 1 | // ref: https://nextjs.org/docs/pages/building-your-application/configuring/eslint#lint-staged 2 | 3 | const path = require("path"); 4 | 5 | const buildEslintCommand = (filenames) => 6 | `next lint --fix --file ${filenames 7 | .map((f) => path.relative(process.cwd(), f)) 8 | .join(" --file ")}`; 9 | 10 | module.exports = { 11 | "*.{js,jsx,ts,tsx}": [buildEslintCommand], 12 | }; 13 | -------------------------------------------------------------------------------- /apps/console/integration-test/helpers/component-helpers/dropdown.ts: -------------------------------------------------------------------------------- 1 | import { Locator, Page } from "@playwright/test"; 2 | 3 | export async function getDropdownContent( 4 | page: Page, 5 | trigger: Locator, 6 | ): Promise { 7 | const id = await trigger.getAttribute("id"); 8 | // Radix is using id with colon, we need to escape it 9 | const escapedID = id?.replaceAll(":", "\\:"); 10 | return page.locator(`div[aria-labelledby='${escapedID}']`); 11 | } 12 | -------------------------------------------------------------------------------- /apps/console/integration-test/helpers/component-helpers/select.ts: -------------------------------------------------------------------------------- 1 | import { Locator, Page } from "@playwright/test"; 2 | 3 | export async function getSelectContent( 4 | page: Page, 5 | trigger: Locator, 6 | ): Promise { 7 | const ariaControls = await trigger.getAttribute("aria-controls"); 8 | // Radix is using id with colon, we need to escape it 9 | const escapedAriaControls = ariaControls?.replaceAll(":", "\\:"); 10 | return page.locator(`div[id='${escapedAriaControls}']`); 11 | } 12 | -------------------------------------------------------------------------------- /apps/console/integration-test/helpers/env.ts: -------------------------------------------------------------------------------- 1 | // Simplified from: 2 | // https://github.com/andrewmclagan/react-env/blob/master/packages/node/src/index.js 3 | 4 | function isBrowser() { 5 | return Boolean(typeof window !== "undefined"); 6 | } 7 | 8 | export const env = (key = "") => { 9 | if (!key.length) { 10 | throw new Error("No env key provided"); 11 | } 12 | 13 | if (isBrowser() && (window as any).__env) { 14 | return (window as any).__env[key] === "''" 15 | ? "" 16 | : (window as any).__env[key]; 17 | } 18 | 19 | return process.env[key] === "''" ? "" : process.env[key]; 20 | }; 21 | -------------------------------------------------------------------------------- /apps/console/integration-test/tests/skeleton.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from "@playwright/test"; 2 | 3 | export function skeletonTest() { 4 | test.describe.serial("Skeleton test", () => { 5 | test("should pass", async () => { 6 | expect(true).toBe(true); 7 | }); 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /apps/console/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | 5 | // NOTE: This file should not be edited 6 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. 7 | -------------------------------------------------------------------------------- /apps/console/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /apps/console/public/icons/base64.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/console/public/icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/iterator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/json.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/numbers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/scheduler.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/sql.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/icons/web.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/console/public/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/apps/console/public/images/favicon-16x16.png -------------------------------------------------------------------------------- /apps/console/public/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/apps/console/public/images/favicon-32x32.png -------------------------------------------------------------------------------- /apps/console/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/apps/console/public/images/favicon.ico -------------------------------------------------------------------------------- /apps/console/public/images/instill-open-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/apps/console/public/images/instill-open-graph.png -------------------------------------------------------------------------------- /apps/console/public/images/models/model-placeholder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/console/src/app/404/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { generateNextMetaBase } from "@instill-ai/toolkit/server"; 4 | 5 | import { NotFoundPageRender } from "./render"; 6 | 7 | export async function generateMetadata() { 8 | const metadata: Metadata = { 9 | title: `Instill Core | Not Found`, 10 | metadataBase: generateNextMetaBase({ 11 | defaultBase: "http://localhost:3000", 12 | }), 13 | openGraph: { 14 | images: ["/instill-open-graph.png"], 15 | }, 16 | }; 17 | 18 | return Promise.resolve(metadata); 19 | } 20 | 21 | export default async function Page() { 22 | return ; 23 | } 24 | -------------------------------------------------------------------------------- /apps/console/src/app/404/render.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { NotFoundView } from "@instill-ai/toolkit"; 4 | 5 | export const NotFoundPageRender = () => { 6 | return ; 7 | }; 8 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/dashboard/activity/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { generateNextMetaBase } from "@instill-ai/toolkit/server"; 4 | 5 | import ActivityRender from "./render"; 6 | 7 | export async function generateMetadata(): Promise { 8 | return { 9 | title: "Instill Core | Activity Dashboard", 10 | metadataBase: generateNextMetaBase({ 11 | defaultBase: "http://localhost:3000", 12 | }), 13 | openGraph: { 14 | images: ["/instill-open-graph.png"], 15 | }, 16 | }; 17 | } 18 | 19 | export default function ActivityPage() { 20 | return ; 21 | } 22 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/dashboard/cost/model/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { generateNextMetaBase } from "@instill-ai/toolkit/server"; 4 | 5 | import CostPipelineRender from "./render"; 6 | 7 | export async function generateMetadata(): Promise { 8 | return { 9 | title: "Instill Core | Pipeline Cost Dashboard", 10 | metadataBase: generateNextMetaBase({ 11 | defaultBase: "http://localhost:3000", 12 | }), 13 | openGraph: { 14 | images: ["/instill-open-graph.png"], 15 | }, 16 | }; 17 | } 18 | 19 | export default function CostPipelinePage() { 20 | return ; 21 | } 22 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/dashboard/cost/page.tsx: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | 3 | type RedirectionDashboardCostPageProps = { 4 | params: Promise<{ id: string; entity: string }>; 5 | }; 6 | 7 | const RedirectionDashboardCostPage = async ( 8 | props: RedirectionDashboardCostPageProps, 9 | ) => { 10 | const params = await props.params; 11 | const { entity } = params; 12 | 13 | return redirect(`/${entity}/dashboard/cost/pipeline`); 14 | }; 15 | 16 | export default RedirectionDashboardCostPage; 17 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/dashboard/cost/pipeline/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { generateNextMetaBase } from "@instill-ai/toolkit/server"; 4 | 5 | import CostModelRender from "./render"; 6 | 7 | export async function generateMetadata(): Promise { 8 | return { 9 | title: "Instill Core | Model Cost Dashboard", 10 | metadataBase: generateNextMetaBase({ 11 | defaultBase: "http://localhost:3000", 12 | }), 13 | openGraph: { 14 | images: ["/instill-open-graph.png"], 15 | }, 16 | }; 17 | } 18 | 19 | export default function CostModelPage() { 20 | return ; 21 | } 22 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | 3 | type RedirectionDashboardPageProps = { 4 | params: Promise<{ id: string; entity: string }>; 5 | }; 6 | 7 | const RedirectionDashboardPage = async ( 8 | props: RedirectionDashboardPageProps, 9 | ) => { 10 | const params = await props.params; 11 | const { entity } = params; 12 | 13 | return redirect(`/${entity}/dashboard/activity`); 14 | }; 15 | 16 | export default RedirectionDashboardPage; 17 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/models/[id]/page.tsx: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | 3 | type RedirectionModelPageProps = { 4 | params: Promise<{ id: string; entity: string }>; 5 | }; 6 | 7 | export default async function RedirectionModelPage( 8 | props: RedirectionModelPageProps, 9 | ) { 10 | const params = await props.params; 11 | const { entity, id } = params; 12 | return redirect(`/${entity}/models/${id}/playground`); 13 | } 14 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/pipelines/[id]/editor/render.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | 5 | import { RecipeEditorView } from "@instill-ai/toolkit"; 6 | 7 | import { useAppAccessToken } from "~/lib/use-app-access-token"; 8 | import { useAppTrackToken } from "~/lib/useAppTrackToken"; 9 | 10 | export const RecipeEditorViewRender = () => { 11 | useAppAccessToken(); 12 | useAppTrackToken({ enabled: true }); 13 | 14 | return ; 15 | }; 16 | -------------------------------------------------------------------------------- /apps/console/src/app/[entity]/pipelines/[id]/page.tsx: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | 3 | type RedirectionPipelinePageProps = { 4 | params: Promise<{ id: string; entity: string }>; 5 | }; 6 | 7 | export default async function RedirectionPipelinePage( 8 | props: RedirectionPipelinePageProps, 9 | ) { 10 | const params = await props.params; 11 | const { entity, id } = params; 12 | return redirect(`/${entity}/pipelines/${id}/playground`); 13 | } 14 | -------------------------------------------------------------------------------- /apps/console/src/app/api/access-token/route.ts: -------------------------------------------------------------------------------- 1 | import { cookies } from "next/headers"; 2 | 3 | import { Nullable } from "@instill-ai/toolkit"; 4 | 5 | export const GET = async () => { 6 | const cookieStore = await cookies(); 7 | const authSessionCookie = cookieStore.get("instill-auth-session")?.value; 8 | 9 | let accessToken: Nullable = null; 10 | 11 | if (authSessionCookie) { 12 | accessToken = JSON.parse(authSessionCookie).accessToken; 13 | } 14 | 15 | return Response.json({ 16 | accessToken: accessToken, 17 | }); 18 | }; 19 | -------------------------------------------------------------------------------- /apps/console/src/app/api/auth/login/route.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | 3 | export async function GET() { 4 | redirect("/login"); 5 | } 6 | -------------------------------------------------------------------------------- /apps/console/src/app/api/nextauth/redirect-error-page/route.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | 3 | export async function GET() { 4 | const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "http://localhost:3000"; 5 | return NextResponse.redirect(`${baseUrl}/settings/integrations`); 6 | } 7 | -------------------------------------------------------------------------------- /apps/console/src/app/api/nextauth/redirect-signin-page/route.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | 3 | export async function GET() { 4 | const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "http://localhost:3000"; 5 | return NextResponse.redirect(`${baseUrl}/settings/integrations`); 6 | } 7 | -------------------------------------------------------------------------------- /apps/console/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/apps/console/src/app/favicon.ico -------------------------------------------------------------------------------- /apps/console/src/app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | 3 | import { generateNextMetaBase } from "@instill-ai/toolkit/server"; 4 | 5 | import { LoginPageRender } from "./render"; 6 | 7 | export async function generateMetadata() { 8 | const metadata: Metadata = { 9 | title: "Instill Core | Login", 10 | metadataBase: generateNextMetaBase({ 11 | defaultBase: "http://localhost:3000", 12 | }), 13 | openGraph: { 14 | images: ["/instill-open-graph.png"], 15 | }, 16 | }; 17 | return Promise.resolve(metadata); 18 | } 19 | 20 | export default async function Page() { 21 | return ; 22 | } 23 | -------------------------------------------------------------------------------- /apps/console/src/app/logout/page.tsx: -------------------------------------------------------------------------------- 1 | import { cookies } from "next/headers"; 2 | import { redirect } from "next/navigation"; 3 | 4 | import { authLogoutAction } from "@instill-ai/toolkit/server"; 5 | 6 | export default async function Page() { 7 | const cookieStore = await cookies(); 8 | const accessTokenKey = "instill-auth-session"; 9 | const accessToken = cookieStore.get(accessTokenKey); 10 | 11 | try { 12 | if (accessToken) { 13 | await authLogoutAction({ accessToken: accessToken.value }); 14 | } 15 | } catch (error) { 16 | console.error(error); 17 | } 18 | 19 | redirect("/login"); 20 | } 21 | -------------------------------------------------------------------------------- /apps/console/src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { RootPageRender } from "./render"; 2 | 3 | export default async function Page() { 4 | return ; 5 | } 6 | -------------------------------------------------------------------------------- /apps/console/src/app/render.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import { useRouter } from "next/navigation"; 5 | 6 | import { useAppAccessToken } from "~/lib/use-app-access-token"; 7 | import { useAppTrackToken } from "~/lib/useAppTrackToken"; 8 | 9 | export const RootPageRender = () => { 10 | useAppAccessToken(); 11 | useAppTrackToken({ enabled: true }); 12 | const router = useRouter(); 13 | 14 | React.useEffect(() => { 15 | router.push("/admin/pipelines"); 16 | }, [router]); 17 | 18 | return
; 19 | }; 20 | -------------------------------------------------------------------------------- /apps/console/src/app/robots.ts: -------------------------------------------------------------------------------- 1 | import { MetadataRoute } from "next"; 2 | 3 | export default function robots(): MetadataRoute.Robots { 4 | return { 5 | rules: { 6 | userAgent: "*", 7 | allow: "/", 8 | disallow: "/api/", 9 | }, 10 | sitemap: "https://instill.tech/sitemap.xml", 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /apps/console/src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./AuthPageBase"; 2 | export * from "./ChangePasswordForm"; 3 | export * from "./LoginForm"; 4 | export * from "./OnboardingForm"; 5 | -------------------------------------------------------------------------------- /apps/console/src/lib/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./withMiddlewareAuthRequired"; 2 | -------------------------------------------------------------------------------- /apps/console/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./auth"; 2 | 3 | // When we export them, it will cause some weird error, so we 4 | // comment them out for now. 5 | 6 | // export * from "./useAccessToken"; 7 | // export * from "./useTrackToken"; 8 | -------------------------------------------------------------------------------- /apps/console/src/lib/use-app-access-token/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | export * from "./server"; 3 | -------------------------------------------------------------------------------- /apps/console/src/middleware.ts: -------------------------------------------------------------------------------- 1 | import { withMiddlewareAuthRequired } from "./lib"; 2 | 3 | export default withMiddlewareAuthRequired(); 4 | 5 | export const config = { 6 | matcher: [ 7 | "/(.*?)/connectors/:path*", 8 | "/(.*?)/dashboard/:path*", 9 | "/(.*?)/pipelines", 10 | 11 | // For pipeline editor 12 | "/(.*?)/pipelines/(.*?)/editor", 13 | "/(.*?)/models/:path*", 14 | "/settings", 15 | 16 | // For Catalog 17 | "/(.*?)/catalog/:path*", 18 | ], 19 | }; 20 | -------------------------------------------------------------------------------- /apps/console/src/pages/api/health.tsx: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from "next"; 2 | 3 | const handler = async (req: NextApiRequest, res: NextApiResponse) => { 4 | const { method } = req; 5 | 6 | if (method !== "GET") { 7 | res.setHeader("Allow", ["GET"]); 8 | res.status(405).end(`Method ${method} Not Allowed`); 9 | } 10 | 11 | return res.status(200).send("OK"); 12 | }; 13 | 14 | export default handler; 15 | -------------------------------------------------------------------------------- /apps/console/src/styles/shiki.css: -------------------------------------------------------------------------------- 1 | pre.shiki { 2 | border-radius: 6px; 3 | padding: 30px 20px; 4 | overflow: scroll; 5 | font-size: 14px; 6 | } -------------------------------------------------------------------------------- /apps/console/src/styles/tip-tap.css: -------------------------------------------------------------------------------- 1 | /* 2 | This is the style for the placeholder of tip-tap 3 | https://tiptap.dev/docs/editor/api/extensions/placeholder 4 | */ 5 | 6 | .tiptap p.is-editor-empty:first-child::before { 7 | color: #1D2433; 8 | opacity: 0.65; 9 | content: attr(data-placeholder); 10 | float: left; 11 | height: 0; 12 | pointer-events: none; 13 | font-family: IBM Plex Mono; 14 | font-style: italic; 15 | font-size: 12px; 16 | line-height: 16px; 17 | } -------------------------------------------------------------------------------- /apps/console/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/base.json", 3 | "compilerOptions": { 4 | "lib": ["es2022", "dom", "dom.iterable"], 5 | "jsx": "preserve", 6 | "baseUrl": ".", 7 | "paths": { 8 | "~/*": ["./src/*"], 9 | }, 10 | "plugins": [ 11 | { 12 | "name": "next", 13 | }, 14 | ], 15 | "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", 16 | "module": "esnext", 17 | "strictNullChecks": true, 18 | }, 19 | "include": [".", ".next/types/**/*.ts"], 20 | "exclude": ["node_modules"], 21 | } 22 | -------------------------------------------------------------------------------- /apps/instill-form-playground/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /apps/instill-form-playground/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /apps/instill-form-playground/next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | transpilePackages: [ 4 | "@instill-ai/toolkit", 5 | "@instill-ai/design-system", 6 | "@instill-ai/design-tokens", 7 | ], 8 | }; 9 | 10 | module.exports = nextConfig; 11 | -------------------------------------------------------------------------------- /apps/instill-form-playground/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /apps/instill-form-playground/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/instill-form-playground/src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import "../styles/globals.css"; 2 | import "@instill-ai/design-tokens/dist/theme/root.css"; 3 | import "@instill-ai/design-tokens/dist/theme/light.css"; 4 | import "@instill-ai/design-tokens/dist/theme/dark.css"; 5 | 6 | import type { AppProps } from "next/app"; 7 | 8 | export default function App({ Component, pageProps }: AppProps) { 9 | return ; 10 | } 11 | -------------------------------------------------------------------------------- /apps/instill-form-playground/src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import { Head, Html, Main, NextScript } from "next/document"; 2 | 3 | export default function Document() { 4 | return ( 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /apps/instill-form-playground/src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --foreground-rgb: 0, 0, 0; 7 | --background-start-rgb: 214, 219, 220; 8 | --background-end-rgb: 255, 255, 255; 9 | } 10 | -------------------------------------------------------------------------------- /apps/instill-form-playground/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | const config: Config = { 4 | presets: [require("@instill-ai/design-tokens/dist/tailwind.config.cjs")], 5 | content: [ 6 | "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./src/components/**/*.{js,ts,jsx,tsx,mdx}", 8 | "./src/app/**/*.{js,ts,jsx,tsx,mdx}", 9 | "./node_modules/@instill-ai/design-system/dist/*.{js,mjs}", 10 | "./node_modules/@instill-ai/toolkit/dist/*.{js,mjs}", 11 | ], 12 | plugins: [], 13 | }; 14 | export default config; 15 | -------------------------------------------------------------------------------- /apps/instill-form-playground/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/base.json", 3 | "compilerOptions": { 4 | "lib": ["es2022", "dom", "dom.iterable"], 5 | "jsx": "preserve", 6 | "baseUrl": ".", 7 | "paths": { 8 | "~/*": ["./src/*"], 9 | }, 10 | "plugins": [{ "name": "next" }], 11 | "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", 12 | "module": "esnext", 13 | }, 14 | "include": [".", ".next/types/**/*.ts"], 15 | "exclude": ["node_modules"], 16 | } 17 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ["@commitlint/config-conventional"], 3 | }; 4 | -------------------------------------------------------------------------------- /entrypoint-playwright.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd ./apps/console 3 | pnpm run e2e:ci 4 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | node ./apps/console/next-env.mjs 3 | 4 | # Because we are in the monorepo and the build in happening at the 5 | # root, the nextjs standalone build will include other dependent 6 | # packages and retain its original path. So we need to go into 7 | # the console directory to run the server. 8 | node ./apps/console/server.js 9 | -------------------------------------------------------------------------------- /packages/design-system/.eslintignore: -------------------------------------------------------------------------------- 1 | # Build folders 2 | es 3 | lib 4 | dist 5 | umd 6 | out 7 | node_modules 8 | tsup.config.ts 9 | esbuild.js 10 | 11 | # test 12 | setupTests.ts 13 | vitest.config.ts 14 | 15 | # React 16 | **/storybook-static/** -------------------------------------------------------------------------------- /packages/design-system/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | module.exports = { 4 | root: true, 5 | extends: ["@instill-ai/eslint-config-cortex", "plugin:storybook/recommended"], 6 | ignorePatterns: [".eslintrc.cjs"], 7 | parserOptions: { 8 | project: path.join(__dirname, "tsconfig.json"), 9 | }, 10 | }; -------------------------------------------------------------------------------- /packages/design-system/.storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/design-system/.storybook/preview.ts: -------------------------------------------------------------------------------- 1 | import { Preview } from "@storybook/react"; 2 | 3 | const preview: Preview = { 4 | parameters: { 5 | controls: { 6 | matchers: { 7 | color: /(background|color)$/i, 8 | date: /Date$/, 9 | }, 10 | }, 11 | }, 12 | }; 13 | 14 | export default preview; 15 | -------------------------------------------------------------------------------- /packages/design-system/.vercelignore: -------------------------------------------------------------------------------- 1 | .github 2 | .changeset 3 | .husky 4 | docker 5 | README.md 6 | CHANGELOG.md -------------------------------------------------------------------------------- /packages/design-system/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | "@babel/preset-env", 4 | ["@babel/preset-react", { runtime: "automatic" }], 5 | "@babel/preset-typescript", 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /packages/design-system/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | "postcss-import": {}, 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /packages/design-system/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/instill-ai/console/df8f7e0ee361ea7a6df12851309f24c0ff7afc08/packages/design-system/public/favicon.ico -------------------------------------------------------------------------------- /packages/design-system/setupTests.ts: -------------------------------------------------------------------------------- 1 | import { cleanup } from "@testing-library/react"; 2 | import { afterEach } from "vitest"; 3 | 4 | import "@testing-library/jest-dom"; 5 | 6 | afterEach(() => { 7 | cleanup(); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/design-system/src/index.ts: -------------------------------------------------------------------------------- 1 | export { cn } from "./utils"; 2 | 3 | export * from "./new-ui"; 4 | export * from "./ui"; 5 | export * from "./ui-helpers"; 6 | export * from "./types/general"; 7 | 8 | export { toast } from "sonner"; 9 | export type { ToasterProps, Action as ToastAction } from "sonner"; 10 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Accordion/Accordion.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as AccordionComponent from "@radix-ui/react-accordion"; 4 | 5 | export const Accordion = { 6 | Root: AccordionComponent.Root, 7 | Item: AccordionComponent.Item, 8 | Trigger: AccordionComponent.Trigger, 9 | Content: AccordionComponent.Content, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Accordion/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Accordion"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Breadcrumb/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Breadcrumb"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Button/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Button"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Checkbox/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Checkbox"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Collapsible/Collapsible.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as CollapsiblePrimitive from "@radix-ui/react-collapsible"; 4 | 5 | export const Collapsible = { 6 | Root: CollapsiblePrimitive.Root, 7 | Trigger: CollapsiblePrimitive.CollapsibleTrigger, 8 | Content: CollapsiblePrimitive.CollapsibleContent, 9 | }; 10 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Collapsible/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Collapsible"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Color/Color.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { cn } from "../../utils"; 4 | 5 | type ColorProps = { 6 | color: string; 7 | }; 8 | 9 | const Color = ({ color }: ColorProps) => { 10 | return ( 11 |
12 |

{color}

13 |
14 | ); 15 | }; 16 | 17 | export { Color }; 18 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Color/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Color"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Combobox/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Combobox"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Command/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Command"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/ComplicateIcons/ComplicateIconBase/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ComplicateIconBase"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/ContextMenu/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ContextMenu"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/DataTable/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DataTable"; 2 | 3 | export type { ColumnDef, PaginationState } from "@tanstack/react-table"; 4 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Dialog"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/DropdownMenu/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DropdownMenu"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Form/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Form"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Icons/IconBase/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./IconBase"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Icons/Icons.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import { Icons } from "."; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/Icons", 7 | }; 8 | 9 | export default meta; 10 | 11 | const Template: StoryFn = () => { 12 | return ( 13 |
14 | {Object.entries(Icons).map(([key, Icon]) => { 15 | return ; 16 | })} 17 |
18 | ); 19 | }; 20 | 21 | export const Default: StoryFn = Template.bind({}); 22 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Input/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Input"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Label/Label.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/react"; 2 | 3 | import { Label } from "./Label"; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/Label", 7 | }; 8 | 9 | export default meta; 10 | 11 | type Story = StoryObj; 12 | 13 | export const Primary: Story = { 14 | render: () => , 15 | }; 16 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Label/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Label"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/LinkButton/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./LinkButton"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Logos/Logo.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import { Logos } from "."; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/Logos", 7 | }; 8 | 9 | export default meta; 10 | 11 | const Template: StoryFn = () => { 12 | return ( 13 |
14 | {Object.entries(Logos).map(([key, Logo]) => { 15 | return ; 16 | })} 17 |
18 | ); 19 | }; 20 | 21 | export const Default: StoryFn = Template.bind({}); 22 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Logos/LogoBase/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./LogoBase"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Menubar/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Menubar"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/MultiSelect/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MultiSelect"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Pagination/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Pagination"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/ParagraphWithHTML/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ParagraphWithHTML"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Popover/Popover.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/react"; 2 | 3 | import { Popover } from "./Popover"; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/Popover", 7 | }; 8 | 9 | export default meta; 10 | 11 | type Story = StoryObj; 12 | 13 | export const Default: Story = { 14 | render: () => ( 15 | 16 | Open 17 | Place content for the popover here. 18 | 19 | ), 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Popover/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Popover"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Progress/Progress.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/react"; 2 | 3 | import { Progress } from "./Progress"; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/Progress", 7 | }; 8 | 9 | export default meta; 10 | 11 | type Story = StoryObj; 12 | 13 | export const Regular: Story = { 14 | render: () => , 15 | }; 16 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Progress/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Progress"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/ScrollArea/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ScrollArea"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Select/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Select"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Separator/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Separator"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Skeleton/Skeleton.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { cn } from "../../utils"; 4 | 5 | function Skeleton({ 6 | className, 7 | ...props 8 | }: React.HTMLAttributes) { 9 | return ( 10 |
14 | ); 15 | } 16 | 17 | export { Skeleton }; 18 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Skeleton/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Skeleton"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Slider/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Slider"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/SonnerToast/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SonnerToast"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Switch/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Switch"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Table/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Table"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Tabs/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Tabs"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Tag/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Tag"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/TagButton/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TagButton"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Textarea/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Textarea"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/ToggleGroup/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./ToggleGroup"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/Tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Tooltip"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/radio-group/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./RadioGroup"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/resizable/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Resizable"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/new-ui/tab-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TabMenu"; 2 | -------------------------------------------------------------------------------- /packages/design-system/src/styles/global.css: -------------------------------------------------------------------------------- 1 | @import "@instill-ai/design-tokens/dist/theme/root.css"; 2 | @import "@instill-ai/design-tokens/dist/theme/light.css"; 3 | @import "@instill-ai/design-tokens/dist/theme/dark.css"; 4 | @tailwind base; 5 | @tailwind components; 6 | @tailwind utilities; 7 | -------------------------------------------------------------------------------- /packages/design-system/src/ui-helpers/getModelRegionToolkit.ts: -------------------------------------------------------------------------------- 1 | export const getModelRegionToolkit = (regionName: string) => { 2 | switch (regionName) { 3 | case "REGION_GCP_EUROPE_WEST4": 4 | return "GCP europe-west4"; 5 | case "REGION_LOCAL": 6 | return "Local"; 7 | default: 8 | return null; 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /packages/design-system/src/ui-helpers/index.ts: -------------------------------------------------------------------------------- 1 | export { getModelInstanceTaskToolkit } from "./getModelInstanceTaskToolkit"; 2 | export { getModelDefinitionToolkit } from "./getModelDefinitionToolkit"; 3 | export { getPipelineModeToolkit } from "./getPipelineModeToolkit"; 4 | export { getModelRegionToolkit } from "./getModelRegionToolkit"; 5 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AirbyteIcon/AirbyteIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import AirbyteIcon from "./AirbyteIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/AirbyteIcon", 7 | component: AirbyteIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AirbyteIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./AirbyteIcon"; 2 | export * from "./AirbyteIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/ArrowDownIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArrowDownIcon"; 2 | export * from "./ArrowDownIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/ArrowIconBase/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArrowIconBase"; 2 | export * from "./ArrowIconBase"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/ArrowLeftIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArrowLeftIcon"; 2 | export * from "./ArrowLeftIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/ArrowRightIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArrowRightIcon"; 2 | export * from "./ArrowRightIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/ArrowUpIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArrowUpIcon"; 2 | export * from "./ArrowUpIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArrowIcons/RotatableArrowIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./RotatableArrowIcon"; 2 | export * from "./RotatableArrowIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArtiVcIcon/ArtiVcIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import ArtiVcIcon from "./ArtiVcIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/ArtiVcIcon", 7 | component: ArtiVcIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ArtiVcIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ArtiVcIcon"; 2 | export * from "./ArtiVcIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AsyncArrowsIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./AsyncArrowsIcon"; 2 | export * from "./AsyncArrowsIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AsyncIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./AsyncIcon"; 2 | export * from "./AsyncIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AwsRdsIcon/AwsRdsIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import AwsRdsIcon from "./AwsRdsIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/AwsRdsIcon", 7 | component: AwsRdsIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AwsRdsIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./AwsRdsIcon"; 2 | export * from "./AwsRdsIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AwsS3Icon/AwsS3Icon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import AwsS3Icon from "./AwsS3Icon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/AwsS3Icon", 7 | component: AwsS3Icon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/AwsS3Icon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./AwsS3Icon"; 2 | export * from "./AwsS3Icon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/BarChartIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./BarChartIcon"; 2 | export * from "./BarChartIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/BigQueryIcon/BigQueryIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import BigQueryIcon from "./BigQueryIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/BigQueryIcon", 7 | component: BigQueryIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/BigQueryIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./BigQueryIcon"; 2 | export * from "./BigQueryIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CheckIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./CheckIcon"; 2 | export * from "./CheckIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ClientIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ClientIcon"; 2 | export * from "./ClientIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CollapseLeftIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./CollapseLeftIcon"; 2 | export * from "./CollapseLeftIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CollapseRightIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./CollapseRightIcon"; 2 | export * from "./CollapseRightIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CopyIcon/CopyIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import CopyIcon from "./CopyIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/CopyIcon", 7 | component: CopyIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CopyIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./CopyIcon"; 2 | export * from "./CopyIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/CrossIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./CrossIcon"; 2 | export * from "./CrossIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DataDestinationIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./DataDestinationIcon"; 2 | export * from "./DataDestinationIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DataSourceIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./DataSourceIcon"; 2 | export * from "./DataSourceIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DiscordIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./DiscordIcon"; 2 | export * from "./DiscordIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DocIcon/DocIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import DocIcon from "./DocIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/DocIcon", 7 | component: DocIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DocIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./DocIcon"; 2 | export * from "./DocIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/DoubleArrowIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./DoubleArrowIcon"; 2 | export * from "./DoubleArrowIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/EyeOffIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./EyeOffIcon"; 2 | export * from "./EyeOffIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/EyeOnIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./EyeOnIcon"; 2 | export * from "./EyeOnIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/FacebookIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./FacebookIcon"; 2 | export * from "./FacebookIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/FilterIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./FilterIcon"; 2 | export * from "./FilterIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/FolderInUseIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./FolderInUseIcon"; 2 | export * from "./FolderInUseIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/FolderPlusIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./FolderPlusIcon"; 2 | export * from "./FolderPlusIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GcsIcon/GcsIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import GcsIcon from "./GcsIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/GcsIcon", 7 | component: GcsIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GcsIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GcsIcon"; 2 | export * from "./GcsIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GearIcon/GearIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import GearIcon from "./GearIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/GearIcon", 7 | component: GearIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GearIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GearIcon"; 2 | export * from "./GearIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GitBranchIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GitBranchIcon"; 2 | export * from "./GitBranchIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GitCommitIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GitCommitIcon"; 2 | export * from "./GitCommitIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GitHubIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GitHubIcon"; 2 | export * from "./GitHubIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GitTagIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GitTagIcon"; 2 | export * from "./GitTagIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GoogleDriveIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GoogleDriveIcon"; 2 | export * from "./GoogleDriveIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GoogleIcon/GoogleIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import GoogleIcon from "./GoogleIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/GoogleIcon", 7 | component: GoogleIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GoogleIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GoogleIcon"; 2 | export * from "./GoogleIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GoogleSheetIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GoogleSheetIcon"; 2 | export * from "./GoogleSheetIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GrpcIcon/GrpcIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import GrpcIcon from "./GrpcIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/GrpcIcon", 7 | component: GrpcIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/GrpcIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./GrpcIcon"; 2 | export * from "./GrpcIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/HttpIcon/HttpIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import HttpIcon from "./HttpIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/HttpIcon", 7 | component: HttpIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/HttpIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./HttpIcon"; 2 | export * from "./HttpIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/HuggingFaceIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./HuggingFaceIcon"; 2 | export * from "./HuggingFaceIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IconBase/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./IconBase"; 2 | export * from "./IconBase"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IdIcon/IdIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import IdIcon from "./IdIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/IdIcon", 7 | component: IdIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IdIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./IdIcon"; 2 | export * from "./IdIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ImageClassificationIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ImageClassificationIcon"; 2 | export * from "./ImageClassificationIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ImageToImageIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ImageToImageIcon"; 2 | export * from "./ImageToImageIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ImageToTextIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ImageToTextIcon"; 2 | export * from "./ImageToTextIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/InstanceSegmentationIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./InstanceSegmentationIcon"; 2 | export * from "./InstanceSegmentationIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IntercomIcon/index.tsx: -------------------------------------------------------------------------------- 1 | export { default } from "./IntercomIcon"; 2 | export * from "./IntercomIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IotIcon/IotIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import IotIcon from "./IotIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/IotIcon", 7 | component: IotIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/IotIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./IotIcon"; 2 | export * from "./IotIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/KeypointDetectionIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./KeypointDetectionIcon"; 2 | export * from "./KeypointDetectionIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/LinkedInIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./LinkedInIcon"; 2 | export * from "./LinkedInIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/LocalUploadIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./LocalUploadIcon"; 2 | export * from "./LocalUploadIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MediumIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MediumIcon"; 2 | export * from "./MediumIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MenuIcon/MenuIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import MenuIcon from "./MenuIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/MenuIcon", 7 | component: MenuIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MenuIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MenuIcon"; 2 | export * from "./MenuIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MetabaseIcon/MetabaseIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import MetabaseIcon from "./MetabaseIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/MetabaseIcon", 7 | component: MetabaseIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MetabaseIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MetabaseIcon"; 2 | export * from "./MetabaseIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MinusIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MinusIcon"; 2 | export * from "./MinusIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ModelIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ModelIcon"; 2 | export * from "./ModelIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ModelInstanceIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ModelInstanceIcon"; 2 | export * from "./ModelInstanceIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MongoDbAtalasIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MongoDbAtalasIcon"; 2 | export * from "./MongoDbAtalasIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MongoDbIcon/MongoDbIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import MongoDbIcon from "./MongoDbIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/MongoDbIcon", 7 | component: MongoDbIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MongoDbIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MongoDbIcon"; 2 | export * from "./MongoDbIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MySqlIcon/MySqlIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import MySqlIcon from "./MySqlIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/MySqlIcon", 7 | component: MySqlIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/MySqlIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./MySqlIcon"; 2 | export * from "./MySqlIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ObjectDetectionIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ObjectDetectionIcon"; 2 | export * from "./ObjectDetectionIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/OnnxIcon/OnnxIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import OnnxIcon from "./OnnxIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/OnnxIcon", 7 | component: OnnxIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/OnnxIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./OnnxIcon"; 2 | export * from "./OnnxIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/OpticalCharacterRecognitionIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./OpticalCharacterRecognitionIcon"; 2 | export * from "./OpticalCharacterRecognitionIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PenIcon/PenIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import PenIcon from "./PenIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/PenIcon", 7 | component: PenIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PenIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PenIcon"; 2 | export * from "./PenIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PinIcon/PinIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import PinIcon from "./PinIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/PinIcon", 7 | component: PinIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PinIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PinIcon"; 2 | export * from "./PinIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PipelineIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PipelineIcon"; 2 | export * from "./PipelineIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PixelCheckIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PixelCheckIcon"; 2 | export * from "./PixelCheckIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PixelCrossIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PixelCrossIcon"; 2 | export * from "./PixelCrossIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PlusIcon/PlusIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import PlusIcon from "./PlusIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/PlusIcon", 7 | component: PlusIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PlusIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PlusIcon"; 2 | export * from "./PlusIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PostgreSqlIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PostgreSqlIcon"; 2 | export * from "./PostgreSqlIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PyTorchIcon/PyTorchIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import PyTorchIcon from "./PyTorchIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/PyTorchIcon", 7 | component: PyTorchIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PyTorchIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PyTorchIcon"; 2 | export * from "./PyTorchIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PythonIcon/PythonIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import PythonIcon from "./PythonIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/PythonIcon", 7 | component: PythonIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/PythonIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./PythonIcon"; 2 | export * from "./PythonIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/RedshiftIcon/RedshiftIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import RedShiftIcon from "./RedShiftIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/RedShiftIcon", 7 | component: RedShiftIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/RedshiftIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./RedShiftIcon"; 2 | export * from "./RedShiftIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/RefreshIcon/index.tsx: -------------------------------------------------------------------------------- 1 | export { default } from "./RefreshIcon"; 2 | export * from "./RefreshIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ResourceIcon/index.tsx: -------------------------------------------------------------------------------- 1 | export { default } from "./ResourceIcon"; 2 | export * from "./ResourceIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SalesforceIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SalesforceIcon"; 2 | export * from "./SalesforceIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SemanticSegmentationIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SemanticSegmentationIcon"; 2 | export * from "./SemanticSegmentationIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ShopifyIcon/ShopifyIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import ShopifyIcon from "./ShopifyIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/ShopifyIcon", 7 | component: ShopifyIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ShopifyIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ShopifyIcon"; 2 | export * from "./ShopifyIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SlackIcon/SlackIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import SlackIcon from "./SlackIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/SlackIcon", 7 | component: SlackIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | position: "my-auto", 20 | }; 21 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SlackIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SlackIcon"; 2 | export * from "./SlackIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SnowflakeIcon/SnowflakeIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import SnowflakeIcon from "./SnowflakeIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/SnowflakeIcon", 7 | component: SnowflakeIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ( 13 | 14 | ); 15 | 16 | export const Playground: StoryFn = Template.bind({}); 17 | 18 | Playground.args = { 19 | width: "w-[30px]", 20 | height: "h-[30px]", 21 | position: "my-auto", 22 | }; 23 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SnowflakeIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SnowflakeIcon"; 2 | export * from "./SnowflakeIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SquarePlusIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SquarePlusIcon"; 2 | export * from "./SquarePlusIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/StatusErrorIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./StatusErrorIcon"; 2 | export * from "./StatusErrorIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/StatusOffIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./StatusOffIcon"; 2 | export * from "./StatusOffIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/StatusOnIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./StatusOnIcon"; 2 | export * from "./StatusOnIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SyncArrowsIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SyncArrowsIcon"; 2 | export * from "./SyncArrowsIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SyncIcon/SyncIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import SyncIcon from "./SyncIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/SyncIcon", 7 | component: SyncIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/SyncIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./SyncIcon"; 2 | export * from "./SyncIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/TensorFlowIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./TensorFlowIcon"; 2 | export * from "./TensorFlowIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/TextGenerationIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./TextGenerationIcon"; 2 | export * from "./TextGenerationIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/TextToImageIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./TextToImageIcon"; 2 | export * from "./TextToImageIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ToggleIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ToggleIcon"; 2 | export * from "./ToggleIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/ToolboxIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./ToolboxIcon"; 2 | export * from "./ToolboxIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/TwitterIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./TwitterIcon"; 2 | export * from "./TwitterIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/VersionIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./VersionIcon"; 2 | export * from "./VersionIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/VisualDataOperatorIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./VisualDataOperatorIcon"; 2 | export * from "./VisualDataOperatorIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/XIcon/XIcon.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import XIcon from "./XIcon"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Icon/XIcon", 7 | component: XIcon, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Playground: StoryFn = Template.bind({}); 15 | 16 | Playground.args = { 17 | width: "w-[30px]", 18 | height: "h-[30px]", 19 | color: "fill-semantic-node-disconnected-default-stroke", 20 | position: "my-auto", 21 | }; 22 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Icons/XIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from "./XIcon"; 2 | export * from "./XIcon"; 3 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Logo/Logo.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryFn } from "@storybook/react"; 2 | 3 | import { Logo } from "./Logo"; 4 | 5 | const meta: Meta = { 6 | title: "Components/Ui/Logo", 7 | component: Logo, 8 | }; 9 | 10 | export default meta; 11 | 12 | const Template: StoryFn = (args) => ; 13 | 14 | export const Default: StoryFn = Template.bind({}); 15 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Logo/ModelLogo.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/react"; 2 | 3 | import { ModelLogo } from "./ModelLogo"; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/ModelLogo", 7 | }; 8 | 9 | export default meta; 10 | 11 | type Story = StoryObj; 12 | 13 | export const Square: Story = { 14 | render: () => , 15 | }; 16 | 17 | export const Expand: Story = { 18 | render: () => , 19 | }; 20 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Logo/VdpLogo.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/react"; 2 | 3 | import { VdpLogo } from "./VdpLogo"; 4 | 5 | const meta: Meta = { 6 | title: "Components/NewUi/VdpLogo", 7 | }; 8 | 9 | export default meta; 10 | 11 | type Story = StoryObj; 12 | 13 | export const Square: Story = { 14 | render: () => , 15 | }; 16 | 17 | export const Expand: Story = { 18 | render: () => , 19 | }; 20 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/Logo/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./VdpLogo"; 2 | export * from "./Logo"; 3 | export * from "./ModelLogo"; 4 | -------------------------------------------------------------------------------- /packages/design-system/src/ui/index.ts: -------------------------------------------------------------------------------- 1 | // Icons 2 | export * from "./Icons"; 3 | 4 | // Logos 5 | export * from "./Logo"; 6 | -------------------------------------------------------------------------------- /packages/design-system/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import { cx } from "class-variance-authority"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | // twMerge is a utility function to efficiently merge Tailwind CSS classes in JS without style conflicts. 5 | // twMerge('px-2 py-1 bg-red hover:bg-dark-red', 'p-3 bg-[#B91C1C]') 6 | // → 'hover:bg-dark-red p-3 bg-[#B91C1C]' 7 | 8 | // cs is an alias of clsx 9 | 10 | const cn = (...inputs: Parameters) => twMerge(cx(inputs)); 11 | 12 | export { cn }; 13 | -------------------------------------------------------------------------------- /packages/design-system/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/internal-package.json", 3 | "compilerOptions": { 4 | "lib": ["dom", "dom.iterable", "ES2022"], 5 | 6 | // We need to specify this for tsup to correctly cast the jsx runtime 7 | "jsx": "react-jsx", 8 | "outDir": "dist", 9 | }, 10 | "include": ["**/*.ts", "**/*.tsx"], 11 | "exclude": [ 12 | "./setupTests.ts", 13 | "vitest.config.ts", 14 | "tsup.config.ts", 15 | "dist", 16 | "node_modules", 17 | ], 18 | } 19 | -------------------------------------------------------------------------------- /packages/design-system/vitest.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import { defineConfig } from "vitest/config"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | test: { 8 | globals: true, 9 | environment: "jsdom", 10 | setupFiles: ["./setupTests.ts"], 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /packages/design-tokens/.eslintignore: -------------------------------------------------------------------------------- 1 | # Build folders 2 | es 3 | lib 4 | dist 5 | umd 6 | out 7 | node_modules 8 | tsup.config.ts 9 | 10 | # test 11 | vitest.config.ts 12 | 13 | # React 14 | **/storybook-static/** -------------------------------------------------------------------------------- /packages/design-tokens/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | module.exports = { 4 | root: true, 5 | extends: ["@instill-ai/eslint-config-cortex"], 6 | ignorePatterns: [".eslintrc.cjs"], 7 | parserOptions: { 8 | project: path.join(__dirname, "tsconfig.json"), 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/design-tokens/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | "postcss-import": {}, 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /packages/design-tokens/src/type.ts: -------------------------------------------------------------------------------- 1 | export type TypographyValue = { 2 | fontFamily: string; 3 | fontWeight: number | string; 4 | lineHeight: string; 5 | fontSize: string; 6 | letterSpacing: string; 7 | paragraphSpacing: string; 8 | paragraphIndent: string; 9 | textCase: string; 10 | textDecoration: string; 11 | }; 12 | -------------------------------------------------------------------------------- /packages/design-tokens/tokens/$metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "tokenSetOrder": [ 3 | "global", 4 | "semantic/colour", 5 | "semantic/typography", 6 | "semantic/comp", 7 | "theme/light", 8 | "theme/dark" 9 | ] 10 | } -------------------------------------------------------------------------------- /packages/design-tokens/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/internal-package.json", 3 | "compilerOptions": { 4 | "lib": ["dom", "dom.iterable", "ES2022"], 5 | "jsx": "preserve", 6 | "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", 7 | "outDir": "dist", 8 | }, 9 | "include": ["*.ts", "src"], 10 | "exclude": ["./setupTests.ts", "vitest.config.ts", "tsup.config.ts", "dist"], 11 | } 12 | -------------------------------------------------------------------------------- /packages/design-tokens/vitest.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import { defineConfig } from "vitest/config"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | test: { 8 | environment: "jsdom", 9 | setupFiles: ["./setupTests.ts"], 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /packages/sdk/.env: -------------------------------------------------------------------------------- 1 | INSTILL_API_VERSION='v1beta' 2 | -------------------------------------------------------------------------------- /packages/sdk/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | module.exports = { 4 | root: true, 5 | extends: ["@instill-ai/eslint-config-cortex"], 6 | ignorePatterns: [ 7 | ".eslintrc.cjs", 8 | "tsup.config.ts", 9 | "vitest.config.ts", 10 | "setupTests.ts", 11 | "generate-mocks/*", 12 | ], 13 | parserOptions: { 14 | project: path.join(__dirname, "tsconfig.json"), 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /packages/sdk/.gitignore: -------------------------------------------------------------------------------- 1 | protobufs/* 2 | mocks/* 3 | coverage 4 | -------------------------------------------------------------------------------- /packages/sdk/generate-mocks/README.md: -------------------------------------------------------------------------------- 1 | # About the MSW mock generator 2 | 3 | This is an in-project fork of the [zoubingwu/msw-auto-mock](https://github.com/zoubingwu/msw-auto-mock) 4 | 5 | Because our API path is resource-oriented, which will cause path conflict with the original msw-auto-mock, so we forked it and made some changes to fit our project. -------------------------------------------------------------------------------- /packages/sdk/generate-mocks/main.ts: -------------------------------------------------------------------------------- 1 | import { generate } from "./generate"; 2 | 3 | function main() { 4 | generate("protobufs/openapi/v2/service.swagger.yaml", { 5 | baseUrl: "http://localhost:8080", 6 | output: "mocks", 7 | }); 8 | } 9 | 10 | main(); 11 | -------------------------------------------------------------------------------- /packages/sdk/generate-mocks/types.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Credit: https://github.com/zoubingwu/msw-auto-mock 3 | */ 4 | 5 | export type GenerateOptions = { 6 | output: string; 7 | maxArrayLength?: number; 8 | includes?: string; 9 | excludes?: string; 10 | baseUrl?: string | true; 11 | codes?: string; 12 | static?: boolean; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/sdk/src/application/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ApplicationClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/artifact/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ArtifactClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/catalog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CatalogClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/chat/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ChatClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/credit/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CreditClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/credit/types.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | export type GetNamespaceRemainingInstillCreditRequest = { 4 | namespaceId: string; 5 | }; 6 | 7 | export type GetNamespaceRemainingInstillCreditResponse = z.infer< 8 | typeof getNamespaceRemainingInstillCreditResponseValidator 9 | >; 10 | 11 | export const getNamespaceRemainingInstillCreditResponseValidator = z.object({ 12 | perishable: z.number(), 13 | imperishable: z.number(), 14 | total: z.number(), 15 | }); 16 | -------------------------------------------------------------------------------- /packages/sdk/src/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./credit"; 2 | export * from "./membership"; 3 | export * from "./metric"; 4 | export * from "./organization"; 5 | export * from "./subscription"; 6 | export * from "./token"; 7 | export * from "./user"; 8 | export * from "./integration"; 9 | export * from "./utils"; 10 | -------------------------------------------------------------------------------- /packages/sdk/src/core/integration/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./IntegrationClient"; 2 | export * from "./type"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/membership/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MembershipClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/metric/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MetricClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/organization/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./OrganizationClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/subscription/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SubscriptionClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/token/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TokenClient"; 2 | export * from "./type"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./UserClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./UtilsClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/core/utils/types.ts: -------------------------------------------------------------------------------- 1 | export type NamespaceType = 2 | | "NAMESPACE_UNSPECIFIED" 3 | | "NAMESPACE_AVAILABLE" 4 | | "NAMESPACE_USER" 5 | | "NAMESPACE_ORGANIZATION" 6 | | "NAMESPACE_RESERVED"; 7 | 8 | export type NameAvailability = "NAME_AVAILABLE" | "NAME_UNAVAILABLE"; 9 | 10 | export type CheckNamespaceTypeRequest = { 11 | id: string; 12 | }; 13 | 14 | export type CheckNamespaceTypeResponse = { 15 | type: NamespaceType; 16 | }; 17 | 18 | export type CheckNameAvailabilityRequest = { 19 | name: string; 20 | }; 21 | 22 | export type CheckNameAvailabilityResponse = { 23 | availability: NameAvailability; 24 | }; 25 | -------------------------------------------------------------------------------- /packages/sdk/src/helper/InstillNameInterpreter.ts: -------------------------------------------------------------------------------- 1 | const generalGetter = (name: string) => { 2 | const frag = name.split("/"); 3 | 4 | if (!frag[1] || !frag[3]) { 5 | throw new Error("Invalid name"); 6 | } 7 | 8 | return { 9 | namespaceId: frag[1], 10 | resourceId: frag[3], 11 | }; 12 | }; 13 | 14 | export const InstillNameInterpreter = { 15 | model: generalGetter, 16 | pipeline: generalGetter, 17 | artifact: generalGetter, 18 | secret: generalGetter, 19 | }; 20 | -------------------------------------------------------------------------------- /packages/sdk/src/helper/UndefinedToNull.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Convert undefined to null for a given non-object value 3 | */ 4 | export type UnionUndefinedToNull = T extends undefined ? null : T; 5 | 6 | /** 7 | * Convert all undefined values to null in any given value 8 | */ 9 | export type UndefinedToNull = { 10 | [Prop in keyof T]-?: T[Prop] extends object 11 | ? UndefinedToNull 12 | : UnionUndefinedToNull; 13 | }; 14 | -------------------------------------------------------------------------------- /packages/sdk/src/helper/cellHelper.ts: -------------------------------------------------------------------------------- 1 | import { Cell, NumberCell, StringCell, BooleanCell, FileCell } from "../table"; 2 | 3 | export function isStringCell(cell: Cell): cell is StringCell { 4 | return cell.type === "TYPE_STRING"; 5 | } 6 | 7 | export function isNumberCell(cell: Cell): cell is NumberCell { 8 | return cell.type === "TYPE_NUMBER"; 9 | } 10 | 11 | export function isBooleanCell(cell: Cell): cell is BooleanCell { 12 | return cell.type === "TYPE_BOOLEAN"; 13 | } 14 | 15 | export function isFileCell(cell: Cell): cell is FileCell { 16 | return cell.type === "TYPE_FILE"; 17 | } 18 | -------------------------------------------------------------------------------- /packages/sdk/src/helper/index.ts: -------------------------------------------------------------------------------- 1 | export { getQueryString } from "./getQueryString"; 2 | export { getInstillAdditionalHeaders } from "./getInstillAdditionalHeaders"; 3 | export { readableStreamAsyncIterable } from "./readableStreamAsyncIterable"; 4 | export { findDoubleNewlineIndex } from "./findDoubleNewlineIndex"; 5 | export * from "./InstillNameInterpreter"; 6 | export * from "./UndefinedToNull"; 7 | export * from "./cellHelper"; 8 | -------------------------------------------------------------------------------- /packages/sdk/src/index.ts: -------------------------------------------------------------------------------- 1 | export { InstillAPIClient } from "./main"; 2 | export type * from "./core"; 3 | export type * from "./model"; 4 | export type * from "./vdp"; 5 | export * from "./types"; 6 | export * from "./helper"; 7 | export * from "./application"; 8 | export type * from "./catalog"; 9 | export type * from "./artifact"; 10 | export type * from "./table"; 11 | export * from "./chat"; 12 | export * from "./vdp/trigger/streamHelpers"; 13 | -------------------------------------------------------------------------------- /packages/sdk/src/main/resource.ts: -------------------------------------------------------------------------------- 1 | import type { InstillAPIClient } from "./index"; 2 | 3 | export class APIResource { 4 | protected _client: InstillAPIClient; 5 | 6 | constructor(client: InstillAPIClient) { 7 | this._client = client; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/sdk/src/model/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ModelClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/table/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TableClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/component/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ComponentClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./component"; 2 | export * from "./pipeline"; 3 | export * from "./release"; 4 | export * from "./secret"; 5 | export * from "./trigger"; 6 | export * from "./types"; 7 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./PipelineClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/release/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ReleaseClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/secret/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SecretClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/src/vdp/trigger/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TriggerClient"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/sdk/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/internal-package.json", 3 | "compilerOptions": { 4 | "lib": ["es2022", "dom", "dom.iterable"], 5 | "outDir": "dist" 6 | }, 7 | "include": ["src/**/*.ts", "src/**/*.tsx"], 8 | "exclude": ["node_modules", "generate-mocks"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/sdk/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig({ 4 | sourcemap: false, 5 | minify: false, 6 | dts: false, 7 | splitting: false, 8 | format: ["esm", "cjs"], 9 | loader: { 10 | ".js": "jsx", 11 | }, 12 | entry: ["src/index.ts"], 13 | clean: false, 14 | 15 | esbuildOptions(options) { 16 | options.external = [ 17 | // vitest is using some nodejs modules that is not available under our bundle env 18 | // it will cause Could not resolve "#async_hooks" error 19 | "#async_hooks", 20 | ]; 21 | }, 22 | }); 23 | -------------------------------------------------------------------------------- /packages/sdk/vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | setupFiles: "./setupTests.ts", 6 | coverage: { 7 | provider: "istanbul", 8 | exclude: [ 9 | "generate-mocks", 10 | "mocks", 11 | ".eslintrc.cjs", 12 | "tsup.config.ts", 13 | "dist", 14 | ], 15 | }, 16 | }, 17 | }); 18 | -------------------------------------------------------------------------------- /packages/toolkit/.eslintignore: -------------------------------------------------------------------------------- 1 | # Build folders 2 | es 3 | dist 4 | umd 5 | out 6 | node_modules 7 | tsup.config.ts 8 | 9 | # test 10 | setupTests.ts 11 | vitest.config.ts 12 | 13 | # React 14 | **/storybook-static/** -------------------------------------------------------------------------------- /packages/toolkit/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | var path = require("path"); 2 | 3 | module.exports = { 4 | root: true, 5 | extends: ["@instill-ai/eslint-config-cortex"], 6 | ignorePatterns: [".eslintrc.cjs"], 7 | parserOptions: { 8 | project: path.join(__dirname, "tsconfig.json"), 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /packages/toolkit/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/CodeString.tsx: -------------------------------------------------------------------------------- 1 | export const CodeString = ({ children }: { children: React.ReactNode }) => { 2 | return ( 3 | 4 | {children} 5 | 6 | ); 7 | }; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/HeadExternalLink.tsx: -------------------------------------------------------------------------------- 1 | export const HeadExternalLink = ({ 2 | children, 3 | href, 4 | }: { 5 | children: React.ReactNode; 6 | href: string; 7 | }) => { 8 | return ( 9 | 15 | {children} 16 | 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/IconWithBackground.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import cn from "clsx"; 5 | 6 | type IconWithBackgroundProps = { 7 | iconElement: React.ReactElement; 8 | className: string; 9 | }; 10 | 11 | function IconWithBackground({ 12 | iconElement, 13 | className, 14 | }: IconWithBackgroundProps) { 15 | return ( 16 |
22 | {iconElement} 23 |
24 | ); 25 | } 26 | 27 | export { IconWithBackground }; 28 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/SectionHeader.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { cn } from "@instill-ai/design-system"; 4 | 5 | export const ModelSectionHeader = ({ 6 | children, 7 | className, 8 | }: { 9 | children: React.ReactNode; 10 | className?: string; 11 | }) => { 12 | return ( 13 |

19 | {children} 20 |

21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/SortIcon.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { Icons } from "@instill-ai/design-system"; 4 | 5 | export type SortIconsProps = { 6 | type: "asc" | "desc" | false; 7 | }; 8 | 9 | export function SortIcon({ type }: SortIconsProps) { 10 | if (type === "asc") { 11 | return ; 12 | } 13 | if (type === "desc") { 14 | return ; 15 | } 16 | return ( 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/breadcrumb-with-link/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./BreadcrumbWithLink"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/card-model/Skeleton.tsx: -------------------------------------------------------------------------------- 1 | import { Skeleton } from "@instill-ai/design-system"; 2 | 3 | export const CardModelSkeleton = () => { 4 | return ( 5 |
6 | 7 |
8 | 9 | 10 | 11 |
12 |
13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/card-model/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./CardModel"; 2 | export * from "./Skeleton"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/card-pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CardPipeline"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/cells/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./GeneralStateCell"; 2 | export * from "./TableCell"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/markdown-editor/ForwardRefEditor.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import type { MDXEditorMethods, MDXEditorProps } from "@mdxeditor/editor"; 4 | import { forwardRef } from "react"; 5 | import dynamic from "next/dynamic"; 6 | 7 | const Editor = dynamic(() => import("./InitializedMDXEditor"), { 8 | ssr: false, 9 | }); 10 | 11 | export const MarkdownEditor = forwardRef( 12 | (props, ref) => , 13 | ); 14 | 15 | MarkdownEditor.displayName = "MarkdownEditor"; 16 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/markdown-editor/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./ForwardRefEditor"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/components/top-bar/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./AppTopbar"; 2 | export * from "./NamespaceSwitch"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/credit.ts: -------------------------------------------------------------------------------- 1 | export const InstillCredit = { 2 | key: "INSTILL_SECRET", 3 | }; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/data-testid.ts: -------------------------------------------------------------------------------- 1 | export const DataTestID = { 2 | deleteResourceDialog: "delete-resource-dialog", 3 | setupComponentDialog: "setup-component-dialog", 4 | createPipelineDialog: "create-pipeline-dialog", 5 | SelectComponentDialog: "select-component-dialog", 6 | onboardingFormRoleField: "onboarding-form-role-field", 7 | }; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/docsBaseUrl.ts: -------------------------------------------------------------------------------- 1 | export const DOCS_BASE_URL = "https://www.instill-ai.dev/docs"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./errors"; 2 | export * from "./data-testid"; 3 | export * from "./credit"; 4 | export * from "./integration"; 5 | export * from "./model"; 6 | export * from "./resourceIdPrefix"; 7 | export * from "./react-query"; 8 | export * from "./ui"; 9 | export * from "./docsBaseUrl"; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/integration.ts: -------------------------------------------------------------------------------- 1 | export const AvailableOAuthIntegration = [ 2 | "github", 3 | "slack", 4 | "google-drive", 5 | "google-sheets", 6 | ]; 7 | export const OAuthCallbackConnectionIdQueryParam = "connectionId"; 8 | export const OAuthCallbackIntegrationIdQueryParam = "integrationId"; 9 | export const OAuthCallbackStatusQueryParam = "status"; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/react-query.ts: -------------------------------------------------------------------------------- 1 | export const REACT_QUERY_MAX_RETRIES = 3; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/resourceIdPrefix.ts: -------------------------------------------------------------------------------- 1 | export const resourceIdPrefix = { 2 | model: "m-", 3 | pipeline: "p-", 4 | catalog: "c-", 5 | integrationConnection: "i-", 6 | }; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/constant/ui.ts: -------------------------------------------------------------------------------- 1 | export const SETTING_PAGE_CONTENT_PADDING = "p-8"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/amplitude/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./type"; 2 | export * from "./helper"; 3 | export * from "./useSendAmplitudeData"; 4 | export * from "./AmplitudeContext"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/convertLongNumberToK.ts: -------------------------------------------------------------------------------- 1 | const shortener = Intl.NumberFormat("en-US", { 2 | notation: "compact", 3 | maximumFractionDigits: 1, 4 | }); 5 | 6 | export function convertLongNumberToK(numberToConvert: number) { 7 | return shortener.format(numberToConvert); 8 | } 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/convertSentenceToCamelCase.ts: -------------------------------------------------------------------------------- 1 | //https://stackoverflow.com/a/71426723/2205002 2 | export const convertSentenceToCamelCase = (str: string) => 3 | str 4 | .split(" ") 5 | .map((e, i) => 6 | i 7 | ? e.charAt(0).toUpperCase() + e.slice(1).toLowerCase() 8 | : e.toLowerCase(), 9 | ) 10 | .join(""); 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/createNaiveRandomString.ts: -------------------------------------------------------------------------------- 1 | export function createNaiveRandomString(length: number) { 2 | const chars = "abcdefghijklmnopqrstuvwxyz0123456789"; 3 | let result = ""; 4 | for (let i = 0; i < length; i++) { 5 | result += chars.charAt(Math.floor(Math.random() * chars.length)); 6 | } 7 | return result; 8 | } 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/convertToSecondsAndMilliseconds.ts: -------------------------------------------------------------------------------- 1 | export function convertToSecondsAndMilliseconds(decimalValue: number): string { 2 | const seconds = Math.floor(decimalValue); // Extract the whole number part (seconds) 3 | const milliseconds = Math.round((decimalValue - seconds) * 1000); // Extract the fractional part and convert to milliseconds 4 | 5 | return `${seconds} sec ${milliseconds} ms`; 6 | } 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/getPipeLineOptions.ts: -------------------------------------------------------------------------------- 1 | import type { Pipeline } from "instill-sdk"; 2 | 3 | import { SelectOption } from "@instill-ai/design-system"; 4 | 5 | export function getPipeLineOptions(pipelines: Pipeline[]): SelectOption[] { 6 | const formattedPinelineOptions = pipelines?.map((pipeline) => { 7 | return { 8 | label: pipeline.id, 9 | value: pipeline.id, 10 | }; 11 | }); 12 | 13 | return [ 14 | { 15 | label: "ALL", 16 | value: "all", 17 | }, 18 | ...formattedPinelineOptions, 19 | ]; 20 | } 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/orderCountsByTriggerTime.ts: -------------------------------------------------------------------------------- 1 | export type Count = { 2 | triggerTime: string | Date; 3 | count: number; 4 | }; 5 | 6 | export function orderCountsByTriggerTime(counts: Count[]): Count[] { 7 | const formattedCounts: Count[] = counts.map((count) => { 8 | const triggerTime = new Date(count.triggerTime); 9 | return { ...count, triggerTime }; 10 | }); 11 | 12 | const sortedCounts = formattedCounts.sort( 13 | (a, b) => 14 | new Date(a.triggerTime).getTime() - new Date(b.triggerTime).getTime(), 15 | ); 16 | 17 | return sortedCounts; 18 | } 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/parseTriggerStatusLabel.ts: -------------------------------------------------------------------------------- 1 | import type { PipelineTriggerStatus } from "instill-sdk"; 2 | 3 | export function parseTriggerStatusLabel(status: PipelineTriggerStatus) { 4 | const convertedStatus = status 5 | .split("_") 6 | .map( 7 | (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(), 8 | )[1]; 9 | 10 | return convertedStatus; 11 | } 12 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/sortByDate.ts: -------------------------------------------------------------------------------- 1 | export type TriggerDate = { 2 | date: Date; 3 | dateString: string; 4 | }; 5 | 6 | export function sortByDate(dateArray: string[]) { 7 | const parsedArray: TriggerDate[] = dateArray.map((dateString) => ({ 8 | date: new Date(dateString), 9 | dateString: dateString, 10 | })); 11 | 12 | return parsedArray 13 | .sort((a, b) => a.date.getTime() - b.date.getTime()) 14 | .map((date) => date.dateString); 15 | } 16 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/dashboard/sortByTriggerTime.ts: -------------------------------------------------------------------------------- 1 | import type { PipelineTriggerRecord } from "instill-sdk"; 2 | 3 | export function sortByTriggerTime( 4 | data: PipelineTriggerRecord[], 5 | ): PipelineTriggerRecord[] { 6 | return data.sort( 7 | (a, b) => 8 | new Date(b.triggerTime).getTime() - new Date(a.triggerTime).getTime(), 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/fillArrayWithZero.ts: -------------------------------------------------------------------------------- 1 | export function fillArrayWithZeros(arr: T[], length: number): T[] { 2 | const resultArray = Array.from( 3 | { length }, 4 | (_, index) => arr[index] || (0 as T), 5 | ); 6 | return resultArray; 7 | } 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/formatNumberToLocale.ts: -------------------------------------------------------------------------------- 1 | const formatter = Intl.NumberFormat("en-US"); 2 | 3 | export function formatNumberToLocale(numberToFormat: number) { 4 | return formatter.format(numberToFormat); 5 | } 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/getCaptializeTwoWordsFromName.tsx: -------------------------------------------------------------------------------- 1 | export function getCaptializeTwoWordsFromName(name: string) { 2 | if (name.includes(" ")) { 3 | const [first, second] = name.split(" "); 4 | return `${first?.charAt(0).toUpperCase()}${second?.charAt(0).toUpperCase()}`; 5 | } 6 | 7 | return `${name.charAt(0).toUpperCase()}${name.charAt(1).toUpperCase()}`; 8 | } 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/hook/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useGuardPipelineBuilderUnsavedChangesNavigation"; 2 | export * from "./useCreateUpdateDeleteResourceGuard"; 3 | export * from "./useNavigateBackAfterLogin"; 4 | export * from "./useRefSize"; 5 | export * from "./useWindowSize"; 6 | export * from "./useOnScreen"; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/hook/useCreateUpdateDeleteResourceGuard.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import { env } from "../../server"; 4 | 5 | export function useCreateUpdateDeleteResourceGuard() { 6 | const [enable, setEnable] = React.useState(false); 7 | 8 | React.useEffect(() => { 9 | setEnable(env("NEXT_PUBLIC_DISABLE_CREATE_UPDATE_DELETE_RESOURCE")); 10 | }, []); 11 | 12 | return enable; 13 | } 14 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/integrations/types.ts: -------------------------------------------------------------------------------- 1 | import type { CreateNamespaceConnectionRequest } from "instill-sdk"; 2 | 3 | export type OnOAuthCallbackProps = { 4 | instillAccessToken?: string; 5 | addConnectionPayload: CreateNamespaceConnectionRequest; 6 | }; 7 | 8 | export type OnOAuthCallback = (props: OnOAuthCallbackProps) => void; 9 | 10 | export type IntegrationProvider = 11 | | "google-drive" 12 | | "google-sheets" 13 | | "slack" 14 | | "github"; 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/isDownloadableArtifactBlobURL.ts: -------------------------------------------------------------------------------- 1 | export function isDownloadableArtifactBlobURL(url: string): boolean { 2 | return url.includes("blob-urls") && url.includes("namespaces"); 3 | } 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/isPublicModel.ts: -------------------------------------------------------------------------------- 1 | import type { Model, Nullable } from "instill-sdk"; 2 | 3 | export function isPublicModel(model: Nullable) { 4 | if (!model) { 5 | return false; 6 | } 7 | 8 | return model.visibility === "VISIBILITY_PUBLIC"; 9 | } 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/isPublicPipeline.ts: -------------------------------------------------------------------------------- 1 | import type { Pipeline } from "instill-sdk"; 2 | 3 | import type { Nullable } from "./type"; 4 | 5 | export function isPublicPipeline(pipeline: Nullable) { 6 | if (!pipeline) { 7 | return false; 8 | } 9 | 10 | const topLevelSharing = pipeline.sharing.users["*/*"]; 11 | 12 | if (!topLevelSharing) { 13 | return false; 14 | } 15 | 16 | return topLevelSharing.enabled; 17 | } 18 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/isValidURL.ts: -------------------------------------------------------------------------------- 1 | export function isValidURL(url: string) { 2 | try { 3 | new URL(url); 4 | return true; 5 | } catch (e) { 6 | return false; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/markdown/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./MarkdownViewer"; 2 | export * from "./preprocessLatex"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/pathname-evaluator/index.ts: -------------------------------------------------------------------------------- 1 | import { isModelPlaygroundPage } from "./isModelPlaygroundPage"; 2 | import { isPipelineBuilderPage } from "./isPipelineBuilderPage"; 3 | import { isPipelineOverviewPage } from "./isPipelineOverviewPage"; 4 | 5 | export const pathnameEvaluator = { 6 | isPipelineBuilderPage, 7 | isPipelineOverviewPage, 8 | isModelPlaygroundPage, 9 | }; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/pathname-evaluator/isModelPlaygroundPage.ts: -------------------------------------------------------------------------------- 1 | import { Nullable } from "../type"; 2 | 3 | export function isModelPlaygroundPage(path: Nullable) { 4 | const pathArray = path ? path.split("/") : null; 5 | if (pathArray && pathArray[2] === "models" && pathArray[3]) { 6 | return true; 7 | } 8 | return false; 9 | } 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/pathname-evaluator/isPipelineBuilderPage.ts: -------------------------------------------------------------------------------- 1 | import { Nullable } from "../type"; 2 | 3 | export function isPipelineBuilderPage(path: Nullable) { 4 | const pathArray = path ? path.split("/") : null; 5 | 6 | if (pathArray && pathArray[2] === "pipelines" && pathArray[4] === "editor") { 7 | return true; 8 | } 9 | return false; 10 | } 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/pathname-evaluator/isPipelineOverviewPage.ts: -------------------------------------------------------------------------------- 1 | import { Nullable } from "../type"; 2 | 3 | export function isPipelineOverviewPage(path: Nullable) { 4 | const pathArray = path ? path.split("/") : null; 5 | if (pathArray && pathArray[2] === "pipelines" && pathArray[3]) { 6 | return true; 7 | } 8 | return false; 9 | } 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-json-view/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./customTheme"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/application/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useCreateNamespaceAgent"; 2 | export * from "./useCreateNamespaceChat"; 3 | export * from "./useDeleteNamespaceAgent"; 4 | export * from "./useDeleteNamespaceChat"; 5 | export * from "./useListNamespaceAgents"; 6 | export * from "./useListNamespaceChats"; 7 | export * from "./useUpdateNamespaceAgent"; 8 | export * from "./useUpdateNamespaceChat"; 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/artifact/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useDownloadNamespaceObject"; 2 | export * from "./useGetNamespaceObjectDownloadURL"; 3 | export * from "./useNamespaceObjectDownloadURL"; 4 | export * from "./useGetNamespaceObjectUploadURL"; 5 | export * from "./useUploadAndGetDownloadNamespaceObjectURL"; 6 | export * from "./useUploadNamespaceObject"; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/chats/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useListNamespaceChatTables"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/connector/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useComponentDefinitions"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/hub/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useHubStats"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/integration/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useCreateIntegrationConnection"; 2 | export * from "./useDeleteIntegrationConnection"; 3 | export * from "./useInfiniteListNamespaceConnectionReferencedPipelines"; 4 | export * from "./useInfiniteListNamespaceConnections"; 5 | export * from "./useInfiniteListIntegrations"; 6 | export * from "./useGetIntegration"; 7 | export * from "./useGetNamespaceConnection"; 8 | export * from "./useListNamespaceConnections"; 9 | export * from "./useTestNamespaceConnection"; 10 | export * from "./useUpdateNamespaceConnection"; 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/metric/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useCreditConsumptionChartRecords"; 2 | export * from "./usePipelineTriggers"; 3 | export * from "./usePipelineTriggerMetric"; 4 | export * from "./usePipelineTriggerComputationTimeCharts"; 5 | export * from "./useModelTriggerCount"; 6 | export * from "./useModelTriggerMetric"; 7 | export * from "./useListModelRunsByRequester"; 8 | export * from "./useListPipelineRunsByRequester"; 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/mgmt/use-api-tokens/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/mgmt/use-authenticated-user/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/mgmt/use-namespace-type/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/mgmt/use-user/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/misc/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useBlogPosts"; 2 | export * from "./useChangelogs"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/model/use-namespace-model/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/model/use-namespace-models/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/organization/use-organization-memberships/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/organization/use-organization/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/organization/use-organizations/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/pipeline/use-namespace-pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/pipeline/use-namespace-pipelines/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/release/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./use-namespace-pipeline-releases"; 2 | export * from "./useCreateNamespacePipelineRelease"; 3 | export * from "./useDeleteNamespacePipelineRelease"; 4 | export * from "./useInfiniteNamespacePipelineReleases"; 5 | export * from "./useSortedReleases"; 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/release/use-namespace-pipeline-releases/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/secret/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./use-namespace-secret"; 2 | export * from "./use-namespace-secrets"; 3 | export * from "./useCreateNamespaceSecret"; 4 | export * from "./useDeleteNamespaceSecret"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/secret/use-namespace-secret/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/secret/use-namespace-secrets/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./client"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/react-query-service/types.ts: -------------------------------------------------------------------------------- 1 | import { Nullable } from "instill-sdk"; 2 | 3 | export type QueryBaseProps = { 4 | accessToken: Nullable; 5 | enabled: boolean; 6 | }; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/sdk-helper/checkIsDefinition.ts: -------------------------------------------------------------------------------- 1 | import { ComponentDefinition, IteratorDefinition } from "instill-sdk"; 2 | 3 | export function isComponentDefinition( 4 | definition: IteratorDefinition | ComponentDefinition, 5 | ): definition is ComponentDefinition { 6 | return "type" in definition; 7 | } 8 | 9 | export function isIteratorDefinition( 10 | definition: IteratorDefinition | ComponentDefinition, 11 | ): definition is IteratorDefinition { 12 | return definition.id === "iterator"; 13 | } 14 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/store/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useConfigureModelFormStore"; 2 | export * from "./useConfigureSourceFormStore"; 3 | export * from "./useCreateResourceFormStore"; 4 | export * from "./useMessageBoxStore"; 5 | export * from "./useModalStore"; 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/stringToHash32Bit.ts: -------------------------------------------------------------------------------- 1 | // https://gist.github.com/jlevy/c246006675becc446360a798e2b2d781 2 | export const stringToHash32Bit = (str: string) => { 3 | let hash = 0; 4 | 5 | for (let i = 0; i < str.length; i++) { 6 | const char = str.charCodeAt(i); 7 | 8 | hash = (hash << 5) - hash + char; 9 | } 10 | 11 | return (hash >>> 0).toString(36).padStart(7, "0"); 12 | }; 13 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/table/formatDate.ts: -------------------------------------------------------------------------------- 1 | export function formatDate(inputDate: string): string { 2 | return new Date(inputDate).toLocaleDateString("en-US", { 3 | day: "2-digit", 4 | month: "short", 5 | year: "numeric", 6 | }); 7 | } 8 | 9 | export function formatDateFull(inputDate: string): string { 10 | return new Date(inputDate).toLocaleDateString("en-US", { 11 | day: "2-digit", 12 | month: "2-digit", 13 | year: "2-digit", 14 | hour: "2-digit", 15 | minute: "2-digit", 16 | second: "2-digit", 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/table/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./formatDate"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/tip-tap/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./extensions"; 2 | export * from "./markdown"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/toastInstillError.ts: -------------------------------------------------------------------------------- 1 | import { toast } from "@instill-ai/design-system"; 2 | 3 | import { getInstillApiErrorMessage } from "./sdk-helper/getInstillApiErrorMessage"; 4 | 5 | export function toastInstillError({ 6 | title, 7 | error, 8 | description, 9 | }: { 10 | title: string; 11 | error?: unknown; 12 | description?: string; 13 | }) { 14 | toast.error(title, { 15 | description: description ?? getInstillApiErrorMessage(error), 16 | duration: 15000, 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/toastInstillSuccess.ts: -------------------------------------------------------------------------------- 1 | import { toast, ToastAction } from "@instill-ai/design-system"; 2 | 3 | export function toastInstillSuccess({ 4 | title, 5 | description, 6 | action, 7 | }: { 8 | title: string; 9 | description?: string; 10 | action?: ToastAction; 11 | }) { 12 | toast.success(title, { 13 | description, 14 | action, 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/type/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./general"; 2 | export * from "./zod"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/type/zod.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | 3 | export type SuperRefineRule = { 4 | key: string; 5 | validator: (value: any) => SuperRefineRuleValidatorReturn; 6 | }; 7 | 8 | export type SuperRefineRuleValidatorReturn = 9 | | SuperRefineRuleValidatorValidReturn 10 | | SuperRefineRuleValidatorInvalidReturn; 11 | 12 | export type SuperRefineRuleValidatorValidReturn = { 13 | valid: true; 14 | }; 15 | 16 | export type SuperRefineRuleValidatorInvalidReturn = { 17 | valid: false; 18 | error: string; 19 | }; 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-callback-ref/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useCallbackRef"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-controllable-state/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useControllableState"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/components/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./FieldDescriptionTooltip"; 2 | export * from "./VideoPreview"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/components/component-output/NoOutput.tsx: -------------------------------------------------------------------------------- 1 | export const NoOutput = () => { 2 | return
No output.
; 3 | }; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./regular"; 2 | export * from "./component-output"; 3 | export * from "./smart-hint"; 4 | export * from "./trigger-request-form-fields"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/components/smart-hint/index.ts: -------------------------------------------------------------------------------- 1 | import { TextArea } from "./TextArea"; 2 | import { TextField } from "./TextField"; 3 | 4 | export const SmartHintFields = { 5 | TextArea, 6 | TextField, 7 | }; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./useComponentOutputFields"; 3 | export * from "./useInstillForm"; 4 | export * from "./usePipelineTriggerRequestForm"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/pick/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./pickComponentOutputFieldsFromInstillFormTree"; 2 | export * from "./pickConstInfoFromOneOfCondition"; 3 | export * from "./pickRegularFieldsFromInstillFormTree"; 4 | export * from "./pickSelectedConditionMap"; 5 | export * from "./pickPipelineTriggerRequestFormFields"; 6 | 7 | export * from "./pickDefaultCondition"; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/pick/pickConstInfoFromOneOfCondition.ts: -------------------------------------------------------------------------------- 1 | import { InstillJSONSchema } from "../types"; 2 | 3 | export function pickConstInfoFromOneOfCondition( 4 | properties: Record, 5 | ) { 6 | let constKey: null | string = null; 7 | let constValue: null | string = null; 8 | 9 | for (const [key, value] of Object.entries(properties)) { 10 | if (typeof value === "object" && value.const) { 11 | constKey = key; 12 | constValue = value.const as string; 13 | break; 14 | } 15 | } 16 | 17 | return { 18 | constKey, 19 | constValue, 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-form/transform/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./transformInstillFormTreeToDefaultValue"; 2 | export * from "./transformInstillFormatToHumanReadableFormat"; 3 | export * from "./transformInstillFormTreeToInitialSelectedCondition"; 4 | export * from "./transformInstillJSONSchemaToFormTree"; 5 | export * from "./transformInstillJSONSchemaToZod"; 6 | export * from "./transformPipelineTriggerRequestFieldsToSuperRefineRules"; 7 | export * from "./transformPipelineTriggerRequestFieldsToZod"; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-store/featureFlagSlice.ts: -------------------------------------------------------------------------------- 1 | import { StateCreator } from "zustand"; 2 | 3 | import { FeatureFlagSlice, InstillStore, InstillStoreMutators } from "./types"; 4 | 5 | export const createFeatureFlagSlice: StateCreator< 6 | InstillStore, 7 | InstillStoreMutators, 8 | [], 9 | FeatureFlagSlice 10 | > = (set) => ({ 11 | featureFlagChatEnabled: false, 12 | updateFeatureFlagChatEnabled: (fn: (prev: boolean) => boolean) => 13 | set((state) => { 14 | return { 15 | ...state, 16 | featureFlagChatEnabled: fn(state.featureFlagChatEnabled), 17 | }; 18 | }), 19 | }); 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-store/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useInstillStore"; 2 | export * from "./types"; 3 | 4 | export { useShallow } from "zustand/react/shallow"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-instill-store/smartHintSlice.ts: -------------------------------------------------------------------------------- 1 | import { StateCreator } from "zustand"; 2 | 3 | import { SmartHint } from "../use-smart-hint"; 4 | import { InstillStore, InstillStoreMutators, SmartHintSlice } from "./types"; 5 | 6 | export const createSmartHintSlice: StateCreator< 7 | InstillStore, 8 | InstillStoreMutators, 9 | [], 10 | SmartHintSlice 11 | > = (set) => ({ 12 | smartHints: [], 13 | updateSmartHints: (fn: (prev: SmartHint[]) => SmartHint[]) => 14 | set((state) => { 15 | return { 16 | ...state, 17 | smartHints: fn(state.smartHints), 18 | }; 19 | }), 20 | }); 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-smart-hint/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./types"; 2 | export * from "./useSmartHint"; 3 | export * from "./pickSmartHintsFromNodes"; 4 | export * from "./pickSmartHintsFromAcceptFormats"; 5 | export * from "./transformPipelineTriggerRequestFieldsToSmartHints"; 6 | 7 | export * from "./output-reference-hint"; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-smart-hint/output-reference-hint/fields/index.ts: -------------------------------------------------------------------------------- 1 | import { GroupByFormatField } from "./GroupByFormatField"; 2 | import { ListField } from "./ListField"; 3 | import { ObjectArrayField } from "./ObjectArrayField"; 4 | 5 | export const ComponentOutputReferenceHints = { 6 | GroupByFormatField, 7 | ListField, 8 | ObjectArrayField, 9 | }; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-smart-hint/output-reference-hint/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useOutputReferenceHintsFields"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/lib/use-smart-hint/types.ts: -------------------------------------------------------------------------------- 1 | export type SmartHint = { 2 | key: string; 3 | path: string; 4 | instillFormat: string; 5 | type: string; 6 | properties?: SmartHint[]; 7 | description?: string; 8 | isInstillCreditHint?: boolean; 9 | }; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/chunk.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | 3 | export function chunk(arr: T[], chunkSize: number) { 4 | if (!chunkSize || chunkSize <= 0) throw "Invalid chunk size"; 5 | const chunk: T[][] = []; 6 | for (let i = 0, len = arr.length; i < len; i += chunkSize) { 7 | chunk.push(arr.slice(i, i + chunkSize)); 8 | } 9 | return chunk; 10 | } 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/generateNextMetaBase.tsx: -------------------------------------------------------------------------------- 1 | export function generateNextMetaBase({ defaultBase }: { defaultBase: string }) { 2 | return new URL(process.env.NEXT_PUBLIC_CONSOLE_BASE_URL ?? defaultBase); 3 | } 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/generateRandomReadableName.ts: -------------------------------------------------------------------------------- 1 | import { 2 | adjectives, 3 | animals, 4 | colors, 5 | uniqueNamesGenerator, 6 | } from "unique-names-generator"; 7 | 8 | export function generateRandomReadableName() { 9 | return uniqueNamesGenerator({ 10 | dictionaries: [adjectives, colors, animals], 11 | separator: "-", 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/getCanvasTextWidth.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Solution from 3 | * https://stackoverflow.com/questions/118241/calculate-text-width-with-javascript/21015393#21015393 4 | */ 5 | 6 | let canvas: HTMLCanvasElement; 7 | 8 | export function getCanvasTextWidth(text: string, font: string): number | null { 9 | if (!canvas) canvas = document.createElement("canvas"); 10 | 11 | const ctx = canvas.getContext("2d"); 12 | 13 | if (ctx) { 14 | ctx.font = font; 15 | const metrics = ctx.measureText(text); 16 | ctx.clearRect(0, 0, canvas.width, canvas.height); 17 | return metrics.width; 18 | } 19 | 20 | return null; 21 | } 22 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/getHumanReadableStringFromTime/index.ts: -------------------------------------------------------------------------------- 1 | export { getHumanReadableStringFromTime } from "./getHumanReadableStringFromTime"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/getModelTabTitle.ts: -------------------------------------------------------------------------------- 1 | const ModelTabsDictionary = { 2 | playground: "Playground", 3 | api: "API", 4 | examples: "Examples", 5 | predictions: "Predictions", 6 | versions: "Versions", 7 | settings: "Settings", 8 | readme: "README", 9 | runs: "Runs", 10 | }; 11 | 12 | export type ModelTabNames = keyof typeof ModelTabsDictionary; 13 | 14 | export const getModelTabTitle = (tabName: ModelTabNames = "playground") => { 15 | return ModelTabsDictionary[tabName] || ModelTabsDictionary.playground; 16 | }; 17 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/getPipelineTabTitle.ts: -------------------------------------------------------------------------------- 1 | const PipelineTabsDictionary = { 2 | playground: "Playground", 3 | api: "API", 4 | examples: "Examples", 5 | preview: "Preview", 6 | runs: "Runs", 7 | versions: "Versions", 8 | settings: "Settings", 9 | readme: "README", 10 | }; 11 | 12 | export type PipelineTabNames = keyof typeof PipelineTabsDictionary; 13 | 14 | export const getPipelineTabTitle = ( 15 | tabName: PipelineTabNames = "playground", 16 | ) => { 17 | return PipelineTabsDictionary[tabName] || PipelineTabsDictionary.playground; 18 | }; 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/groupBy.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Credit: https://stackoverflow.com/a/62765924 3 | */ 4 | 5 | /* eslint-disable @typescript-eslint/no-explicit-any */ 6 | 7 | export function groupBy( 8 | list: T[], 9 | getKey: (item: T) => K, 10 | ) { 11 | return list.reduce( 12 | (previous, currentItem) => { 13 | const group = getKey(currentItem); 14 | if (!previous[group]) previous[group] = []; 15 | previous[group].push(currentItem); 16 | return previous; 17 | }, 18 | {} as Record, 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/handle.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | export async function handle( 3 | promise: Promise, 4 | defaultError: any = "rejected", 5 | ): Promise { 6 | return promise 7 | .then((data) => { 8 | const res: readonly [undefined, T] = [undefined, data]; 9 | return res; 10 | }) 11 | .catch((error) => Promise.resolve([error || defaultError, undefined])); 12 | } 13 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/removeObjKey.ts: -------------------------------------------------------------------------------- 1 | import { GeneralRecord } from "../../lib/type"; 2 | 3 | export function removeObjKey(obj: GeneralRecord, key: string) { 4 | return Object.fromEntries(Object.entries(obj).filter(([k]) => k !== key)); 5 | } 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/validateInstillResourceID.ts: -------------------------------------------------------------------------------- 1 | export function validateInstillResourceID(id: string) { 2 | return /^[a-z][-a-z0-9]{0,31}$/.test(id); 3 | } 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/server/utility/validateInstillVariableAndOutputKey.ts: -------------------------------------------------------------------------------- 1 | // This is specific for variable and output field keys 2 | 3 | export function validateInstillVariableAndOutputKey(id: string) { 4 | return /^[a-z_][-a-z_0-9]{0,31}$/.test(id); 5 | } 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/catalog/components/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./helpers"; 2 | export * from "./constant"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/catalog/components/tabs/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CatalogFilesTab"; 2 | export * from "./ChunkTab"; 3 | export * from "./ImageTab"; 4 | export * from "./CatalogMainTab"; 5 | export * from "./MarkdownTab"; 6 | export * from "./RetrieveTestTab"; 7 | export * from "./UploadExploreTab"; 8 | export * from "./AskQuestionTab"; 9 | export * from "./GetCatalogTab"; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/catalog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CatalogMainView"; 2 | export * from "./components"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/chat/ChatView.tsx: -------------------------------------------------------------------------------- 1 | import { ChatInput } from "./ChatInput"; 2 | 3 | export const ChatView = () => { 4 | return ( 5 |
6 |
7 |
8 | 9 |
10 | ); 11 | }; 12 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/chat/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ChatView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/activity/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DashboardActivityPageMainView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/cost/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./model"; 2 | export * from "./pipeline"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/cost/model/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DashboardCostModelPageMainView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/cost/pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DashboardCostPipelinePageMainView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DashboardPipelineDetailsPageMainView"; 2 | export * from "./DashboardPipelineListPageMainView"; 3 | export * from "./SemiCircleProgress"; 4 | export * from "./DashboardContainer"; 5 | export * from "./activity"; 6 | export * from "./cost"; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/lib/constant.tsx: -------------------------------------------------------------------------------- 1 | import { Icons } from "@instill-ai/design-system"; 2 | 3 | export const options = [ 4 | { 5 | value: "pipeline", 6 | label: "Pipeline", 7 | icon: , 8 | }, 9 | { 10 | value: "model", 11 | label: "Model", 12 | icon: , 13 | }, 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/dashboard/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./helpers"; 2 | export * from "./constant"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./chat"; 2 | export * from "./dashboard"; 3 | export * from "./model"; 4 | export * from "./not-found"; 5 | export * from "./pipeline"; 6 | export * from "./pipeline-builder"; 7 | export * from "./profile/user-profile-view"; 8 | export * from "./settings"; 9 | export * from "./catalog"; 10 | export * from "./recipe-editor"; 11 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/model/ModelHubCreatePageMainView.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { CreateModelForm } from "./CreateModelForm"; 4 | 5 | export const ModelHubCreatePageMainView = () => { 6 | return ( 7 |
8 |
9 |

10 | Create a model 11 |

12 |
13 | 14 |
15 | ); 16 | }; 17 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/model/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CreateModelForm"; 2 | export * from "./ModelHubCreatePageMainView"; 3 | export * from "./ModelHubListPageMainView"; 4 | export * from "./ModelHubSettingPageMainView"; 5 | export * from "./ModelTablePlaceholder"; 6 | export * from "./ModelsList"; 7 | export * from "./ModelsListPagination"; 8 | export * from "./ModelsTable"; 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/model/view-model/ModelRunViews/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./List"; 2 | export * from "./Run"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/model/view-model/ModelRuns.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import type { Model } from "instill-sdk"; 4 | import { useParams } from "next/navigation"; 5 | 6 | import { ModelRun, ModelRunList } from "./ModelRunViews"; 7 | 8 | export type ModelRunsProps = { 9 | model?: Model; 10 | }; 11 | 12 | export const ModelRuns = ({ model }: ModelRunsProps) => { 13 | const { path } = useParams(); 14 | 15 | if (path?.length === 1) { 16 | return ; 17 | } else { 18 | return ; 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/model/view-model/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./ModelContentViewer"; 2 | export * from "./ModelHead"; 3 | export * from "./ModelVersions"; 4 | export * from "./ModelSettingsEditForm"; 5 | export * from "./ModelApi"; 6 | export * from "./ModelPlayground"; 7 | export * from "./NoVersionsPlaceholder"; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/not-found/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./NotFoundView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/OpenAdvancedConfigurationButton.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | export const OpenAdvancedConfigurationButton = ( 4 | props: React.ButtonHTMLAttributes, 5 | ) => { 6 | return ( 7 | 14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/canvasPanOnDrag.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * https://reactflow.dev/api-reference/react-flow#pan-on-drag 3 | */ 4 | export const canvasPanOnDrag = [0, 1]; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/dialogs/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./publish-pipeline-dialog"; 2 | export * from "./select-component-dialog"; 3 | export * from "./share-pipeline-dialog"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/dialogs/publish-pipeline-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./PublishPipelineDialog"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/dialogs/select-component-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SelectComponentDialog"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/dialogs/share-pipeline-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SharePipelineDialog"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./BackToLatestVersionTopBar"; 2 | export * from "./BottomBar"; 3 | export * from "./CustomEdge"; 4 | export * from "./CustomHandle"; 5 | export * from "./PipelineToolkitDialog"; 6 | export * from "./ReadOnlyPipelineBuilder"; 7 | export * from "./RemainingCreditCTA"; 8 | export * from "./ComponentOutputReferenceHints"; 9 | 10 | export * from "./dialogs"; 11 | export * from "./iterator-editor"; 12 | export * from "./nodes"; 13 | export * from "./release-menu"; 14 | export * from "./right-panel"; 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/iterator-editor/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./IteratorEditor"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./IteratorInput"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeHead.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import cn from "clsx"; 5 | 6 | export const NodeHead = ({ 7 | nodeIsCollapsed, 8 | children, 9 | }: { 10 | nodeIsCollapsed: boolean; 11 | children: React.ReactNode; 12 | }) => { 13 | return ( 14 |
15 | {children} 16 |
17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./node-bottom-bar/NodeBottomBarMenu"; 2 | export * from "./NodeDropdownMenu"; 3 | export * from "./NodeHead"; 4 | export * from "./NodeIDEditor"; 5 | export * from "./NodeSortableFieldWrapper"; 6 | export * from "./NodeWrapper"; 7 | 8 | export * from "./node-bottom-bar"; 9 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/common/node-bottom-bar/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./NodeBottomBarContext"; 2 | export * from "./NodeBottomBarContent"; 3 | export * from "./NodeBottomBarOutput"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/control-panel/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./NodeControlPanel"; 2 | export * from "./VariableResponseNodeControlPanel"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/general-node/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./GeneralNode"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./general-node"; 2 | export * from "./response-node"; 3 | export * from "./iterator-node"; 4 | export * from "./variable-node"; 5 | export * from "./EmptyNode"; 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/iterator-node/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./IteratorNode"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/response-node/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ResponseNode"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/variable-node/constructFieldKey.ts: -------------------------------------------------------------------------------- 1 | export function constructFieldKey(str: string) { 2 | let fieldKey = str.replaceAll(/[^a-zA-Z0-9 ]/g, "_"); 3 | 4 | fieldKey = fieldKey.replaceAll(" ", "-").toLowerCase(); 5 | 6 | // The first character of a field key cannot be a number 7 | if (fieldKey.match(/^[0-9]/)) { 8 | fieldKey = "_" + fieldKey; 9 | } 10 | 11 | // The first character of a field key cannot be a hyphen 12 | 13 | if (fieldKey.match(/^[-]/)) { 14 | fieldKey = "_" + fieldKey; 15 | } 16 | 17 | return fieldKey; 18 | } 19 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/nodes/variable-node/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./VariableNode"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/release-menu/Head.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | export const Head = () => { 4 | return ( 5 |

6 | Release Pipeline 7 |

8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/release-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ReleaseMenu"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/right-panel/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./RightPanel"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/top-control-menu/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./TopControlMenu"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/components/triggerPipelineSnippet.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-useless-escape */ 2 | 3 | export const triggerPipelineSnippet = `curl -X POST '{vdp-pipeline-base-url}/v1beta/{pipeline-name}/{trigger-endpoint}' \\ 4 | --header "Content-Type: application/json" \\ 5 | --header "Authorization: Bearer $INSTILL_API_TOKEN" \\ 6 | --data '{input-array}' 7 | `; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./components"; 2 | export * from "./lib"; 3 | export * from "./Flow"; 4 | export * from "./PipelineBuilderMainView"; 5 | export * from "./components/right-panel/RightPanel"; 6 | export * from "./type"; 7 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/checkComponentType.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | PipelineComponent, 3 | PipelineGeneralComponent, 4 | PipelineIteratorComponent, 5 | } from "instill-sdk"; 6 | 7 | export function isPipelineGeneralComponent( 8 | component: PipelineComponent, 9 | ): component is PipelineGeneralComponent { 10 | return component.type !== "iterator"; 11 | } 12 | 13 | export function isPipelineIteratorComponent( 14 | component: PipelineComponent, 15 | ): component is PipelineIteratorComponent { 16 | return component.type === "iterator"; 17 | } 18 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/checkIsValidComponentMetadata.ts: -------------------------------------------------------------------------------- 1 | import { GeneralRecord, Nullable } from "../../../lib"; 2 | import { PipelineMetadata } from "../type"; 3 | 4 | export function checkIsValidComponentMetadata( 5 | metadata?: Nullable, 6 | ): metadata is PipelineMetadata { 7 | if ( 8 | metadata && 9 | "component" in metadata && 10 | Object.keys(metadata.component).length > 0 11 | ) { 12 | return true; 13 | } 14 | 15 | return false; 16 | } 17 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/composePipelineMetadataMapFromNodes.ts: -------------------------------------------------------------------------------- 1 | import { Node } from "reactflow"; 2 | 3 | import { NodeData, PipelineComponentMetadataMap } from "../type"; 4 | 5 | export function composePipelineMetadataMapFromNodes(nodes: Node[]) { 6 | const componentMetadatas: PipelineComponentMetadataMap = {}; 7 | 8 | for (const node of nodes) { 9 | componentMetadatas[node.id] = { 10 | note: node.data.note, 11 | x: node.position.x, 12 | y: node.position.y, 13 | }; 14 | } 15 | 16 | return { 17 | component: componentMetadatas, 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/generateNewComponentIndex.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | 3 | import { generateUniqueIndex } from "./generateUniqueIndex"; 4 | 5 | test("should generate new node idx", () => { 6 | const nodeIDs = ["ai-0", "ai-1", "ai-5", "ai-2", "ai-6"]; 7 | 8 | const idx = generateUniqueIndex(nodeIDs, "ai"); 9 | 10 | expect(idx).toBe(3); 11 | }); 12 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/generateUniqueIndex.ts: -------------------------------------------------------------------------------- 1 | export function generateUniqueIndex( 2 | componentIDs: string[], 3 | initialPrefix: string, 4 | ) { 5 | const prefix = `${initialPrefix}-`; 6 | let nodeIdx = 0; 7 | const idxs: number[] = []; 8 | 9 | componentIDs.forEach((id) => { 10 | if (id.startsWith(prefix)) { 11 | const idx = +id.replace(prefix, ""); 12 | idxs.push(idx); 13 | } 14 | }); 15 | 16 | idxs.sort((a, b) => a - b); 17 | 18 | for (const idx of idxs) { 19 | if (idx === nodeIdx) nodeIdx++; 20 | else break; 21 | } 22 | 23 | return nodeIdx; 24 | } 25 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/getAllNodeID.tsx: -------------------------------------------------------------------------------- 1 | import { Node } from "reactflow"; 2 | 3 | import { NodeData } from "../type"; 4 | import { isIteratorNode } from "./checkNodeType"; 5 | 6 | export function getAllNodeID(nodes: Node[]): string[] { 7 | const nodeIDs: string[] = []; 8 | 9 | for (const node of nodes) { 10 | if (isIteratorNode(node)) { 11 | nodeIDs.push(node.id); 12 | nodeIDs.push(...Object.keys(node.data.component)); 13 | continue; 14 | } 15 | 16 | nodeIDs.push(node.id); 17 | } 18 | 19 | return nodeIDs; 20 | } 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useCheckIsHidden"; 2 | export * from "./usePipelineBuilderGraph"; 3 | export * from "./useRenamePipeline"; 4 | export * from "./useSavePipeline"; 5 | export * from "./useUpdaterOnNode"; 6 | export * from "./useUpdaterOnRightPanel"; 7 | export * from "./useAddNodeWithDefinition"; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/readFileToBinary.ts: -------------------------------------------------------------------------------- 1 | export async function readFileToBinary(file: File) { 2 | return new Promise((resolve, reject) => { 3 | const reader = new FileReader(); 4 | 5 | reader.onload = (event) => { 6 | if (event.target) { 7 | resolve(event.target.result as string); 8 | } 9 | }; 10 | 11 | reader.onerror = (event) => { 12 | reject(event); 13 | }; 14 | 15 | reader.readAsDataURL(file); 16 | }); 17 | } 18 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/recursive-helpers/recursiveRemoveUndefinedAndNullFromArray.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | 3 | export function recursiveRemoveUndefinedAndNullFromArray(value: any) { 4 | if (typeof value === "object") { 5 | for (const key in value) { 6 | value[key] = recursiveRemoveUndefinedAndNullFromArray(value[key]) as any; 7 | } 8 | } 9 | 10 | if (Array.isArray(value)) { 11 | value = value.filter((item) => item !== undefined && item !== null); 12 | } 13 | 14 | return value; 15 | } 16 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline-builder/lib/transformConnectorDefinitionIDToComponentIDPrefix.ts: -------------------------------------------------------------------------------- 1 | export function transformConnectorDefinitionIDToComponentIDPrefix(id: string) { 2 | return id 3 | .split("-") 4 | .filter((item) => { 5 | if ( 6 | item === "ai" || 7 | item === "data" || 8 | item === "destination" || 9 | item === "airbyte" || 10 | item === "application" || 11 | item === "op" 12 | ) { 13 | return false; 14 | } 15 | 16 | return true; 17 | }) 18 | .join("-"); 19 | } 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./view-pipeline"; 2 | export * from "./view-pipelines"; 3 | export * from "./PipelineTablePlaceholder"; 4 | export * from "./PipelinesTable"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline/view-pipeline/PipelineRunViews/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./List"; 2 | export * from "./Run"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline/view-pipeline/constants.ts: -------------------------------------------------------------------------------- 1 | export const TABLE_PAGE_SIZE = 6; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline/view-pipeline/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ViewPipeline"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/pipeline/view-pipelines/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ViewPipelines"; 2 | 3 | // Export this component to be used in other packages 4 | export * from "./CreatePipelineDialog"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/profile/ProfileSeparator.tsx: -------------------------------------------------------------------------------- 1 | import { Separator } from "@instill-ai/design-system"; 2 | 3 | export const ProfileSeparator = ({ title }: { title: string }) => { 4 | return ( 5 |
6 |
7 |

8 | {title} 9 |

10 |
11 | 12 |
13 | ); 14 | }; 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/profile/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./user-profile-view"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/profile/user-profile-view/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./UserProfileView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/commands/CommandShortcutBadge.tsx: -------------------------------------------------------------------------------- 1 | export const CommandShortcutBadge = ({ shortcut }: { shortcut: string }) => { 2 | return ( 3 |
4 | {shortcut} 5 |
6 | ); 7 | }; 8 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/commands/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ComponentCmdo"; 2 | export * from "./ActionCmdk"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/dialogs/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./share-pipeline-dialog"; 2 | export * from "./ImportRecipeDialog"; 3 | export * from "./PipelineToolkitDialog"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/dialogs/share-pipeline-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./SharePipelineDialog"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/flow/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Flow"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/flow/nodes/OutputNode.tsx: -------------------------------------------------------------------------------- 1 | export const OutputNode = () => { 2 | return
; 3 | }; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/flow/nodes/VariableNode.tsx: -------------------------------------------------------------------------------- 1 | export const VariableNode = () => { 2 | return
; 3 | }; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/flow/nodes/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./EventEdge"; 2 | export * from "./EventErrorEdge"; 3 | export * from "./GeneralEdge"; 4 | export * from "./GeneralNode"; 5 | export * from "./IteratorNode"; 6 | export * from "./OutputNode"; 7 | export * from "./RunOnEventNode"; 8 | export * from "./VariableNode"; 9 | export * from "./StartNode"; 10 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/getting-started-view/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | getGettingStartedEditorView, 3 | GettingStartedView, 4 | } from "./GettingStartedView"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./RecipeEditorView"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/input/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Input"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/PipelineFlowFactory/edgeHelpers/index.ts: -------------------------------------------------------------------------------- 1 | import { composeEdgesForReference } from "./composeEdgesForReference"; 2 | import { getConnectableReferencePathsFromRecipe } from "./getConnectableReferencePathsFromRecipe"; 3 | import { getUserDefinedReferencesFromRecipe } from "./getUserDefinedReferencesFromRecipe"; 4 | import { matchReference } from "./matchReference"; 5 | 6 | export const edgeHelpers = { 7 | composeEdgesForReference, 8 | getConnectableReferencePathsFromRecipe, 9 | getUserDefinedReferencesFromRecipe, 10 | matchReference, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/PipelineFlowFactory/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./edgeHelpers"; 2 | export * from "./nodeHelpers"; 3 | export * from "./PipelineFlowFactory"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/PipelineFlowFactory/nodeHelpers/createStartNode.ts: -------------------------------------------------------------------------------- 1 | import { Node } from "reactflow"; 2 | 3 | import { NodeData } from "../../../flow/types"; 4 | 5 | export function createStartNode() { 6 | const node: Node = { 7 | id: "start", 8 | type: "startNode", 9 | position: { x: 0, y: 0 }, 10 | data: {}, 11 | }; 12 | 13 | return node; 14 | } 15 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/PipelineFlowFactory/nodeHelpers/index.ts: -------------------------------------------------------------------------------- 1 | import { createNodesFromComponent } from "./createNodesFromComponent"; 2 | import { createNodesFromOutput } from "./createNodesFromOutput"; 3 | import { createNodesFromRunOnEvent } from "./createNodesFromRunOnEvent"; 4 | import { createNodesFromVariable } from "./createNodesFromVariable"; 5 | import { createStartNode } from "./createStartNode"; 6 | 7 | export const nodeHelpers = { 8 | createStartNode, 9 | createNodesFromComponent, 10 | createNodesFromOutput, 11 | createNodesFromRunOnEvent, 12 | createNodesFromVariable, 13 | }; 14 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/checkIsValidComponentMetadata.ts: -------------------------------------------------------------------------------- 1 | import { GeneralRecord, Nullable } from "../../../lib"; 2 | import { PipelineMetadata } from "../../pipeline-builder"; 3 | 4 | export function checkIsValidComponentMetadata( 5 | metadata?: Nullable, 6 | ): metadata is PipelineMetadata { 7 | if ( 8 | metadata && 9 | "component" in metadata && 10 | Object.keys(metadata.component).length > 0 11 | ) { 12 | return true; 13 | } 14 | 15 | return false; 16 | } 17 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./PipelineFlowFactory"; 2 | 3 | export * from "./analyzeColonInString"; 4 | export * from "./checkComponentTypeHelper"; 5 | export * from "./checkIsValidComponentMetadata"; 6 | export * from "./keyLineNumberMapHelpers"; 7 | export * from "./prettifyYaml"; 8 | export * from "./renderFlowLayout"; 9 | export * from "./schema"; 10 | export * from "./tomorrowTheme"; 11 | export * from "./useEditorCommandListener"; 12 | export * from "./useAutonomousEditorRecipeUpdater"; 13 | export * from "./useDebouncedRecipeUpdater"; 14 | export * from "./useIsMac"; 15 | export * from "./validateVSCodeYaml"; 16 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/prettifyYaml.ts: -------------------------------------------------------------------------------- 1 | import * as yamlPlugin from "prettier/plugins/yaml.js"; 2 | import * as prettier from "prettier/standalone"; 3 | 4 | export async function prettifyYaml(yaml: string) { 5 | try { 6 | const prettifiedText = await prettier.format(yaml, { 7 | parser: "yaml", 8 | printWidth: 100, 9 | tabWidth: 2, 10 | useTabs: false, 11 | plugins: [yamlPlugin], 12 | }); 13 | return Promise.resolve(prettifiedText); 14 | } catch (error) { 15 | return Promise.reject(error); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/lib/useIsMac.ts: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | 5 | export function useIsMac() { 6 | const [isMac, setIsMac] = React.useState(false); 7 | 8 | React.useEffect(() => { 9 | setIsMac(navigator.userAgent.includes("Macintosh")); 10 | }, []); 11 | 12 | return isMac; 13 | } 14 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/popovers/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./PipelineNamePopover"; 2 | export * from "./ReleasePopover"; 3 | export * from "./ReleasedVersionPopover"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/sidebar/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./Sidebar"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/recipe-editor/types.ts: -------------------------------------------------------------------------------- 1 | export type SourceLocation = { 2 | line: number; 3 | column: number; 4 | position: number; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/FormLabel.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | export const FormLabel = ({ 4 | title, 5 | optional, 6 | }: { 7 | title: string; 8 | optional?: boolean; 9 | }) => { 10 | return ( 11 |
12 |

13 | {title} 14 |

15 | {optional ? ( 16 |

17 | Optional 18 |

19 | ) : null} 20 |
21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/SettingRoot.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { BreadcrumbWithLink, BreadcrumbWithLinkProps } from "../../components"; 4 | 5 | export const SettingRoot = ({ 6 | children, 7 | breadcrumbItems, 8 | }: { 9 | children: React.ReactNode; 10 | breadcrumbItems: BreadcrumbWithLinkProps["items"]; 11 | }) => { 12 | return ( 13 |
14 |
15 | 16 |
17 |
{children}
18 |
19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/api-tokens/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./APITokenTable"; 2 | export * from "./CreateAPITokenDialog"; 3 | export * from "./DeleteAPITokenDialog"; 4 | export * from "./SelectOrganization"; 5 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/integrations/connectable-integration/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ConnectableIntegration"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/integrations/existing-connection/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ExistingConnection"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/integrations/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Integrations"; 2 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/secrets/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./CreateSecretDialog"; 2 | export * from "./DeleteSecretDialog"; 3 | export * from "./SecretTable"; 4 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/user/UserIntegrationsTab.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | 5 | import { Integrations, Setting } from "../.."; 6 | 7 | export const UserIntegrationsTab = () => { 8 | return ( 9 | 10 | 14 | 15 | 16 | 17 | 18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/toolkit/src/view/settings/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./UserAccountTab"; 2 | export * from "./UserAPITokenTab"; 3 | export * from "./UserProfileTab"; 4 | export * from "./UserSidebar"; 5 | export * from "./UserSecretTab"; 6 | export * from "./UserIntegrationsTab"; 7 | -------------------------------------------------------------------------------- /packages/toolkit/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | presets: [require("@instill-ai/design-tokens/dist/tailwind.config.cjs")], 4 | content: ["./src/**/*.{js,jsx,ts,tsx}"], 5 | theme: { 6 | extend: {}, 7 | }, 8 | plugins: [require("tailwindcss-animate")], 9 | }; 10 | -------------------------------------------------------------------------------- /packages/toolkit/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@instill-ai/tsconfig/internal-package.json", 3 | "compilerOptions": { 4 | "lib": ["dom", "dom.iterable", "ES2022"], 5 | 6 | // We need to specify this for tsup to correctly cast the jsx runtime 7 | "jsx": "react-jsx", 8 | "outDir": "dist", 9 | "rootDir": "src", 10 | }, 11 | "include": ["**/*.ts", "**/*.tsx"], 12 | "exclude": [ 13 | "./setupTests.ts", 14 | "vitest.config.ts", 15 | "tsup.config.ts", 16 | "dist", 17 | "node_modules", 18 | ], 19 | } 20 | -------------------------------------------------------------------------------- /packages/toolkit/vitest.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import { defineConfig } from "vitest/config"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | test: { 8 | globals: true, 9 | environment: "jsdom", 10 | setupFiles: ["./setupTests.ts"], 11 | testTimeout: 20000, 12 | server: { 13 | deps: { 14 | // To solve Cannot find module ERROR 15 | // https://github.com/vitest-dev/vitest/issues/4554 16 | inline: ["next-auth"], 17 | }, 18 | }, 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "packages/*" 3 | - "apps/*" 4 | - "toolings/*" 5 | 6 | catalog: 7 | prettier: ^3.3.3 8 | tailwindcss: ^3.4.14 9 | typescript: ^5.8.3 10 | tsup: "^8.3.5" 11 | react: "^18.3.1" 12 | tsx: "^4.19.4" 13 | next: "^15.3.3" 14 | zod: "^3.25.56" 15 | postcss: "^8.5.4" 16 | autoprefixer: "^10.4.21" 17 | zustand: "^5.0.5" 18 | "react-dom": "^18.3.1" 19 | "react-is": "^18.3.1" 20 | "@types/react": "^18.3.1" 21 | "@types/react-dom": "^18.3.1" 22 | "@tanstack/react-query": ^5.59.15 23 | "@types/node": "^20.17.7" 24 | "react-hook-form": "^7.57.0" 25 | "@hookform/resolvers": "^5.1.1" 26 | -------------------------------------------------------------------------------- /release-please/manifest.json: -------------------------------------------------------------------------------- 1 | {"apps/console":"0.68.0-beta","packages/design-system":"0.90.0","packages/design-tokens":"0.10.1","packages/eslint-config-cortex":"0.9.1","packages/prettier-config-cortex":"1.1.2","packages/toolkit":"0.120.1","packages/sdk":"0.18.1"} -------------------------------------------------------------------------------- /scripts/docker-build-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Because we store the script within a shell script file, you need to grant permission like `sudo chmod 755 './scripts/docker-build.sh'` at the root. 3 | 4 | docker build \ 5 | -f Dockerfile.playwright \ 6 | --build-arg TEST_USER='root' \ 7 | -t instill-console-integration . 8 | -------------------------------------------------------------------------------- /scripts/docker-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Because we store the script within a shell script file, you need to grant permission like `sudo chmod 755 './scripts/docker-build.sh'` at the root. 3 | 4 | docker build --no-cache -f Dockerfile -t instill-console . 5 | -------------------------------------------------------------------------------- /scripts/docker-remove.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker rm -f instill-console 4 | docker rm -f instill-console-integration 5 | -------------------------------------------------------------------------------- /toolings/prettier/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@instill-ai/prettier-config-cortex", 3 | "version": "1.1.2", 4 | "main": "index.js", 5 | "license": "Apache-2.0", 6 | "dependencies": { 7 | "prettier": "latest", 8 | "prettier-plugin-tailwindcss": "latest" 9 | }, 10 | "publishConfig": { 11 | "access": "public" 12 | }, 13 | "devDependencies": { 14 | "@ianvs/prettier-plugin-sort-imports": "^4.2.1" 15 | } 16 | } -------------------------------------------------------------------------------- /toolings/typescript/internal-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "./base.json", 4 | "compilerOptions": { 5 | /** Emit types for internal packages to speed up editor performance. */ 6 | "declaration": true, 7 | "declarationMap": true, 8 | "noEmit": false, 9 | "emitDeclarationOnly": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /toolings/typescript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@instill-ai/tsconfig", 3 | "version": "0.1.0", 4 | "scripts": { 5 | "publish-rc": "pnpm publish --no-git-checks" 6 | }, 7 | "license": "Apache-2.0", 8 | "publishConfig": { 9 | "access": "public" 10 | }, 11 | "files": [ 12 | "*.json" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "lib": ["dom", "dom.iterable", "es2022"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "react-jsx", 14 | "incremental": false, 15 | "declaration": true, 16 | "sourceMap": true, 17 | "emitDeclarationOnly": true, 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true 21 | } 22 | } 23 | --------------------------------------------------------------------------------