{"$schema":"http:\/\/json-schema.org\/draft-07\/schema#","title":"UI Library Schema","type":"object","properties":{"framework":{"enum":["tailwind","bootstrap","bulma"],"description":"The name of the framework."},"bodyClasses":{"type":"array","items":{"type":"string"}},"tailwindPlugins":{"type":"array","items":{"type":"string","enum":["flowbite\/plugin","flowbite-typography","@tailwindcss\/typography","@tailwindcss\/forms","@tailwindcss\/aspect-ratio","@tailwindcss\/container-queries"]},"description":"Additional (allowed) Tailwind plugins list for Tailwind config."},"tailwindConfigFile":{"type":"string","description":"The filename (path to) the Tailwind CSS configuration file."},"tailwindConfig":{"type":"object","description":"The Tailwind CSS configuration object.","default":{"theme":{"extend":[]},"plugins":[]}},"sassVariablesFile":{"type":"string","description":"The filename (path to) the SASS variables file."},"sassVariables":{"type":"string","description":"The SASS variables string."},"name":{"type":"string","description":"The name of the UI library.","maxLength":50},"description":{"type":"string","description":"A brief description of the UI library.","maxLength":100},"icon":{"type":"string","description":"The filename (path to) of the icon for the UI library."},"iconDarkMode":{"type":"string","description":"The filename (path to) of the dark mode icon for the UI library."},"categories":{"type":"array","description":"A list of categories in the UI library. Each category can have subcategories or components, but not both.","items":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the category."},"name":{"type":"string","description":"The name of the category.","maxLength":50},"subcategories":{"type":"array","description":"A list of subcategories in the category. Subcategories can also have their own subcategories or components, but not both.","items":{"$ref":"#\/definitions\/category"},"minItems":0,"maxItems":100},"components":{"type":"array","description":"A list of components in the category. Components can only be defined at the leaf level where there are no further subcategories.","items":{"$ref":"#\/definitions\/component"},"minItems":1,"maxItems":100}},"required":["id","name"],"oneOf":[{"required":["subcategories"]},{"required":["components"]}]},"minItems":1,"maxItems":100},"assetsConfiguration":{"type":"object","description":"The configuration for the assets of the UI library.","properties":{"css":{"type":"object","description":"The configuration for the CSS assets of the UI library.","properties":{"files":{"type":"array","description":"A list of CSS files in the UI library.","items":{"type":"string","description":"Path to the CSS file."},"maxItems":100},"cdn":{"type":"array","description":"A list of CDN URLs for the CSS assets of the UI library.","items":{"type":"string","description":"The URL to css file."},"maxItems":100}},"additionalProperties":false},"js":{"type":"object","description":"The configuration for the JavaScript assets of the UI library.","properties":{"files":{"type":"array","description":"A list of JavaScript files in the UI library.","items":{"type":"string","description":"Path to the JavaScript file."},"maxItems":100},"cdn":{"type":"array","description":"A list of CDN URLs for the JavaScript assets of the UI library.","items":{"type":"string","description":"The URL to js file."},"maxItems":100}},"additionalProperties":false},"assetsPath":{"type":"string","description":"The path to the assets of the UI library."}},"additionalProperties":false}},"definitions":{"component":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the component.","uniqueItems":true},"name":{"type":"string","description":"The name of the component."},"html":{"type":"string","description":"The HTML content of the component."},"html_file":{"type":"string","description":"The filename of the HTML content of the component."}},"required":["id","name"],"oneOf":[{"required":["html"]},{"required":["html_file"]}]},"category":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the subcategory."},"name":{"type":"string","description":"The name of the subcategory.","maxLength":50},"subcategories":{"type":"array","description":"A list of sub-subcategories in the subcategory. Sub-subcategories can also have their own subcategories or components, but not both.","items":{"$ref":"#\/definitions\/category"},"minItems":0,"maxItems":100},"components":{"type":"array","description":"A list of components in the sub-subcategory. Components can only be defined at the leaf level where there are no further subcategories.","items":{"$ref":"#\/definitions\/component"},"minItems":1,"maxItems":100}},"required":["id","name"],"oneOf":[{"required":["subcategories"]},{"required":["components"]}]}},"if":{"properties":{"framework":{"const":"tailwind"}}},"then":{"oneOf":[{"required":["tailwindConfigFile"]},{"required":["tailwindConfig"]}],"not":{"required":["sassVariablesFile","sassVariables"]}},"else":{"oneOf":[{"required":["sassVariablesFile"]},{"required":["sassVariables"]}],"not":{"required":["tailwindConfigFile","tailwindConfig"]}},"required":["name","framework","description","categories"]}