mosaic-headless 1.26.1 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md CHANGED
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: "mosaic-headless"
3
3
  description: |
4
- Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface with `mo.py`, which joins every source table to the live sweeps so a lookup leads with the measured verdict rather than the declaration (126 node types, 191 properties, 98 style properties with 20 structured value shapes pinned down, 53 style states, 156 variants, 74 dynamic variables, 15 interaction triggers, 115 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, the design-token and element-class layers verified against compiled CSS, the @VAR() dynamic language verified against rendered output, nine designed pages built through the tables themselves, and the delivered pages re-read in Chromium at three viewports so a rule that is present, correct and still wrong cannot pass. Drives Mosaic's own theme export/import and its plugin data upgrade from outside the editor and holds the copy against the source tree for tree. Measured on Mosaic Pro 1.0.9: the modal (`<dialog>`), OpenStreetMap, the exit-intent and scroll-depth triggers, run rules and the memory actions all built on a live page and read back, and the 1.0.7 -> 1.0.8 -> 1.0.9 migrations driven from outside wp-admin.
4
+ Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface with `mo.py`, which joins every source table to the live sweeps so a lookup leads with the measured verdict rather than the declaration (128 node types, 191 properties, 98 style properties with 20 structured value shapes pinned down, 53 style states, 156 variants, 74 dynamic variables, 15 interaction triggers, 115 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, the design-token and element-class layers verified against compiled CSS, the @VAR() dynamic language verified against rendered output, nine designed pages built through the tables themselves, and the delivered pages re-read in Chromium at three viewports so a rule that is present, correct and still wrong cannot pass. Drives Mosaic's own theme export/import and its plugin data upgrade from outside the editor and holds the copy against the source tree for tree. Measured on Mosaic Pro 1.0.9: the modal (`<dialog>`), OpenStreetMap, the exit-intent and scroll-depth triggers, run rules and the memory actions all built on a live page and read back, and the 1.0.7 -> 1.0.8 -> 1.0.9 migrations driven from outside wp-admin.
5
5
  license: "MIT"
6
6
  author: "moksa (https://moksaweb.com)"
7
- version: "1.26.1"
7
+ version: "1.27.0"
8
8
  ---
9
9
 
10
10
  # Headless Mosaic
@@ -381,7 +381,7 @@ UPGRADE 1.0.7 -> 1.0.8 driven over the plugin's own milestone route from
381
381
  one selector on the worked example that named an emitted class
382
382
  stopped matching until it was rewritten. references/upgrading.md
383
383
 
384
- FROM SOURCE 126 node types, 191 properties (61 with enums), 249 pluggable IDs,
384
+ FROM SOURCE 128 node types, 191 properties (61 with enums), 249 pluggable IDs,
385
385
  126 placement rules, 10 composite default structures, 98 style
386
386
  properties, 53 style states, 15 interaction triggers.
387
387
  ```
@@ -530,13 +530,14 @@ so the pattern is in the data, not just in this paragraph.
530
530
  | `data/conversion-batch.csv` | 19 | **converted, built and checked live, one page after another** - every Elementor page of a production site through the converter, with per-page element and content counts |
531
531
  | `data/token-benchmark.csv` | 6 | **measured with tiktoken** - the same six lookups priced three ways: reading the plugin source, loading every table, querying `mo.py`. 71-99.5% fewer tokens than the source and 99.6%+ fewer than the tables, which total 259,539 - never load them, query them |
532
532
  | `data/slider-verification.csv` | 30 | **driven live** - two sliders, one autoplaying and one a carousel: advance, arrows, bullets, keyboard, reduced motion |
533
- | `data/navigation-verification.csv` | 33 | **fetched and opened live** - every menu item is a real `<a href>`, every page of the nineteen answers 200, and no page scrolls sideways at 390 / 768 / 1280 |
533
+ | `data/navigation-verification.csv` | 36 | **fetched and opened live** - every menu item is a real `<a href>`, every page of the nineteen answers 200, and no page scrolls sideways at 390 / 768 / 1280 |
534
534
  | `data/page-modal-verification.csv` | 19 | **read live** - one modal per page, and what each one's trigger, run rule, memory scope and dismissal policy actually came out as |
535
535
  | `data/dialog-verification.csv` | 19 | **driven live** - the 1.0.9 modal, its triggers, its run rules and the memory actions, each exercised in a real browser |
536
536
  | `data/dialog-form-verification.csv` | 49 | **driven live** - the same three nodes made into five FORMS (sheet, drawer, corner, takeover, gate), each re-opened at 390px and 768px; also where `pickOne` on a click turned out to be a latch rather than a lottery |
537
537
  | `data/token-verification.csv` | 15 | **driven live** - every `:root` custom property declared once, non-empty, and resolved by something on the page; a token nothing points at is a token that is not working |
538
- | `data/mobile-audit.csv` | 58 | **driven live** - what a sideways-scroll check cannot see: type under the legible floor, controls too small to hit, a grid that never collapsed, content escaping its box |
539
- | `data/component-wall-verification.csv` | 11 | **driven live** - tabs switched, an accordion opened, a form's fields and Mosaic's own honeypot, and an OpenStreetMap asserted on the coordinates it was GIVEN rather than the default it falls back to |
538
+ | `data/mobile-audit.csv` | 60 | **driven live** - what a sideways-scroll check cannot see: type under the legible floor, controls too small to hit, a grid that never collapsed, content escaping its box |
539
+ | `data/component-wall-verification.csv` | 13 | **driven live** - tabs switched, an accordion opened, a form's fields and Mosaic's own honeypot, and an OpenStreetMap asserted on the coordinates it was GIVEN rather than the default it falls back to |
540
+ | `data/form-surface-verification.csv` | 8 | **driven live** - every field type Mosaic ships in one form: select with labelled options, radio and checkbox groups, file upload, and the browser's own validation refusing an empty submit |
540
541
  | `data/custom-fields-verification.csv` | 62 | **rendered live** - ACF and Meta Box fields of every common type read back through `@VAR` / `@LOOP` off the delivered page, loops included |
541
542
  | `data/theme-zip-verification.csv` | 22 | **round-tripped live** - Mosaic's own ZIP export imported in test mode and compared to its source, table by table and tree by tree |
542
543
  | `data/node-type-notes.csv` | 8 | where a sweep outcome is true but misleading on its own, why. Surfaced by `mo.py type` |
@@ -20,7 +20,7 @@
20
20
  "description": "Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface (122 node types, 181 node properties, 98 style properties, 53 style states, 151 element classes, 74 dynamic variables, 114 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, every style and node property swept against the compiled CSS and markup, and 569 responsive declarations checked against the stylesheet the site actually served.",
21
21
  "license": "MIT",
22
22
  "author": "moksa (https://moksaweb.com)",
23
- "version": "1.26.1"
23
+ "version": "1.27.0"
24
24
  },
25
25
  "loaderBehaviour": "Upload via Settings -> Skills -> Upload. Claude.ai parses SKILL.md frontmatter and surfaces the skill in your library. The extraction tool (extract-block-schema.php) needs a live WP-CLI connection and won't run in the sandbox; use it from a local terminal against your own site instead.",
26
26
  "uploadSteps": [
@@ -20,7 +20,7 @@
20
20
  "description": "Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface (122 node types, 181 node properties, 98 style properties, 53 style states, 151 element classes, 74 dynamic variables, 114 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, every style and node property swept against the compiled CSS and markup, and 569 responsive declarations checked against the stylesheet the site actually served.",
21
21
  "license": "MIT",
22
22
  "author": "moksa (https://moksaweb.com)",
23
- "version": "1.26.1"
23
+ "version": "1.27.0"
24
24
  },
25
25
  "loaderBehaviour": "Auto-loads on session start when SKILL.md frontmatter parses successfully.",
26
26
  "verified": true,
@@ -20,7 +20,7 @@
20
20
  "description": "Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface (122 node types, 181 node properties, 98 style properties, 53 style states, 151 element classes, 74 dynamic variables, 114 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, every style and node property swept against the compiled CSS and markup, and 569 responsive declarations checked against the stylesheet the site actually served.",
21
21
  "license": "MIT",
22
22
  "author": "moksa (https://moksaweb.com)",
23
- "version": "1.26.1"
23
+ "version": "1.27.0"
24
24
  },
25
25
  "loaderBehaviour": "Confirmed (2026-07-11): Codex CLI natively supports the SKILL.md spec. Place SKILL.md under .codex/skills/<name>/ (project) or ~/.codex/skills/<name>/ (personal) and Codex loads the name+description at session start, then the full body on demand. A parallel, broader convention .agents/skills/ (searched from cwd up to repo root, then ~/.agents/skills/) also exists across multiple tools - if your Codex CLI version prioritizes that path instead, mirror the same SKILL.md there.",
26
26
  "verified": true,
@@ -20,7 +20,7 @@
20
20
  "description": "Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface (122 node types, 181 node properties, 98 style properties, 53 style states, 151 element classes, 74 dynamic variables, 114 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, every style and node property swept against the compiled CSS and markup, and 569 responsive declarations checked against the stylesheet the site actually served.",
21
21
  "license": "MIT",
22
22
  "author": "moksa (https://moksaweb.com)",
23
- "version": "1.26.1"
23
+ "version": "1.27.0"
24
24
  },
25
25
  "loaderBehaviour": "CHANGED as of 2026-07-11: GitHub Copilot added a proper '.github/skills/' Agent Skills directory (December 2025), alongside the older single-file .github/copilot-instructions.md convention. This config targets the new skills-directory form. If your Copilot version predates this (pre Dec 2025), use the instructions-append fallback instead (see fallback below).",
26
26
  "fallback": {
@@ -20,7 +20,7 @@
20
20
  "description": "Build and modify Mosaic Pro (Nextend) sites by writing the underlying data model directly - no visual editor, no DOM. Query the real surface (122 node types, 181 node properties, 98 style properties, 53 style states, 151 element classes, 74 dynamic variables, 114 REST routes, 23 tables) instead of guessing, with every node type placed on a live site one at a time and asserted against the delivered HTML, every style and node property swept against the compiled CSS and markup, and 569 responsive declarations checked against the stylesheet the site actually served.",
21
21
  "license": "MIT",
22
22
  "author": "moksa (https://moksaweb.com)",
23
- "version": "1.26.1"
23
+ "version": "1.27.0"
24
24
  },
25
25
  "loaderBehaviour": "CHANGED as of 2026-07-11: Gemini CLI now natively supports the same SKILL.md standard as Claude Code and Codex CLI - the same directory-based skill works unmodified. Gemini CLI discovers skills in this precedence order: built-in, extension skills, ~/.gemini/skills/ (personal), .gemini/skills/ (project, shared via version control). At session start Gemini injects each discovered skill's name+description into the system prompt and calls activate_skill when a task matches.",
26
26
  "verified": true,
@@ -5,8 +5,10 @@ TABS/active_label_readable,PASS,"{'bg': 'rgb(22, 24, 28)', 'labels': ['rgba(250,
5
5
  ACCORDION/shut_at_rest,PASS,open: []
6
6
  ACCORDION/click_opens_one,PASS,clicked 1 -> open [1]
7
7
  ACCORDION/keyboard_reachable,PASS,title tabindex='0' - the plugin puts it in the tab order
8
- FORM/fields,PASS,"named fields: ['name', 'email', 'message']"
9
- FORM/required,PASS,every author field is required
8
+ FORM/fields,PASS,"3 controls, types: email, text, textarea"
9
+ FORM/required,PASS,required is set on 3 of them
10
10
  FORM/honeypot,PASS,"Mosaic adds its own spam trap: ['mosaic_hp_url', 'mosaic_hp_ts']"
11
+ FORM/option_labels,SKIPPED,no select on this form
12
+ FORM/required_blocks,PASS,"empty form reports invalid: ['name', 'email', 'message']"
11
13
  MAP/frame,PASS,renders an openstreetmap iframe
12
14
  MAP/coordinates_applied,PASS,"marker=24.147700,120.673600"
@@ -0,0 +1,9 @@
1
+ check,result,detail
2
+ TABS,SKIPPED,not on this page
3
+ ACCORDION,SKIPPED,not on this page
4
+ FORM/fields,PASS,"13 controls, types: checkbox, email, file, radio, select-one, text, textarea"
5
+ FORM/required,PASS,required is set on 8 of them
6
+ FORM/honeypot,PASS,"Mosaic adds its own spam trap: ['mosaic_hp_url', 'mosaic_hp_ts']"
7
+ FORM/option_labels,PASS,"5 options, all labelled"
8
+ FORM/required_blocks,PASS,"empty form reports invalid: ['name', 'email', 'kind', 'kind']"
9
+ MAP,SKIPPED,not on this page
@@ -1,4 +1,5 @@
1
1
  path,width,finding,element,detail
2
+ forms/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
2
3
  components/,390,GRID_NOT_COLLAPSED,cp-tabs-menu,2 columns at 390px
3
4
  components/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
4
5
  dialogs/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
@@ -16,6 +17,7 @@ sliders/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
16
17
  tokens/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
17
18
  dynamic/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
18
19
  conversion/,390,GRID_NOT_COLLAPSED,mk-f-links,2 columns at 390px
20
+ forms/,768,LONG_MEASURE,m-text,59 chars/line
19
21
  components/,768,LONG_MEASURE,m-text,44 chars/line
20
22
  components/,768,LONG_MEASURE,m-text,56 chars/line
21
23
  dialogs/,768,LONG_MEASURE,m-text,46 chars/line
@@ -1,22 +1,24 @@
1
1
  check,result,detail
2
- FRONT_PAGE,PASS,"HTTP 200, 239472 bytes"
2
+ FRONT_PAGE,PASS,"HTTP 200, 240166 bytes"
3
3
  MENU_IS_LINKS,PASS,4 real <a href> in #mk-nav
4
- NAV 服務,PASS,"/#services -> HTTP 200, 239568 bytes"
5
- NAV 作品,PASS,"/#works -> HTTP 200, 239568 bytes"
6
- NAV 產品,PASS,"/#products -> HTTP 200, 239568 bytes"
7
- NAV 聯絡,PASS,"/#contact -> HTTP 200, 239568 bytes"
8
- PAGE moksa,PASS,"HTTP 200, 239471 bytes"
9
- PAGE my-account,PASS,"HTTP 200, 99676 bytes"
10
- PAGE intro,PASS,"HTTP 200, 133386 bytes"
11
- PAGE components,PASS,"HTTP 200, 114165 bytes"
12
- PAGE conversion,PASS,"HTTP 200, 101843 bytes"
13
- PAGE dynamic,PASS,"HTTP 200, 111263 bytes"
14
- PAGE tokens,PASS,"HTTP 200, 124433 bytes"
15
- PAGE sliders,PASS,"HTTP 200, 150450 bytes"
16
- PAGE dialogs,PASS,"HTTP 200, 205987 bytes"
4
+ NAV 服務,PASS,"/#services -> HTTP 200, 240262 bytes"
5
+ NAV 作品,PASS,"/#works -> HTTP 200, 240262 bytes"
6
+ NAV 產品,PASS,"/#products -> HTTP 200, 240262 bytes"
7
+ NAV 聯絡,PASS,"/#contact -> HTTP 200, 240262 bytes"
8
+ PAGE moksa,PASS,"HTTP 200, 240166 bytes"
9
+ PAGE my-account,PASS,"HTTP 200, 100372 bytes"
10
+ PAGE intro,PASS,"HTTP 200, 134080 bytes"
11
+ PAGE forms,PASS,"HTTP 200, 100299 bytes"
12
+ PAGE components,PASS,"HTTP 200, 114860 bytes"
13
+ PAGE conversion,PASS,"HTTP 200, 102160 bytes"
14
+ PAGE dynamic,PASS,"HTTP 200, 112338 bytes"
15
+ PAGE tokens,PASS,"HTTP 200, 124749 bytes"
16
+ PAGE sliders,PASS,"HTTP 200, 151524 bytes"
17
+ PAGE dialogs,PASS,"HTTP 200, 206683 bytes"
17
18
  ANCHORS moksa,PASS,every in-page link resolves
18
19
  ANCHORS my-account,PASS,every in-page link resolves
19
20
  ANCHORS intro,PASS,every in-page link resolves
21
+ ANCHORS forms,PASS,every in-page link resolves
20
22
  ANCHORS components,PASS,every in-page link resolves
21
23
  ANCHORS conversion,PASS,every in-page link resolves
22
24
  ANCHORS dynamic,PASS,every in-page link resolves
@@ -26,6 +28,7 @@ ANCHORS dialogs,PASS,every in-page link resolves
26
28
  WIDTH moksa,PASS,"no sideways scroll at 390,768,1280"
27
29
  WIDTH my-account,PASS,"no sideways scroll at 390,768,1280"
28
30
  WIDTH intro,PASS,"no sideways scroll at 390,768,1280"
31
+ WIDTH forms,PASS,"no sideways scroll at 390,768,1280"
29
32
  WIDTH components,PASS,"no sideways scroll at 390,768,1280"
30
33
  WIDTH conversion,PASS,"no sideways scroll at 390,768,1280"
31
34
  WIDTH dynamic,PASS,"no sideways scroll at 390,768,1280"
@@ -50,7 +50,9 @@ choice-content,Content,ChoiceContentElementTypeFactory,ElementTypeFactoryAbstrac
50
50
  choice-legend,Legend,ChoiceLegendElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,true,,,ChoiceLegendElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/Legend/ChoiceLegendElementTypeFactory.php
51
51
  choice,Choice,ChoiceElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,,true,,ChoiceElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceElementTypeFactory.php
52
52
  choice-label,Choice label,ChoiceLabelElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,true,,,ChoiceLabelElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceLabel/ChoiceLabelElementTypeFactory.php
53
+ fieldset-content,Content,FieldSetContentElementMResourceFactory,ElementTypeFactoryAbstract,no,pro,,,true,,FieldSetContentElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/Content/FieldSetContentElementMResourceFactory.php
53
54
  fieldset,Field set,FieldSetElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,,,,FieldSetElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/FieldSetElementTypeFactory.php
55
+ fieldset-legend,Legend,FieldSetLegendElementMResourceFactory,ElementTypeFactoryAbstract,no,pro,,true,,,FieldSetLegendElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/Legend/FieldSetLegendElementMResourceFactory.php
54
56
  field,Field,FieldElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,,true,,FieldElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/Field/FieldElementTypeFactory.php
55
57
  fileupload-input,File upload,FileUploadElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,true,,,FileUploadElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/FileUpload/FileUploadElementTypeFactory.php
56
58
  form-error,Error message,FormErrorElementTypeFactory,ElementTypeFactoryAbstract,no,pro,,,,,FormErrorElementMResourceData,ElementMResourceDataAbstract,Mosaic/NodeTypes/Pro/Form/Form/MElements/FormError/FormErrorElementTypeFactory.php
@@ -1,127 +1,129 @@
1
- type,rule,allowed_children,nested_rule,takes_children,declared_in
2
- __unknown,none,,,,Mosaic/NodeTypes/Unknown/UnknownElementTypeFactory.php
3
- accordion,allow,accordion-item|accordion-loop-items,yes,yes,Mosaic/NodeTypes/Accordion/AccordionElementTypeFactory.php
4
- accordion-content,any,,,yes,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionContent/AccordionContentElementTypeFactory.php
5
- accordion-item,allow,accordion-item|accordion-loop-items,yes,yes,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionItemElementTypeFactory.php
6
- accordion-loop-items,allow,accordion,yes,yes,Mosaic/NodeTypes/Accordion/AccordionLoopItems/AccordionLoopItemsElementTypeFactory.php
7
- accordion-title,any,,,yes,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionTitle/AccordionTitleElementTypeFactory.php
8
- body,any,,,,Mosaic/NodeTypes/Document/Body/BodyElementTypeFactory.php
9
- button,any,,,,Mosaic/NodeTypes/Button/ButtonElementTypeFactory.php
10
- checkbox-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Checkbox/CheckboxInput/CheckboxInputElementTypeFactory.php
11
- choice,any,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceElementTypeFactory.php
12
- choice-content,any,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/Content/ChoiceContentElementTypeFactory.php
13
- choice-field,allow,choice-content|choice-legend,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/ChoiceFieldElementTypeFactory.php
14
- choice-label,none,,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceLabel/ChoiceLabelElementTypeFactory.php
15
- choice-legend,none,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/Legend/ChoiceLegendElementTypeFactory.php
16
- code,none,,,,Mosaic/NodeTypes/Pro/Code/CodeElementTypeFactory.php
17
- component-external,none,,,,Mosaic/NodeTypes/Component/Component/ComponentExternal/ComponentExternalElementTypeFactory.php
18
- component-instance,any,,,,Mosaic/NodeTypes/Component/ComponentInstance/ComponentInstanceElementTypeFactory.php
19
- component-internal,any,,,,Mosaic/NodeTypes/Component/Component/ComponentInternal/ComponentInternalElementTypeFactory.php
20
- component-root,none,,,,Mosaic/NodeTypes/Root/Component/ComponentRootElementTypeFactory.php
21
- div,any,,,,Mosaic/NodeTypes/Div/DivElementTypeFactory.php
22
- document,none,,,,Mosaic/NodeTypes/Document/DocumentElementTypeFactory.php
23
- dropdown,none,,,,Mosaic/NodeTypes/Menu/Dropdown/Dropdown/DropdownElementTypeFactory.php
24
- dropdown-toggle,any,,,yes,Mosaic/NodeTypes/Menu/Dropdown/DropdownToggle/DropdownToggleElementTypeFactory.php
25
- dropdown-wide,none,,,,Mosaic/NodeTypes/Menu/Dropdown/DropdownWide/DropdownWideElementTypeFactory.php
26
- dropdown-wrapper,none,,,yes,Mosaic/NodeTypes/Menu/Dropdown/Dropdown/DropdownWrapper/DropdownWrapperElementTypeFactory.php
27
- dropdown-wrapper-wide,none,,,yes,Mosaic/NodeTypes/Menu/Dropdown/DropdownWide/DropdownWrapperWide/DropdownWrapperWideElementTypeFactory.php
28
- field,any,,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/Field/FieldElementTypeFactory.php
29
- fieldset,complex,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/FieldSetElementTypeFactory.php
30
- fileupload-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/FileUpload/FileUploadElementTypeFactory.php
31
- form,any,,,yes,Mosaic/NodeTypes/Pro/Form/Form/FormElementTypeFactory.php
32
- form-error,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/FormError/FormErrorElementTypeFactory.php
33
- form-multi-steps,allow,form-multi-steps-steps|multi-steps-forms,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/MultiStepsElementTypeFactory.php
34
- form-multi-steps-step,any,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Steps/Step/StepElementTypeFactory.php
35
- form-multi-steps-steps,allow,form-multi-steps-step,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Steps/StepsElementTypeFactory.php
36
- form-wrapper,allow,form|success-screen,yes,,Mosaic/NodeTypes/Pro/Form/FormWrapperElementTypeFactory.php
37
- googlemaps,none,,,,Mosaic/NodeTypes/GoogleMaps/GoogleMapsElementTypeFactory.php
38
- hidden-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/HiddenInput/HiddenInputElementTypeFactory.php
39
- icon,none,,,,Mosaic/NodeTypes/Icon/IconElementTypeFactory.php
40
- image,none,,,,Mosaic/NodeTypes/Image/ImageElementTypeFactory.php
41
- label,none,,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/Label/LabelElementTypeFactory.php
42
- list,allow,list-item|list-loop-items,,,Mosaic/NodeTypes/ListElement/ListElementTypeFactory.php
43
- list-item,any,,yes,,Mosaic/NodeTypes/ListElement/ListItem/ListItemElementTypeFactory.php
44
- list-loop-items,allow,list-item,yes,,Mosaic/NodeTypes/ListElement/ListLoopItems/ListLoopItemsElementTypeFactory.php
45
- loop,allow,loop-pagination,,,Mosaic/NodeTypes/Loop/LoopElementTypeFactory.php
46
- loop-item,any,,yes,,Mosaic/NodeTypes/Loop/LoopItems/LoopItem/LoopItemElementTypeFactory.php
47
- loop-items,allow,loop-item,yes,yes,Mosaic/NodeTypes/Loop/LoopItems/LoopItemsElementTypeFactory.php
48
- loop-no-result,any,,,yes,Mosaic/NodeTypes/Loop/LoopNoResult/LoopNoResultElementTypeFactory.php
49
- loop-pagination,any,,yes,,Mosaic/NodeTypes/Loop/LoopPagination/LoopPaginationElementTypeFactory.php
50
- loop-pagination-button-next,any,,yes,,Mosaic/NodeTypes/Loop/LoopPagination/Button/ButtonNext/LoopPaginationButtonNextElementTypeFactory.php
51
- loop-pagination-button-previous,any,,yes,,Mosaic/NodeTypes/Loop/LoopPagination/Button/ButtonPrevious/LoopPaginationButtonPreviousElementTypeFactory.php
52
- loop-pagination-number,none,,,,Mosaic/NodeTypes/Loop/LoopPagination/Numbers/Number/LoopPaginationNumberElementTypeFactory.php
53
- loop-pagination-numbers,allow,loop-pagination-number,yes,yes,Mosaic/NodeTypes/Loop/LoopPagination/Numbers/LoopPaginationNumbersElementTypeFactory.php
54
- master-root,none,,,,Mosaic/NodeTypes/Root/Master/MasterRootElementTypeFactory.php
55
- menu,any,,,,Mosaic/NodeTypes/Menu/MenuElementTypeFactory.php
56
- menu-link,any,,,,Mosaic/NodeTypes/Menu/MenuLink/MenuLinkElementTypeFactory.php
57
- modal,any,,,,Mosaic/NodeTypes/Dialog/Modal/ModalElementTypeFactory.php
58
- modal-overlay,any,,yes,,Mosaic/NodeTypes/Dialog/Modal/ModalOverlay/ModalOverlayElementTypeFactory.php
59
- modal-window,any,,,,Mosaic/NodeTypes/Dialog/Modal/ModalWindow/ModalWindowElementTypeFactory.php
60
- multi-steps-back-button,any,,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/Button/ButtonStepBack/FormStepButtonBackElementTypeFactory.php
61
- multi-steps-form-step,any,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/FormStepElementTypeFactory.php
62
- multi-steps-forms,allow,form-multi-steps,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormsElementTypeFactory.php
63
- multi-steps-next-button,any,,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/Button/ButtonStepNext/FormStepButtonNextElementTypeFactory.php
64
- navbar,none,,yes,yes,Mosaic/NodeTypes/Navbar/NavbarElementTypeFactory.php
65
- navbar-toggle,any,,yes,yes,Mosaic/NodeTypes/Navbar/NavbarToggle/NavbarToggleElementTypeFactory.php
66
- navigation,any,,yes,yes,Mosaic/NodeTypes/Navbar/Navigation/NavigationElementTypeFactory.php
67
- openstreetmap,none,,,,Mosaic/NodeTypes/OpenStreetMap/OpenStreetMapElementTypeFactory.php
68
- radio-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Radio/RadioInput/RadioInputElementTypeFactory.php
69
- recaptcha,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Recaptcha/RecaptchaElementTypeFactory.php
70
- section,any,,yes,,Mosaic/NodeTypes/Section/SectionElementTypeFactory.php
71
- select-input,complex,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Select/SelectElementTypeFactory.php
72
- select-option,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Select/Option/OptionElementTypeFactory.php
73
- slider,any,,,,Mosaic/NodeTypes/Pro/Slider/SliderElementTypeFactory.php
74
- slider-arrow-left,none,,,yes,Mosaic/NodeTypes/Pro/Slider/SliderArrow/SliderArrowLeft/SliderArrowLeftElementTypeFactory.php
75
- slider-arrow-right,none,,,yes,Mosaic/NodeTypes/Pro/Slider/SliderArrow/SliderArrowRight/SliderArrowRightMElementTypeFactory.php
76
- slider-loop-slides,allow,slider-slides,yes,yes,Mosaic/NodeTypes/Pro/Slider/SliderLoopSlides/SliderLoopSlidesElementTypeFactory.php
77
- slider-navigation,allow,slider-navigation-bullet,yes,yes,Mosaic/NodeTypes/Pro/Slider/SliderNavigation/SliderNavigationElementTypeFactory.php
78
- slider-navigation-bullet,none,,,,Mosaic/NodeTypes/Pro/Slider/SliderNavigation/SliderNavigationBullet/SliderNavigationBulletElementTypeFactory.php
79
- slider-slide,any,,yes,,Mosaic/NodeTypes/Pro/Slider/SliderSlides/SliderSlide/SliderSlideElementTypeFactory.php
80
- slider-slides,allow,slider-loop-slides|slider-slide,,yes,Mosaic/NodeTypes/Pro/Slider/SliderSlides/SliderSlidesElementTypeFactory.php
81
- styleguide-a,none,,,,Mosaic/NodeTypes/SG/SGA/SGAElementTypeFactory.php
82
- styleguide-entry-content,any,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentElementTypeFactory.php
83
- styleguide-entry-content-button,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentButton/SGEntryContentButtonElementTypeFactory.php
84
- styleguide-entry-content-code,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentCode/SGEntryContentCodeElementTypeFactory.php
85
- styleguide-entry-content-image,allow,styleguide-entry-content-image-caption|styleguide-entry-content-image-img,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageElementTypeFactory.php
86
- styleguide-entry-content-image-caption,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageCaption/SGEntryContentImageCaptionElementTypeFactory.php
87
- styleguide-entry-content-image-img,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageImg/SGEntryContentImageImgElementTypeFactory.php
88
- styleguide-entry-content-list,allow,styleguide-entry-content-list-item,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentList/SGEntryContentListElementTypeFactory.php
89
- styleguide-entry-content-list-item,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentList/SGEntryContentListItem/SGEntryContentListItemElementTypeFactory.php
90
- styleguide-entry-content-preformatted,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPreformatted/SGEntryContentPreformattedElementTypeFactory.php
91
- styleguide-entry-content-pullquote,allow,styleguide-entry-content-pullquote-cite|styleguide-entry-content-pullquote-paragraph,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteElementTypeFactory.php
92
- styleguide-entry-content-pullquote-cite,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteCite/SGEntryContentPullQuoteCiteElementTypeFactory.php
93
- styleguide-entry-content-pullquote-paragraph,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteParagraph/SGEntryContentPullQuoteParagraphElementTypeFactory.php
94
- styleguide-entry-content-quote-cite,none,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentQuote/SGEntryContentQuoteCite/SGEntryContentQuoteCiteElementTypeFactory.php
95
- styleguide-entry-content-separator,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentSeparator/SGEntryContentSeparatorElementTypeFactory.php
96
- styleguide-entry-content-text,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentText/SGEntryContentTextElementTypeFactory.php
97
- styleguide-entry-content-text-quote,complex,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentQuote/SGEntryContentQuoteElementTypeFactory.php
98
- styleguide-entry-content-verse,none,,yes,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentVerse/SGEntryContentVerseElementTypeFactory.php
99
- styleguide-root,none,,,,Mosaic/NodeTypes/Root/StyleGuide/StyleGuideRootElementTypeFactory.php
100
- submit-button,allow,submit-label|submit-loading,yes,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/SubmitButtonElementTypeFactory.php
101
- submit-label,none,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/Label/SubmitLabelElementTypeFactory.php
102
- submit-loading,none,,,yes,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/Loading/SubmitLoadingElementTypeFactory.php
103
- success-screen,any,,,yes,Mosaic/NodeTypes/Pro/Form/SuccessScreen/SuccessScreenElementTypeFactory.php
104
- tabs,allow,tabs-content|tabs-menu,,yes,Mosaic/NodeTypes/Pro/Tabs/TabsElementTypeFactory.php
105
- tabs-content,allow,tabs-loop-tab-panes|tabs-tab-pane,,yes,Mosaic/NodeTypes/Pro/Tabs/TabsContent/TabsContentElementTypeFactory.php
106
- tabs-loop-tab-panes,allow,tabs-tab-pane,,yes,Mosaic/NodeTypes/Pro/Tabs/TabsContent/LoopTabPanes/TabLoopTabPanesElementTypeFactory.php
107
- tabs-loop-tabs,allow,tabs-tab,yes,yes,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/LoopTabs/TabLoopTabsElementTypeFactory.php
108
- tabs-menu,allow,tabs-loop-tabs|tabs-tab,,yes,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/TabsMenuElementTypeFactory.php
109
- tabs-tab,any,,yes,yes,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/Tab/TabElementTypeFactory.php
110
- tabs-tab-pane,any,,,yes,Mosaic/NodeTypes/Pro/Tabs/TabsContent/TabPane/TabPaneElementTypeFactory.php
111
- template-external,none,,yes,,Mosaic/NodeTypes/Template/TemplateExternal/TemplateExternalElementTypeFactory.php
112
- template-internal,any,,,yes,Mosaic/NodeTypes/Template/TemplateInternal/TemplateInternalElementTypeFactory.php
113
- text,none,,,yes,Mosaic/NodeTypes/Text/TextElementTypeFactory.php
114
- text-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/InputText/InputTextElementTypeFactory.php
115
- textarea-input,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/TextArea/TextAreaElementTypeFactory.php
116
- turnstile,none,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/Turnstile/TurnstileElementTypeFactory.php
117
- video,none,,,,Mosaic/NodeTypes/Video/VideoElementTypeFactory.php
118
- vimeo,none,,,,Mosaic/NodeTypes/Vimeo/VimeoElementTypeFactory.php
119
- wp-menu,allow,list-item,yes,,Mosaic/NodeTypes/Menu/WPMenu/WPMenuElementTypeFactory.php
120
- wpContent,none,,,,Mosaic/NodeTypes/WPContent/WPContentElementTypeFactory.php
121
- wpShortcode,none,,,,Mosaic/NodeTypes/WPShortcode/WPShortcodeElementTypeFactory.php
122
- wysiwyg-linebreak,none,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygLineBreak/WysiwygLineBreakNodeTypeFactory.php
123
- wysiwyg-link,none,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygLink/WysiwygLinkElementTypeFactory.php
124
- wysiwyg-span,none,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygSpan/WysiwygSpanElementTypeFactory.php
125
- wysiwyg-text,none,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygText/WysiwygTextNodeTypeFactory.php
126
- wysiwyg-variable,none,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygVariable/WysiwygVariableNodeTypeFactory.php
127
- youtube,none,,,,Mosaic/NodeTypes/YouTube/YouTubeElementTypeFactory.php
1
+ type,rule,allowed_children,nested_rule,takes_children,nested_under,declared_in
2
+ __unknown,none,,,,,Mosaic/NodeTypes/Unknown/UnknownElementTypeFactory.php
3
+ accordion,allow,accordion-item|accordion-loop-items,yes,yes,accordion-title,Mosaic/NodeTypes/Accordion/AccordionElementTypeFactory.php
4
+ accordion-content,any,,,yes,,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionContent/AccordionContentElementTypeFactory.php
5
+ accordion-item,allow,accordion-item|accordion-loop-items,yes,yes,accordion|accordion-loop-items,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionItemElementTypeFactory.php
6
+ accordion-loop-items,allow,accordion,yes,yes,accordion,Mosaic/NodeTypes/Accordion/AccordionLoopItems/AccordionLoopItemsElementTypeFactory.php
7
+ accordion-title,any,,,yes,,Mosaic/NodeTypes/Accordion/AccordionItem/AccordionTitle/AccordionTitleElementTypeFactory.php
8
+ body,any,,,,,Mosaic/NodeTypes/Document/Body/BodyElementTypeFactory.php
9
+ button,any,,,,,Mosaic/NodeTypes/Button/ButtonElementTypeFactory.php
10
+ checkbox-input,none,,yes,,choice,Mosaic/NodeTypes/Pro/Form/Form/MElements/Checkbox/CheckboxInput/CheckboxInputElementTypeFactory.php
11
+ choice,any,,yes,,choice-field,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceElementTypeFactory.php
12
+ choice-content,any,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/Content/ChoiceContentElementTypeFactory.php
13
+ choice-field,allow,choice-content|choice-legend,yes,,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/ChoiceFieldElementTypeFactory.php
14
+ choice-label,none,,yes,yes,choice,Mosaic/NodeTypes/Pro/Form/Form/MElements/Choice/ChoiceLabel/ChoiceLabelElementTypeFactory.php
15
+ choice-legend,none,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/ChoiceField/Legend/ChoiceLegendElementTypeFactory.php
16
+ code,none,,,,,Mosaic/NodeTypes/Pro/Code/CodeElementTypeFactory.php
17
+ component-external,none,,,,,Mosaic/NodeTypes/Component/Component/ComponentExternal/ComponentExternalElementTypeFactory.php
18
+ component-instance,any,,,,,Mosaic/NodeTypes/Component/ComponentInstance/ComponentInstanceElementTypeFactory.php
19
+ component-internal,any,,,,,Mosaic/NodeTypes/Component/Component/ComponentInternal/ComponentInternalElementTypeFactory.php
20
+ component-root,none,,,,,Mosaic/NodeTypes/Root/Component/ComponentRootElementTypeFactory.php
21
+ div,any,,,,,Mosaic/NodeTypes/Div/DivElementTypeFactory.php
22
+ document,none,,,,,Mosaic/NodeTypes/Document/DocumentElementTypeFactory.php
23
+ dropdown,none,,,,,Mosaic/NodeTypes/Menu/Dropdown/Dropdown/DropdownElementTypeFactory.php
24
+ dropdown-toggle,any,,,yes,,Mosaic/NodeTypes/Menu/Dropdown/DropdownToggle/DropdownToggleElementTypeFactory.php
25
+ dropdown-wide,none,,,,,Mosaic/NodeTypes/Menu/Dropdown/DropdownWide/DropdownWideElementTypeFactory.php
26
+ dropdown-wrapper,none,,,yes,,Mosaic/NodeTypes/Menu/Dropdown/Dropdown/DropdownWrapper/DropdownWrapperElementTypeFactory.php
27
+ dropdown-wrapper-wide,none,,,yes,,Mosaic/NodeTypes/Menu/Dropdown/DropdownWide/DropdownWrapperWide/DropdownWrapperWideElementTypeFactory.php
28
+ field,any,,yes,yes,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/Field/FieldElementTypeFactory.php
29
+ fieldset,allow,fieldset-content|fieldset-legend,yes,,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/FieldSetElementTypeFactory.php
30
+ fieldset-content,any,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/Content/FieldSetContentElementMResourceFactory.php
31
+ fieldset-legend,none,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/FieldSet/Legend/FieldSetLegendElementMResourceFactory.php
32
+ fileupload-input,none,,yes,,field,Mosaic/NodeTypes/Pro/Form/Form/MElements/FileUpload/FileUploadElementTypeFactory.php
33
+ form,any,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/FormElementTypeFactory.php
34
+ form-error,none,,yes,,form,Mosaic/NodeTypes/Pro/Form/Form/MElements/FormError/FormErrorElementTypeFactory.php
35
+ form-multi-steps,allow,form-multi-steps-steps|multi-steps-forms,yes,,field|form|form-multi-steps,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/MultiStepsElementTypeFactory.php
36
+ form-multi-steps-step,any,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Steps/Step/StepElementTypeFactory.php
37
+ form-multi-steps-steps,allow,form-multi-steps-step,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Steps/StepsElementTypeFactory.php
38
+ form-wrapper,allow,form|success-screen,yes,,form-wrapper,Mosaic/NodeTypes/Pro/Form/FormWrapperElementTypeFactory.php
39
+ googlemaps,none,,,,,Mosaic/NodeTypes/GoogleMaps/GoogleMapsElementTypeFactory.php
40
+ hidden-input,none,,yes,,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/HiddenInput/HiddenInputElementTypeFactory.php
41
+ icon,none,,,,,Mosaic/NodeTypes/Icon/IconElementTypeFactory.php
42
+ image,none,,,,,Mosaic/NodeTypes/Image/ImageElementTypeFactory.php
43
+ label,none,,yes,yes,field,Mosaic/NodeTypes/Pro/Form/Form/MElements/Label/LabelElementTypeFactory.php
44
+ list,allow,list-item|list-loop-items,,,,Mosaic/NodeTypes/ListElement/ListElementTypeFactory.php
45
+ list-item,any,,yes,,list|list-loop-items|wp-menu,Mosaic/NodeTypes/ListElement/ListItem/ListItemElementTypeFactory.php
46
+ list-loop-items,allow,list-item,yes,,list,Mosaic/NodeTypes/ListElement/ListLoopItems/ListLoopItemsElementTypeFactory.php
47
+ loop,allow,loop-pagination,,,,Mosaic/NodeTypes/Loop/LoopElementTypeFactory.php
48
+ loop-item,any,,yes,,loop-items,Mosaic/NodeTypes/Loop/LoopItems/LoopItem/LoopItemElementTypeFactory.php
49
+ loop-items,allow,loop-item,yes,yes,,Mosaic/NodeTypes/Loop/LoopItems/LoopItemsElementTypeFactory.php
50
+ loop-no-result,any,,,yes,,Mosaic/NodeTypes/Loop/LoopNoResult/LoopNoResultElementTypeFactory.php
51
+ loop-pagination,any,,yes,,loop,Mosaic/NodeTypes/Loop/LoopPagination/LoopPaginationElementTypeFactory.php
52
+ loop-pagination-button-next,any,,yes,,loop-pagination,Mosaic/NodeTypes/Loop/LoopPagination/Button/ButtonNext/LoopPaginationButtonNextElementTypeFactory.php
53
+ loop-pagination-button-previous,any,,yes,,loop-pagination,Mosaic/NodeTypes/Loop/LoopPagination/Button/ButtonPrevious/LoopPaginationButtonPreviousElementTypeFactory.php
54
+ loop-pagination-number,none,,,,,Mosaic/NodeTypes/Loop/LoopPagination/Numbers/Number/LoopPaginationNumberElementTypeFactory.php
55
+ loop-pagination-numbers,allow,loop-pagination-number,yes,yes,loop-pagination,Mosaic/NodeTypes/Loop/LoopPagination/Numbers/LoopPaginationNumbersElementTypeFactory.php
56
+ master-root,none,,,,,Mosaic/NodeTypes/Root/Master/MasterRootElementTypeFactory.php
57
+ menu,any,,,,,Mosaic/NodeTypes/Menu/MenuElementTypeFactory.php
58
+ menu-link,any,,,,,Mosaic/NodeTypes/Menu/MenuLink/MenuLinkElementTypeFactory.php
59
+ modal,any,,,,,Mosaic/NodeTypes/Dialog/Modal/ModalElementTypeFactory.php
60
+ modal-overlay,any,,yes,,modal,Mosaic/NodeTypes/Dialog/Modal/ModalOverlay/ModalOverlayElementTypeFactory.php
61
+ modal-window,any,,,,,Mosaic/NodeTypes/Dialog/Modal/ModalWindow/ModalWindowElementTypeFactory.php
62
+ multi-steps-back-button,any,,yes,yes,multi-steps-form-step,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/Button/ButtonStepBack/FormStepButtonBackElementTypeFactory.php
63
+ multi-steps-form-step,any,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/FormStepElementTypeFactory.php
64
+ multi-steps-forms,allow,form-multi-steps,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormsElementTypeFactory.php
65
+ multi-steps-next-button,any,,yes,yes,multi-steps-form-step,Mosaic/NodeTypes/Pro/Form/Form/MElements/MultiSteps/Forms/FormStep/Button/ButtonStepNext/FormStepButtonNextElementTypeFactory.php
66
+ navbar,none,,yes,yes,navbar,Mosaic/NodeTypes/Navbar/NavbarElementTypeFactory.php
67
+ navbar-toggle,any,,yes,yes,navbar|navbar-toggle|navigation,Mosaic/NodeTypes/Navbar/NavbarToggle/NavbarToggleElementTypeFactory.php
68
+ navigation,any,,yes,yes,navbar|navbar-toggle|navigation,Mosaic/NodeTypes/Navbar/Navigation/NavigationElementTypeFactory.php
69
+ openstreetmap,none,,,,,Mosaic/NodeTypes/OpenStreetMap/OpenStreetMapElementTypeFactory.php
70
+ radio-input,none,,yes,,choice,Mosaic/NodeTypes/Pro/Form/Form/MElements/Radio/RadioInput/RadioInputElementTypeFactory.php
71
+ recaptcha,none,,yes,,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/Recaptcha/RecaptchaElementTypeFactory.php
72
+ section,any,,yes,,section,Mosaic/NodeTypes/Section/SectionElementTypeFactory.php
73
+ select-input,complex,,yes,,field,Mosaic/NodeTypes/Pro/Form/Form/MElements/Select/SelectElementTypeFactory.php
74
+ select-option,none,,yes,,select-input,Mosaic/NodeTypes/Pro/Form/Form/MElements/Select/Option/OptionElementTypeFactory.php
75
+ slider,any,,,,,Mosaic/NodeTypes/Pro/Slider/SliderElementTypeFactory.php
76
+ slider-arrow-left,none,,,yes,,Mosaic/NodeTypes/Pro/Slider/SliderArrow/SliderArrowLeft/SliderArrowLeftElementTypeFactory.php
77
+ slider-arrow-right,none,,,yes,,Mosaic/NodeTypes/Pro/Slider/SliderArrow/SliderArrowRight/SliderArrowRightMElementTypeFactory.php
78
+ slider-loop-slides,allow,slider-slides,yes,yes,slider-slides,Mosaic/NodeTypes/Pro/Slider/SliderLoopSlides/SliderLoopSlidesElementTypeFactory.php
79
+ slider-navigation,allow,slider-navigation-bullet,yes,yes,slider|slider-navigation,Mosaic/NodeTypes/Pro/Slider/SliderNavigation/SliderNavigationElementTypeFactory.php
80
+ slider-navigation-bullet,none,,,,,Mosaic/NodeTypes/Pro/Slider/SliderNavigation/SliderNavigationBullet/SliderNavigationBulletElementTypeFactory.php
81
+ slider-slide,any,,yes,,slider-loop-slides|slider-slides,Mosaic/NodeTypes/Pro/Slider/SliderSlides/SliderSlide/SliderSlideElementTypeFactory.php
82
+ slider-slides,allow,slider-loop-slides|slider-slide,,yes,,Mosaic/NodeTypes/Pro/Slider/SliderSlides/SliderSlidesElementTypeFactory.php
83
+ styleguide-a,none,,,,,Mosaic/NodeTypes/SG/SGA/SGAElementTypeFactory.php
84
+ styleguide-entry-content,any,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentElementTypeFactory.php
85
+ styleguide-entry-content-button,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentButton/SGEntryContentButtonElementTypeFactory.php
86
+ styleguide-entry-content-code,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentCode/SGEntryContentCodeElementTypeFactory.php
87
+ styleguide-entry-content-image,allow,styleguide-entry-content-image-caption|styleguide-entry-content-image-img,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageElementTypeFactory.php
88
+ styleguide-entry-content-image-caption,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageCaption/SGEntryContentImageCaptionElementTypeFactory.php
89
+ styleguide-entry-content-image-img,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentImage/SGEntryContentImageImg/SGEntryContentImageImgElementTypeFactory.php
90
+ styleguide-entry-content-list,allow,styleguide-entry-content-list-item,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentList/SGEntryContentListElementTypeFactory.php
91
+ styleguide-entry-content-list-item,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentList/SGEntryContentListItem/SGEntryContentListItemElementTypeFactory.php
92
+ styleguide-entry-content-preformatted,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPreformatted/SGEntryContentPreformattedElementTypeFactory.php
93
+ styleguide-entry-content-pullquote,allow,styleguide-entry-content-pullquote-cite|styleguide-entry-content-pullquote-paragraph,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteElementTypeFactory.php
94
+ styleguide-entry-content-pullquote-cite,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteCite/SGEntryContentPullQuoteCiteElementTypeFactory.php
95
+ styleguide-entry-content-pullquote-paragraph,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentPullQuote/SGEntryContentPullQuoteParagraph/SGEntryContentPullQuoteParagraphElementTypeFactory.php
96
+ styleguide-entry-content-quote-cite,none,,,,,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentQuote/SGEntryContentQuoteCite/SGEntryContentQuoteCiteElementTypeFactory.php
97
+ styleguide-entry-content-separator,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentSeparator/SGEntryContentSeparatorElementTypeFactory.php
98
+ styleguide-entry-content-text,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentText/SGEntryContentTextElementTypeFactory.php
99
+ styleguide-entry-content-text-quote,complex,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentQuote/SGEntryContentQuoteElementTypeFactory.php
100
+ styleguide-entry-content-verse,none,,yes,,styleguide-entry-content,Mosaic/NodeTypes/SG/SGEntryContent/SGEntryContentVerse/SGEntryContentVerseElementTypeFactory.php
101
+ styleguide-root,none,,,,,Mosaic/NodeTypes/Root/StyleGuide/StyleGuideRootElementTypeFactory.php
102
+ submit-button,allow,submit-label|submit-loading,yes,yes,form,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/SubmitButtonElementTypeFactory.php
103
+ submit-label,none,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/Label/SubmitLabelElementTypeFactory.php
104
+ submit-loading,none,,,yes,,Mosaic/NodeTypes/Pro/Form/Form/MElements/SubmitButton/Loading/SubmitLoadingElementTypeFactory.php
105
+ success-screen,any,,,yes,,Mosaic/NodeTypes/Pro/Form/SuccessScreen/SuccessScreenElementTypeFactory.php
106
+ tabs,allow,tabs-content|tabs-menu,,yes,,Mosaic/NodeTypes/Pro/Tabs/TabsElementTypeFactory.php
107
+ tabs-content,allow,tabs-loop-tab-panes|tabs-tab-pane,,yes,,Mosaic/NodeTypes/Pro/Tabs/TabsContent/TabsContentElementTypeFactory.php
108
+ tabs-loop-tab-panes,allow,tabs-tab-pane,,yes,,Mosaic/NodeTypes/Pro/Tabs/TabsContent/LoopTabPanes/TabLoopTabPanesElementTypeFactory.php
109
+ tabs-loop-tabs,allow,tabs-tab,yes,yes,tabs-menu,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/LoopTabs/TabLoopTabsElementTypeFactory.php
110
+ tabs-menu,allow,tabs-loop-tabs|tabs-tab,,yes,,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/TabsMenuElementTypeFactory.php
111
+ tabs-tab,any,,yes,yes,tabs-loop-tabs|tabs-menu,Mosaic/NodeTypes/Pro/Tabs/TabsMenu/Tab/TabElementTypeFactory.php
112
+ tabs-tab-pane,any,,,yes,,Mosaic/NodeTypes/Pro/Tabs/TabsContent/TabPane/TabPaneElementTypeFactory.php
113
+ template-external,none,,yes,,,Mosaic/NodeTypes/Template/TemplateExternal/TemplateExternalElementTypeFactory.php
114
+ template-internal,any,,,yes,,Mosaic/NodeTypes/Template/TemplateInternal/TemplateInternalElementTypeFactory.php
115
+ text,none,,,yes,,Mosaic/NodeTypes/Text/TextElementTypeFactory.php
116
+ text-input,none,,yes,,field,Mosaic/NodeTypes/Pro/Form/Form/MElements/InputText/InputTextElementTypeFactory.php
117
+ textarea-input,none,,yes,,field,Mosaic/NodeTypes/Pro/Form/Form/MElements/TextArea/TextAreaElementTypeFactory.php
118
+ turnstile,none,,yes,,choice-field|field|form,Mosaic/NodeTypes/Pro/Form/Form/MElements/Turnstile/TurnstileElementTypeFactory.php
119
+ video,none,,,,,Mosaic/NodeTypes/Video/VideoElementTypeFactory.php
120
+ vimeo,none,,,,,Mosaic/NodeTypes/Vimeo/VimeoElementTypeFactory.php
121
+ wp-menu,allow,list-item,yes,,list,Mosaic/NodeTypes/Menu/WPMenu/WPMenuElementTypeFactory.php
122
+ wpContent,none,,,,,Mosaic/NodeTypes/WPContent/WPContentElementTypeFactory.php
123
+ wpShortcode,none,,,,,Mosaic/NodeTypes/WPShortcode/WPShortcodeElementTypeFactory.php
124
+ wysiwyg-linebreak,none,,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygLineBreak/WysiwygLineBreakNodeTypeFactory.php
125
+ wysiwyg-link,none,,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygLink/WysiwygLinkElementTypeFactory.php
126
+ wysiwyg-span,none,,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygSpan/WysiwygSpanElementTypeFactory.php
127
+ wysiwyg-text,none,,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygText/WysiwygTextNodeTypeFactory.php
128
+ wysiwyg-variable,none,,,,,Mosaic/NodeTypes/Wysiwyg/WysiwygVariable/WysiwygVariableNodeTypeFactory.php
129
+ youtube,none,,,,,Mosaic/NodeTypes/YouTube/YouTubeElementTypeFactory.php
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mosaic-headless",
3
- "version": "1.26.1",
3
+ "version": "1.27.0",
4
4
  "description": "AI-agent skill: build Mosaic Pro (Nextend) WordPress sites by writing the underlying data model directly - 23 custom tables, no visual editor, no DOM. Every node type, style property and node property swept against a live install and asserted on the delivered HTML and compiled CSS. Installs into Claude Code, Cursor, Codex CLI, Gemini CLI, Copilot, Continue, Windsurf and Claude.ai.",
5
5
  "keywords": [
6
6
  "wordpress",
@@ -372,3 +372,30 @@ Two things come out of it:
372
372
  The general form: a check that confirms a resource EXISTS is not a check that the
373
373
  control WORKS, and anything living in a shared layout needs verifying on every
374
374
  page that includes it, not on the page it was designed for.
375
+
376
+ ## Three ways a form comes back empty, none of them an error
377
+
378
+ A form page built in one pass rendered two fieldsets, one stray label and **zero
379
+ controls**. The commit succeeded, the response carried no exception, and the HTML
380
+ was valid. Every field had been dropped on the way in, for three different reasons:
381
+
382
+ - **`label` and the inputs need a `field` above them.** They declare
383
+ `canBeNestedChildFor` and walk the parent chain looking for one; committed under
384
+ a plain div they are refused and discarded. `placement-rules.csv` now carries a
385
+ `nested_under` column naming exactly what each type is looking for — 54 types
386
+ have one, and the names rarely share a prefix (`radio-input` wants `choice`,
387
+ `label` wants `field`, `loop-pagination` wants `loop`).
388
+ - **`fieldset` does not take fields.** It renders `fieldset-legend` +
389
+ `fieldset-content`, and direct children are dropped. Neither type was in
390
+ `node-types.csv` at all, because they are declared by an
391
+ `*ElementMResourceFactory.php` and every extractor here walked
392
+ `*ElementTypeFactory.php` only. Two types were missing from the catalog; the
393
+ walk now covers both and the count went 126 → 128.
394
+ - **`select-option` is a leaf and its label is the `text` PROPERTY.** Give it a
395
+ `wysiwyg-text` child and the option renders with an empty label: a dropdown that
396
+ opens onto five blank lines, which looks like a styling problem and is not.
397
+
398
+ The through-line is the one this file keeps recording: Mosaic accepts a write it
399
+ cannot use and says nothing. The defence is to read the delivered page back and
400
+ count what arrived — `verify_components.py` now asserts the control count, the option
401
+ labels and that an empty required form is actually refused.