A base template you can install into your own project as a starting point. This one includes the Tailwind CDN for quick prototyping.
Available named slots:
head
scripts
This component provides a form element that will post by default and includes the csrf token out of the box.
", + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-form", + "attributes": [ + { + "name": ":action", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "action", + "description": "", + "value": { + "type": "string", + "required": false + } + }, + { + "name": ":method", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "method", + "description": "", + "value": { + "type": "string", + "required": false + } + }, + { + "name": ":enctype", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "enctype", + "description": "", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-input", - "description": "A versatile input component that will render labels and validation errors automatically.", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-input" + "description": "A versatile input component that will render labels and validation errors automatically.
", + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-input", + "attributes": [ + { + "name": ":name", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": true + } + }, + { + "name": "name", + "description": "", + "value": { + "type": "string", + "required": true + } + }, + { + "name": ":label", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "label", + "description": "", + "value": { + "type": "string", + "required": false + } + }, + { + "name": ":id", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "id", + "description": "", + "value": { + "type": "string", + "required": false + } + }, + { + "name": ":type", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "type", + "description": "", + "value": { + "type": "string", + "required": false + } + }, + { + "name": ":default", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "default", + "description": "", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-submit", - "description": "A submit button component that prefills with a \"Submit\" label.", + "description": "A submit button component that prefills with a \"Submit\" label.
", "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-submit" }, { "name": "x-csrf-token", - "description": "Includes the CSRF token in a form.", + "description": "Includes the CSRF token in a form.
", "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-csrf-token" }, { "name": "x-icon", - "description": "This component provides the ability to inject any icon from the Iconify project in your templates.", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-icon" + "description": "This component provides the ability to inject any icon from the Iconify project in your templates.
", + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-icon", + "attributes": [ + { + "name": ":name", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": true + } + }, + { + "name": "name", + "description": "", + "value": { + "type": "string", + "required": true + } + }, + { + "name": ":class", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "class", + "description": "", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-vite-tags", - "description": "Tempest has built-in support for Vite, the most popular front-end development server and build tool. This component simply inject registered entrypoints where it is called.", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-vite-tags" + "description": "Tempest has built-in support for Vite, the most popular front-end development server and build tool. This component simply inject registered entrypoints where it is called.
", + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-vite-tags", + "attributes": [ + { + "name": ":entrypoints", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "array", + "required": false + } + }, + { + "name": "entrypoints", + "description": "", + "value": { + "type": "array", + "required": false + } + }, + { + "name": ":entrypoint", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "entrypoint", + "description": "", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-template", @@ -50,23 +314,80 @@ { "name": "x-slot", "description": "", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-slot" + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-slot", + "attributes": [ + { + "name": ":name", + "description": "The name of the slot", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "name", + "description": "The name of the slot", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-markdown", "description": "", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-markdown" + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-markdown", + "attributes": [ + { + "name": ":content", + "description": "The markdown content from a variable", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": false + } + }, + { + "name": "content", + "description": "The markdown content from a variable", + "value": { + "type": "string", + "required": false + } + } + ] }, { "name": "x-component", "description": "", - "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-component" + "doc-url": "https://tempestphp.com/1.x/internals/view-spec#x-component", + "attributes": [ + { + "name": ":is", + "description": "", + "inject-language": "InjectablePHP", + "value": { + "type": "string", + "required": true + } + }, + { + "name": "is", + "description": "", + "value": { + "type": "string", + "required": true + } + } + ] } ], "attributes": [ { "name": ":if", - "description": "Conditional attribute `if`. The element is present in the final html when the condition is true.", + "description": "Conditional attributeif
. The element is present in the final html when the condition is true.",
"doc-url": "https://tempestphp.com/1.x/internals/view-spec#control-structures",
"inject-language": "InjectablePHP",
"value": {
@@ -76,7 +397,7 @@
},
{
"name": ":elseif",
- "description": "Conditional attribute `else if`. The element is present in the final html when the condition is true.",
+ "description": "Conditional attribute else if
. The element is present in the final html when the condition is true.",
"doc-url": "https://tempestphp.com/1.x/internals/view-spec#control-structures",
"inject-language": "InjectablePHP",
"value": {
@@ -95,7 +416,7 @@
},
{
"name": ":foreach",
- "description": "Loop attribute `for each`. Values should be as PHP `foreach` loop. Introduce a local variable for each value in the collection.",
+ "description": "Loop attribute for each
. Values should be as PHP foreach
loop. Introduce a local variable for each value in the collection.",
"doc-url": "https://tempestphp.com/1.x/internals/view-spec#control-structures",
"inject-language": "InjectablePHP",
"value": {
@@ -105,7 +426,7 @@
},
{
"name": ":forelse",
- "description": "Loop attribute combined with `foreach`. The element is present in the final html when the collection is empty.",
+ "description": "Loop attribute combined with foreach
. The element is present in the final html when the collection is empty.",
"doc-url": "https://tempestphp.com/1.x/internals/view-spec#control-structures",
"inject-language": "InjectablePHP",
"value": {
diff --git a/src/main/resources/icons/tempest/icon_transparent.svg b/src/main/resources/icons/tempest/icon_transparent.svg
new file mode 100644
index 0000000..c09dd3d
--- /dev/null
+++ b/src/main/resources/icons/tempest/icon_transparent.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/test/kotlin/com/github/tempest/framework/.gitkeep b/src/test/kotlin/com/github/tempest/framework/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/kotlin/com/github/tempest/framework/MyPluginTest.kt b/src/test/kotlin/com/github/tempest/framework/MyPluginTest.kt
deleted file mode 100644
index 7318c2d..0000000
--- a/src/test/kotlin/com/github/tempest/framework/MyPluginTest.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.github.tempest.framework
-
-import com.intellij.ide.highlighter.XmlFileType
-import com.intellij.openapi.components.service
-import com.intellij.psi.xml.XmlFile
-import com.intellij.testFramework.TestDataPath
-import com.intellij.testFramework.fixtures.BasePlatformTestCase
-import com.intellij.util.PsiErrorElementUtil
-import com.github.tempest.framework.services.MyProjectService
-
-@TestDataPath("\$CONTENT_ROOT/src/test/testData")
-class MyPluginTest : BasePlatformTestCase() {
-
- fun testXMLFile() {
- val psiFile = myFixture.configureByText(XmlFileType.INSTANCE, "