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
@@ -27,16 +27,16 @@
27
27
  }
28
28
  ],
29
29
  "cssProperties": [
30
- {
31
- "name": "--size",
32
- "default": "1em",
33
- "description": "The size of the spinner (width and height)."
34
- },
35
30
  {
36
31
  "name": "--indicator-color",
37
32
  "default": null,
38
33
  "description": "The color of the spinner."
39
34
  },
35
+ {
36
+ "name": "--size",
37
+ "default": "1em",
38
+ "description": "The size of the spinner (width and height)."
39
+ },
40
40
  {
41
41
  "name": "--speed",
42
42
  "default": null,
@@ -23,14 +23,6 @@
23
23
  "reflects": false,
24
24
  "description": "HTML id of the element to track. When that element leaves the viewport, the bar reveals. Omit for a permanently visible bar."
25
25
  },
26
- {
27
- "name": "root",
28
- "attribute": "root",
29
- "type": "string",
30
- "default": "''",
31
- "reflects": false,
32
- "description": "HTML id of the scrolling ancestor used as the IntersectionObserver root. Omit to use the viewport. Useful for nested scroll containers (CMS preview panes, modals)."
33
- },
34
26
  {
35
27
  "name": "placement",
36
28
  "attribute": "placement",
@@ -38,6 +30,14 @@
38
30
  "default": "'bottom'",
39
31
  "reflects": true,
40
32
  "description": "Edge to dock against."
33
+ },
34
+ {
35
+ "name": "root",
36
+ "attribute": "root",
37
+ "type": "string",
38
+ "default": "''",
39
+ "reflects": false,
40
+ "description": "HTML id of the scrolling ancestor used as the IntersectionObserver root. Omit to use the viewport. Useful for nested scroll containers (CMS preview panes, modals)."
41
41
  }
42
42
  ],
43
43
  "attributes": [],
@@ -73,11 +73,6 @@
73
73
  "cssClasses": [],
74
74
  "cssParts": [],
75
75
  "cssProperties": [
76
- {
77
- "name": "--show-duration",
78
- "default": "200ms",
79
- "description": "Reveal animation duration."
80
- },
81
76
  {
82
77
  "name": "--hide-duration",
83
78
  "default": "200ms",
@@ -87,6 +82,11 @@
87
82
  "name": "--offset",
88
83
  "default": "0px",
89
84
  "description": "Distance from the active edge. Use to clear a sticky header when `placement=\"top\"`."
85
+ },
86
+ {
87
+ "name": "--show-duration",
88
+ "default": "200ms",
89
+ "description": "Reveal animation duration."
90
90
  }
91
91
  ],
92
92
  "commands": [],
@@ -16,12 +16,20 @@
16
16
  },
17
17
  "properties": [
18
18
  {
19
- "name": "open",
20
- "attribute": "open",
19
+ "name": "autoAdvance",
20
+ "attribute": "auto-advance",
21
21
  "type": "boolean",
22
- "default": "false",
22
+ "default": "true",
23
23
  "reflects": true,
24
- "description": "Whether the viewer is open."
24
+ "description": "Move to the next story when the current one ends; close after the last story."
25
+ },
26
+ {
27
+ "name": "chapter",
28
+ "attribute": "chapter",
29
+ "type": "number",
30
+ "default": "0",
31
+ "reflects": true,
32
+ "description": "Active chapter index within the current story. Reflected."
25
33
  },
26
34
  {
27
35
  "name": "index",
@@ -32,12 +40,12 @@
32
40
  "description": "Active story index (0-based)."
33
41
  },
34
42
  {
35
- "name": "muted",
36
- "attribute": "muted",
43
+ "name": "lightDismiss",
44
+ "attribute": "light-dismiss",
37
45
  "type": "boolean",
38
46
  "default": "true",
39
47
  "reflects": true,
40
- "description": "Whether playback is muted. so autoplay always succeeds across browsers. The user can unmute via the dedicated button or the `m` keyboard shortcut."
48
+ "description": "Close when the backdrop is clicked."
41
49
  },
42
50
  {
43
51
  "name": "loop",
@@ -48,28 +56,28 @@
48
56
  "description": "Loop the active story instead of advancing."
49
57
  },
50
58
  {
51
- "name": "autoAdvance",
52
- "attribute": "auto-advance",
59
+ "name": "muted",
60
+ "attribute": "muted",
53
61
  "type": "boolean",
54
62
  "default": "true",
55
63
  "reflects": true,
56
- "description": "Move to the next story when the current one ends; close after the last story."
64
+ "description": "Whether playback is muted. so autoplay always succeeds across browsers. The user can unmute via the dedicated button or the `m` keyboard shortcut."
57
65
  },
58
66
  {
59
- "name": "lightDismiss",
60
- "attribute": "light-dismiss",
67
+ "name": "open",
68
+ "attribute": "open",
61
69
  "type": "boolean",
62
- "default": "true",
70
+ "default": "false",
63
71
  "reflects": true,
64
- "description": "Close when the backdrop is clicked."
72
+ "description": "Whether the viewer is open."
65
73
  },
66
74
  {
67
- "name": "chapter",
68
- "attribute": "chapter",
69
- "type": "number",
70
- "default": "0",
71
- "reflects": true,
72
- "description": "Active chapter index within the current story. Reflected."
75
+ "name": "source",
76
+ "attribute": null,
77
+ "type": "LuxenStories | null",
78
+ "default": "null",
79
+ "reflects": false,
80
+ "description": "Internal: the source `<l-stories>` element that opened the viewer."
73
81
  },
74
82
  {
75
83
  "name": "stories",
@@ -78,14 +86,6 @@
78
86
  "default": "[]",
79
87
  "reflects": false,
80
88
  "description": "Internal: the playlist set by the source `<l-stories>`."
81
- },
82
- {
83
- "name": "source",
84
- "attribute": null,
85
- "type": "LuxenStories | null",
86
- "default": "null",
87
- "reflects": false,
88
- "description": "Internal: the source `<l-stories>` element that opened the viewer."
89
89
  }
90
90
  ],
91
91
  "attributes": [],
@@ -111,27 +111,45 @@
111
111
  "cancelable": false
112
112
  },
113
113
  {
114
- "name": "story-change",
115
- "description": "Fired when the active story changes. Properties: `index: number`, `story: LuxenStory`.",
114
+ "name": "chapter-change",
115
+ "description": "Fired when the active chapter (within a story) changes. Properties: `chapter: number`, `story: LuxenStory`.",
116
116
  "cancelable": false
117
117
  },
118
118
  {
119
- "name": "story-end",
120
- "description": "Fired when the active story finishes playback. Properties: `index: number`.",
119
+ "name": "mute-change",
120
+ "description": "Fired when the mute state changes. Properties: `muted: boolean`.",
121
121
  "cancelable": false
122
122
  },
123
123
  {
124
- "name": "chapter-change",
125
- "description": "Fired when the active chapter (within a story) changes. Properties: `chapter: number`, `story: LuxenStory`.",
124
+ "name": "story-change",
125
+ "description": "Fired when the active story changes. Properties: `index: number`, `story: LuxenStory`.",
126
126
  "cancelable": false
127
127
  },
128
128
  {
129
- "name": "mute-change",
130
- "description": "Fired when the mute state changes. Properties: `muted: boolean`.",
129
+ "name": "story-end",
130
+ "description": "Fired when the active story finishes playback. Properties: `index: number`.",
131
131
  "cancelable": false
132
132
  }
133
133
  ],
134
134
  "methods": [
135
+ {
136
+ "name": "close",
137
+ "params": [],
138
+ "returns": null,
139
+ "description": ""
140
+ },
141
+ {
142
+ "name": "next",
143
+ "params": [],
144
+ "returns": null,
145
+ "description": "Advance one chapter, or to the next story at the chapter boundary."
146
+ },
147
+ {
148
+ "name": "nextStory",
149
+ "params": [],
150
+ "returns": null,
151
+ "description": "Jump to the next story, skipping any remaining chapters in the current story."
152
+ },
135
153
  {
136
154
  "name": "openAt",
137
155
  "params": [
@@ -152,16 +170,16 @@
152
170
  "description": "Open the viewer at the given index with an explicit playlist."
153
171
  },
154
172
  {
155
- "name": "close",
173
+ "name": "pause",
156
174
  "params": [],
157
175
  "returns": null,
158
176
  "description": ""
159
177
  },
160
178
  {
161
- "name": "next",
179
+ "name": "play",
162
180
  "params": [],
163
181
  "returns": null,
164
- "description": "Advance one chapter, or to the next story at the chapter boundary."
182
+ "description": ""
165
183
  },
166
184
  {
167
185
  "name": "previous",
@@ -169,32 +187,18 @@
169
187
  "returns": null,
170
188
  "description": "Retreat one chapter, restart the current chapter past 1s in, or cross into the previous story."
171
189
  },
172
- {
173
- "name": "nextStory",
174
- "params": [],
175
- "returns": null,
176
- "description": "Jump to the next story, skipping any remaining chapters in the current story."
177
- },
178
190
  {
179
191
  "name": "previousStory",
180
192
  "params": [],
181
193
  "returns": null,
182
194
  "description": "Jump to the previous story regardless of current chapter. Lands on chapter 0 of the previous story."
183
- },
184
- {
185
- "name": "play",
186
- "params": [],
187
- "returns": null,
188
- "description": ""
189
- },
190
- {
191
- "name": "pause",
192
- "params": [],
193
- "returns": null,
194
- "description": ""
195
195
  }
196
196
  ],
197
197
  "slots": [
198
+ {
199
+ "name": "close",
200
+ "description": "Override the default close button."
201
+ },
198
202
  {
199
203
  "name": "cta",
200
204
  "description": "Default CTA overlay (e.g. shoppable card). Per-story `slot=\"cta\"` inside `<l-story>` overrides this when that story is active."
@@ -202,41 +206,41 @@
202
206
  {
203
207
  "name": "header",
204
208
  "description": "Default header overlay (e.g. avatar + author). Per-story override available the same way."
205
- },
206
- {
207
- "name": "close",
208
- "description": "Override the default close button."
209
209
  }
210
210
  ],
211
211
  "cssClasses": [],
212
212
  "cssParts": [
213
213
  {
214
- "name": "dialog",
215
- "description": "The native `<dialog>` element."
214
+ "name": "actions",
215
+ "description": "The top-right vertical button stack (close, play/pause, mute)."
216
216
  },
217
217
  {
218
- "name": "frame",
219
- "description": "The aspect-ratio video frame."
218
+ "name": "button-close",
219
+ "description": "The close button."
220
220
  },
221
221
  {
222
- "name": "progress",
223
- "description": "The progress bar wrapper."
222
+ "name": "button-mute",
223
+ "description": "The mute toggle."
224
224
  },
225
225
  {
226
- "name": "progress-segment",
227
- "description": "A single progress segment."
226
+ "name": "button-next",
227
+ "description": "The next story button."
228
228
  },
229
229
  {
230
- "name": "progress-fill",
231
- "description": "The fill element inside an active segment."
230
+ "name": "button-pause",
231
+ "description": "The play/pause toggle."
232
232
  },
233
233
  {
234
- "name": "video",
235
- "description": "The `<video>` element."
234
+ "name": "button-previous",
235
+ "description": "The previous story button."
236
236
  },
237
237
  {
238
- "name": "overlay",
239
- "description": "The overlay wrapper that hosts CTA/header slots."
238
+ "name": "dialog",
239
+ "description": "The native `<dialog>` element."
240
+ },
241
+ {
242
+ "name": "frame",
243
+ "description": "The aspect-ratio video frame."
240
244
  },
241
245
  {
242
246
  "name": "header",
@@ -247,50 +251,51 @@
247
251
  "description": "The default story label inside the header."
248
252
  },
249
253
  {
250
- "name": "actions",
251
- "description": "The top-right vertical button stack (close, play/pause, mute)."
252
- },
253
- {
254
- "name": "button-close",
255
- "description": "The close button."
256
- },
257
- {
258
- "name": "button-pause",
259
- "description": "The play/pause toggle."
254
+ "name": "overlay",
255
+ "description": "The overlay wrapper that hosts CTA/header slots."
260
256
  },
261
257
  {
262
- "name": "button-mute",
263
- "description": "The mute toggle."
258
+ "name": "progress",
259
+ "description": "The progress bar wrapper."
264
260
  },
265
261
  {
266
- "name": "button-previous",
267
- "description": "The previous story button."
262
+ "name": "progress-fill",
263
+ "description": "The fill element inside an active segment."
268
264
  },
269
265
  {
270
- "name": "button-next",
271
- "description": "The next story button."
266
+ "name": "progress-segment",
267
+ "description": "A single progress segment."
272
268
  },
273
269
  {
274
270
  "name": "spinner",
275
271
  "description": "The loading spinner shown while the current video is buffering."
272
+ },
273
+ {
274
+ "name": "video",
275
+ "description": "The `<video>` element."
276
276
  }
277
277
  ],
278
278
  "cssProperties": [
279
279
  {
280
- "name": "--width",
281
- "default": "min(420px, 100vw)",
282
- "description": "Frame width."
280
+ "name": "--backdrop",
281
+ "default": "var(--l-backdrop-strong)",
282
+ "description": "Backdrop color. — darker than `--l-backdrop` to focus attention on the immersive frame, but still translucent so the page stays perceptible."
283
283
  },
284
284
  {
285
- "name": "--progress-color",
286
- "default": "white",
287
- "description": "Active progress fill color."
285
+ "name": "--hide-duration",
286
+ "default": "200ms",
287
+ "description": "Close transition duration."
288
288
  },
289
289
  {
290
290
  "name": "--progress-bg",
291
291
  "default": "rgb(255 255 255 / 35%)",
292
292
  "description": "Inactive progress segment background."
293
293
  },
294
+ {
295
+ "name": "--progress-color",
296
+ "default": "white",
297
+ "description": "Active progress fill color."
298
+ },
294
299
  {
295
300
  "name": "--progress-gap",
296
301
  "default": "4px",
@@ -302,14 +307,9 @@
302
307
  "description": "Open transition duration."
303
308
  },
304
309
  {
305
- "name": "--hide-duration",
306
- "default": "200ms",
307
- "description": "Close transition duration."
308
- },
309
- {
310
- "name": "--backdrop",
311
- "default": "var(--l-backdrop-strong)",
312
- "description": "Backdrop color. — darker than `--l-backdrop` to focus attention on the immersive frame, but still translucent so the page stays perceptible."
310
+ "name": "--width",
311
+ "default": "min(420px, 100vw)",
312
+ "description": "Frame width."
313
313
  }
314
314
  ],
315
315
  "commands": [],
@@ -15,14 +15,6 @@
15
15
  "js": "luxen-ui/stories"
16
16
  },
17
17
  "properties": [
18
- {
19
- "name": "for",
20
- "attribute": "for",
21
- "type": "string",
22
- "default": "''",
23
- "reflects": true,
24
- "description": "ID of the linked `<l-stories-viewer>`."
25
- },
26
18
  {
27
19
  "name": "appearance",
28
20
  "attribute": "appearance",
@@ -30,6 +22,14 @@
30
22
  "default": "'rounded'",
31
23
  "reflects": true,
32
24
  "description": "Visual appearance of the thumbnails."
25
+ },
26
+ {
27
+ "name": "for",
28
+ "attribute": "for",
29
+ "type": "string",
30
+ "default": "''",
31
+ "reflects": true,
32
+ "description": "ID of the linked `<l-stories-viewer>`."
33
33
  }
34
34
  ],
35
35
  "attributes": [],
@@ -64,20 +64,20 @@
64
64
  "cssParts": [],
65
65
  "cssProperties": [
66
66
  {
67
- "name": "--size",
67
+ "name": "--gap",
68
+ "default": "1rem",
69
+ "description": "Gap between thumbnails."
70
+ },
71
+ {
72
+ "name": "--label-color",
68
73
  "default": null,
69
- "description": "Thumbnail size (width). Default per appearance."
74
+ "description": "Label text color."
70
75
  },
71
76
  {
72
77
  "name": "--radius",
73
78
  "default": null,
74
79
  "description": "Thumbnail border radius. Default per appearance (`--radius-full` for rounded, `1rem` for portrait)."
75
80
  },
76
- {
77
- "name": "--gap",
78
- "default": "1rem",
79
- "description": "Gap between thumbnails."
80
- },
81
81
  {
82
82
  "name": "--ring-color",
83
83
  "default": null,
@@ -94,9 +94,9 @@
94
94
  "description": "Ring width."
95
95
  },
96
96
  {
97
- "name": "--label-color",
97
+ "name": "--size",
98
98
  "default": null,
99
- "description": "Label text color."
99
+ "description": "Thumbnail size (width). Default per appearance."
100
100
  }
101
101
  ],
102
102
  "commands": [],
@@ -16,12 +16,28 @@
16
16
  },
17
17
  "properties": [
18
18
  {
19
- "name": "src",
20
- "attribute": "src",
19
+ "name": "chapters",
20
+ "attribute": "chapters",
21
+ "type": "string",
22
+ "default": "''",
23
+ "reflects": false,
24
+ "description": "Chapter start times within the video, comma-separated seconds (e.g. `0,5,12,20`). `0` is implicit if omitted. Empty = single chapter spanning the full video."
25
+ },
26
+ {
27
+ "name": "duration",
28
+ "attribute": "duration",
29
+ "type": "number",
30
+ "default": "0",
31
+ "reflects": false,
32
+ "description": "Override the progress duration in seconds. Defaults to the video's metadata duration."
33
+ },
34
+ {
35
+ "name": "label",
36
+ "attribute": "label",
21
37
  "type": "string",
22
38
  "default": "''",
23
39
  "reflects": true,
24
- "description": "Video URL."
40
+ "description": "Caption shown below the thumbnail (or overlaid, depending on appearance) and used as the trigger `aria-label`."
25
41
  },
26
42
  {
27
43
  "name": "poster",
@@ -40,20 +56,12 @@
40
56
  "description": "Optional short looping preview video (URL of a small dedicated MP4, typically 2-3s, 480p, no audio). When set, the thumbnail renders this video muted+looped+autoplayed in place of `poster`. Gated by an `IntersectionObserver` so off-screen previews don't play."
41
57
  },
42
58
  {
43
- "name": "label",
44
- "attribute": "label",
45
- "type": "string",
46
- "default": "''",
59
+ "name": "pulse",
60
+ "attribute": "pulse",
61
+ "type": "boolean",
62
+ "default": "false",
47
63
  "reflects": true,
48
- "description": "Caption shown below the thumbnail (or overlaid, depending on appearance) and used as the trigger `aria-label`."
49
- },
50
- {
51
- "name": "duration",
52
- "attribute": "duration",
53
- "type": "number",
54
- "default": "0",
55
- "reflects": false,
56
- "description": "Override the progress duration in seconds. Defaults to the video's metadata duration."
64
+ "description": "Pulse the thumbnail with an animated halo + a subtle scale tap to draw attention. Reflected."
57
65
  },
58
66
  {
59
67
  "name": "seen",
@@ -64,20 +72,12 @@
64
72
  "description": "Mark this story as already viewed (faded ring). Reflected."
65
73
  },
66
74
  {
67
- "name": "pulse",
68
- "attribute": "pulse",
69
- "type": "boolean",
70
- "default": "false",
71
- "reflects": true,
72
- "description": "Pulse the thumbnail with an animated halo + a subtle scale tap to draw attention. Reflected."
73
- },
74
- {
75
- "name": "chapters",
76
- "attribute": "chapters",
75
+ "name": "src",
76
+ "attribute": "src",
77
77
  "type": "string",
78
78
  "default": "''",
79
- "reflects": false,
80
- "description": "Chapter start times within the video, comma-separated seconds (e.g. `0,5,12,20`). `0` is implicit if omitted. Empty = single chapter spanning the full video."
79
+ "reflects": true,
80
+ "description": "Video URL."
81
81
  },
82
82
  {
83
83
  "name": "tracks",
@@ -110,20 +110,20 @@
110
110
  ],
111
111
  "cssClasses": [
112
112
  {
113
- "name": ".l-story-trigger",
114
- "description": "The clickable thumbnail button wrapper."
115
- },
116
- {
117
- "name": ".l-story-thumb",
118
- "description": "The poster/video thumbnail frame (ring + offset)."
113
+ "name": ".l-story-label",
114
+ "description": "The caption text below the thumbnail."
119
115
  },
120
116
  {
121
117
  "name": ".l-story-play",
122
118
  "description": "The centered play-icon overlay."
123
119
  },
124
120
  {
125
- "name": ".l-story-label",
126
- "description": "The caption text below the thumbnail."
121
+ "name": ".l-story-thumb",
122
+ "description": "The poster/video thumbnail frame (ring + offset)."
123
+ },
124
+ {
125
+ "name": ".l-story-trigger",
126
+ "description": "The clickable thumbnail button wrapper."
127
127
  }
128
128
  ],
129
129
  "cssParts": [],
@@ -133,15 +133,15 @@
133
133
  "default": null,
134
134
  "description": "Color of the attention pulse ring (only with the `pulse` attribute)."
135
135
  },
136
- {
137
- "name": "--pulse-scale",
138
- "default": "1.2",
139
- "description": "Peak scale of the pulse animation."
140
- },
141
136
  {
142
137
  "name": "--pulse-duration",
143
138
  "default": "1.6s",
144
139
  "description": "Duration of one pulse cycle."
140
+ },
141
+ {
142
+ "name": "--pulse-scale",
143
+ "default": "1.2",
144
+ "description": "Peak scale of the pulse animation."
145
145
  }
146
146
  ],
147
147
  "commands": [],