A set of components and utilities for rapid UI development https://ui.frappe.io
  • Vue 51.4%
  • TypeScript 29.9%
  • JavaScript 12.1%
  • Markdown 5.8%
  • CSS 0.7%
Find a file
RitvikSardana b76f05076d
Merge pull request #632 from RitvikSardana/mention-space
fix: add space after mentioning user in the editor
2026-04-24 00:31:19 +05:30
.github ci(docs-preview): harden preview publishing flow 2026-04-23 21:03:27 +05:30
.husky build: removed prepare step 2024-10-16 19:07:15 +05:30
cypress chore: setup component testing 2026-01-27 16:22:40 +05:30
docs fix(PropsTable): remove required indicator from prop header 2026-04-23 21:11:33 +05:30
frappe feat(drive): use non-optimistic UI for actions 2026-04-14 10:38:06 +05:30
icons fix: adjust icon grid spacing and width for better layout (#520) 2025-12-29 16:05:30 +05:30
public fix: change logo and theme 2024-04-13 03:17:08 +05:30
src Merge pull request #632 from RitvikSardana/mention-space 2026-04-24 00:31:19 +05:30
tailwind fix(build): remove docs build warnings 2026-04-23 06:06:13 +05:30
v1-release chore(docs): refresh metadata and selection spec 2026-04-23 05:36:28 +05:30
vite ci(docs-preview): harden preview publishing flow 2026-04-23 21:03:27 +05:30
.coderabbit.yaml ci(coderabbit): tune review guidance for frappe-ui 2026-04-22 19:09:30 +05:30
.git-blame-ignore-revs chore: update exports 2025-05-26 15:26:11 +05:30
.gitattributes feat: component meta data 2025-12-16 15:54:34 +05:30
.gitignore fix(docs): git conflicts 2025-12-29 16:14:08 +05:30
.postcssrc.js chore: convert to esm 2025-05-07 18:05:56 +05:30
.pre-commit-config.yaml chore: Add pre-commit to auto format code before commit 2024-10-16 17:34:21 +05:30
.prettierrc.json feat: Setup vitepress and index page 2022-11-28 13:57:42 +05:30
404.html fix: 404 redirect and route handling 2024-10-30 16:22:35 +05:30
App.vue feat: Set up storybook 2023-03-08 18:55:33 +05:30
auto-imports.d.ts Revert "refactor: replace lucide-static with @iconify-json/lucide (#366)" 2025-07-24 13:51:44 +05:30
components.d.ts ci(docs-preview): harden preview publishing flow 2026-04-23 21:03:27 +05:30
cypress.config.ts feat(tests): use cypress-split for parallel tests 2026-03-18 14:11:09 +05:30
frappe-ui-square.png fix: change logo and theme 2024-04-13 03:17:08 +05:30
frappe-ui.png fix: change logo and theme 2024-04-13 03:17:08 +05:30
frappe-ui.svg chore(ui): update histoire dark theme colors 2024-10-16 15:57:58 +05:30
index.html feat: Set up storybook 2023-03-08 18:55:33 +05:30
license.md feat: first commit 2022-01-17 20:09:02 +05:30
main.js feat: Icon and IconPicker components (#498) 2025-12-29 12:16:05 +05:30
package.json docs(meta): regenerate api tables with readable bindings 2026-04-23 21:04:43 +05:30
postcss.config.ts chore: setup histoire 2023-08-28 23:14:31 +05:30
readme.md chore: update documentation link in README (#617) 2026-04-10 18:05:42 +05:30
tailwind.config.js Merge branch 'main' into docs-rewrite 2026-01-16 19:23:48 +05:30
tsconfig.base.json fix: tsconfig file 2025-11-27 17:57:26 +05:30
tsconfig.json chore(docs): refresh metadata and selection spec 2026-04-23 05:36:28 +05:30
tsconfig.node.json refactor: tree shaking by adding subpath exports 2025-11-06 21:58:33 +05:30
vite.config.ts ci(docs-preview): harden preview publishing flow 2026-04-23 21:03:27 +05:30
vitest.config.ts fix: refactor useCall with TDD 2024-12-22 13:25:00 +05:30
vitest.setup.ts fix: refactor useCall with TDD 2024-12-22 13:25:00 +05:30
yarn.lock docs(meta): regenerate api tables with readable bindings 2026-04-23 21:04:43 +05:30

Frappe UI

Rapidly build modern frontends for Frappe apps

NPM Downloads Screenshot 2024-12-12 at 5 27 58 PM

Frappe UI

Frappe UI provides a set of components and utilities for rapid UI development. Components are built using Vue 3 and Tailwind. Along with generic components like Button, Link, Dialog, etc., it also contains utilities for handling server-side data fetching, directives and utilities.

Motivation

In 2019, I began building Frappe Books which had a new design. This led to the creation of small reusable components like Button, Dialog, and Card. Moving on to Frappe Cloud in 2020, I reused and evolved these components in the Frappe Cloud UI. In 2022, while starting a new project, I decided to extract these components into a standalone package to avoid repeating the copy-paste process. This package is now being developed alongside the Gameplan, continually adding generic components and utilities for frontend development.

Under the Hood

  • TailwindCSS: Utility first CSS Framework to build design system based UI.
  • Headless UI: Unstyled and accessible UI components.
  • TipTap: ProseMirror based rich-text editor with a Vue API.
  • dayjs: Minimal javascript library for working with dates.

Usage

npm install frappe-ui
# or
yarn add frappe-ui

Now, import the FrappeUI plugin and components in your Vue app's main.js:

import { createApp } from 'vue'
import { FrappeUI } from 'frappe-ui'
import App from './App.vue'
import './index.css'

let app = createApp(App)
app.use(FrappeUI)
app.mount('#app')

In your tailwind.config.js file, include the frappe-ui preset:

module.exports = {
  presets: [
    require('frappe-ui/src/utils/tailwind.config')
  ],
  ...
}

Now, you can import needed components and start using it:

<template>
  <button>Click me</button>
</template>
<script>
  import { Button } from 'frappe-ui'
  export default {
    components: {
      Button,
    },
  }
</script>

Used By

Frappe UI is being used in a lot of products by Frappe.