@mindfiredigital/ignix-lite-engine 1.1.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.
Files changed (91) hide show
  1. package/.turbo/turbo-build.log +22 -0
  2. package/CHANGELOG.md +7 -0
  3. package/LICENSE +21 -0
  4. package/README.md +283 -0
  5. package/dist/index.d.ts +171 -0
  6. package/dist/index.js +2540 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/manifests/accordion.json +61 -0
  9. package/dist/manifests/alert.json +69 -0
  10. package/dist/manifests/avatar.json +75 -0
  11. package/dist/manifests/badge.json +74 -0
  12. package/dist/manifests/breadcrumb.json +87 -0
  13. package/dist/manifests/button.json +85 -0
  14. package/dist/manifests/card.json +91 -0
  15. package/dist/manifests/checkbox.json +122 -0
  16. package/dist/manifests/codeblock.json +63 -0
  17. package/dist/manifests/combobox.json +33 -0
  18. package/dist/manifests/dialog.json +64 -0
  19. package/dist/manifests/divider.json +47 -0
  20. package/dist/manifests/dropdown.json +105 -0
  21. package/dist/manifests/form.json +81 -0
  22. package/dist/manifests/grid.json +143 -0
  23. package/dist/manifests/input.json +99 -0
  24. package/dist/manifests/meter.json +103 -0
  25. package/dist/manifests/navigation.json +70 -0
  26. package/dist/manifests/progress.json +88 -0
  27. package/dist/manifests/radio.json +121 -0
  28. package/dist/manifests/select.json +109 -0
  29. package/dist/manifests/skeleton.json +101 -0
  30. package/dist/manifests/tab.json +88 -0
  31. package/dist/manifests/table.json +92 -0
  32. package/dist/manifests/textarea.json +117 -0
  33. package/dist/manifests/toast.json +157 -0
  34. package/dist/manifests/tooltip.json +115 -0
  35. package/dist/vector-index.json +14015 -0
  36. package/package.json +33 -0
  37. package/src/global.d.ts +3 -0
  38. package/src/index.ts +14 -0
  39. package/src/manifests/accordion.json +61 -0
  40. package/src/manifests/alert.json +69 -0
  41. package/src/manifests/avatar.json +75 -0
  42. package/src/manifests/badge.json +74 -0
  43. package/src/manifests/breadcrumb.json +87 -0
  44. package/src/manifests/button.json +85 -0
  45. package/src/manifests/card.json +91 -0
  46. package/src/manifests/checkbox.json +122 -0
  47. package/src/manifests/codeblock.json +63 -0
  48. package/src/manifests/combobox.json +33 -0
  49. package/src/manifests/dialog.json +64 -0
  50. package/src/manifests/divider.json +47 -0
  51. package/src/manifests/dropdown.json +105 -0
  52. package/src/manifests/form.json +81 -0
  53. package/src/manifests/grid.json +143 -0
  54. package/src/manifests/index.ts +49 -0
  55. package/src/manifests/input.json +99 -0
  56. package/src/manifests/meter.json +103 -0
  57. package/src/manifests/navigation.json +70 -0
  58. package/src/manifests/progress.json +88 -0
  59. package/src/manifests/radio.json +121 -0
  60. package/src/manifests/select.json +109 -0
  61. package/src/manifests/skeleton.json +101 -0
  62. package/src/manifests/tab.json +88 -0
  63. package/src/manifests/table.json +92 -0
  64. package/src/manifests/textarea.json +117 -0
  65. package/src/manifests/toast.json +157 -0
  66. package/src/manifests/tooltip.json +115 -0
  67. package/src/tools/build-index.ts +43 -0
  68. package/src/tools/check-a11y.ts +96 -0
  69. package/src/tools/embedder.ts +18 -0
  70. package/src/tools/generate-theme.ts +42 -0
  71. package/src/tools/get-emmet.ts +64 -0
  72. package/src/tools/get-manifests.ts +55 -0
  73. package/src/tools/handoff.ts +302 -0
  74. package/src/tools/intent-engine.ts +215 -0
  75. package/src/tools/list-components.ts +20 -0
  76. package/src/tools/preview.ts +186 -0
  77. package/src/tools/search-index.ts +82 -0
  78. package/src/tools/theme-palette.ts +65 -0
  79. package/src/tools/theme-tokens.ts +176 -0
  80. package/src/tools/token-counter.ts +59 -0
  81. package/src/tools/validator.ts +353 -0
  82. package/src/types.ts +63 -0
  83. package/src/utils/a11y-rules.ts +873 -0
  84. package/src/utils/a11y-types.ts +15 -0
  85. package/src/utils/cosine.ts +15 -0
  86. package/src/utils/emmet-helpers.ts +283 -0
  87. package/src/utils/intent-helpers.ts +66 -0
  88. package/src/utils/intent-parser.ts +175 -0
  89. package/src/utils/tokenizer.ts +7 -0
  90. package/tsconfig.json +17 -0
  91. package/tsup.config.ts +10 -0
@@ -0,0 +1,74 @@
1
+ {
2
+ "component": "badge",
3
+ "version": "2.0",
4
+ "description": "Status indicator using mark or span[role=status] with intent styling.",
5
+
6
+ "element": "badge",
7
+
8
+ "emmet": "mark[data-intent=?]{Label}",
9
+ "tokens": 3,
10
+
11
+ "props": {
12
+ "data-intent": {
13
+ "type": "enum",
14
+ "values": ["success", "danger", "warning", "neutral"],
15
+ "default": "neutral",
16
+ "native": false,
17
+ "agent_hint": "Controls badge color"
18
+ },
19
+
20
+ "role": {
21
+ "type": "enum",
22
+ "values": ["status"],
23
+ "native": true,
24
+ "agent_hint": "Required when using span"
25
+ }
26
+ },
27
+
28
+ "allowed_elements": ["mark", "span"],
29
+
30
+ "required_conditions": ["span must have role=status"],
31
+
32
+ "states": [],
33
+
34
+ "required_props": [],
35
+
36
+ "forbidden_props": ["class", "variant", "color", "style", "onclick"],
37
+
38
+ "do": [
39
+ "Use mark for standard badges",
40
+ "Use span with role=status for accessibility cases",
41
+ "Use data-intent to convey meaning",
42
+ "Keep text short"
43
+ ],
44
+
45
+ "dont": [
46
+ "Do not use class attribute",
47
+ "Do not use variant or color props",
48
+ "Do not attach JS handlers",
49
+ "Do not use span without role=status"
50
+ ],
51
+
52
+ "examples": [
53
+ {
54
+ "label": "Basic badge",
55
+ "emmet": "mark[data-intent=neutral]{Active}",
56
+ "html": "<mark data-intent=\"neutral\">Active</mark>"
57
+ },
58
+ {
59
+ "label": "Success badge",
60
+ "emmet": "mark[data-intent=success]{Active}",
61
+ "html": "<mark data-intent=\"success\">Active</mark>"
62
+ },
63
+ {
64
+ "label": "Danger badge",
65
+ "emmet": "mark[data-intent=danger]{Error}",
66
+ "html": "<mark data-intent=\"danger\">Error</mark>"
67
+ },
68
+ {
69
+ "label": "Status badge",
70
+ "emmet": "span[role=status data-intent=success]{Active}",
71
+ "html": "<span role=\"status\" data-intent=\"success\">Active</span>"
72
+ }
73
+ ]
74
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "component": "breadcrumb",
3
+ "version": "2.0",
4
+ "description": "Displays hierarchical navigation path using native nav > ol > li > a structure.",
5
+
6
+ "element": "nav",
7
+
8
+ "emmet": "nav[aria-label=Breadcrumb]>ol>(li>a[href=?])*3",
9
+
10
+ "props": {
11
+ "data-style": {
12
+ "type": "enum",
13
+
14
+ "values": ["chevron", "slash", "guillemet", "arrow", "thread", "pipe"],
15
+
16
+ "default": "chevron",
17
+ "native": false,
18
+ "agent_hint": "Controls breadcrumb separator style."
19
+ },
20
+
21
+ "data-intent": {
22
+ "type": "enum",
23
+
24
+ "values": ["primary", "success", "warning", "danger", "gradient"],
25
+
26
+ "default": "primary",
27
+ "native": false,
28
+ "agent_hint": "Controls active breadcrumb color intent."
29
+ },
30
+
31
+ "aria-label": {
32
+ "type": "string",
33
+ "native": true,
34
+ "required": true,
35
+ "agent_hint": "Use aria-label='Breadcrumb' for accessibility."
36
+ }
37
+ },
38
+
39
+ "states": [],
40
+ "slots": {},
41
+
42
+ "forbidden_props": [
43
+ "variant",
44
+ "color",
45
+ "appearance",
46
+ "separator",
47
+ "items",
48
+ "activeItem",
49
+ "class"
50
+ ],
51
+
52
+ "required_props": ["aria-label"],
53
+
54
+ "required_slots": [],
55
+
56
+ "do": [
57
+ "Use nav as breadcrumb container",
58
+ "Use ordered list structure",
59
+ "Mark current page using aria-current='page'"
60
+ ],
61
+
62
+ "dont": [
63
+ "Do not use class attribute",
64
+ "Do not replace nav with div",
65
+ "Do not pass breadcrumb items as props"
66
+ ],
67
+
68
+ "examples": [
69
+ {
70
+ "label": "Default breadcrumb",
71
+ "emmet": "nav[aria-label=Breadcrumb]>ol>(li>a[href=?])*3",
72
+ "html": "<nav aria-label=\"Breadcrumb\"><ol><li><a href=\"#\">Home</a></li><li><a href=\"#\">Docs</a></li><li><a aria-current=\"page\">Breadcrumb</a></li></ol></nav>"
73
+ },
74
+
75
+ {
76
+ "label": "Slash style",
77
+ "emmet": "nav[aria-label=Breadcrumb data-style=slash]>ol>(li>a[href=?])*3",
78
+ "html": "<nav aria-label=\"Breadcrumb\" data-style=\"slash\"></nav>"
79
+ },
80
+
81
+ {
82
+ "label": "Danger intent",
83
+ "emmet": "nav[aria-label=Breadcrumb data-intent=danger]>ol>(li>a[href=?])*3",
84
+ "html": "<nav aria-label=\"Breadcrumb\" data-intent=\"danger\"></nav>"
85
+ }
86
+ ]
87
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "component": "button",
3
+ "version": "2.0",
4
+ "description": "Triggers an action. Renders as native <button>.",
5
+
6
+ "element": "button",
7
+
8
+ "emmet": "button[data-intent=?]{label}",
9
+
10
+
11
+ "props": {
12
+ "data-intent": {
13
+ "type": "enum",
14
+ "values": ["primary", "danger", "warning", "success", "neutral", "ghost"],
15
+ "default": "primary",
16
+ "native": false,
17
+ "agent_hint": "Use danger for destructive actions. Use ghost for secondary actions."
18
+ },
19
+
20
+ "disabled": {
21
+ "type": "boolean",
22
+ "native": true,
23
+ "agent_hint": "Use native disabled attribute"
24
+ },
25
+
26
+ "aria-busy": {
27
+ "type": "boolean",
28
+ "native": true,
29
+ "agent_hint": "Use for loading state"
30
+ },
31
+
32
+ "type": {
33
+ "type": "enum",
34
+ "values": ["button", "submit", "reset"],
35
+ "default": "button",
36
+ "native": true
37
+ }
38
+ },
39
+
40
+ "states": ["disabled", "aria-busy"],
41
+
42
+ "forbidden_props": [
43
+ "variant",
44
+ "color",
45
+ "appearance",
46
+ "colorScheme",
47
+ "isLoading",
48
+ "isDisabled",
49
+ "size",
50
+ "class"
51
+ ],
52
+
53
+ "required_props": [],
54
+ "required_slots": [],
55
+
56
+ "do": [
57
+ "Use data-intent='danger' for destructive actions",
58
+ "Use aria-busy='true' for loading state",
59
+ "Use type='submit' inside forms"
60
+ ],
61
+
62
+ "dont": [
63
+ "Do not use class attribute",
64
+ "Do not use variant or color props",
65
+ "Do not use isLoading or isDisabled"
66
+ ],
67
+
68
+ "examples": [
69
+ {
70
+ "label": "Primary button",
71
+ "emmet": "button[data-intent=primary]{Save}",
72
+ "html": "<button data-intent=\"primary\">Save</button>"
73
+ },
74
+ {
75
+ "label": "Danger button",
76
+ "emmet": "button[data-intent=danger]{Delete}",
77
+ "html": "<button data-intent=\"danger\">Delete</button>"
78
+ },
79
+ {
80
+ "label": "Loading button",
81
+ "emmet": "button[aria-busy=true]{Saving...}",
82
+ "html": "<button aria-busy=\"true\">Saving...</button>"
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "component": "card",
3
+ "version": "2.0",
4
+ "description": "Displays structured content using semantic slots for avatar, title, metadata, body, actions, and footer. Renders as native article element.",
5
+
6
+ "element": "article",
7
+
8
+ "emmet": "article>(img[slot=avatar])+(span[slot=title])+(p[slot=body])",
9
+
10
+
11
+ "props": {},
12
+
13
+ "states": [],
14
+
15
+ "slots": {
16
+ "avatar": {
17
+ "required": false,
18
+
19
+ "element": ["img", "span"],
20
+
21
+ "agent_hint": "Avatar image or visual content."
22
+ },
23
+
24
+ "title": {
25
+ "required": true,
26
+
27
+ "element": ["span", "h1", "h2", "h3"],
28
+
29
+ "agent_hint": "Primary card heading."
30
+ },
31
+
32
+ "meta": {
33
+ "required": false,
34
+
35
+ "element": ["span", "small"],
36
+
37
+ "agent_hint": "Subtitle or metadata."
38
+ },
39
+
40
+ "body": {
41
+ "required": true,
42
+
43
+ "element": ["p"],
44
+
45
+ "agent_hint": "Main content area."
46
+ },
47
+
48
+ "action": {
49
+ "required": false,
50
+
51
+ "element": ["button", "a"],
52
+
53
+ "agent_hint": "Primary action area."
54
+ },
55
+
56
+ "footer": {
57
+ "required": false,
58
+
59
+ "element": ["span", "small"],
60
+
61
+ "agent_hint": "Footer metadata."
62
+ }
63
+ },
64
+
65
+ "forbidden_props": [
66
+ "title",
67
+ "subtitle",
68
+ "avatar",
69
+ "image",
70
+ "body",
71
+ "footer",
72
+ "actionLabel",
73
+ "class"
74
+ ],
75
+
76
+ "required_props": [],
77
+
78
+ "required_slots": ["title", "body"],
79
+
80
+ "do": [
81
+ "Use slot attributes for content placement",
82
+ "Use article as card container",
83
+ "Place actions inside slot='action'"
84
+ ],
85
+
86
+ "dont": [
87
+ "Do not pass title or body as props",
88
+ "Do not replace slots with attributes",
89
+ "Do not use class attribute"
90
+ ]
91
+ }
@@ -0,0 +1,122 @@
1
+ {
2
+ "component": "checkbox",
3
+ "version": "2.0",
4
+ "description": "Checkbox for boolean selection. Must be wrapped inside a label element.",
5
+
6
+ "element": "input",
7
+
8
+ "emmet": "label[data-intent=? data-size=?]>(input[type=checkbox]+{Label})",
9
+
10
+
11
+ "props": {
12
+ "type": {
13
+ "type": "enum",
14
+ "values": ["checkbox"],
15
+ "default": "checkbox",
16
+ "native": true,
17
+ "agent_hint": "Always use type=checkbox"
18
+ },
19
+
20
+ "checked": {
21
+ "type": "boolean",
22
+ "native": true,
23
+ "agent_hint": "Marks checkbox as checked"
24
+ },
25
+
26
+ "disabled": {
27
+ "type": "boolean",
28
+ "native": true,
29
+ "agent_hint": "Disables checkbox"
30
+ },
31
+
32
+ "required": {
33
+ "type": "boolean",
34
+ "native": true,
35
+ "agent_hint": "Marks checkbox as required"
36
+ },
37
+
38
+ "name": {
39
+ "type": "string",
40
+ "native": true,
41
+ "agent_hint": "Used for grouping checkboxes"
42
+ },
43
+
44
+ "value": {
45
+ "type": "string",
46
+ "native": true,
47
+ "agent_hint": "Submitted value in forms"
48
+ },
49
+
50
+ "data-intent": {
51
+ "type": "enum",
52
+ "values": ["success", "danger", "warning", "neutral"],
53
+ "default": "neutral",
54
+ "native": false,
55
+ "agent_hint": "Controls checkbox color (applied on label)"
56
+ },
57
+
58
+ "data-size": {
59
+ "type": "enum",
60
+ "values": ["sm", "md", "lg"],
61
+ "default": "md",
62
+ "native": false,
63
+ "agent_hint": "Controls checkbox size (applied on label)"
64
+ }
65
+ },
66
+
67
+ "states": ["checked", "disabled"],
68
+
69
+ "required_props": ["type"],
70
+
71
+ "required_wrapper": "label",
72
+
73
+ "forbidden_props": ["class", "variant", "color", "style", "onclick"],
74
+
75
+ "do": [
76
+ "Wrap checkbox inside label",
77
+ "Use checked for default state",
78
+ "Use name and value for grouping",
79
+ "Use data-intent for styling",
80
+ "Use data-size for scaling"
81
+ ],
82
+
83
+ "dont": [
84
+ "Do not use class attribute",
85
+ "Do not use variant or color props",
86
+ "Do not use inline JS handlers",
87
+ "Do not place checkbox outside label"
88
+ ],
89
+
90
+ "examples": [
91
+ {
92
+ "label": "Basic checkbox",
93
+ "emmet": "label>(input[type=checkbox]+{Accept terms})",
94
+ "html": "<label><input type=\"checkbox\" />Accept terms</label>"
95
+ },
96
+ {
97
+ "label": "Checked checkbox",
98
+ "emmet": "label>(input[type=checkbox checked]+{Checked})",
99
+ "html": "<label><input type=\"checkbox\" checked />Checked</label>"
100
+ },
101
+ {
102
+ "label": "Disabled checkbox",
103
+ "emmet": "label>(input[type=checkbox disabled]+{Disabled})",
104
+ "html": "<label><input type=\"checkbox\" disabled />Disabled</label>"
105
+ },
106
+ {
107
+ "label": "Intent variant",
108
+ "emmet": "label[data-intent=success]>(input[type=checkbox checked]+{Success})",
109
+ "html": "<label data-intent=\"success\"><input type=\"checkbox\" checked />Success</label>"
110
+ },
111
+ {
112
+ "label": "Size variant",
113
+ "emmet": "label[data-size=lg]>(input[type=checkbox]+{Large})",
114
+ "html": "<label data-size=\"lg\"><input type=\"checkbox\" />Large</label>"
115
+ },
116
+ {
117
+ "label": "Checkbox group",
118
+ "emmet": "label>(input[type=checkbox name=lang value=js]+{JavaScript})",
119
+ "html": "<label><input type=\"checkbox\" name=\"lang\" value=\"js\" />JavaScript</label>"
120
+ }
121
+ ]
122
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "component": "code",
3
+ "version": "2.0",
4
+
5
+ "description": "Displays formatted code snippets using native pre and code elements with language metadata support and horizontal scrolling.",
6
+
7
+ "element": "pre > code",
8
+
9
+ "emmet": "pre>code[data-lang=?]{content}",
10
+
11
+
12
+ "props": {
13
+ "data-lang": {
14
+ "type": "string",
15
+ "values": ["js", "ts", "python", "bash", "html", "css", "json"],
16
+ "default": "text",
17
+ "native": false,
18
+ "agent_hint": "Specify language metadata for code examples."
19
+ }
20
+ },
21
+
22
+ "states": [],
23
+
24
+ "forbidden_props": ["language", "variant", "theme", "class"],
25
+
26
+ "required_props": [],
27
+
28
+ "required_slots": [],
29
+
30
+ "required_children": ["code"],
31
+
32
+ "do": [
33
+ "Wrap code inside pre element",
34
+ "Use data-lang to indicate language",
35
+ "Use code element for code content"
36
+ ],
37
+
38
+ "dont": [
39
+ "Do not use div instead of pre",
40
+ "Do not use language prop",
41
+ "Do not use class attribute"
42
+ ],
43
+
44
+ "examples": [
45
+ {
46
+ "label": "JavaScript code",
47
+ "emmet": "pre>code[data-lang=js]{function greet(){}}",
48
+ "html": "<pre><code data-lang=\"js\">function greet(){}</code></pre>"
49
+ },
50
+
51
+ {
52
+ "label": "Python code",
53
+ "emmet": "pre>code[data-lang=python]{print('Hello')}",
54
+ "html": "<pre><code data-lang=\"python\">print('Hello')</code></pre>"
55
+ },
56
+
57
+ {
58
+ "label": "Bash command",
59
+ "emmet": "pre>code[data-lang=bash]{npm install ignix-lite}",
60
+ "html": "<pre><code data-lang=\"bash\">npm install ignix-lite</code></pre>"
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "component": "ix-combobox",
3
+ "element": "ix-combobox",
4
+
5
+ "emmet": "ix-combobox>(label>(span[data-chips])+input[placeholder=?]+button[data-clear]{Clear})+ul>(li{Option})*",
6
+
7
+ "required_children": ["label", "input", "ul", "li"],
8
+
9
+ "optional_children": ["[data-chips]", "button[data-clear]"],
10
+
11
+ "props": {
12
+ "multiple": {
13
+ "type": "boolean",
14
+ "native": true,
15
+ "agent_hint": "Enables chip rendering and multi-select mode."
16
+ },
17
+
18
+ "data-intent": {
19
+ "type": "enum",
20
+ "values": ["primary", "success", "warning", "danger", "gradient"]
21
+ },
22
+
23
+ "data-clear": {
24
+ "type": "boolean",
25
+ "native": false
26
+ },
27
+
28
+ "data-chips": {
29
+ "type": "boolean",
30
+ "native": false
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "component": "dialog",
3
+ "version": "2.0",
4
+ "description": "Modal dialog used for confirmations, warnings, and information display.",
5
+
6
+ "element": "dialog",
7
+
8
+ "emmet": "dialog#id[data-intent=?]>(h2{Title}+p{Message}+button{Cancel}+button{Confirm})",
9
+
10
+ "props": {
11
+ "id": {
12
+ "type": "string",
13
+ "native": true,
14
+ "agent_hint": "Unique identifier used to control dialog"
15
+ },
16
+
17
+ "data-intent": {
18
+ "type": "enum",
19
+ "values": ["danger", "warning", "info"],
20
+ "default": "info",
21
+ "native": false,
22
+ "agent_hint": "Controls dialog style (danger for destructive, warning for caution)"
23
+ }
24
+ },
25
+
26
+ "states": [],
27
+
28
+ "required_props": ["id"],
29
+
30
+ "required_slots": [],
31
+
32
+ "forbidden_props": ["class", "variant", "color", "style"],
33
+
34
+ "do": [
35
+ "Always include a heading (h2)",
36
+ "Include descriptive text using p tags",
37
+ "Provide at least one action button",
38
+ "Use data-intent for styling"
39
+ ],
40
+
41
+ "dont": [
42
+ "Do not use class attribute",
43
+ "Do not attach JS handlers like onclick",
44
+ "Do not leave dialog empty"
45
+ ],
46
+
47
+ "examples": [
48
+ {
49
+ "label": "Confirm dialog",
50
+ "emmet": "dialog#confirm[data-intent=danger]>(h2{Confirm}+p{Are you sure?}+button{Cancel}+button{Delete})",
51
+ "html": "<dialog id=\"confirm\" data-intent=\"danger\"><h2>Confirm</h2><p>Are you sure?</p><button>Cancel</button><button>Delete</button></dialog>"
52
+ },
53
+ {
54
+ "label": "Warning dialog",
55
+ "emmet": "dialog#warn[data-intent=warning]>(h2{Warning}+p{Unsaved changes}+button{Close})",
56
+ "html": "<dialog id=\"warn\" data-intent=\"warning\"><h2>Warning</h2><p>Unsaved changes</p><button>Close</button></dialog>"
57
+ },
58
+ {
59
+ "label": "Info dialog",
60
+ "emmet": "dialog#info[data-intent=info]>(h2{Info}+p{Session expiring}+button{Close})",
61
+ "html": "<dialog id=\"info\" data-intent=\"info\"><h2>Info</h2><p>Session expiring</p><button>Close</button></dialog>"
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "component": "divider",
3
+ "version": "2.0",
4
+ "description": "Visual separator using semantic hr element with orientation support.",
5
+
6
+ "element": "hr",
7
+
8
+ "emmet": "hr",
9
+
10
+ "props": {
11
+ "data-orientation": {
12
+ "type": "string",
13
+
14
+ "values": ["horizontal", "vertical"],
15
+
16
+ "default": "horizontal",
17
+
18
+ "agent_hint": "Controls divider direction."
19
+ }
20
+ },
21
+
22
+ "states": [],
23
+
24
+ "forbidden_props": ["class"],
25
+
26
+ "required_props": [],
27
+
28
+ "required_slots": [],
29
+
30
+ "do": ["Use hr element", "Use data-orientation for vertical mode"],
31
+
32
+ "dont": ["Do not use div wrappers", "Do not use class attribute"],
33
+
34
+ "examples": [
35
+ {
36
+ "label": "Horizontal",
37
+ "emmet": "hr",
38
+ "html": "<hr>"
39
+ },
40
+
41
+ {
42
+ "label": "Vertical",
43
+ "emmet": "hr[data-orientation=vertical]",
44
+ "html": "<hr data-orientation=\"vertical\">"
45
+ }
46
+ ]
47
+ }