{
  "$schema": "http://json-schema.org/schema",
  "id": "lightweightform-bootstrap-theme-form-schematic",
  "title": "Lightweightform Bootstrap-theme form schematic",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the form (possibly a path with the module as root).",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "What name would you like to use for the form?"
    },
    "project": {
      "type": "string",
      "description": "The name of the project.",
      "$default": {
        "$source": "projectName"
      }
    },
    "module": {
      "alias": "m",
      "type": "string",
      "description": "Module on which to create form."
    },
    "locales": {
      "type": "string",
      "minLength": 1,
      "description": "Locales to support for i18n (comma separated).",
      "default": "en-US",
      "private": true
    },
    "i18nFolderName": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the folder where i18n translations are kept.",
      "default": "__i18n__",
      "private": true
    },
    "collection": {
      "alias": "c",
      "type": "boolean",
      "description": "Whether to create a collection of forms, in which case the provided name has to contain the name of the collection, e.g. \"my-collection/my-form\".",
      "default": false
    },
    "parentPath": {
      "alias": "p",
      "type": "string",
      "minLength": 1,
      "description": "The parent storage path of the form (or collection of forms). If not provided, the path will be inferred from the location of the form in the project's structure."
    },
    "skipCollectionComponent": {
      "type": "boolean",
      "description": "Whether to skip the creation of a component for the collection itself.",
      "default": false
    },
    "inlineStyle": {
      "type": "boolean",
      "description": "When true, includes styles inline in the component.ts file. Only CSS styles can be included inline. By default, an external styles file is created and referenced in the component.ts file.",
      "default": false
    },
    "inlineTemplate": {
      "type": "boolean",
      "description": "When true, includes template inline in the component.ts file. By default, an external template file is created and referenced in the component.ts file.",
      "default": false
    },
    "viewEncapsulation": {
      "type": "string",
      "enum": ["Emulated", "Native", "None", "ShadowDom"],
      "description": "The view encapsulation strategy to use in the new form."
    },
    "changeDetection": {
      "type": "string",
      "enum": ["Default", "OnPush"],
      "description": "The change detection strategy to use in the new form.",
      "default": "Default"
    },
    "prefix": {
      "type": "string",
      "oneOf": [
        {
          "maxLength": 0
        },
        {
          "minLength": 1,
          "format": "html-selector"
        }
      ],
      "description": "The prefix to apply to the generated form selector."
    },
    "style": {
      "type": "string",
      "enum": ["css", "scss", "sass", "less", "styl"],
      "description": "The file extension or preprocessor to use for style files.",
      "default": "css"
    },
    "skipTests": {
      "type": "boolean",
      "description": "Whether to skip generation of \".spec.ts\" test files.",
      "default": false
    },
    "flat": {
      "type": "boolean",
      "description": "When true, creates the new files at the top level of the current project.",
      "default": false
    },
    "skipImport": {
      "type": "boolean",
      "description": "When true, does not import this form into the owning NgModule.",
      "default": false
    },
    "selector": {
      "type": "string",
      "format": "html-selector",
      "description": "The HTML selector to use for this form."
    },
    "skipSelector": {
      "type": "boolean",
      "description": "Specifies if the form should have a selector or not.",
      "default": false
    },
    "export": {
      "type": "boolean",
      "description": "When true, the declaring NgModule exports this form.",
      "default": false
    },
    "lintFix": {
      "type": "boolean",
      "description": "When true, applies lint fixes after generating the component.",
      "default": false
    }
  },
  "required": ["name"]
}
