diff --git a/README.md b/README.md
index 349d2b1d..9c3e7ce6 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@ The workflow builder is organized as a monorepo with packages and apps.
* [haddock3-submit app](apps/haddock3-submit): To construct haddock3 workflow and submit it for online running
* [haddock3-galaxy app](apps/haddock3-galaxy): To construct haddock3 workflow and submit inside a galaxy project instance.
* [kitchensink app](apps/kitchensink): Demonstration of features of workflow builder
+* [kitchensink app with tailwind](apps/kitchensink): Demonstration of features of workflow builder with tailwindcss styling.
* [@i-vresse/wb-core package](packages/core): React components, state management, input/output functions to create an application
* [@i-vresse/wb-form package](packages/form): Web Form based on JSON Schema
* [haddock3_catalog package](packages/haddock3_catalog): Generate script and storage place for haddock3 catalogs
diff --git a/apps/kitchensink-tailwind/.gitignore b/apps/kitchensink-tailwind/.gitignore
new file mode 100644
index 00000000..788cfb84
--- /dev/null
+++ b/apps/kitchensink-tailwind/.gitignore
@@ -0,0 +1,7 @@
+dist
+dist-ssr
+*.local
+coverage
+.coverage
+util/__pycache__/
+playwright-report/
diff --git a/apps/kitchensink-tailwind/index.html b/apps/kitchensink-tailwind/index.html
new file mode 100644
index 00000000..38f38611
--- /dev/null
+++ b/apps/kitchensink-tailwind/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite App
+
+
+
+
+
+
diff --git a/apps/kitchensink-tailwind/package.json b/apps/kitchensink-tailwind/package.json
new file mode 100644
index 00000000..97b82278
--- /dev/null
+++ b/apps/kitchensink-tailwind/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@i-vresse/wb-kitchensink-app-tailwind",
+ "version": "1.0.0",
+ "private": true,
+ "scripts": {
+ "dev": "vite ",
+ "build": "tsc && vite build",
+ "serve": "vite preview",
+ "lint": "ts-standard",
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
+ "format": "prettier --write index.html src"
+ },
+ "dependencies": {
+ "@i-vresse/wb-core": "workspace:^",
+ "react": "^17.0.0",
+ "react-dom": "^17.0.0"
+ },
+ "devDependencies": {
+ "@tailwindcss/forms": "^0.5.3",
+ "@types/node": "16",
+ "@types/react": "^17.0.0",
+ "@types/react-dom": "^17.0.0",
+ "@vitejs/plugin-react": "^2.0.0",
+ "autoprefixer": "^10.4.13",
+ "postcss": "^8.4.21",
+ "prettier": "^2.8.4",
+ "prettier-plugin-tailwindcss": "^0.2.3",
+ "tailwindcss": "^3.2.7",
+ "ts-standard": "^11.0.0",
+ "typescript": "^4.7.4",
+ "vite": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "ts-standard": {
+ "ignore": [
+ "vite.config.ts"
+ ]
+ },
+ "packageManager": "yarn@3.2.1"
+}
diff --git a/apps/kitchensink-tailwind/postcss.config.js b/apps/kitchensink-tailwind/postcss.config.js
new file mode 100644
index 00000000..85f717cc
--- /dev/null
+++ b/apps/kitchensink-tailwind/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+}
diff --git a/apps/kitchensink-tailwind/src/App.css b/apps/kitchensink-tailwind/src/App.css
new file mode 100644
index 00000000..de4c5467
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/App.css
@@ -0,0 +1,204 @@
+h1 {
+ @apply text-4xl;
+}
+
+legend {
+ @apply text-2xl;
+}
+
+h4 {
+ @apply text-xl;
+}
+
+h5 {
+ @apply text-xl;
+}
+
+.btn {
+ @apply inline-block rounded px-3 py-1.5 text-center align-middle text-base font-normal transition duration-150 ease-in-out;
+}
+
+.btn-primary {
+ @apply bg-blue-500 text-white hover:bg-blue-600;
+}
+
+.btn-light {
+ @apply bg-gray-100 hover:bg-gray-200;
+}
+
+.btn-sm {
+ @apply p-1 text-sm;
+}
+
+.btn-link {
+ @apply text-blue-600;
+}
+
+.btn-outline-danger {
+ @apply border border-red-500 text-red-500 hover:bg-red-500 hover:text-white;
+}
+
+.btn-danger {
+ @apply bg-red-500 text-white;
+}
+
+.btn-toolbar {
+ @apply flex flex-wrap justify-start;
+}
+
+ul {
+ @apply list-inside;
+}
+
+ul ul {
+ /* TODO add circle before button or not? */
+}
+
+li {
+ @apply pl-2;
+}
+
+.card {
+ @apply border border-gray-300;
+}
+
+.card-header {
+ @apply border border-gray-100 bg-gray-100 p-2 py-4 align-middle;
+}
+
+.card-header svg {
+ @apply mr-3 inline;
+}
+
+.form-group {
+ @apply mb-4 p-1;
+}
+
+.form-label {
+ @apply mb-2 inline-block;
+}
+
+.form-control {
+ @apply w-full p-1.5;
+}
+
+.form-check-label {
+ @apply ml-2;
+}
+
+.array-item-add,
+.object-property-expand {
+ /* TODO full width + center plus sign */
+ @apply m-4 !w-auto;
+}
+
+.container {
+ @apply w-full;
+}
+
+.container-fluid {
+ @apply w-full;
+}
+
+.row {
+ @apply flex flex-wrap;
+}
+
+.col {
+ @apply max-w-full grow basis-0;
+}
+
+.col-2 {
+ @apply w-full max-w-[16.666667%] basis-2/12 px-3;
+}
+
+.col-3 {
+ @apply w-full max-w-[25%] basis-3/12 px-3;
+}
+
+.col-5 {
+ @apply max-w-[41.666667%] basis-5/12;
+}
+
+.col-9 {
+ @apply max-w-[75%] basis-9/12;
+}
+
+.col-10 {
+ @apply max-w-[85%] basis-10/12;
+}
+
+.col-12 {
+ @apply max-w-full basis-full;
+}
+
+.offset-9 {
+ @apply ml-[75%];
+}
+
+.nav {
+ @apply flex flex-wrap;
+}
+
+.nav-tabs {
+ @apply border-b-2 border-b-gray-100;
+}
+
+.nav-link {
+ @apply block rounded-t-md border bg-gray-100 px-4 py-2;
+}
+
+.nav .active {
+ @apply border-gray-100 bg-white text-black;
+}
+
+.justify-content-end {
+ @apply justify-end;
+}
+
+.d-flex {
+ @apply !flex;
+}
+
+.align-items-center {
+ @apply items-center;
+}
+
+.table-field {
+ @apply mb-4 table w-full border-collapse border border-gray-300;
+}
+
+.table-bordered td,
+.table-bordered th {
+ @apply border border-gray-300;
+}
+
+.table-striped tbody tr:nth-of-type(odd) {
+ @apply bg-gray-100;
+}
+
+.array-item-remove {
+ @apply !text-black;
+}
+
+.popover-header {
+ @apply rounded border-b border-gray-200 bg-gray-100 px-3 py-2;
+}
+
+.popover-body {
+ @apply bg-white px-3 py-2 text-black;
+}
+
+.page {
+ /* TODO replace with tailwind */
+ grid-template-areas:
+ "head head head"
+ "catalog workflow node"
+ "catalog workflow-actions node-actions";
+ grid-template-columns: 1fr 1fr 2fr;
+ grid-template-rows: auto 1fr auto;
+}
+
+.page > div {
+ overflow: auto;
+}
diff --git a/apps/kitchensink-tailwind/src/App.tsx b/apps/kitchensink-tailwind/src/App.tsx
new file mode 100644
index 00000000..ed726e90
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/App.tsx
@@ -0,0 +1,53 @@
+import { useEffect } from 'react'
+import {
+ CatalogPanel,
+ FormActions,
+ GridArea,
+ Header,
+ NodePanel,
+ WorkflowClear,
+ WorkflowDownloadButton,
+ WorkflowPanel,
+ WorkflowUploadButton
+} from '@i-vresse/wb-core'
+import { useSetCatalog } from '@i-vresse/wb-core/dist/store'
+import { prepareCatalog } from '@i-vresse/wb-core/dist/catalog'
+
+import '@i-vresse/wb-form/dist/index.css'
+import './App.css'
+import kitchensinkCatalog from './kitchensink.json'
+
+function App (): JSX.Element {
+ const setCatalog = useSetCatalog()
+ useEffect(() => {
+ const catalog = prepareCatalog(kitchensinkCatalog)
+ setCatalog(catalog)
+ }, [])
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default App
diff --git a/apps/kitchensink-tailwind/src/favicon.svg b/apps/kitchensink-tailwind/src/favicon.svg
new file mode 100644
index 00000000..de4aeddc
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/favicon.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/kitchensink-tailwind/src/index.css b/apps/kitchensink-tailwind/src/index.css
new file mode 100644
index 00000000..9e4b1f18
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/index.css
@@ -0,0 +1,17 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
+ "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
+ monospace;
+}
diff --git a/apps/kitchensink-tailwind/src/kitchensink.json b/apps/kitchensink-tailwind/src/kitchensink.json
new file mode 100644
index 00000000..43900ed3
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/kitchensink.json
@@ -0,0 +1,912 @@
+{
+ "title": "Kitchensink catalog",
+ "examples": {},
+ "global": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "molecules": {
+ "title": "Input Molecules",
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "format": "moleculefilepaths",
+ "items": {
+ "type": "string",
+ "format": "uri-reference"
+ }
+ }
+ },
+ "required": ["molecules"]
+ },
+ "uiSchema": {
+ "molecules": {
+ "items": {
+ "ui:widget": "file"
+ }
+ }
+ },
+ "tomlSchema": {}
+ },
+ "categories": [
+ {
+ "name": "customfields",
+ "description": "Nodes with builtin custom fields"
+ },
+ {
+ "name": "grouptests",
+ "description": "Category 1"
+ },
+ {
+ "name": "defaultstest",
+ "description": "Some description"
+ },
+ {
+ "name": "expandabletests",
+ "description": "Nodes with expandable parameters"
+ },
+ {
+ "name": "tabletests",
+ "description": "Nodes with tables"
+ },
+ {
+ "name": "resdictests",
+ "description": "Nodes with custom object keys"
+ },
+ {
+ "name": "moleculetest",
+ "description": "Nodes with molecules aware parameters"
+ },
+ {
+ "name": "collapsedcat",
+ "description": "Category which is initially collapsed",
+ "collapsed": true
+ },
+ {
+ "name": "indexable",
+ "description": "Array with index"
+ }
+ ],
+ "nodes": [
+ {
+ "id": "node0",
+ "label": "Node 0",
+ "description": "Description 0",
+ "category": "customfields",
+ "schema": {
+ "title": "Test builtin custom fields",
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "string"
+ },
+ "prop2": {
+ "type": "boolean",
+ "default": false
+ },
+ "prop3": {
+ "type": "string"
+ },
+ "prop4": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 100
+ },
+ "prop5": {
+ "type": "string",
+ "default": "easy",
+ "enum": ["easy", "expert", "guru"]
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {
+ "prop1": {
+ "ui:widget": "textarea"
+ },
+ "prop2": {
+ "ui:widget": "radio"
+ },
+ "prop3": {
+ "ui:widget": "file"
+ },
+ "prop4": {
+ "ui:widget": "range"
+ },
+ "prop5": {
+ "ui:widget": "radio"
+ }
+ }
+ },
+ {
+ "schema": {
+ "title": "Test to render group11 collapsed",
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "string"
+ },
+ "prop2": {
+ "type": "string"
+ },
+ "prop3": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {
+ "prop1": {
+ "ui:widget": "textarea",
+ "ui:group": "group11"
+ },
+ "prop3": {
+ "ui:group": "group11"
+ }
+ },
+ "id": "node1",
+ "label": "Node 1",
+ "description": "Description 1",
+ "category": "grouptests"
+ },
+ {
+ "schema": {
+ "title": "Test to render group21 collapsed",
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "string"
+ },
+ "prop2": {
+ "type": "string"
+ },
+ "prop3": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {
+ "prop1": {
+ "ui:widget": "textarea",
+ "ui:group": "group21"
+ },
+ "prop3": {
+ "ui:group": "group21"
+ }
+ },
+ "id": "node2",
+ "label": "Node 2",
+ "description": "Description 2",
+ "category": "grouptests"
+ },
+ {
+ "schema": {
+ "title": "Test to render group31 expanded",
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "string"
+ },
+ "prop2": {
+ "type": "string"
+ },
+ "prop3": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {
+ "prop1": {
+ "ui:widget": "textarea",
+ "ui:group": "group31"
+ },
+ "prop3": {
+ "ui:group": "group31"
+ },
+ "group31": {
+ "ui:collapsed": false
+ }
+ },
+ "id": "node3",
+ "label": "Node 3",
+ "description": "Description 3",
+ "category": "grouptests"
+ },
+ {
+ "title": "Node to test pruning of defaultstest",
+ "id": "defaultprune",
+ "label": "Default prune?",
+ "category": "defaultstest",
+ "uiSchema": {
+ "prop4": {
+ "items": {
+ "ui:widget": "radio"
+ }
+ }
+ },
+ "schema": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "prop1": {
+ "title": "String with no default",
+ "type": "string"
+ },
+ "prop2": {
+ "title": "String with default empty string",
+ "type": "string",
+ "default": ""
+ },
+ "prop3": {
+ "title": "String with default x string",
+ "type": "string",
+ "default": "x"
+ },
+ "prop4": {
+ "title": "Array of booleans",
+ "type": "array",
+ "items": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "prop5": {
+ "type": "array",
+ "title": "Array of object with x string as defaults",
+ "items": {
+ "type": "object",
+ "properties": {
+ "prop5a": {
+ "type": "string",
+ "default": "x"
+ },
+ "prop5b": {
+ "type": "string",
+ "default": "x"
+ }
+ }
+ }
+ },
+ "prop6": {
+ "type": "array",
+ "title": "Array of object with empty string as defaults",
+ "items": {
+ "type": "object",
+ "properties": {
+ "prop6a": {
+ "type": "string",
+ "default": ""
+ },
+ "prop6b": {
+ "type": "string",
+ "default": ""
+ }
+ }
+ }
+ },
+ "prop7": {
+ "type": "array",
+ "title": "Array of array of object with x string as defaults",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "prop7a": {
+ "type": "string",
+ "default": "x"
+ },
+ "prop7b": {
+ "type": "string",
+ "default": "x"
+ }
+ }
+ }
+ }
+ },
+ "prop8": {
+ "type": "array",
+ "title": "Array of array of scalar with x string as default",
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "default": "x"
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "schema": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "prop1": {
+ "title": "Array of objects",
+ "description": "prop1_something_1 and prop1_something_else_1 and numprop1=4",
+ "type": "array",
+ "minItems": 0,
+ "maxItems": 4,
+ "items": {
+ "type": "object",
+ "properties": {
+ "something": {
+ "type": "string"
+ },
+ "something_else": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "additionalProperties": false
+ },
+ "fle": {
+ "title": "Array of array of objects",
+ "description": "nfle1=2 and fle_sta_1_1 and fle_end_1_1 . Outer array is molecule index",
+ "type": "array",
+ "items": {
+ "type": "array",
+ "description": "Inner array is segment index",
+ "minItems": 0,
+ "maxItems": 2,
+ "items": {
+ "type": "object",
+ "properties": {
+ "sta": {
+ "title": "Starting residue number",
+ "type": "number"
+ },
+ "end": {
+ "title": "End residue number",
+ "type": "number"
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ },
+ "paramX": {
+ "title": "Array of scalars",
+ "description": "param_1 + param_2 + param_3",
+ "type": "array",
+ "maxItems": 3,
+ "items": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "mol": {
+ "title": "topoaa.mol use case",
+ "description": "each mol in own section with hisd_N keys",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "cyclicpept": {
+ "type": "boolean"
+ },
+ "hisd": {
+ "type": "array",
+ "items": {
+ "type": "number"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "ui:options": {
+ "orderable": false
+ }
+ },
+ "fle": {
+ "items": {
+ "ui:options": {
+ "orderable": false
+ }
+ },
+ "ui:options": {
+ "orderable": false
+ }
+ },
+ "paramX": {
+ "items": {
+ "ui:widget": "radio"
+ },
+ "ui:options": {
+ "orderable": false
+ }
+ },
+ "mol": {
+ "items": {
+ "cyclicpept": {
+ "ui:widget": "radio"
+ }
+ },
+ "ui:options": {
+ "orderable": false
+ }
+ }
+ },
+ "tomlSchema": {
+ "prop1": {
+ "indexed": true,
+ "items": {
+ "flatten": true
+ }
+ },
+ "fle": {
+ "indexed": true,
+ "items": {
+ "indexed": true,
+ "items": {
+ "flatten": true
+ }
+ }
+ },
+ "paramX": {
+ "indexed": true
+ },
+ "mol": {
+ "indexed": true,
+ "items": {
+ "sectioned": true,
+ "properties": {
+ "hisd": {
+ "indexed": true
+ }
+ }
+ }
+ }
+ },
+ "id": "node4",
+ "label": "Node 4",
+ "description": "Description 3",
+ "category": "expandabletests"
+ },
+ {
+ "schema": {
+ "title": "Test to render nested1 as a table",
+ "type": "object",
+ "properties": {
+ "nested1": {
+ "type": "array",
+ "title": "Array of {prop1,prop2}",
+ "items": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "title": "Prop 1",
+ "description": "Description 1",
+ "type": "string"
+ },
+ "prop2": {
+ "title": "Prop 2",
+ "description": "Description 2",
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {
+ "nested1": {
+ "ui:field": "table"
+ }
+ },
+ "tomlSchema": {
+ "nested1": {
+ "indexed": true,
+ "items": {
+ "flatten": true
+ }
+ }
+ },
+ "id": "node5",
+ "label": "Node 5",
+ "description": "Description 5",
+ "category": "tabletests"
+ },
+ {
+ "schema": {
+ "title": "Test to render resdic",
+ "type": "object",
+ "properties": {
+ "resdic": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "residue"
+ },
+ "uniqueItems": true
+ },
+ "propertyNames": {
+ "pattern": "^[A-Z]$",
+ "format": "chain"
+ },
+ "maxPropertiesFrom": "molecules"
+ }
+ },
+ "additionalProperties": false
+ },
+ "uiSchema": {},
+ "tomlSchema": {
+ "resdic": {
+ "indexed": true
+ }
+ },
+ "id": "node6",
+ "label": "Node 6",
+ "description": "Description 6",
+ "category": "resdictests"
+ },
+ {
+ "id": "mnode1",
+ "label": "Node with prop1 has same size as global molecules parameter",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "array",
+ "title": "Which molecules are a shape?",
+ "items": {
+ "default": false,
+ "title": "Is this molecule a shape?",
+ "type": "boolean"
+ },
+ "maxItemsFrom": "molecules"
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "items": {
+ "ui:widget": "radio"
+ }
+ }
+ },
+ "tomlSchema": {}
+ },
+ {
+ "id": "mnode2",
+ "label": "Node same as node1, but with ui:group",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "array",
+ "title": "Which molecules are a shape?",
+ "items": {
+ "default": false,
+ "title": "Is this molecule a shape?",
+ "type": "boolean"
+ },
+ "maxItemsFrom": "molecules"
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "items": {
+ "ui:widget": "radio"
+ },
+ "ui:group": "Molecules"
+ }
+ },
+ "tomlSchema": {}
+ },
+ {
+ "id": "mnode3",
+ "label": "Node with segments (with chain and residue formats) for each molecule",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "seg": {
+ "type": "array",
+ "maxItemsFrom": "molecules",
+ "title": "Segments",
+ "items": {
+ "type": "array",
+ "title": "Segments of a molecule",
+ "items": {
+ "type": "object",
+ "properties": {
+ "chain": {
+ "title": "Chain",
+ "type": "string",
+ "format": "chain"
+ },
+ "sta": {
+ "title": "Starting residue number",
+ "type": "number",
+ "format": "residue"
+ },
+ "end": {
+ "title": "Ending residue number",
+ "type": "number",
+ "format": "residue"
+ }
+ },
+ "required": [],
+ "additionalProperties": false
+ }
+ }
+ }
+ }
+ },
+ "uiSchema": {
+ "seg": {
+ "items": {
+ "ui:field": "table"
+ }
+ }
+ },
+ "tomlSchema": {
+ "seg": {
+ "indexed": true,
+ "items": {
+ "indexed": true,
+ "items": {
+ "flatten": true
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": "mnode1",
+ "label": "Node with prop1 has same size as global molecules parameter",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "array",
+ "title": "Which molecules are a shape?",
+ "items": {
+ "default": false,
+ "title": "Is this molecule a shape?",
+ "type": "boolean"
+ },
+ "maxItemsFrom": "molecules"
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "items": {
+ "ui:widget": "radio"
+ }
+ }
+ },
+ "tomlSchema": {}
+ },
+ {
+ "id": "mnode2",
+ "label": "Node same as node1, but with ui:group",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "array",
+ "title": "Which molecules are a shape?",
+ "items": {
+ "default": false,
+ "title": "Is this molecule a shape?",
+ "type": "boolean"
+ },
+ "maxItemsFrom": "molecules"
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "items": {
+ "ui:widget": "radio"
+ },
+ "ui:group": "Molecules"
+ }
+ },
+ "tomlSchema": {}
+ },
+ {
+ "id": "mnode3",
+ "label": "Node with segments (with chain and residue formats) for each molecule",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "seg": {
+ "type": "array",
+ "maxItemsFrom": "molecules",
+ "title": "Segments",
+ "items": {
+ "type": "array",
+ "title": "Segments of a molecule",
+ "items": {
+ "type": "object",
+ "properties": {
+ "chain": {
+ "title": "Chain",
+ "type": "string",
+ "format": "chain"
+ },
+ "sta": {
+ "title": "Starting residue number",
+ "type": "number",
+ "format": "residue"
+ },
+ "end": {
+ "title": "Ending residue number",
+ "type": "number",
+ "format": "residue"
+ }
+ },
+ "required": [],
+ "additionalProperties": false
+ }
+ }
+ }
+ }
+ },
+ "uiSchema": {
+ "seg": {
+ "items": {
+ "ui:field": "table"
+ }
+ }
+ },
+ "tomlSchema": {
+ "seg": {
+ "indexed": true,
+ "items": {
+ "indexed": true,
+ "items": {
+ "flatten": true
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": "mnode4",
+ "label": "Node with array of object with property which array of scalar. Scalar is a residue and rendered as multi select.",
+ "description": "Description 1",
+ "category": "moleculetest",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "array",
+ "title": "Specifications for molecules",
+ "items": {
+ "type": "object",
+ "title": "Specification for a molecule",
+ "properties": {
+ "hisd": {
+ "type": "array",
+ "title": "Which residues a HISD?",
+ "items": {
+ "title": "HISD residue number",
+ "type": "number",
+ "format": "residue"
+ },
+ "uniqueItems": true
+ }
+ }
+ },
+ "maxItemsFrom": "molecules"
+ }
+ }
+ },
+ "uiSchema": {
+ "prop1": {
+ "items": {
+ "hisd": {
+ "ui:widget": "checkboxes"
+ }
+ }
+ }
+ },
+ "tomlSchema": {
+ "prop1": {
+ "indexed": true,
+ "items": {
+ "sectioned": true,
+ "properties": {
+ "hisd": {
+ "indexed": true
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": "array",
+ "label": "Node 11",
+ "description": "Description 11",
+ "category": "indexable",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "nested1": {
+ "type": "array",
+ "title": "Array of string",
+ "items": { "type": "string" }
+ }
+ }
+ },
+ "uiSchema": {
+ "nested1": {
+ "ui:indexable": true
+ }
+ }
+ },
+ {
+ "id": "table",
+ "label": "Node 12",
+ "description": "Description 12",
+ "category": "indexable",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "nested1": {
+ "type": "array",
+ "title": "Array of object with prop string",
+ "items": {
+ "type": "object",
+ "properties": {
+ "prop1": { "type": "string" }
+ }
+ }
+ }
+ }
+ },
+ "uiSchema": {
+ "nested1": {
+ "ui:field": "table",
+ "ui:indexable": true
+ }
+ }
+ },
+ {
+ "id": "node12",
+ "label": "Node in initially collapsed cat",
+ "description": "Description 12",
+ "category": "collapsedcat",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "prop1": {
+ "type": "string"
+ }
+ }
+ },
+ "uiSchema": {},
+ "tomlSchema": {}
+ }
+ ]
+}
diff --git a/apps/kitchensink-tailwind/src/main.tsx b/apps/kitchensink-tailwind/src/main.tsx
new file mode 100644
index 00000000..314c0926
--- /dev/null
+++ b/apps/kitchensink-tailwind/src/main.tsx
@@ -0,0 +1,14 @@
+import React from 'react'
+import ReactDOM from 'react-dom'
+import './index.css'
+import App from './App'
+import { Wrapper } from '@i-vresse/wb-core'
+
+ReactDOM.render(
+
+
+
+
+ ,
+ document.getElementById('root')
+)
diff --git a/apps/kitchensink-tailwind/tailwind.config.js b/apps/kitchensink-tailwind/tailwind.config.js
new file mode 100644
index 00000000..44de49fd
--- /dev/null
+++ b/apps/kitchensink-tailwind/tailwind.config.js
@@ -0,0 +1,18 @@
+// const path = require('path')
+
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ './index.html',
+ './src/**/*.{ts,tsx,jsx,js}'
+ // TODO import dependend components so
+ // their classnames are included in generated css
+ // path.join(path.dirname(require.resolve('@i-vresse/wb-core')), 'dist/**/*.js'),
+ // path.join(path.dirname(require.resolve('@i-vresse/wb-form')), 'dist/**/*.js'),
+ // path.join(path.dirname(require.resolve('@rjsf/bootstrap-4')), 'dist/**/*.js'),
+ ],
+ theme: {
+ extend: {}
+ },
+ plugins: [require('@tailwindcss/forms')]
+}
diff --git a/apps/kitchensink-tailwind/tsconfig.json b/apps/kitchensink-tailwind/tsconfig.json
new file mode 100644
index 00000000..f26181b0
--- /dev/null
+++ b/apps/kitchensink-tailwind/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
+ },
+ "include": ["./src", "integration-tests"]
+}
diff --git a/apps/kitchensink-tailwind/vite.config.ts b/apps/kitchensink-tailwind/vite.config.ts
new file mode 100644
index 00000000..4c57657d
--- /dev/null
+++ b/apps/kitchensink-tailwind/vite.config.ts
@@ -0,0 +1,18 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+ build: {
+ target: [ 'es2020' ],
+ },
+ server: {
+ port: 3003
+ },
+ optimizeDeps: {
+ esbuildOptions: {
+ target: [ 'es2020' ],
+ }
+ }
+})
diff --git a/apps/kitchensink/src/kitchensink.json b/apps/kitchensink/src/kitchensink.json
index 3336e078..3c17eecf 100644
--- a/apps/kitchensink/src/kitchensink.json
+++ b/apps/kitchensink/src/kitchensink.json
@@ -553,7 +553,7 @@
"category": "resdictests"
},
{
- "id": "node1",
+ "id": "mnode1",
"label": "Node with prop1 has same size as global molecules parameter",
"description": "Description 1",
"category": "moleculetest",
@@ -582,7 +582,7 @@
"tomlSchema": {}
},
{
- "id": "node2",
+ "id": "mnode2",
"label": "Node same as node1, but with ui:group",
"description": "Description 1",
"category": "moleculetest",
@@ -612,7 +612,7 @@
"tomlSchema": {}
},
{
- "id": "node3",
+ "id": "mnode3",
"label": "Node with segments (with chain and residue formats) for each molecule",
"description": "Description 1",
"category": "moleculetest",
@@ -672,7 +672,7 @@
}
},
{
- "id": "node1",
+ "id": "mnode1",
"label": "Node with prop1 has same size as global molecules parameter",
"description": "Description 1",
"category": "moleculetest",
@@ -701,7 +701,7 @@
"tomlSchema": {}
},
{
- "id": "node2",
+ "id": "mnode2",
"label": "Node same as node1, but with ui:group",
"description": "Description 1",
"category": "moleculetest",
@@ -731,7 +731,7 @@
"tomlSchema": {}
},
{
- "id": "node3",
+ "id": "mnode3",
"label": "Node with segments (with chain and residue formats) for each molecule",
"description": "Description 1",
"category": "moleculetest",
@@ -791,7 +791,7 @@
}
},
{
- "id": "node4",
+ "id": "mnode4",
"label": "Node with array of object with property which array of scalar. Scalar is a residue and rendered as multi select.",
"description": "Description 1",
"category": "moleculetest",
diff --git a/yarn.lock b/yarn.lock
index ac405468..61ba7b91 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2090,6 +2090,29 @@ __metadata:
languageName: unknown
linkType: soft
+"@i-vresse/wb-kitchensink-app-tailwind@workspace:apps/kitchensink-tailwind":
+ version: 0.0.0-use.local
+ resolution: "@i-vresse/wb-kitchensink-app-tailwind@workspace:apps/kitchensink-tailwind"
+ dependencies:
+ "@i-vresse/wb-core": "workspace:^"
+ "@tailwindcss/forms": ^0.5.3
+ "@types/node": 16
+ "@types/react": ^17.0.0
+ "@types/react-dom": ^17.0.0
+ "@vitejs/plugin-react": ^2.0.0
+ autoprefixer: ^10.4.13
+ postcss: ^8.4.21
+ prettier: ^2.8.4
+ prettier-plugin-tailwindcss: ^0.2.3
+ react: ^17.0.0
+ react-dom: ^17.0.0
+ tailwindcss: ^3.2.7
+ ts-standard: ^11.0.0
+ typescript: ^4.7.4
+ vite: ^3.0.4
+ languageName: unknown
+ linkType: soft
+
"@i-vresse/wb-kitchensink-app@workspace:apps/kitchensink":
version: 0.0.0-use.local
resolution: "@i-vresse/wb-kitchensink-app@workspace:apps/kitchensink"
@@ -3719,6 +3742,17 @@ __metadata:
languageName: node
linkType: hard
+"@tailwindcss/forms@npm:^0.5.3":
+ version: 0.5.3
+ resolution: "@tailwindcss/forms@npm:0.5.3"
+ dependencies:
+ mini-svg-data-uri: ^1.2.3
+ peerDependencies:
+ tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1"
+ checksum: 9eddb4dbd06d01b1068138ff52a54ed0e35a28e7bfd3c72e226fc28658ecd92a9c078c4abe9c83db090984672040644d7ae2e035933fb619dd703df1d87aa275
+ languageName: node
+ linkType: hard
+
"@testing-library/dom@npm:^8.0.0":
version: 8.16.0
resolution: "@testing-library/dom@npm:8.16.0"
@@ -4764,7 +4798,18 @@ __metadata:
languageName: node
linkType: hard
-"acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0":
+"acorn-node@npm:^1.8.2":
+ version: 1.8.2
+ resolution: "acorn-node@npm:1.8.2"
+ dependencies:
+ acorn: ^7.0.0
+ acorn-walk: ^7.0.0
+ xtend: ^4.0.2
+ checksum: 02e1564a1ccf8bd1fcefcd01235398af4a9effaf032c5397994ddd275590a72894cb3e26e4b82579ccdda1e48ade7486aef61e771ddae3563ca452b927f443d8
+ languageName: node
+ linkType: hard
+
+"acorn-walk@npm:^7.0.0, acorn-walk@npm:^7.1.1, acorn-walk@npm:^7.2.0":
version: 7.2.0
resolution: "acorn-walk@npm:7.2.0"
checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f
@@ -4780,7 +4825,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^7.1.1, acorn@npm:^7.4.0, acorn@npm:^7.4.1":
+"acorn@npm:^7.0.0, acorn@npm:^7.1.1, acorn@npm:^7.4.0, acorn@npm:^7.4.1":
version: 7.4.1
resolution: "acorn@npm:7.4.1"
bin:
@@ -5073,6 +5118,13 @@ __metadata:
languageName: node
linkType: hard
+"arg@npm:^5.0.2":
+ version: 5.0.2
+ resolution: "arg@npm:5.0.2"
+ checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078
+ languageName: node
+ linkType: hard
+
"argparse@npm:^1.0.7":
version: 1.0.10
resolution: "argparse@npm:1.0.10"
@@ -5313,6 +5365,24 @@ __metadata:
languageName: node
linkType: hard
+"autoprefixer@npm:^10.4.13":
+ version: 10.4.13
+ resolution: "autoprefixer@npm:10.4.13"
+ dependencies:
+ browserslist: ^4.21.4
+ caniuse-lite: ^1.0.30001426
+ fraction.js: ^4.2.0
+ normalize-range: ^0.1.2
+ picocolors: ^1.0.0
+ postcss-value-parser: ^4.2.0
+ peerDependencies:
+ postcss: ^8.1.0
+ bin:
+ autoprefixer: bin/autoprefixer
+ checksum: dcb1cb7ae96a3363d65d82e52f9a0a7d8c982256f6fd032d7e1ec311f099c23acfebfd517ff8e96bf93f716a66c4ea2b80c60aa19efd2f474ce434bd75ef7b79
+ languageName: node
+ linkType: hard
+
"autoprefixer@npm:^9.8.6":
version: 9.8.8
resolution: "autoprefixer@npm:9.8.8"
@@ -5795,6 +5865,20 @@ __metadata:
languageName: node
linkType: hard
+"browserslist@npm:^4.21.4":
+ version: 4.21.5
+ resolution: "browserslist@npm:4.21.5"
+ dependencies:
+ caniuse-lite: ^1.0.30001449
+ electron-to-chromium: ^1.4.284
+ node-releases: ^2.0.8
+ update-browserslist-db: ^1.0.10
+ bin:
+ browserslist: cli.js
+ checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706
+ languageName: node
+ linkType: hard
+
"bser@npm:2.1.1":
version: 2.1.1
resolution: "bser@npm:2.1.1"
@@ -6016,7 +6100,7 @@ __metadata:
languageName: node
linkType: hard
-"camelcase-css@npm:2.0.1":
+"camelcase-css@npm:2.0.1, camelcase-css@npm:^2.0.1":
version: 2.0.1
resolution: "camelcase-css@npm:2.0.1"
checksum: 1cec2b3b3dcb5026688a470b00299a8db7d904c4802845c353dbd12d9d248d3346949a814d83bfd988d4d2e5b9904c07efe76fecd195a1d4f05b543e7c0b56b1
@@ -6061,6 +6145,13 @@ __metadata:
languageName: node
linkType: hard
+"caniuse-lite@npm:^1.0.30001426, caniuse-lite@npm:^1.0.30001449":
+ version: 1.0.30001457
+ resolution: "caniuse-lite@npm:1.0.30001457"
+ checksum: f311a7c5098681962402a86a0a367014ee91c3135395ee68bbfaf45caf0e36d581e42d7c5b1526ce99484a228e6cf5cf0e400678292c65f5a21512a3fc7a5fb6
+ languageName: node
+ linkType: hard
+
"capture-exit@npm:^2.0.0":
version: 2.0.0
resolution: "capture-exit@npm:2.0.0"
@@ -6171,7 +6262,7 @@ __metadata:
languageName: node
linkType: hard
-"chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.1":
+"chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.3":
version: 3.5.3
resolution: "chokidar@npm:3.5.3"
dependencies:
@@ -6361,7 +6452,7 @@ __metadata:
languageName: node
linkType: hard
-"color-name@npm:~1.1.4":
+"color-name@npm:^1.1.4, color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610
@@ -7013,6 +7104,13 @@ __metadata:
languageName: node
linkType: hard
+"defined@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "defined@npm:1.0.1"
+ checksum: b1a852300bdb57f297289b55eafdd0c517afaa3ec8190e78fce91b9d8d0c0369d4505ecbdacfd3d98372e664f4a267d9bd793938d4a8c76209c9d9516fbe2101
+ languageName: node
+ linkType: hard
+
"delayed-stream@npm:~1.0.0":
version: 1.0.0
resolution: "delayed-stream@npm:1.0.0"
@@ -7096,6 +7194,26 @@ __metadata:
languageName: node
linkType: hard
+"detective@npm:^5.2.1":
+ version: 5.2.1
+ resolution: "detective@npm:5.2.1"
+ dependencies:
+ acorn-node: ^1.8.2
+ defined: ^1.0.0
+ minimist: ^1.2.6
+ bin:
+ detective: bin/detective.js
+ checksum: dc4601bbc6be850edb3c2dab7a0eaf5a6169a15ad201679c66d40ea1986df816eeaecd590047f15b0780285f3eeea13b82dca0d4c52a47e744a571e326a72dc9
+ languageName: node
+ linkType: hard
+
+"didyoumean@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "didyoumean@npm:1.2.2"
+ checksum: d5d98719d58b3c2fa59663c4c42ba9716f1fd01245c31d5fce31915bd3aa26e6aac149788e007358f778ebbd68a2256eb5973e8ca6f221df221ba060115acf2e
+ languageName: node
+ linkType: hard
+
"diffie-hellman@npm:^5.0.0":
version: 5.0.3
resolution: "diffie-hellman@npm:5.0.3"
@@ -7125,6 +7243,13 @@ __metadata:
languageName: node
linkType: hard
+"dlv@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "dlv@npm:1.1.3"
+ checksum: d7381bca22ed11933a1ccf376db7a94bee2c57aa61e490f680124fa2d1cd27e94eba641d9f45be57caab4f9a6579de0983466f620a2cd6230d7ec93312105ae7
+ languageName: node
+ linkType: hard
+
"dnd-core@npm:14.0.1":
version: 14.0.1
resolution: "dnd-core@npm:14.0.1"
@@ -7300,6 +7425,13 @@ __metadata:
languageName: node
linkType: hard
+"electron-to-chromium@npm:^1.4.284":
+ version: 1.4.310
+ resolution: "electron-to-chromium@npm:1.4.310"
+ checksum: f7d070b36c2cf8e085a2aaca85a92f451657d39cd9e1e779f9e37e40c65039abd10807836e017b0ce813e0bb2e9f125a6401181f80182acd0b265734c857266a
+ languageName: node
+ linkType: hard
+
"elliptic@npm:^6.5.3":
version: 6.5.4
resolution: "elliptic@npm:6.5.4"
@@ -8398,6 +8530,19 @@ __metadata:
languageName: node
linkType: hard
+"fast-glob@npm:^3.2.12":
+ version: 3.2.12
+ resolution: "fast-glob@npm:3.2.12"
+ dependencies:
+ "@nodelib/fs.stat": ^2.0.2
+ "@nodelib/fs.walk": ^1.2.3
+ glob-parent: ^5.1.2
+ merge2: ^1.3.0
+ micromatch: ^4.0.4
+ checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2
+ languageName: node
+ linkType: hard
+
"fast-glob@npm:^3.2.9":
version: 3.2.11
resolution: "fast-glob@npm:3.2.11"
@@ -8775,6 +8920,13 @@ __metadata:
languageName: node
linkType: hard
+"fraction.js@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "fraction.js@npm:4.2.0"
+ checksum: 8c76a6e21dedea87109d6171a0ac77afa14205794a565d71cb10d2925f629a3922da61bf45ea52dbc30bce4d8636dc0a27213a88cbd600eab047d82f9a3a94c5
+ languageName: node
+ linkType: hard
+
"fragment-cache@npm:^0.2.1":
version: 0.2.1
resolution: "fragment-cache@npm:0.2.1"
@@ -9077,7 +9229,7 @@ __metadata:
languageName: node
linkType: hard
-"glob-parent@npm:^6.0.1":
+"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2":
version: 6.0.2
resolution: "glob-parent@npm:6.0.2"
dependencies:
@@ -10897,6 +11049,13 @@ __metadata:
languageName: node
linkType: hard
+"lilconfig@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "lilconfig@npm:2.0.6"
+ checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d
+ languageName: node
+ linkType: hard
+
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
@@ -11508,7 +11667,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4":
+"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
dependencies:
@@ -11587,6 +11746,15 @@ __metadata:
languageName: node
linkType: hard
+"mini-svg-data-uri@npm:^1.2.3":
+ version: 1.4.4
+ resolution: "mini-svg-data-uri@npm:1.4.4"
+ bin:
+ mini-svg-data-uri: cli.js
+ checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09
+ languageName: node
+ linkType: hard
+
"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1":
version: 1.0.1
resolution: "minimalistic-assert@npm:1.0.1"
@@ -11976,6 +12144,13 @@ __metadata:
languageName: node
linkType: hard
+"node-releases@npm:^2.0.8":
+ version: 2.0.10
+ resolution: "node-releases@npm:2.0.10"
+ checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc
+ languageName: node
+ linkType: hard
+
"nopt@npm:^5.0.0":
version: 5.0.0
resolution: "nopt@npm:5.0.0"
@@ -12105,6 +12280,13 @@ __metadata:
languageName: node
linkType: hard
+"object-hash@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "object-hash@npm:3.0.0"
+ checksum: 80b4904bb3857c52cc1bfd0b52c0352532ca12ed3b8a6ff06a90cd209dfda1b95cee059a7625eb9da29537027f68ac4619363491eedb2f5d3dddbba97494fd6c
+ languageName: node
+ linkType: hard
+
"object-inspect@npm:^1.12.0, object-inspect@npm:^1.9.0":
version: 1.12.2
resolution: "object-inspect@npm:1.12.2"
@@ -12735,7 +12917,7 @@ __metadata:
languageName: node
linkType: hard
-"pify@npm:^2.0.0":
+"pify@npm:^2.0.0, pify@npm:^2.3.0":
version: 2.3.0
resolution: "pify@npm:2.3.0"
checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba
@@ -12859,7 +13041,31 @@ __metadata:
languageName: node
linkType: hard
-"postcss-load-config@npm:^3.0.1":
+"postcss-import@npm:^14.1.0":
+ version: 14.1.0
+ resolution: "postcss-import@npm:14.1.0"
+ dependencies:
+ postcss-value-parser: ^4.0.0
+ read-cache: ^1.0.0
+ resolve: ^1.1.7
+ peerDependencies:
+ postcss: ^8.0.0
+ checksum: cd45d406e90f67cdab9524352e573cc6b4462b790934a05954e929a6653ebd31288ceebc8ce3c3ed7117ae672d9ebbec57df0bceec0a56e9b259c2e71d47ca86
+ languageName: node
+ linkType: hard
+
+"postcss-js@npm:^4.0.0":
+ version: 4.0.1
+ resolution: "postcss-js@npm:4.0.1"
+ dependencies:
+ camelcase-css: ^2.0.1
+ peerDependencies:
+ postcss: ^8.4.21
+ checksum: 5c1e83efeabeb5a42676193f4357aa9c88f4dc1b3c4a0332c132fe88932b33ea58848186db117cf473049fc233a980356f67db490bd0a7832ccba9d0b3fd3491
+ languageName: node
+ linkType: hard
+
+"postcss-load-config@npm:^3.0.1, postcss-load-config@npm:^3.1.4":
version: 3.1.4
resolution: "postcss-load-config@npm:3.1.4"
dependencies:
@@ -12934,6 +13140,17 @@ __metadata:
languageName: node
linkType: hard
+"postcss-nested@npm:6.0.0":
+ version: 6.0.0
+ resolution: "postcss-nested@npm:6.0.0"
+ dependencies:
+ postcss-selector-parser: ^6.0.10
+ peerDependencies:
+ postcss: ^8.2.14
+ checksum: 2105dc52cd19747058f1a46862c9e454b5a365ac2e7135fc1015d67a8fe98ada2a8d9ee578e90f7a093bd55d3994dd913ba5ff1d5e945b4ed9a8a2992ecc8f10
+ languageName: node
+ linkType: hard
+
"postcss-selector-parser@npm:^6.0.0, postcss-selector-parser@npm:^6.0.2":
version: 6.0.10
resolution: "postcss-selector-parser@npm:6.0.10"
@@ -12944,7 +13161,17 @@ __metadata:
languageName: node
linkType: hard
-"postcss-value-parser@npm:^4.1.0":
+"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11":
+ version: 6.0.11
+ resolution: "postcss-selector-parser@npm:6.0.11"
+ dependencies:
+ cssesc: ^3.0.0
+ util-deprecate: ^1.0.2
+ checksum: 0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde
+ languageName: node
+ linkType: hard
+
+"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0":
version: 4.2.0
resolution: "postcss-value-parser@npm:4.2.0"
checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f
@@ -12961,6 +13188,17 @@ __metadata:
languageName: node
linkType: hard
+"postcss@npm:^8.0.9, postcss@npm:^8.4.21":
+ version: 8.4.21
+ resolution: "postcss@npm:8.4.21"
+ dependencies:
+ nanoid: ^3.3.4
+ picocolors: ^1.0.0
+ source-map-js: ^1.0.2
+ checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679
+ languageName: node
+ linkType: hard
+
"postcss@npm:^8.4.14":
version: 8.4.14
resolution: "postcss@npm:8.4.14"
@@ -12986,6 +13224,61 @@ __metadata:
languageName: node
linkType: hard
+"prettier-plugin-tailwindcss@npm:^0.2.3":
+ version: 0.2.3
+ resolution: "prettier-plugin-tailwindcss@npm:0.2.3"
+ peerDependencies:
+ "@ianvs/prettier-plugin-sort-imports": "*"
+ "@prettier/plugin-php": "*"
+ "@prettier/plugin-pug": "*"
+ "@shopify/prettier-plugin-liquid": "*"
+ "@shufo/prettier-plugin-blade": "*"
+ "@trivago/prettier-plugin-sort-imports": "*"
+ prettier: ">=2.2.0"
+ prettier-plugin-astro: "*"
+ prettier-plugin-css-order: "*"
+ prettier-plugin-import-sort: "*"
+ prettier-plugin-jsdoc: "*"
+ prettier-plugin-organize-attributes: "*"
+ prettier-plugin-organize-imports: "*"
+ prettier-plugin-style-order: "*"
+ prettier-plugin-svelte: "*"
+ prettier-plugin-twig-melody: "*"
+ peerDependenciesMeta:
+ "@ianvs/prettier-plugin-sort-imports":
+ optional: true
+ "@prettier/plugin-php":
+ optional: true
+ "@prettier/plugin-pug":
+ optional: true
+ "@shopify/prettier-plugin-liquid":
+ optional: true
+ "@shufo/prettier-plugin-blade":
+ optional: true
+ "@trivago/prettier-plugin-sort-imports":
+ optional: true
+ prettier-plugin-astro:
+ optional: true
+ prettier-plugin-css-order:
+ optional: true
+ prettier-plugin-import-sort:
+ optional: true
+ prettier-plugin-jsdoc:
+ optional: true
+ prettier-plugin-organize-attributes:
+ optional: true
+ prettier-plugin-organize-imports:
+ optional: true
+ prettier-plugin-style-order:
+ optional: true
+ prettier-plugin-svelte:
+ optional: true
+ prettier-plugin-twig-melody:
+ optional: true
+ checksum: f43599b2b03b80899c32e436a518a5c139aa8b6cc59c4d73f7c95222d99f3c3b418adb2d61145602c86b0827804fa2469a927ed696c5270d0a91dfeb18246509
+ languageName: node
+ linkType: hard
+
"prettier@npm:>=2.2.1 <=2.3.0":
version: 2.3.0
resolution: "prettier@npm:2.3.0"
@@ -12995,6 +13288,15 @@ __metadata:
languageName: node
linkType: hard
+"prettier@npm:^2.8.4":
+ version: 2.8.4
+ resolution: "prettier@npm:2.8.4"
+ bin:
+ prettier: bin-prettier.js
+ checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e
+ languageName: node
+ linkType: hard
+
"pretty-error@npm:^2.1.1":
version: 2.1.2
resolution: "pretty-error@npm:2.1.2"
@@ -13295,6 +13597,13 @@ __metadata:
languageName: node
linkType: hard
+"quick-lru@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "quick-lru@npm:5.1.1"
+ checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed
+ languageName: node
+ linkType: hard
+
"ramda@npm:^0.28.0":
version: 0.28.0
resolution: "ramda@npm:0.28.0"
@@ -13620,6 +13929,15 @@ __metadata:
languageName: node
linkType: hard
+"read-cache@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "read-cache@npm:1.0.0"
+ dependencies:
+ pify: ^2.3.0
+ checksum: cffc728b9ede1e0667399903f9ecaf3789888b041c46ca53382fa3a06303e5132774dc0a96d0c16aa702dbac1ea0833d5a868d414f5ab2af1e1438e19e6657c6
+ languageName: node
+ linkType: hard
+
"read-pkg-up@npm:^1.0.1":
version: 1.0.1
resolution: "read-pkg-up@npm:1.0.1"
@@ -14020,7 +14338,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1, resolve@npm:^1.3.2":
+"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1, resolve@npm:^1.3.2":
version: 1.22.1
resolution: "resolve@npm:1.22.1"
dependencies:
@@ -14046,7 +14364,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.3.2#~builtin":
+"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.3.2#~builtin":
version: 1.22.1
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"
dependencies:
@@ -15167,6 +15485,42 @@ __metadata:
languageName: node
linkType: hard
+"tailwindcss@npm:^3.2.7":
+ version: 3.2.7
+ resolution: "tailwindcss@npm:3.2.7"
+ dependencies:
+ arg: ^5.0.2
+ chokidar: ^3.5.3
+ color-name: ^1.1.4
+ detective: ^5.2.1
+ didyoumean: ^1.2.2
+ dlv: ^1.1.3
+ fast-glob: ^3.2.12
+ glob-parent: ^6.0.2
+ is-glob: ^4.0.3
+ lilconfig: ^2.0.6
+ micromatch: ^4.0.5
+ normalize-path: ^3.0.0
+ object-hash: ^3.0.0
+ picocolors: ^1.0.0
+ postcss: ^8.0.9
+ postcss-import: ^14.1.0
+ postcss-js: ^4.0.0
+ postcss-load-config: ^3.1.4
+ postcss-nested: 6.0.0
+ postcss-selector-parser: ^6.0.11
+ postcss-value-parser: ^4.2.0
+ quick-lru: ^5.1.1
+ resolve: ^1.22.1
+ peerDependencies:
+ postcss: ^8.0.9
+ bin:
+ tailwind: lib/cli.js
+ tailwindcss: lib/cli.js
+ checksum: 819446bf67acea1fc738f345d80f328b7bb6e6ef4b24070249a11219307045881cf97baed6258cbdcede7fa18886e9c9c41fd0fa087b3e987cf2948560a2f164
+ languageName: node
+ linkType: hard
+
"tapable@npm:^1.0.0, tapable@npm:^1.1.3":
version: 1.1.3
resolution: "tapable@npm:1.1.3"
@@ -16158,6 +16512,20 @@ __metadata:
languageName: node
linkType: hard
+"update-browserslist-db@npm:^1.0.10":
+ version: 1.0.10
+ resolution: "update-browserslist-db@npm:1.0.10"
+ dependencies:
+ escalade: ^3.1.1
+ picocolors: ^1.0.0
+ peerDependencies:
+ browserslist: ">= 4.21.0"
+ bin:
+ browserslist-lint: cli.js
+ checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0
+ languageName: node
+ linkType: hard
+
"update-browserslist-db@npm:^1.0.4":
version: 1.0.4
resolution: "update-browserslist-db@npm:1.0.4"
@@ -17049,7 +17417,7 @@ __metadata:
languageName: node
linkType: hard
-"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:~4.0.1":
+"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:^4.0.2, xtend@npm:~4.0.1":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a