Home / Function/ create() — ui Function Reference

create() — ui Function Reference

Architecture documentation for the create() function in create.ts from the ui codebase.

Entity Profile

Dependency Diagram

graph TD
  d6e73ad2_74c9_dd43_c275_b68a987b6b66["create()"]
  9461b7e1_0062_183b_052f_41abc70dee91["create.ts"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|defined in| 9461b7e1_0062_183b_052f_41abc70dee91
  d69893c4_0340_d5fe_65ed_220523fe9df0["getShadcnCreateUrl()"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|calls| d69893c4_0340_d5fe_65ed_220523fe9df0
  af1661e5_df1f_24d5_26b4_f2ff90ba860a["handlePresetOption()"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|calls| af1661e5_df1f_24d5_26b4_f2ff90ba860a
  f1f5dc89_813c_afbc_8cb6_4850da747abf["buildInitUrl()"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|calls| f1f5dc89_813c_afbc_8cb6_4850da747abf
  56c01a63_5907_6b2d_a507_d935d5ec6f68["runInit()"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|calls| 56c01a63_5907_6b2d_a507_d935d5ec6f68
  ba0f4496_7222_7a6f_3fda_c2848aadddc7["getTemplateFiles()"]
  d6e73ad2_74c9_dd43_c275_b68a987b6b66 -->|calls| ba0f4496_7222_7a6f_3fda_c2848aadddc7
  style d6e73ad2_74c9_dd43_c275_b68a987b6b66 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/shadcn/src/commands/create.ts lines 57–247

  .action(async (name, opts) => {
    try {
      // If no preset provided, open create URL with template and rtl params.
      const hasNoPreset = !name && !opts.preset
      if (hasNoPreset) {
        const searchParams: Record<string, string> = {}
        if (opts.template) {
          searchParams.template = opts.template
        }
        if (opts.rtl) {
          searchParams.rtl = "true"

          // Recommend base-ui in RTL.
          searchParams.base = "base"
        }
        const createUrl = getShadcnCreateUrl(
          Object.keys(searchParams).length > 0 ? searchParams : undefined
        )
        logger.log("Build your own shadcn/ui.")
        logger.log(
          `You will be taken to ${highlighter.info(
            createUrl
          )} to build your custom design system.`
        )
        logger.break()

        const { proceed } = await prompts({
          type: "confirm",
          name: "proceed",
          message: "Open in browser?",
          initial: true,
        })

        if (proceed) {
          await open(createUrl)
        }

        process.exit(0)
      }

      // Prompt for project name if not provided.
      let projectName = name
      if (!projectName) {
        const { enteredName } = await prompts({
          type: "text",
          name: "enteredName",
          message: "What is your project named?",
          initial: opts.template ? `${opts.template}-app` : "my-app",
          format: (value: string) => value.trim(),
          validate: (name) => {
            const validation = validateProjectName(
              path.basename(path.resolve(name))
            )
            if (validation.validForNewPackages) {
              return true
            }
            return "Invalid project name. Name should be lowercase, URL-friendly, and not start with a period or underscore."
          },
        })

        if (!enteredName) {
          process.exit(0)
        }

        projectName = enteredName
      }

      // Prompt for template if not provided.
      let template = opts.template
      if (!template) {
        const { selectedTemplate } = await prompts({
          type: "select",
          name: "selectedTemplate",
          message: `Which ${highlighter.info(
            "template"
          )} would you like to use?`,
          choices: Object.entries(CREATE_TEMPLATES).map(([key, value]) => ({
            title: value,
            value: key,
          })),
        })

Subdomains

Frequently Asked Questions

What does create() do?
create() is a function in the ui codebase, defined in packages/shadcn/src/commands/create.ts.
Where is create() defined?
create() is defined in packages/shadcn/src/commands/create.ts at line 57.
What does create() call?
create() calls 5 function(s): buildInitUrl, getShadcnCreateUrl, getTemplateFiles, handlePresetOption, runInit.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free