Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into pr/37716
Browse files Browse the repository at this point in the history
  • Loading branch information
danilo-leal committed Jul 17, 2023
2 parents 6bdead3 + 0591739 commit cc4b8b4
Show file tree
Hide file tree
Showing 46 changed files with 885 additions and 624 deletions.
26 changes: 13 additions & 13 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ jobs:
<<: *defaults
resource_class: 'medium+'
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand Down Expand Up @@ -371,7 +371,7 @@ jobs:
test_e2e:
<<: *defaults
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -390,7 +390,7 @@ jobs:
test_e2e_website:
<<: *defaults
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -405,7 +405,7 @@ jobs:
test_profile:
<<: *defaults
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -432,7 +432,7 @@ jobs:
test_regressions:
<<: *defaults
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand Down Expand Up @@ -486,7 +486,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/next-webpack4/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -510,7 +510,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/next-webpack5/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -534,7 +534,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/create-react-app/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -558,7 +558,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/snowpack/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -582,7 +582,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/vite/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand All @@ -606,7 +606,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/esbuild/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand Down Expand Up @@ -634,7 +634,7 @@ jobs:
<<: *defaults
working_directory: /tmp/material-ui/test/bundling/fixtures/gatsby/
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand Down Expand Up @@ -736,7 +736,7 @@ jobs:
test_benchmark:
<<: *defaults
docker:
- image: mcr.microsoft.com/playwright:v1.35.1-focal
- image: mcr.microsoft.com/playwright:v1.36.1-focal
environment:
NODE_ENV: development # Needed if playwright is in `devDependencies`
steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
uses: github/codeql-action/init@489225d82a57396c6f426a40e66d461b16b3461d # v2.20.4
with:
languages: typescript
config-file: ./.github/codeql/codeql-config.yml
Expand All @@ -30,4 +30,4 @@ jobs:
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
uses: github/codeql-action/analyze@489225d82a57396c6f426a40e66d461b16b3461d # v2.20.4
2 changes: 1 addition & 1 deletion .github/workflows/scorecards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ jobs:

# Upload the results to GitHub's code scanning dashboard.
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
uses: github/codeql-action/upload-sarif@489225d82a57396c6f426a40e66d461b16b3461d # v2.20.4
with:
sarif_file: results.sarif
2 changes: 1 addition & 1 deletion benchmark/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"@mui/system": "^5.14.0",
"@styled-system/css": "^5.1.5",
"benchmark": "^2.1.4",
"playwright": "^1.35.1",
"playwright": "^1.36.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import StepLabel from '@mui/material/StepLabel';
import Button from '@mui/material/Button';
import Link from '@mui/material/Link';
import Typography from '@mui/material/Typography';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import AddressForm from './AddressForm';
import PaymentForm from './PaymentForm';
import Review from './Review';
Expand Down Expand Up @@ -44,9 +43,6 @@ function getStepContent(step) {
}
}

// TODO remove, this demo shouldn't need to reset the theme.
const defaultTheme = createTheme();

export default function Checkout() {
const [activeStep, setActiveStep] = React.useState(0);

Expand All @@ -59,7 +55,7 @@ export default function Checkout() {
};

return (
<ThemeProvider theme={defaultTheme}>
<React.Fragment>
<CssBaseline />
<AppBar
position="absolute"
Expand Down Expand Up @@ -122,6 +118,6 @@ export default function Checkout() {
</Paper>
<Copyright />
</Container>
</ThemeProvider>
</React.Fragment>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import StepLabel from '@mui/material/StepLabel';
import Button from '@mui/material/Button';
import Link from '@mui/material/Link';
import Typography from '@mui/material/Typography';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import AddressForm from './AddressForm';
import PaymentForm from './PaymentForm';
import Review from './Review';
Expand Down Expand Up @@ -44,9 +43,6 @@ function getStepContent(step: number) {
}
}

// TODO remove, this demo shouldn't need to reset the theme.
const defaultTheme = createTheme();

export default function Checkout() {
const [activeStep, setActiveStep] = React.useState(0);

Expand All @@ -59,7 +55,7 @@ export default function Checkout() {
};

return (
<ThemeProvider theme={defaultTheme}>
<React.Fragment>
<CssBaseline />
<AppBar
position="absolute"
Expand Down Expand Up @@ -121,6 +117,6 @@ export default function Checkout() {
</Paper>
<Copyright />
</Container>
</ThemeProvider>
</React.Fragment>
);
}
24 changes: 12 additions & 12 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"link-check": "node ./scripts/reportBrokenLinks.js"
},
"dependencies": {
"@babel/core": "^7.22.8",
"@babel/core": "^7.22.9",
"@babel/plugin-transform-object-assign": "^7.22.5",
"@babel/runtime-corejs2": "^7.22.6",
"@docsearch/react": "^3.5.1",
Expand All @@ -44,19 +44,19 @@
"@mui/styles": "^5.14.0",
"@mui/system": "^5.14.0",
"@mui/types": "^7.2.4",
"@mui/x-data-grid": "6.9.2",
"@mui/x-data-grid-generator": "6.9.2",
"@mui/x-data-grid-pro": "6.9.2",
"@mui/x-date-pickers": "6.9.2",
"@mui/x-date-pickers-pro": "6.9.2",
"@mui/x-license-pro": "6.9.0",
"@mui/x-data-grid": "6.10.0",
"@mui/x-data-grid-generator": "6.10.0",
"@mui/x-data-grid-pro": "6.10.0",
"@mui/x-date-pickers": "6.10.0",
"@mui/x-date-pickers-pro": "6.10.0",
"@mui/x-license-pro": "6.10.0",
"@react-spring/web": "^9.7.3",
"@trendmicro/react-interpolate": "^0.5.5",
"@types/autosuggest-highlight": "^3.2.0",
"@types/css-mediaquery": "^0.1.1",
"@types/json2mq": "^0.2.0",
"@types/markdown-to-jsx": "^7.0.1",
"@types/react-dom": "^18.2.6",
"@types/react-dom": "^18.2.7",
"@types/react-swipeable-views": "^0.13.2",
"@types/react-swipeable-views-utils": "^0.13.4",
"@types/react-window": "^1.8.5",
Expand Down Expand Up @@ -90,10 +90,10 @@
"lz-string": "^1.5.0",
"markdown-to-jsx": "^7.2.1",
"material-ui-popup-state": "^5.0.9",
"next": "13.4.9",
"next": "13.4.10",
"notistack": "3.0.1",
"nprogress": "^0.2.0",
"postcss": "^8.4.25",
"postcss": "^8.4.26",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand Down Expand Up @@ -122,10 +122,10 @@
"devDependencies": {
"@babel/plugin-transform-react-constant-elements": "^7.22.5",
"@babel/preset-typescript": "^7.22.5",
"@types/marked": "^5.0.0",
"@types/marked": "^5.0.1",
"@types/recharts": "^2.0.0",
"cross-fetch": "^4.0.0",
"gm": "^1.25.0",
"tailwindcss": "^3.3.2"
"tailwindcss": "^3.3.3"
}
}
7 changes: 7 additions & 0 deletions docs/pages/blog/2023-toolpad-beta-announcement.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as React from 'react';
import TopLayoutBlog from 'docs/src/modules/components/TopLayoutBlog';
import { docs } from './2023-toolpad-beta-announcement.md?@mui/markdown';

export default function Page() {
return <TopLayoutBlog docs={docs} />;
}
110 changes: 110 additions & 0 deletions docs/pages/blog/2023-toolpad-beta-announcement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: Introducing Toolpad: MUI's low-code admin builder
description: Assemble admin panels and internal tools faster than ever before with Toolpad—now in beta.
date: 2023-07-17T00:00:00.000Z
authors: ['prakhargupta']
card: true
tags: ['Product', 'News']
---

It's been over a year since we released the first version of Toolpad. Today, we're excited to take the next step on that journey with the release of Toolpad Beta. If you aren't familiar with Toolpad yet, it's an admin panel builder catering to the internal tooling needs of an organization, designed for developers who want to build a functional application quickly. It harnesses the speed of a UI builder for the front-end and closely integrates into your back-end. If this excites you, then read on!

<a href="https://mui.com/toolpad/examples/admin-app/">
<img alt="Introducing Toolpad" src="/static/blog/2023-toolpad-beta-announcement/intro.png" loading="lazy" width="2400" height="1200" />
</a>

## Why did we decide to build Toolpad?

Toolpad was created to meet the needs of the MUI community. As a result of surveys we conducted, and market research we undertook, we decided to develop an internal tool builder because the idea resonates with MUI's mission of empowering developers to build apps faster and more efficiently.

Internal tools are software applications that are developed and used within an organization itself. They can automate tasks, manage data, and help foster collaboration. Internal tools are a valuable asset for businesses of all sizes, as they help to improve efficiency, productivity, and communication.

We've all had our fair share of wrestling with lousy internal tools that we hoped we'd never have to use more than once. A sub-optimal tool means a waste of time and effort for everyone. Maintaining them distracts developers from solving actual business problems. In recent years, customer-facing software has moved quickly and is now flashy and sleek. It's time for internal tools to get this same upgrade.

## What is Toolpad exactly?

Toolpad is an open-source, low-code, drag-and-drop admin builder. The primary purpose of Toolpad is to create data-intensive React apps faster. Toolpad simplifies building UI, writing back-end logic, connecting to a data source, querying and mutating data. It can quickly convert an API, script, or SQL query into a web UI.

Toolpad is not ideal for building static web pages, mobile apps, or customer-facing custom-designed front-ends. It's for building admin applications, CRUD interfaces, custom internal tools, and analytics dashboards.

<a href="https://mui.com/toolpad/examples/npm-stats/">
<img alt="Building an application on Toolpad" src="/static/blog/2023-toolpad-beta-announcement/toolpad.png" loading="lazy" width="2400" height="1394" />
</a>

## Who is Toolpad for?

Before the arrival of Toolpad, MUI primarily catered to the front-end needs of the development process. Our products were mostly useful for React engineers or designers, but we saw many full-stack engineers use our advanced components for data-intensive apps. These highly customizable components are well-suited for complex apps, but not all apps require the same level of customization: for example, internal tools just need basic theming.

<img alt="Toolpad personas" src="/static/blog/2023-toolpad-beta-announcement/personas.png" loading="lazy" width="2076" height="900" style="margin-bottom:24px;" />

Toolpad is for you if you're a full-stack or back-end developers who builds, manages, and integrate data pipelines, server-side logic, databases, microservices, and APIs—and knows the most about them. Sharing these endpoints with and maintaining the internal documentation for the front-end teams is a hassle that lasts forever. Toolpad empowers you to take the next step and build the UI you need using our drag-and-drop editor, without losing any part of your normal development workflow.

## What are the main features available today?

### 1. Drag-and-drop UI builder

Easily create user interfaces by dragging and dropping pre-built components onto the canvas. Utilize constraints to speed up the building process.

<a href="https://mui.com/toolpad/examples/admin-app/">
<img alt="Dragging components to the canvas" src="/static/blog/2023-toolpad-beta-announcement/drag.png" loading="lazy" width="2400" height="1394" />
</a>

### 2. Query builder UI

A Postman-like query builder allows you to integrate any REST API quickly. A binding editor, which supports Javascript, allows you to wire query response directly to the components.

<a href="https://mui.com/toolpad/examples/npm-stats/">
<img alt="Building an application on Toolpad" src="/static/blog/2023-toolpad-beta-announcement/uiquery.png" loading="lazy" width="2400" height="1394" />
</a>

### 3. Bring your own components

Toolpad can import [external React components](https://mui.com/toolpad/concepts/custom-components/), ready to be used in its visual designer. Your past effort shouldn't go to waste and you shouldn't be limited by the stock component suite.

### 4. Bring your own back-end

Directly integrate with your Node.js back-end and have your data available on the page without writing any REST endpoints or fetch logic. Need that prisma model on the page? Expose it through a serverless function and Toolpad does the rest.

### 5. Own your code

Toolpad runs completely locally. You're not stuck with an online code editor or a suboptimal GitHub integration. All configuration is stored in local files which you can version-control, edit, and deploy in any way you want.

<a href="https://mui.com/toolpad/examples/admin-app/">
<img alt="Building an application on Toolpad" src="/static/blog/2023-toolpad-beta-announcement/code.png" loading="lazy" width="2400" height="1394" />
</a>

### 6. A catalogue of components powered by Material UI

Material UI provides production-ready React components; a chosen few are currently available inside Toolpad, and we're adding more all the time. MUI X Pro (Data Grid and Date Picker) components are also available for free in Toolpad.

<a href="https://mui.com/toolpad/examples/npm-stats/">
<img alt="Building an application on Toolpad" src="/static/blog/2023-toolpad-beta-announcement/library.png" loading="lazy" width="2400" height="1394" />
</a>

## How is Toolpad different from similar products on the market?

In this domain, there are two categories of products:

1. **Visual first**: Retool, Appsmith, Budibase and the likes. While these are great tools, they don't integrate with the developer's local IDE nor offer a good git version control mechanism. Providing features that could have been hand-coded on a need basis makes the application heavy, and reports of slowness at runtime are common.

2. **Code first**: Airplane.dev, Interval and others. They also allow building internal tools but don't support a drag-and-drop UI builder. The components must be coded using their APIs, which comes with some learning curve.

Toolpad is solely focused on professional developers. As much as we are low-code, we are equally code-friendly. Providing the basic functionality that you expect from an open-source tool is non-negotiable for us—we will always prioritize your best interests over all else. With nearly a decade of experience building developer tools, we understand the long-term benefits of cultivating a close relationship with our community of users.

Lastly, Toolpad is the only product that offers a drag-and-drop UI builder closely integrated with your favorite IDE, such as VSCode. It's the best of both the worlds!

## How can I use Toolpad?

Toolpad is available as an NPM package. Follow the [Installation guide](https://mui.com/toolpad/getting-started/installation/) in the docs to get started. You can learn more about Toolpad by visiting the [home page](https://mui.com/toolpad/).

<img alt="Toolpad documentation and instructions on how to use it" src="/static/blog/2023-toolpad-beta-announcement/docs.png" loading="lazy" width="2400" height="1394" />

## What's next?

We plan to continue to iterate on our vision of helping you as a developer to increase the speed and efficiency of your workflow. We want to optimize for the biggest pains that you face when building admin apps. Your input is crucial to helping us shape the roadmap from here.

The best places to stay up-to-date about what we're currently working on are [GitHub issues](https://github.com/mui/mui-toolpad) and our [public roadmap](https://github.com/orgs/mui/projects/9/views/1).

If you have any questions or would like to share feedback, you can directly contact the team at [email protected] or reach us on [Twitter](https://twitter.com/MUI_Toolpad). You can also engage in conversation in our [Discord](https://discord.gg/hHqtMP9Ckc) server.

If you'd like an in-depth demo and to discuss your use case, please feel free to [schedule a meeting with me on Calendly](https://calendly.com/prakhar-mui).
Loading

0 comments on commit cc4b8b4

Please sign in to comment.