luxen-ui 0.25.0 → 0.26.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 (249) hide show
  1. package/README.md +1 -0
  2. package/bin/cli.mjs +16 -1
  3. package/cdn/custom-elements.json +402 -276
  4. package/cdn/elements/alert-dialog/alert-dialog.d.ts +3 -2
  5. package/cdn/elements/alert-dialog/alert-dialog.d.ts.map +1 -1
  6. package/cdn/elements/alert-dialog/alert-dialog.js.map +1 -1
  7. package/cdn/elements/avatar/avatar.js +1 -1
  8. package/cdn/elements/avatar/avatar.js.map +1 -1
  9. package/cdn/elements/carousel/carousel.js +1 -1
  10. package/cdn/elements/carousel/carousel.js.map +1 -1
  11. package/cdn/elements/combobox/combobox.d.ts.map +1 -1
  12. package/cdn/elements/combobox/combobox.js +2 -1
  13. package/cdn/elements/combobox/combobox.js.map +1 -1
  14. package/cdn/elements/dialog/dialog.d.ts +2 -1
  15. package/cdn/elements/dialog/dialog.d.ts.map +1 -1
  16. package/cdn/elements/dialog/dialog.js.map +1 -1
  17. package/cdn/elements/dialog/dialog.styles.js +1 -1
  18. package/cdn/elements/dialog/dialog.styles.js.map +1 -1
  19. package/cdn/elements/drawer/drawer.d.ts +7 -7
  20. package/cdn/elements/drawer/drawer.js +1 -1
  21. package/cdn/elements/drawer/drawer.js.map +1 -1
  22. package/cdn/elements/dropdown-item/dropdown-item.js +1 -1
  23. package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
  24. package/cdn/elements/input-otp/input-otp.d.ts +2 -2
  25. package/cdn/elements/input-otp/input-otp.js.map +1 -1
  26. package/cdn/elements/prose-editor/prose-editor.js +1 -1
  27. package/cdn/elements/prose-editor/prose-editor.js.map +1 -1
  28. package/cdn/elements/rating/rating.js +1 -1
  29. package/cdn/elements/rating/rating.js.map +1 -1
  30. package/cdn/elements/select/select.d.ts.map +1 -1
  31. package/cdn/elements/select/select.js +2 -1
  32. package/cdn/elements/select/select.js.map +1 -1
  33. package/cdn/elements/slider/slider.js +1 -1
  34. package/cdn/elements/slider/slider.js.map +1 -1
  35. package/cdn/elements/stories-viewer/stories-viewer.js +1 -1
  36. package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -1
  37. package/cdn/elements/table/table.meta.d.ts +55 -0
  38. package/cdn/elements/table/table.meta.d.ts.map +1 -0
  39. package/cdn/elements/table/table.meta.js +0 -0
  40. package/cdn/elements/tag/tag.js +1 -1
  41. package/cdn/elements/tag/tag.js.map +1 -1
  42. package/cdn/elements/tree/tree.js +1 -1
  43. package/cdn/elements/tree/tree.js.map +1 -1
  44. package/cdn/elements/tree-item/tree-item.js +1 -1
  45. package/cdn/elements/tree-item/tree-item.js.map +1 -1
  46. package/cdn/shared/controllers/listbox-nav.d.ts +7 -0
  47. package/cdn/shared/controllers/listbox-nav.d.ts.map +1 -1
  48. package/cdn/shared/controllers/listbox-nav.js +1 -1
  49. package/cdn/shared/controllers/listbox-nav.js.map +1 -1
  50. package/cdn/shared/styles/button-core.styles.js +1 -1
  51. package/cdn/shared/styles/button-core.styles.js.map +1 -1
  52. package/cdn/shared/styles/checkbox-appearance.styles.js +1 -1
  53. package/cdn/shared/styles/checkbox-appearance.styles.js.map +1 -1
  54. package/cdn/shared/styles/picker-core.styles.js +1 -1
  55. package/cdn/shared/styles/picker-core.styles.js.map +1 -1
  56. package/cdn/standalone.css +284 -67
  57. package/cdn/standalone.js +38 -28
  58. package/cdn/standalone.js.map +1 -1
  59. package/cdn/styles/base.css +11 -0
  60. package/cdn/styles/elements/breadcrumb.css +2 -2
  61. package/cdn/styles/elements/button.css +2 -2
  62. package/cdn/styles/elements/checkbox.css +2 -2
  63. package/cdn/styles/elements/close-button/circle.css +2 -2
  64. package/cdn/styles/elements/close-button/ring.css +2 -2
  65. package/cdn/styles/elements/close-button/square.css +2 -2
  66. package/cdn/styles/elements/disclosure.css +1 -1
  67. package/cdn/styles/elements/input-otp.css +19 -3
  68. package/cdn/styles/elements/input-stepper/default.css +1 -1
  69. package/cdn/styles/elements/input-stepper/pill.css +1 -1
  70. package/cdn/styles/elements/input-stepper/rounded.css +1 -1
  71. package/cdn/styles/elements/input.css +11 -11
  72. package/cdn/styles/elements/prose-editor.css +6 -6
  73. package/cdn/styles/elements/radio-group.css +2 -2
  74. package/cdn/styles/elements/radio.css +2 -2
  75. package/cdn/styles/elements/segmented-control.css +1 -1
  76. package/cdn/styles/elements/select.css +5 -5
  77. package/cdn/styles/elements/story.css +2 -2
  78. package/cdn/styles/elements/switch.css +2 -2
  79. package/cdn/styles/elements/table.css +186 -0
  80. package/cdn/styles/elements/tabs/enclosed.css +3 -3
  81. package/cdn/styles/elements/tabs/line.css +3 -3
  82. package/cdn/styles/elements/textarea.css +5 -5
  83. package/cdn/styles/preset.css +19 -6
  84. package/cdn/styles/tokens/aliases.css +5 -3
  85. package/cdn/styles/tokens/forms.css +3 -3
  86. package/cdn/styles/tokens.css +8 -6
  87. package/dist/css/base.css +11 -0
  88. package/dist/css/elements/breadcrumb.css +2 -2
  89. package/dist/css/elements/button.css +2 -2
  90. package/dist/css/elements/checkbox.css +2 -2
  91. package/dist/css/elements/close-button/circle.css +2 -2
  92. package/dist/css/elements/close-button/ring.css +2 -2
  93. package/dist/css/elements/close-button/square.css +2 -2
  94. package/dist/css/elements/disclosure.css +1 -1
  95. package/dist/css/elements/input-otp.css +19 -3
  96. package/dist/css/elements/input-stepper/default.css +1 -1
  97. package/dist/css/elements/input-stepper/pill.css +1 -1
  98. package/dist/css/elements/input-stepper/rounded.css +1 -1
  99. package/dist/css/elements/input.css +11 -11
  100. package/dist/css/elements/prose-editor.css +6 -6
  101. package/dist/css/elements/radio-group.css +2 -2
  102. package/dist/css/elements/radio.css +2 -2
  103. package/dist/css/elements/segmented-control.css +1 -1
  104. package/dist/css/elements/select.css +5 -5
  105. package/dist/css/elements/story.css +2 -2
  106. package/dist/css/elements/switch.css +2 -2
  107. package/dist/css/elements/table.css +186 -0
  108. package/dist/css/elements/tabs/enclosed.css +3 -3
  109. package/dist/css/elements/tabs/line.css +3 -3
  110. package/dist/css/elements/textarea.css +5 -5
  111. package/dist/css/preset.css +19 -6
  112. package/dist/css/tokens/aliases.css +5 -3
  113. package/dist/css/tokens/forms.css +3 -3
  114. package/dist/css/tokens.css +8 -6
  115. package/dist/custom-elements.json +402 -276
  116. package/dist/elements/alert-dialog/alert-dialog.d.ts +3 -2
  117. package/dist/elements/alert-dialog/alert-dialog.d.ts.map +1 -1
  118. package/dist/elements/alert-dialog/alert-dialog.js +3 -2
  119. package/dist/elements/avatar/avatar.css +2 -2
  120. package/dist/elements/carousel/carousel.css +18 -0
  121. package/dist/elements/combobox/combobox.css +9 -0
  122. package/dist/elements/combobox/combobox.d.ts.map +1 -1
  123. package/dist/elements/combobox/combobox.js +1 -0
  124. package/dist/elements/dialog/dialog.css +12 -0
  125. package/dist/elements/dialog/dialog.d.ts +2 -1
  126. package/dist/elements/dialog/dialog.d.ts.map +1 -1
  127. package/dist/elements/dialog/dialog.js +2 -1
  128. package/dist/elements/drawer/drawer.css +11 -1
  129. package/dist/elements/drawer/drawer.d.ts +7 -7
  130. package/dist/elements/drawer/drawer.js +7 -7
  131. package/dist/elements/dropdown-item/dropdown-item.css +1 -1
  132. package/dist/elements/input-otp/input-otp.d.ts +2 -2
  133. package/dist/elements/input-otp/input-otp.js +2 -2
  134. package/dist/elements/prose-editor/prose-editor.css +5 -3
  135. package/dist/elements/rating/rating.css +9 -10
  136. package/dist/elements/select/select.css +10 -5
  137. package/dist/elements/select/select.d.ts.map +1 -1
  138. package/dist/elements/select/select.js +1 -0
  139. package/dist/elements/slider/slider.css +5 -1
  140. package/dist/elements/stories-viewer/stories-viewer.css +10 -2
  141. package/dist/elements/table/table.meta.d.ts +55 -0
  142. package/dist/elements/table/table.meta.d.ts.map +1 -0
  143. package/dist/elements/table/table.meta.js +65 -0
  144. package/dist/elements/tag/tag.css +3 -3
  145. package/dist/elements/tree/tree.css +3 -3
  146. package/dist/elements/tree-item/tree-item.css +5 -3
  147. package/dist/metadata/alert-dialog.json +90 -85
  148. package/dist/metadata/alert.json +22 -22
  149. package/dist/metadata/avatar.json +26 -26
  150. package/dist/metadata/badge.json +13 -13
  151. package/dist/metadata/breadcrumb.json +9 -9
  152. package/dist/metadata/button.json +40 -40
  153. package/dist/metadata/carousel.json +133 -133
  154. package/dist/metadata/checkbox.json +13 -13
  155. package/dist/metadata/close-button.json +15 -15
  156. package/dist/metadata/color-scheme-icon.json +13 -13
  157. package/dist/metadata/combobox.json +77 -94
  158. package/dist/metadata/dialog.json +49 -44
  159. package/dist/metadata/disclosure.json +17 -17
  160. package/dist/metadata/divider.json +12 -12
  161. package/dist/metadata/drawer.json +61 -61
  162. package/dist/metadata/dropdown-item.json +50 -50
  163. package/dist/metadata/dropdown.json +32 -32
  164. package/dist/metadata/form-field.json +15 -15
  165. package/dist/metadata/icon.json +8 -8
  166. package/dist/metadata/index.json +1761 -1765
  167. package/dist/metadata/input-group.json +5 -5
  168. package/dist/metadata/input-otp.json +17 -17
  169. package/dist/metadata/input-stepper.json +24 -24
  170. package/dist/metadata/input.json +31 -31
  171. package/dist/metadata/popover.json +49 -49
  172. package/dist/metadata/progress.json +15 -15
  173. package/dist/metadata/prose-editor.json +110 -116
  174. package/dist/metadata/radio.json +15 -15
  175. package/dist/metadata/rating.json +25 -47
  176. package/dist/metadata/segmented-control.json +24 -46
  177. package/dist/metadata/select.json +81 -98
  178. package/dist/metadata/skeleton.json +12 -12
  179. package/dist/metadata/slider.json +60 -78
  180. package/dist/metadata/spinner.json +5 -5
  181. package/dist/metadata/sticky-bar.json +13 -13
  182. package/dist/metadata/stories-viewer.json +105 -105
  183. package/dist/metadata/stories.json +17 -17
  184. package/dist/metadata/story.json +41 -41
  185. package/dist/metadata/switch.json +9 -9
  186. package/dist/metadata/table.json +88 -0
  187. package/dist/metadata/tabs.json +26 -26
  188. package/dist/metadata/tag.json +50 -50
  189. package/dist/metadata/textarea.json +28 -28
  190. package/dist/metadata/toast.json +16 -16
  191. package/dist/metadata/tooltip.json +49 -49
  192. package/dist/metadata/tree-item.json +73 -73
  193. package/dist/metadata/tree.json +39 -39
  194. package/dist/shared/controllers/listbox-nav.d.ts +7 -0
  195. package/dist/shared/controllers/listbox-nav.d.ts.map +1 -1
  196. package/dist/shared/controllers/listbox-nav.js +12 -0
  197. package/dist/shared/styles/button-core.css +2 -2
  198. package/dist/shared/styles/checkbox-appearance.css +2 -2
  199. package/dist/shared/styles/picker-core.css +13 -10
  200. package/dist/templates/elements/alert-dialog.md +19 -18
  201. package/dist/templates/elements/alert.md +4 -4
  202. package/dist/templates/elements/avatar.md +9 -9
  203. package/dist/templates/elements/badge.md +4 -4
  204. package/dist/templates/elements/breadcrumb.md +4 -4
  205. package/dist/templates/elements/button.md +8 -8
  206. package/dist/templates/elements/carousel.md +32 -32
  207. package/dist/templates/elements/checkbox.md +4 -4
  208. package/dist/templates/elements/close-button.md +2 -2
  209. package/dist/templates/elements/color-scheme-icon.md +13 -13
  210. package/dist/templates/elements/combobox.md +19 -19
  211. package/dist/templates/elements/dialog.md +11 -10
  212. package/dist/templates/elements/disclosure.md +3 -3
  213. package/dist/templates/elements/divider.md +2 -2
  214. package/dist/templates/elements/drawer.md +15 -15
  215. package/dist/templates/elements/dropdown.md +15 -15
  216. package/dist/templates/elements/form-field.md +3 -3
  217. package/dist/templates/elements/icon.md +1 -1
  218. package/dist/templates/elements/input-otp.md +5 -5
  219. package/dist/templates/elements/input-stepper.md +4 -4
  220. package/dist/templates/elements/input.md +15 -8
  221. package/dist/templates/elements/popover.md +8 -8
  222. package/dist/templates/elements/progress.md +3 -3
  223. package/dist/templates/elements/prose-editor.md +38 -39
  224. package/dist/templates/elements/radio.md +6 -6
  225. package/dist/templates/elements/rating.md +5 -13
  226. package/dist/templates/elements/segmented-control.md +4 -4
  227. package/dist/templates/elements/select.md +23 -23
  228. package/dist/templates/elements/skeleton.md +2 -2
  229. package/dist/templates/elements/slider.md +13 -13
  230. package/dist/templates/elements/spinner.md +1 -1
  231. package/dist/templates/elements/sticky-bar.md +2 -2
  232. package/dist/templates/elements/stories-viewer.md +29 -29
  233. package/dist/templates/elements/stories.md +4 -4
  234. package/dist/templates/elements/story.md +11 -11
  235. package/dist/templates/elements/switch.md +5 -5
  236. package/dist/templates/elements/table.md +210 -0
  237. package/dist/templates/elements/tabs.md +4 -4
  238. package/dist/templates/elements/tag.md +14 -14
  239. package/dist/templates/elements/textarea.md +8 -8
  240. package/dist/templates/elements/toast.md +4 -4
  241. package/dist/templates/elements/tooltip.md +9 -9
  242. package/dist/templates/elements/tree-item.md +18 -18
  243. package/dist/templates/elements/tree.md +13 -13
  244. package/dist/templates/foundations/focus.md +303 -0
  245. package/elements.json +9 -0
  246. package/package.json +1 -1
  247. package/postcss-plugin-prefix.js +2 -2
  248. package/templates/SKILL.md.tpl +1 -0
  249. package/templates/choosing-elements.md.tpl +1 -0
@@ -17,10 +17,10 @@
17
17
  "properties": [],
18
18
  "attributes": [
19
19
  {
20
- "name": "role",
20
+ "name": "aria-invalid",
21
21
  "data": false,
22
22
  "values": [],
23
- "description": "Must be `switch`. Promotes the native checkbox to a switch for assistive tech and triggers the switch skin / inline field layout."
23
+ "description": "Set to `true` to force the invalid style (otherwise applied via `:user-invalid`). `l-form-field` manages this automatically."
24
24
  },
25
25
  {
26
26
  "name": "checked",
@@ -41,10 +41,10 @@
41
41
  "description": "Marks the switch as required for form submission."
42
42
  },
43
43
  {
44
- "name": "aria-invalid",
44
+ "name": "role",
45
45
  "data": false,
46
46
  "values": [],
47
- "description": "Set to `true` to force the invalid style (otherwise applied via `:user-invalid`). `l-form-field` manages this automatically."
47
+ "description": "Must be `switch`. Promotes the native checkbox to a switch for assistive tech and triggers the switch skin / inline field layout."
48
48
  }
49
49
  ],
50
50
  "events": [],
@@ -58,15 +58,15 @@
58
58
  ],
59
59
  "cssParts": [],
60
60
  "cssProperties": [
61
- {
62
- "name": "--size",
63
- "default": "1.25em",
64
- "description": "Track height; the whole control scales from it."
65
- },
66
61
  {
67
62
  "name": "--accent",
68
63
  "default": "var(--l-form-control-activated-color)",
69
64
  "description": "Track fill when on."
65
+ },
66
+ {
67
+ "name": "--size",
68
+ "default": "1.25em",
69
+ "description": "Track height; the whole control scales from it."
70
70
  }
71
71
  ],
72
72
  "commands": [],
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "table",
3
+ "displayName": "Table",
4
+ "type": "native",
5
+ "isCustomElement": false,
6
+ "tag": null,
7
+ "nativeTag": "table",
8
+ "selector": ".l-table",
9
+ "subItemOf": null,
10
+ "summary": "Tables display data in rows and columns, so it is easy to scan and compare.",
11
+ "status": "stable",
12
+ "appearances": [],
13
+ "import": {
14
+ "css": "luxen-ui/css/table",
15
+ "js": null
16
+ },
17
+ "properties": [],
18
+ "attributes": [
19
+ {
20
+ "name": "aria-sort",
21
+ "data": false,
22
+ "values": [
23
+ "ascending",
24
+ "descending"
25
+ ],
26
+ "description": "On the sorted column's `<th>`, which holds a `<button>` (or a link, when the server sorts): shows the direction. A disabled button marks a column the current query cannot sort by; an `.l-button` in a header is another action and keeps its own look."
27
+ },
28
+ {
29
+ "name": "data-align",
30
+ "data": true,
31
+ "values": [
32
+ "start",
33
+ "center",
34
+ "end"
35
+ ],
36
+ "description": "On a column's `<th>` and `<td>`s: aligns the column. Use `end` for figures; digits are tabular across the table, so they line up. A sort button in an `end` header puts its glyph before the label, keeping the label flush with the figures."
37
+ },
38
+ {
39
+ "name": "data-size",
40
+ "data": true,
41
+ "values": [
42
+ "sm",
43
+ "lg"
44
+ ],
45
+ "description": "Row height, on the control size scale: a control of the same size fits a row. Defaults to the medium size."
46
+ }
47
+ ],
48
+ "events": [],
49
+ "methods": [],
50
+ "slots": [],
51
+ "cssClasses": [
52
+ {
53
+ "name": ".l-table",
54
+ "description": "Applied to the `<table>`. Name it with a `<caption>` (visible or `.l-visually-hidden`) or `aria-label`; head the columns with `<th scope=\"col\">` and each row with the `<th scope=\"row\">` that identifies it."
55
+ }
56
+ ],
57
+ "cssParts": [],
58
+ "cssProperties": [
59
+ {
60
+ "name": "--background-color",
61
+ "default": "var(--l-color-surface)",
62
+ "description": "Background of the table. The sticky header repeats it, so it stays opaque over the rows scrolling under it."
63
+ },
64
+ {
65
+ "name": "--border-color",
66
+ "default": "var(--l-color-divider)",
67
+ "description": "Rules between rows. The stronger rules under the header and above the totals use `--l-color-border`."
68
+ },
69
+ {
70
+ "name": "--row-height",
71
+ "default": "calc(var(--l-size-control-md) + 2 * var(--l-spacing-1))",
72
+ "description": "Minimum row height; content taller than it grows the row."
73
+ }
74
+ ],
75
+ "commands": [],
76
+ "examples": [
77
+ {
78
+ "title": "Basic",
79
+ "language": "html",
80
+ "code": "<table class=\"l-table\">\n<caption>Products</caption>\n<thead>\n<tr>\n<th scope=\"col\">SKU</th>\n<th scope=\"col\">Name</th>\n<th scope=\"col\" data-align=\"end\">In stock</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<th scope=\"row\">SKU-1042</th>\n<td>Desk lamp</td>\n<td data-align=\"end\">4,210</td>\n</tr>\n</tbody>\n</table>"
81
+ },
82
+ {
83
+ "title": "Sortable",
84
+ "language": "html",
85
+ "code": "<table class=\"l-table\">\n<caption>Products</caption>\n<thead>\n<tr>\n<th scope=\"col\" aria-sort=\"ascending\"><button type=\"button\">SKU</button></th>\n<th scope=\"col\"><button type=\"button\">Name</button></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<th scope=\"row\">SKU-1042</th>\n<td>Desk lamp</td>\n</tr>\n</tbody>\n</table>"
86
+ }
87
+ ]
88
+ }
@@ -18,22 +18,6 @@
18
18
  "js": "luxen-ui/tabs"
19
19
  },
20
20
  "properties": [
21
- {
22
- "name": "variant",
23
- "attribute": "variant",
24
- "type": "TabsVariant",
25
- "default": "'line'",
26
- "reflects": true,
27
- "description": "Visual variant."
28
- },
29
- {
30
- "name": "value",
31
- "attribute": "value",
32
- "type": "string",
33
- "default": "'0'",
34
- "reflects": true,
35
- "description": "Index of the active tab (0-based)."
36
- },
37
21
  {
38
22
  "name": "fullWidth",
39
23
  "attribute": "full-width",
@@ -49,6 +33,22 @@
49
33
  "default": "'horizontal'",
50
34
  "reflects": true,
51
35
  "description": "Tab orientation."
36
+ },
37
+ {
38
+ "name": "value",
39
+ "attribute": "value",
40
+ "type": "string",
41
+ "default": "'0'",
42
+ "reflects": true,
43
+ "description": "Index of the active tab (0-based)."
44
+ },
45
+ {
46
+ "name": "variant",
47
+ "attribute": "variant",
48
+ "type": "TabsVariant",
49
+ "default": "'line'",
50
+ "reflects": true,
51
+ "description": "Visual variant."
52
52
  }
53
53
  ],
54
54
  "attributes": [],
@@ -64,6 +64,16 @@
64
64
  "cssClasses": [],
65
65
  "cssParts": [],
66
66
  "cssProperties": [
67
+ {
68
+ "name": "--hover-color",
69
+ "default": "var(--l-color-bg-state-hover)",
70
+ "description": "`line` variant: fill of the pill that appears behind a hovered tab label."
71
+ },
72
+ {
73
+ "name": "--hover-inset",
74
+ "default": "4px",
75
+ "description": "`line` variant: block-axis gap between the hover pill and the tab edges, keeping it detached from the bottom border."
76
+ },
67
77
  {
68
78
  "name": "--indicator-color",
69
79
  "default": "var(--l-color-text-primary)",
@@ -83,16 +93,6 @@
83
93
  "name": "--track-thickness",
84
94
  "default": "1px",
85
95
  "description": "`line` variant: thickness of the static bottom border."
86
- },
87
- {
88
- "name": "--hover-color",
89
- "default": "var(--l-color-bg-state-hover)",
90
- "description": "`line` variant: fill of the pill that appears behind a hovered tab label."
91
- },
92
- {
93
- "name": "--hover-inset",
94
- "default": "4px",
95
- "description": "`line` variant: block-axis gap between the hover pill and the tab edges, keeping it detached from the bottom border."
96
96
  }
97
97
  ],
98
98
  "commands": [],
@@ -16,12 +16,20 @@
16
16
  },
17
17
  "properties": [
18
18
  {
19
- "name": "size",
20
- "attribute": "size",
21
- "type": "TagSize",
22
- "default": "'md'",
19
+ "name": "control",
20
+ "attribute": "control",
21
+ "type": "TagControl",
22
+ "default": "'none'",
23
23
  "reflects": true,
24
- "description": "Tag size: `sm`, `md` (default), or `lg`."
24
+ "description": "What drives the selection: `none` (default) makes the chip itself a toggle\nbutton; `checkbox` renders a checkbox inside and makes the chip its label —\nthe right choice for a multi-select facet. Implies `selectable`."
25
+ },
26
+ {
27
+ "name": "disabled",
28
+ "attribute": "disabled",
29
+ "type": "boolean",
30
+ "default": "false",
31
+ "reflects": true,
32
+ "description": "Disable the tag — dims it and blocks selection and removal."
25
33
  },
26
34
  {
27
35
  "name": "removable",
@@ -48,33 +56,25 @@
48
56
  "description": "Whether the tag is selected. Reflected, so `[selected]` is styleable."
49
57
  },
50
58
  {
51
- "name": "control",
52
- "attribute": "control",
53
- "type": "TagControl",
54
- "default": "'none'",
55
- "reflects": true,
56
- "description": "What drives the selection: `none` (default) makes the chip itself a toggle\nbutton; `checkbox` renders a checkbox inside and makes the chip its label —\nthe right choice for a multi-select facet. Implies `selectable`."
57
- },
58
- {
59
- "name": "disabled",
60
- "attribute": "disabled",
61
- "type": "boolean",
62
- "default": "false",
59
+ "name": "size",
60
+ "attribute": "size",
61
+ "type": "TagSize",
62
+ "default": "'md'",
63
63
  "reflects": true,
64
- "description": "Disable the tag — dims it and blocks selection and removal."
64
+ "description": "Tag size: `sm`, `md` (default), or `lg`."
65
65
  }
66
66
  ],
67
67
  "attributes": [],
68
68
  "events": [
69
- {
70
- "name": "remove",
71
- "description": "Fired when the user removes the tag (× click or Backspace/Delete). Cancelable; if not prevented the tag removes itself. Not composed, does not bubble.",
72
- "cancelable": true
73
- },
74
69
  {
75
70
  "name": "change",
76
71
  "description": "Fired when a `selectable` tag is toggled. Not cancelable — like the platform's own `change`, and like `l-segmented-control`. Bubbles. Properties: `selected: boolean`. The chip is uncontrolled: it applies the new state before dispatching, so a host that vetoes a toggle (a \"max 3 filters\" rule, an async guard) sets `selected` back in the listener — the revert lands in the same render and is never painted.",
77
72
  "cancelable": false
73
+ },
74
+ {
75
+ "name": "remove",
76
+ "description": "Fired when the user removes the tag (× click or Backspace/Delete). Cancelable; if not prevented the tag removes itself. Not composed, does not bubble.",
77
+ "cancelable": true
78
78
  }
79
79
  ],
80
80
  "methods": [],
@@ -98,29 +98,24 @@
98
98
  "name": "base",
99
99
  "description": "The chip container."
100
100
  },
101
- {
102
- "name": "content",
103
- "description": "The label wrapper."
104
- },
105
- {
106
- "name": "toggle",
107
- "description": "The toggle button rendered by `selectable` (not with `control=\"checkbox\"`)."
108
- },
109
101
  {
110
102
  "name": "checkbox",
111
103
  "description": "The native checkbox rendered by `control=\"checkbox\"`."
112
104
  },
105
+ {
106
+ "name": "content",
107
+ "description": "The label wrapper."
108
+ },
113
109
  {
114
110
  "name": "remove",
115
111
  "description": "The remove button — a full-height segment at the end of the chip."
112
+ },
113
+ {
114
+ "name": "toggle",
115
+ "description": "The toggle button rendered by `selectable` (not with `control=\"checkbox\"`)."
116
116
  }
117
117
  ],
118
118
  "cssProperties": [
119
- {
120
- "name": "--text-color",
121
- "default": null,
122
- "description": "Label color."
123
- },
124
119
  {
125
120
  "name": "--background-color",
126
121
  "default": null,
@@ -132,39 +127,44 @@
132
127
  "description": "Chip border, and the rule that splits off the remove button. Defaults to a tint of `--text-color`; setting it pins the line in every state, so a token-based theme keeps its own value on hover."
133
128
  },
134
129
  {
135
- "name": "--selected-text-color",
130
+ "name": "--border-radius",
136
131
  "default": null,
137
- "description": "Label, border, and checkbox accent when selected. Defaults to the library's form-control accent, lightened in dark mode."
132
+ "description": "Corner radius. Defaults to a full pill."
138
133
  },
139
134
  {
140
- "name": "--selected-background-color",
135
+ "name": "--font-size",
141
136
  "default": null,
142
- "description": "Chip fill when selected. Defaults to a tint of `--selected-text-color`."
137
+ "description": "Label size. Defaults to the `size` step — 12px, or 14px at `size=\"lg\"`. Set it with `--height` to land between the two steps in a dense filter panel."
143
138
  },
144
139
  {
145
- "name": "--selected-border-color",
140
+ "name": "--height",
146
141
  "default": null,
147
- "description": "Chip border when selected. Defaults to a 45% tint of `--selected-text-color`. Selection replaces the line the same way it replaces the fill and the ink, so a chip themed with `--border-color` still gets its emphasis step; set this to theme that step too."
142
+ "description": "Chip height. Defaults to the `size` step (a selectable chip is taller, to keep a comfortable target)."
148
143
  },
149
144
  {
150
- "name": "--height",
145
+ "name": "--padding-inline",
151
146
  "default": null,
152
- "description": "Chip height. Defaults to the `size` step (a selectable chip is taller, to keep a comfortable target)."
147
+ "description": "Horizontal padding. Defaults to the `size` step."
153
148
  },
154
149
  {
155
- "name": "--font-size",
150
+ "name": "--selected-background-color",
156
151
  "default": null,
157
- "description": "Label size. Defaults to the `size` step — 12px, or 14px at `size=\"lg\"`. Set it with `--height` to land between the two steps in a dense filter panel."
152
+ "description": "Chip fill when selected. Defaults to a tint of `--selected-text-color`."
158
153
  },
159
154
  {
160
- "name": "--padding-inline",
155
+ "name": "--selected-border-color",
161
156
  "default": null,
162
- "description": "Horizontal padding. Defaults to the `size` step."
157
+ "description": "Chip border when selected. Defaults to a 45% tint of `--selected-text-color`. Selection replaces the line the same way it replaces the fill and the ink, so a chip themed with `--border-color` still gets its emphasis step; set this to theme that step too."
163
158
  },
164
159
  {
165
- "name": "--border-radius",
160
+ "name": "--selected-text-color",
166
161
  "default": null,
167
- "description": "Corner radius. Defaults to a full pill."
162
+ "description": "Label, border, and checkbox accent when selected. Defaults to the library's form-control accent, lightened in dark mode."
163
+ },
164
+ {
165
+ "name": "--text-color",
166
+ "default": null,
167
+ "description": "Label color."
168
168
  }
169
169
  ],
170
170
  "commands": [],
@@ -17,10 +17,21 @@
17
17
  "properties": [],
18
18
  "attributes": [
19
19
  {
20
- "name": "rows",
20
+ "name": "aria-invalid",
21
21
  "data": false,
22
22
  "values": [],
23
- "description": "Number of visible text lines — sets the initial height."
23
+ "description": "Set to `true` to force the invalid style (otherwise applied via `:user-invalid`). `l-form-field` manages this automatically."
24
+ },
25
+ {
26
+ "name": "data-resize",
27
+ "data": true,
28
+ "values": [
29
+ "vertical",
30
+ "none",
31
+ "both",
32
+ "auto"
33
+ ],
34
+ "description": "User resize handle. Defaults to `vertical`. `auto` grows the box with its content via `field-sizing` (progressive: falls back to the `rows` height where unsupported)."
24
35
  },
25
36
  {
26
37
  "name": "data-size",
@@ -35,33 +46,22 @@
35
46
  "description": "Single-line min-height on the shared `--l-size-control-*` scale (default `md`). Affects only the control, not the label or hint/error."
36
47
  },
37
48
  {
38
- "name": "data-resize",
39
- "data": true,
40
- "values": [
41
- "vertical",
42
- "none",
43
- "both",
44
- "auto"
45
- ],
46
- "description": "User resize handle. Defaults to `vertical`. `auto` grows the box with its content via `field-sizing` (progressive: falls back to the `rows` height where unsupported)."
47
- },
48
- {
49
- "name": "placeholder",
49
+ "name": "disabled",
50
50
  "data": false,
51
51
  "values": [],
52
- "description": "Native placeholder text."
52
+ "description": "Disables the textarea."
53
53
  },
54
54
  {
55
- "name": "disabled",
55
+ "name": "maxlength",
56
56
  "data": false,
57
57
  "values": [],
58
- "description": "Disables the textarea."
58
+ "description": "Native maximum character count."
59
59
  },
60
60
  {
61
- "name": "required",
61
+ "name": "placeholder",
62
62
  "data": false,
63
63
  "values": [],
64
- "description": "Marks the textarea as required for form submission."
64
+ "description": "Native placeholder text."
65
65
  },
66
66
  {
67
67
  "name": "readonly",
@@ -70,16 +70,16 @@
70
70
  "description": "Makes the textarea read-only."
71
71
  },
72
72
  {
73
- "name": "maxlength",
73
+ "name": "required",
74
74
  "data": false,
75
75
  "values": [],
76
- "description": "Native maximum character count."
76
+ "description": "Marks the textarea as required for form submission."
77
77
  },
78
78
  {
79
- "name": "aria-invalid",
79
+ "name": "rows",
80
80
  "data": false,
81
81
  "values": [],
82
- "description": "Set to `true` to force the invalid style (otherwise applied via `:user-invalid`). `l-form-field` manages this automatically."
82
+ "description": "Number of visible text lines — sets the initial height."
83
83
  }
84
84
  ],
85
85
  "events": [],
@@ -93,15 +93,15 @@
93
93
  ],
94
94
  "cssParts": [],
95
95
  "cssProperties": [
96
- {
97
- "name": "--height",
98
- "default": "var(--l-form-control-height)",
99
- "description": "Single-line min-height; `rows` grows the control from here."
100
- },
101
96
  {
102
97
  "name": "--border-radius",
103
98
  "default": "var(--l-form-control-border-radius)",
104
99
  "description": "Control border radius."
100
+ },
101
+ {
102
+ "name": "--height",
103
+ "default": "var(--l-form-control-height)",
104
+ "description": "Single-line min-height; `rows` grows the control from here."
105
105
  }
106
106
  ],
107
107
  "commands": [],
@@ -15,14 +15,6 @@
15
15
  "js": "luxen-ui/toast"
16
16
  },
17
17
  "properties": [
18
- {
19
- "name": "placement",
20
- "attribute": "placement",
21
- "type": "ToastPlacement",
22
- "default": "'top-end'",
23
- "reflects": true,
24
- "description": "Position of the toast stack on the screen."
25
- },
26
18
  {
27
19
  "name": "duration",
28
20
  "attribute": "duration",
@@ -31,6 +23,14 @@
31
23
  "reflects": true,
32
24
  "description": "Default auto-dismiss delay in milliseconds. 0 disables auto-dismiss."
33
25
  },
26
+ {
27
+ "name": "placement",
28
+ "attribute": "placement",
29
+ "type": "ToastPlacement",
30
+ "default": "'top-end'",
31
+ "reflects": true,
32
+ "description": "Position of the toast stack on the screen."
33
+ },
34
34
  {
35
35
  "name": "variant",
36
36
  "attribute": "variant",
@@ -82,14 +82,14 @@
82
82
  "name": ".l-toast-accent",
83
83
  "description": "The left accent bar, colored by variant."
84
84
  },
85
- {
86
- "name": ".l-toast-icon",
87
- "description": "The leading icon, colored by variant (replaces the accent bar)."
88
- },
89
85
  {
90
86
  "name": ".l-toast-content",
91
87
  "description": "The content column wrapping the heading and message."
92
88
  },
89
+ {
90
+ "name": ".l-toast-icon",
91
+ "description": "The leading icon, colored by variant (replaces the accent bar)."
92
+ },
93
93
  {
94
94
  "name": ".l-toast-timer",
95
95
  "description": "The countdown progress bar (for timed toasts)."
@@ -103,9 +103,9 @@
103
103
  "description": "Gap between stacked toast items."
104
104
  },
105
105
  {
106
- "name": "--width",
106
+ "name": "--hide-duration",
107
107
  "default": null,
108
- "description": "Width of the toast stack."
108
+ "description": "Duration of the hide animation."
109
109
  },
110
110
  {
111
111
  "name": "--show-duration",
@@ -113,9 +113,9 @@
113
113
  "description": "Duration of the show animation."
114
114
  },
115
115
  {
116
- "name": "--hide-duration",
116
+ "name": "--width",
117
117
  "default": null,
118
- "description": "Duration of the hide animation."
118
+ "description": "Width of the toast stack."
119
119
  }
120
120
  ],
121
121
  "commands": [],