@poveste/app 0.19.1 → 0.21.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 (58) hide show
  1. package/dist/bundled/app.css +208 -7
  2. package/dist/bundled/components/HomeView.vue_vue_type_script_setup_true_lang.js +3 -3
  3. package/dist/bundled/components/app/AppLogo.vue_vue_type_script_setup_true_lang.js +4 -4
  4. package/dist/bundled/components/app/TopBarChipItem.js +10 -6
  5. package/dist/bundled/components/layout/LayoutItem.js +1 -0
  6. package/dist/bundled/components/layout/LayoutItem.vue_vue_type_script_setup_true_lang.js +20 -23
  7. package/dist/bundled/components/layout/LayoutModal.vue_vue_type_script_setup_true_lang.js +44 -5
  8. package/dist/bundled/components/panel/ComponentDocs.js +7 -0
  9. package/dist/bundled/components/panel/ComponentDocs.vue_vue_type_script_setup_true_lang.js +164 -0
  10. package/dist/bundled/components/panel/StoryDocs.vue_vue_type_script_setup_true_lang.js +57 -22
  11. package/dist/bundled/components/panel/StorySourceCode.js +1 -1
  12. package/dist/bundled/components/panel/StorySourceCode.vue_vue_type_script_setup_true_lang.js +22 -6
  13. package/dist/bundled/components/story/GenericMountStory.vue_vue_type_script_setup_true_lang.js +3 -7
  14. package/dist/bundled/components/story/GenericRenderStory.vue_vue_type_script_setup_true_lang.js +3 -10
  15. package/dist/bundled/components/story/StoryResponsivePreview.js +1 -1
  16. package/dist/bundled/components/story/StoryResponsivePreview.vue_vue_type_script_setup_true_lang.js +5 -3
  17. package/dist/bundled/components/story/StoryVariantGridItem.js +1 -1
  18. package/dist/bundled/components/story/StoryVariantGridItem.vue_vue_type_script_setup_true_lang.js +5 -3
  19. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue_vue_type_script_setup_true_lang.js +3 -2
  20. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue_vue_type_script_setup_true_lang.js +0 -1
  21. package/dist/bundled/index.js +5 -1
  22. package/dist/bundled/sandbox.js +2 -0
  23. package/dist/bundled/util/client-plugin.js +22 -0
  24. package/dist/bundled/util/component-docs-data.js +5 -0
  25. package/dist/bundled/util/component-docs.js +133 -0
  26. package/dist/bundled/util/dark.js +3 -1
  27. package/dist/bundled/util/docs.js +13 -3
  28. package/dist/bundled/util/highlighter.js +1 -1
  29. package/dist/bundled/util/icons.generated.js +3 -2
  30. package/dist/bundled/util/keyboard.js +5 -4
  31. package/dist/bundled/util/mapping.js +1 -5
  32. package/dist/style.css +321 -195
  33. package/package.json +17 -17
  34. package/src/app/components/HomeView.vue +2 -2
  35. package/src/app/components/app/AppLogo.vue +4 -6
  36. package/src/app/components/app/TopBarChipItem.vue +55 -6
  37. package/src/app/components/layout/LayoutItem.vue +56 -6
  38. package/src/app/components/layout/LayoutModal.vue +55 -2
  39. package/src/app/components/panel/ComponentDocs.vue +323 -0
  40. package/src/app/components/panel/StoryDocs.vue +38 -2
  41. package/src/app/components/panel/StorySourceCode.vue +29 -5
  42. package/src/app/components/story/GenericMountStory.vue +3 -5
  43. package/src/app/components/story/GenericRenderStory.vue +4 -12
  44. package/src/app/components/story/StoryResponsivePreview.vue +4 -1
  45. package/src/app/components/story/StoryVariantGridItem.vue +4 -1
  46. package/src/app/components/story/StoryVariantSinglePreviewRemote.vue +6 -4
  47. package/src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue +0 -1
  48. package/src/app/index.ts +12 -3
  49. package/src/app/sandbox.ts +5 -0
  50. package/src/app/util/client-plugin.ts +33 -0
  51. package/src/app/util/component-docs-data.ts +6 -0
  52. package/src/app/util/component-docs.ts +169 -0
  53. package/src/app/util/dark.ts +6 -0
  54. package/src/app/util/docs.ts +18 -2
  55. package/src/app/util/highlighter.ts +2 -1
  56. package/src/app/util/icons.generated.ts +2 -2
  57. package/src/app/util/keyboard.ts +8 -4
  58. package/src/app/util/mapping.ts +1 -5
@@ -1,4 +1,45 @@
1
1
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
2
+ .poveste-top-bar-chip-item {
3
+ display: flex;
4
+ align-items: center;
5
+ gap: .25rem;
6
+ padding: .375rem .625rem;
7
+ border: 0;
8
+ font: inherit;
9
+ color: var(--color-gray-900);
10
+ cursor: pointer;
11
+ @media (prefers-reduced-motion: no-preference) {
12
+ transition: color .15s ease-out, background-color .15s ease-out;
13
+ }
14
+ &:hover {
15
+ background-color: rgb(255 255 255 / .5);
16
+ color: var(--color-primary-500);
17
+ }
18
+ &:active {
19
+ background-color: rgb(255 255 255 / .7);
20
+ }
21
+
22
+ /* Inset: the chip clips its items to its rounded border. */
23
+ &:focus-visible {
24
+ outline: 2px solid var(--color-primary-500);
25
+ outline-offset: -2px;
26
+ }
27
+
28
+ /* Spelled out on the subject: `.ptw-dark` sits above the `@scope` root, so a
29
+ descendant rule keyed on it never matches from in here (#101). */
30
+ &:where(.ptw-dark, .ptw-dark *) {
31
+ color: var(--color-gray-100);
32
+ &:hover {
33
+ background-color: rgb(255 255 255 / .1);
34
+ color: var(--color-primary-400);
35
+ }
36
+ &:active {
37
+ background-color: rgb(255 255 255 / .15);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
2
43
  .bind-tree-margin[data-v-83161585] {
3
44
  margin-left: var(--v0299061e);
4
45
  }
@@ -94,6 +135,46 @@ from {
94
135
  }
95
136
  }
96
137
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
138
+ .poveste-layout-item {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 1rem;
142
+ width: 100%;
143
+ padding: 1rem 1.5rem;
144
+ border: 0;
145
+ font: inherit;
146
+ text-align: start;
147
+ color: var(--color-gray-900);
148
+ cursor: pointer;
149
+ &:hover {
150
+ background-color: var(--color-primary-100);
151
+ }
152
+ &:focus-visible {
153
+ outline: 2px solid var(--color-primary-500);
154
+ outline-offset: -2px;
155
+ }
156
+ &.active {
157
+ background-color: var(--color-primary-500);
158
+ color: var(--color-white);
159
+ &:hover {
160
+ background-color: var(--color-primary-600);
161
+ }
162
+ }
163
+
164
+ /* Spelled out on the subject: `.ptw-dark` sits above the `@scope` root, so a
165
+ descendant rule keyed on it never matches from in here (#101). */
166
+ &:where(.ptw-dark, .ptw-dark *) {
167
+ color: var(--color-gray-100);
168
+ &:hover {
169
+ background-color: var(--color-primary-900);
170
+ }
171
+ &.active {
172
+ color: var(--color-black);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
97
178
  /* Outside the layer — registration is document-global, not cascaded. */
98
179
  @property --poveste-count {
99
180
  syntax: '<integer>';
@@ -133,6 +214,126 @@ from {
133
214
  }
134
215
  }
135
216
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
217
+ .poveste-component-docs {
218
+ &[data-v-3b01b847] {
219
+ padding: 1rem;
220
+ font-size: .875rem;
221
+ color: var(--color-gray-800);
222
+
223
+ /* On the subject, not `.ptw-dark &`: `.ptw-dark` sits above the `@scope` root (#101). */
224
+ }
225
+ &[data-v-3b01b847]:where(.ptw-dark, .ptw-dark *) {
226
+ color: var(--color-gray-200);
227
+ }
228
+ }
229
+ details + details[data-v-3b01b847] {
230
+ margin-top: 1.5rem;
231
+ }
232
+ summary[data-v-3b01b847] {
233
+ cursor: pointer;
234
+ margin-bottom: .5rem;
235
+ }
236
+ h3[data-v-3b01b847] {
237
+ display: inline;
238
+ font-weight: 600;
239
+ font-size: 1rem;
240
+ }
241
+ table[data-v-3b01b847] {
242
+ width: 100%;
243
+ border-collapse: collapse;
244
+ margin-bottom: 1rem;
245
+ }
246
+ th[data-v-3b01b847] {
247
+ text-align: start;
248
+ font-weight: 500;
249
+ color: var(--color-gray-500);
250
+ }
251
+ th,
252
+ td {
253
+ &[data-v-3b01b847] {
254
+ padding: .375rem .5rem;
255
+ border-bottom: 1px solid var(--color-gray-200);
256
+ vertical-align: top;
257
+ }
258
+ &[data-v-3b01b847]:where(.ptw-dark, .ptw-dark *) {
259
+ border-color: var(--color-gray-750);
260
+ }
261
+ }
262
+ code {
263
+ &[data-v-3b01b847] {
264
+ font-size: .8125rem;
265
+ background-color: var(--color-gray-100);
266
+ border-radius: .25rem;
267
+ padding: 0 .25rem;
268
+ }
269
+ &[data-v-3b01b847]:where(.ptw-dark, .ptw-dark *) {
270
+ background-color: var(--color-gray-750);
271
+ }
272
+ }
273
+ pre code[data-v-3b01b847] {
274
+ display: block;
275
+ padding: .5rem;
276
+ margin-top: .25rem;
277
+ white-space: pre-wrap;
278
+ }
279
+ .deprecated[data-v-3b01b847] {
280
+ text-decoration: line-through;
281
+ }
282
+ /* Its own line: a constraint wrapped beside the name broke mid-phrase in the narrow panel. */
283
+ /* A prop a slot passes its content, under the slot it belongs to. */
284
+ [data-slot-prop] td[data-v-3b01b847]:first-child {
285
+ padding-inline-start: 1rem;
286
+ }
287
+ [data-slot='generic'][data-v-3b01b847] {
288
+ display: block;
289
+ width: fit-content;
290
+ margin-top: .25rem;
291
+ font-size: .75rem;
292
+ font-weight: 400;
293
+ cursor: help;
294
+ }
295
+ [data-slot='required'][data-v-3b01b847] {
296
+ color: var(--color-red-500);
297
+ margin-inline-start: .125rem;
298
+ }
299
+ [data-slot='model'] {
300
+ &[data-v-3b01b847] {
301
+ display: inline-block;
302
+ margin-inline-start: .375rem;
303
+ color: var(--color-primary-600);
304
+ cursor: help;
305
+ }
306
+ &[data-v-3b01b847]:where(.ptw-dark, .ptw-dark *) {
307
+ color: var(--color-primary-400);
308
+ }
309
+ }
310
+ [data-slot='deprecated'],
311
+ [data-slot='default-conflict'] {
312
+ &[data-v-3b01b847] {
313
+ color: var(--color-amber-600);
314
+ font-weight: 500;
315
+ }
316
+ &[data-v-3b01b847]:where(.ptw-dark, .ptw-dark *) {
317
+ color: var(--color-amber-400);
318
+ }
319
+ }
320
+ [data-slot='default-conflict'][data-v-3b01b847] {
321
+ margin-inline-start: .25rem;
322
+ cursor: help;
323
+ }
324
+ [data-slot='see'][data-v-3b01b847] {
325
+ display: block;
326
+ margin-top: .25rem;
327
+ }
328
+ a[data-slot='see'][data-v-3b01b847] {
329
+ color: var(--color-primary-500);
330
+ text-decoration: underline;
331
+ }
332
+ [data-slot='error'][data-v-3b01b847] {
333
+ color: var(--color-gray-500);
334
+ }
335
+ }
336
+ @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
136
337
  .poveste-base-select-popper {
137
338
  /* The trigger's own width, which is what floating-vue's `auto-size` gave. */
138
339
  min-width: var(--reka-popper-anchor-width);
@@ -150,7 +351,7 @@ from {
150
351
  }
151
352
  }
152
353
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
153
- .__poveste-code-placeholder[data-v-ed711d57] {
354
+ .__poveste-code-placeholder[data-v-cecbc93b] {
154
355
  color: inherit;
155
356
  font-size: inherit;
156
357
  }
@@ -165,16 +366,16 @@ from {
165
366
  }
166
367
  }
167
368
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
168
- .bind-preview-bg[data-v-a99edb14] {
169
- background-color: var(--v4ce71e65);
369
+ .bind-preview-bg[data-v-bbd56e9f] {
370
+ background-color: var(--v59fa22e6);
170
371
  }
171
372
  }
172
373
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
173
- .bind-icon-color[data-v-e0e9a8e1] {
174
- color: var(--v2ce2d009);
374
+ .bind-icon-color[data-v-9a717688] {
375
+ color: var(--ff0ecc2c);
175
376
  }
176
- .bind-preview-bg[data-v-e0e9a8e1] {
177
- background-color: var(--v4f3f7242);
377
+ .bind-preview-bg[data-v-9a717688] {
378
+ background-color: var(--v59a40d7e);
178
379
  }
179
380
  }
180
381
  @scope (:root) to (.__poveste-render-story:not(.__poveste-render-custom-controls)) {
@@ -1,6 +1,6 @@
1
- import { customLogos, povesteConfig } from "../util/config.js";
1
+ import { customLogos } from "../util/config.js";
2
2
  import { useStoryStore } from "../stores/story.js";
3
- import poveste_default from "../assets/poveste.js";
3
+ import "../assets/poveste.js";
4
4
  import HomeCounter_default from "./app/HomeCounter.js";
5
5
  import { computed, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock } from "@poveste/vendors/vue";
6
6
  //#region src/app/components/HomeView.vue?vue&type=script&setup=true&lang.ts
@@ -14,7 +14,7 @@ var _hoisted_3 = {
14
14
  var HomeView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
15
15
  __name: "HomeView",
16
16
  setup(__props) {
17
- const logoUrl = computed(() => povesteConfig.theme?.logo?.square ? customLogos?.square ?? "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%20width='512'%20height='512'%20fill='none'%3e%3cdefs%3e%3clinearGradient%20id='pv'%20x1='96'%20y1='416'%20x2='416'%20y2='96'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2324C56A'/%3e%3cstop%20offset='1'%20stop-color='%2317A6C6'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20x='16'%20y='16'%20width='480'%20height='480'%20rx='112'%20fill='url(%23pv)'/%3e%3crect%20x='140'%20y='142'%20width='232'%20height='44'%20rx='16'%20fill='%23fff'/%3e%3crect%20x='151'%20y='217'%20width='88'%20height='146'%20rx='9'%20stroke='%23fff'%20stroke-width='22'/%3e%3crect%20x='172'%20y='244'%20width='30'%20height='92'%20rx='13'%20fill='%23fff'/%3e%3crect%20x='262'%20y='206'%20width='110'%20height='168'%20rx='20'%20fill='%23fff'/%3e%3crect%20x='284'%20y='226'%20width='66'%20height='58'%20rx='13'%20fill='url(%23pv)'/%3e%3c/svg%3e" : poveste_default);
17
+ const logoUrl = computed(() => customLogos?.square ?? "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%20width='512'%20height='512'%20fill='none'%3e%3cdefs%3e%3clinearGradient%20id='pv'%20x1='96'%20y1='416'%20x2='416'%20y2='96'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2324C56A'/%3e%3cstop%20offset='1'%20stop-color='%2317A6C6'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20x='16'%20y='16'%20width='480'%20height='480'%20rx='112'%20fill='url(%23pv)'/%3e%3crect%20x='140'%20y='142'%20width='232'%20height='44'%20rx='16'%20fill='%23fff'/%3e%3crect%20x='151'%20y='217'%20width='88'%20height='146'%20rx='9'%20stroke='%23fff'%20stroke-width='22'/%3e%3crect%20x='172'%20y='244'%20width='30'%20height='92'%20rx='13'%20fill='%23fff'/%3e%3crect%20x='262'%20y='206'%20width='110'%20height='168'%20rx='20'%20fill='%23fff'/%3e%3crect%20x='284'%20y='226'%20width='66'%20height='58'%20rx='13'%20fill='url(%23pv)'/%3e%3c/svg%3e");
18
18
  const storyStore = useStoryStore();
19
19
  const stats = computed(() => {
20
20
  let storyCount = 0;
@@ -1,7 +1,7 @@
1
1
  import { customLogos, povesteConfig } from "../../util/config.js";
2
2
  import { isDark } from "../../util/dark.js";
3
- import poveste_text_dark_default from "../../assets/poveste-text-dark.js";
4
- import poveste_text_default from "../../assets/poveste-text.js";
3
+ import "../../assets/poveste-text-dark.js";
4
+ import "../../assets/poveste-text.js";
5
5
  import { computed, createElementBlock, defineComponent, openBlock } from "@poveste/vendors/vue";
6
6
  //#region src/app/components/app/AppLogo.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = ["src", "alt"];
@@ -9,8 +9,8 @@ var AppLogo_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
9
9
  __name: "AppLogo",
10
10
  setup(__props) {
11
11
  const logoUrl = computed(() => {
12
- if (isDark.value) return povesteConfig.theme.logo?.dark ? customLogos?.dark ?? "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODcwIDUxMiIgZmlsbD0ibm9uZSI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InB2dyIgeDE9Ijk2IiB5MT0iNDE2IiB4Mj0iNDE2IiB5Mj0iOTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjRDNTZBIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE3QTZDNiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3QgeD0iMTYiIHk9IjE2IiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjQ4MCIgcng9IjExMiIgZmlsbD0idXJsKCNwdncpIi8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxNDIiIHdpZHRoPSIyMzIiIGhlaWdodD0iNDQiIHJ4PSIxNiIgZmlsbD0iI2ZmZiIvPgogIDxyZWN0IHg9IjE1MSIgeT0iMjE3IiB3aWR0aD0iODgiIGhlaWdodD0iMTQ2IiByeD0iOSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIyIi8+CiAgPHJlY3QgeD0iMTcyIiB5PSIyNDQiIHdpZHRoPSIzMCIgaGVpZ2h0PSI5MiIgcng9IjEzIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3QgeD0iMjYyIiB5PSIyMDYiIHdpZHRoPSIxMTAiIGhlaWdodD0iMTY4IiByeD0iMjAiIGZpbGw9IiNmZmYiLz4KICA8cmVjdCB4PSIyODQiIHk9IjIyNiIgd2lkdGg9IjY2IiBoZWlnaHQ9IjU4IiByeD0iMTMiIGZpbGw9InVybCgjcHZ3KSIvPgogIDx0ZXh0IHg9IjY3NiIgeT0iMjU2IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgZm9udC1mYW1pbHk9InVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjMyMCIgZm9udC13ZWlnaHQ9IjQwMCIgbGV0dGVyLXNwYWNpbmc9Ii00IiBmaWxsPSIjZjhmYWZjIj5Qb3Zlc3RlPC90ZXh0Pgo8L3N2Zz4K" : poveste_text_dark_default;
13
- return povesteConfig.theme.logo?.light ? customLogos?.light ?? "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODcwIDUxMiIgZmlsbD0ibm9uZSI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InB2dyIgeDE9Ijk2IiB5MT0iNDE2IiB4Mj0iNDE2IiB5Mj0iOTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjRDNTZBIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE3QTZDNiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3QgeD0iMTYiIHk9IjE2IiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjQ4MCIgcng9IjExMiIgZmlsbD0idXJsKCNwdncpIi8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxNDIiIHdpZHRoPSIyMzIiIGhlaWdodD0iNDQiIHJ4PSIxNiIgZmlsbD0iI2ZmZiIvPgogIDxyZWN0IHg9IjE1MSIgeT0iMjE3IiB3aWR0aD0iODgiIGhlaWdodD0iMTQ2IiByeD0iOSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIyIi8+CiAgPHJlY3QgeD0iMTcyIiB5PSIyNDQiIHdpZHRoPSIzMCIgaGVpZ2h0PSI5MiIgcng9IjEzIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3QgeD0iMjYyIiB5PSIyMDYiIHdpZHRoPSIxMTAiIGhlaWdodD0iMTY4IiByeD0iMjAiIGZpbGw9IiNmZmYiLz4KICA8cmVjdCB4PSIyODQiIHk9IjIyNiIgd2lkdGg9IjY2IiBoZWlnaHQ9IjU4IiByeD0iMTMiIGZpbGw9InVybCgjcHZ3KSIvPgogIDx0ZXh0IHg9IjY3NiIgeT0iMjU2IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgZm9udC1mYW1pbHk9InVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjMyMCIgZm9udC13ZWlnaHQ9IjQwMCIgbGV0dGVyLXNwYWNpbmc9Ii00IiBmaWxsPSIjMWUyOTNiIj5Qb3Zlc3RlPC90ZXh0Pgo8L3N2Zz4K" : poveste_text_default;
12
+ if (isDark.value) return customLogos?.dark ?? "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODcwIDUxMiIgZmlsbD0ibm9uZSI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InB2dyIgeDE9Ijk2IiB5MT0iNDE2IiB4Mj0iNDE2IiB5Mj0iOTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjRDNTZBIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE3QTZDNiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3QgeD0iMTYiIHk9IjE2IiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjQ4MCIgcng9IjExMiIgZmlsbD0idXJsKCNwdncpIi8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxNDIiIHdpZHRoPSIyMzIiIGhlaWdodD0iNDQiIHJ4PSIxNiIgZmlsbD0iI2ZmZiIvPgogIDxyZWN0IHg9IjE1MSIgeT0iMjE3IiB3aWR0aD0iODgiIGhlaWdodD0iMTQ2IiByeD0iOSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIyIi8+CiAgPHJlY3QgeD0iMTcyIiB5PSIyNDQiIHdpZHRoPSIzMCIgaGVpZ2h0PSI5MiIgcng9IjEzIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3QgeD0iMjYyIiB5PSIyMDYiIHdpZHRoPSIxMTAiIGhlaWdodD0iMTY4IiByeD0iMjAiIGZpbGw9IiNmZmYiLz4KICA8cmVjdCB4PSIyODQiIHk9IjIyNiIgd2lkdGg9IjY2IiBoZWlnaHQ9IjU4IiByeD0iMTMiIGZpbGw9InVybCgjcHZ3KSIvPgogIDx0ZXh0IHg9IjY3NiIgeT0iMjU2IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgZm9udC1mYW1pbHk9InVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjMyMCIgZm9udC13ZWlnaHQ9IjQwMCIgbGV0dGVyLXNwYWNpbmc9Ii00IiBmaWxsPSIjZjhmYWZjIj5Qb3Zlc3RlPC90ZXh0Pgo8L3N2Zz4K";
13
+ return customLogos?.light ?? "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxODcwIDUxMiIgZmlsbD0ibm9uZSI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InB2dyIgeDE9Ijk2IiB5MT0iNDE2IiB4Mj0iNDE2IiB5Mj0iOTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjRDNTZBIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzE3QTZDNiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3QgeD0iMTYiIHk9IjE2IiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjQ4MCIgcng9IjExMiIgZmlsbD0idXJsKCNwdncpIi8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxNDIiIHdpZHRoPSIyMzIiIGhlaWdodD0iNDQiIHJ4PSIxNiIgZmlsbD0iI2ZmZiIvPgogIDxyZWN0IHg9IjE1MSIgeT0iMjE3IiB3aWR0aD0iODgiIGhlaWdodD0iMTQ2IiByeD0iOSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIyIi8+CiAgPHJlY3QgeD0iMTcyIiB5PSIyNDQiIHdpZHRoPSIzMCIgaGVpZ2h0PSI5MiIgcng9IjEzIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3QgeD0iMjYyIiB5PSIyMDYiIHdpZHRoPSIxMTAiIGhlaWdodD0iMTY4IiByeD0iMjAiIGZpbGw9IiNmZmYiLz4KICA8cmVjdCB4PSIyODQiIHk9IjIyNiIgd2lkdGg9IjY2IiBoZWlnaHQ9IjU4IiByeD0iMTMiIGZpbGw9InVybCgjcHZ3KSIvPgogIDx0ZXh0IHg9IjY3NiIgeT0iMjU2IiBkb21pbmFudC1iYXNlbGluZT0iY2VudHJhbCIgZm9udC1mYW1pbHk9InVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjMyMCIgZm9udC13ZWlnaHQ9IjQwMCIgbGV0dGVyLXNwYWNpbmc9Ii00IiBmaWxsPSIjMWUyOTNiIj5Qb3Zlc3RlPC90ZXh0Pgo8L3N2Zz4K";
14
14
  });
15
15
  const altText = computed(() => `${povesteConfig.theme.title} logo`);
16
16
  return (_ctx, _cache) => {
@@ -1,13 +1,17 @@
1
1
  import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
2
- import { createElementBlock, openBlock, renderSlot } from "@poveste/vendors/vue";
2
+ /* empty css */
3
+ import { createBlock, openBlock, renderSlot, resolveDynamicComponent, withCtx } from "@poveste/vendors/vue";
3
4
  //#region src/app/components/app/TopBarChipItem.vue
4
5
  var _sfc_main = {};
5
- var _hoisted_1 = ["role"];
6
6
  function _sfc_render(_ctx, _cache) {
7
- return openBlock(), createElementBlock("a", {
8
- role: _ctx.$attrs["href"] ? void 0 : "button",
9
- class: "poveste-top-bar-chip-item flex items-center gap-1 px-2.5 py-1.5 hover:bg-white/50 active:bg-white/70 dark:hover:bg-white/10 dark:active:bg-white/15 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer text-gray-900 dark:text-gray-100 transition-colors"
10
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_1);
7
+ return openBlock(), createBlock(resolveDynamicComponent(_ctx.$attrs["href"] ? "a" : "button"), {
8
+ type: _ctx.$attrs["href"] ? void 0 : "button",
9
+ class: "poveste-top-bar-chip-item",
10
+ "data-slot": "top-bar-chip-item"
11
+ }, {
12
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13
+ _: 3
14
+ }, 8, ["type"]);
11
15
  }
12
16
  var TopBarChipItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
13
17
  //#endregion
@@ -1,4 +1,5 @@
1
1
  import LayoutItem_vue_vue_type_script_setup_true_lang_default from "./LayoutItem.vue_vue_type_script_setup_true_lang.js";
2
+ /* empty css */
2
3
  //#region src/app/components/layout/LayoutItem.vue
3
4
  var LayoutItem_default = LayoutItem_vue_vue_type_script_setup_true_lang_default;
4
5
  //#endregion
@@ -1,5 +1,4 @@
1
- import BaseListItem_default from "../base/BaseListItem.js";
2
- import { createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, openBlock, toDisplayString, unref, withCtx } from "@poveste/vendors/vue";
1
+ import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref } from "@poveste/vendors/vue";
3
2
  import { Icon } from "@poveste/vendors/iconify";
4
3
  //#region src/app/components/layout/LayoutItem.vue?vue&type=script&setup=true&lang.ts
5
4
  var _hoisted_1 = { class: "flex-1" };
@@ -14,27 +13,25 @@ var LayoutItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
14
13
  emits: ["click"],
15
14
  setup(__props) {
16
15
  return (_ctx, _cache) => {
17
- return openBlock(), createBlock(BaseListItem_default, {
18
- "is-active": __props.isActive,
19
- class: "px-6 py-4 gap-4",
20
- onNavigate: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click"))
21
- }, {
22
- default: withCtx(() => [
23
- createVNode(unref(Icon), {
24
- class: "w-4 h-4 flex-none",
25
- icon: __props.icon,
26
- "aria-hidden": "true"
27
- }, null, 8, ["icon"]),
28
- createElementVNode("span", _hoisted_1, toDisplayString(__props.title), 1),
29
- __props.stateIcon ? (openBlock(), createBlock(unref(Icon), {
30
- key: 0,
31
- class: "w-4 h-4 flex-none opacity-70",
32
- icon: __props.stateIcon,
33
- "aria-hidden": "true"
34
- }, null, 8, ["icon"])) : createCommentVNode("", true)
35
- ]),
36
- _: 1
37
- }, 8, ["is-active"]);
16
+ return openBlock(), createElementBlock("button", {
17
+ type: "button",
18
+ class: normalizeClass(["poveste-layout-item", { active: __props.isActive }]),
19
+ "data-slot": "layout-item",
20
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click"))
21
+ }, [
22
+ createVNode(unref(Icon), {
23
+ class: "w-4 h-4 flex-none",
24
+ icon: __props.icon,
25
+ "aria-hidden": "true"
26
+ }, null, 8, ["icon"]),
27
+ createElementVNode("span", _hoisted_1, toDisplayString(__props.title), 1),
28
+ __props.stateIcon ? (openBlock(), createBlock(unref(Icon), {
29
+ key: 0,
30
+ class: "w-4 h-4 flex-none opacity-70",
31
+ icon: __props.stateIcon,
32
+ "aria-hidden": "true"
33
+ }, null, 8, ["icon"])) : createCommentVNode("", true)
34
+ ], 2);
38
35
  };
39
36
  }
40
37
  });
@@ -1,14 +1,14 @@
1
1
  import { onKeyboardShortcut } from "../../util/keyboard.js";
2
2
  import LayoutPane_default from "./LayoutPane.js";
3
- import { createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, unref, vShow, withDirectives } from "@poveste/vendors/vue";
3
+ import { createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, vShow, watch, withDirectives, withKeys } from "@poveste/vendors/vue";
4
4
  import { Icon } from "@poveste/vendors/iconify";
5
5
  //#region src/app/components/layout/LayoutModal.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = {
7
7
  class: "poveste-layout-modal fixed inset-0 bg-white/80 dark:bg-gray-900/80 z-20",
8
8
  "data-testid": "layout-modal"
9
9
  };
10
- var _hoisted_2 = { class: "bg-white dark:bg-gray-900 md:mt-16 md:mx-auto w-screen max-w-[512px] shadow-xl border border-gray-200 dark:border-gray-750 rounded-lg relative divide-y divide-gray-200 dark:divide-gray-850" };
11
- var _hoisted_3 = { class: "flex items-center px-6 py-3 text-gray-900 dark:text-gray-100" };
10
+ var _hoisted_2 = { class: "flex items-center px-6 py-3 text-gray-900 dark:text-gray-100" };
11
+ var FOCUSABLE = "button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])";
12
12
  var LayoutModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  __name: "LayoutModal",
14
14
  props: { shown: {
@@ -25,11 +25,50 @@ var LayoutModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
25
25
  onKeyboardShortcut(["escape"], () => {
26
26
  if (props.shown) close();
27
27
  });
28
+ const panel = ref();
29
+ let opener = null;
30
+ function focusables() {
31
+ return [...panel.value?.querySelectorAll(FOCUSABLE) ?? []].filter((element) => !element.hasAttribute("disabled") && element.getClientRects().length > 0);
32
+ }
33
+ watch(() => props.shown, async (shown) => {
34
+ if (shown) {
35
+ opener = document.activeElement instanceof HTMLElement ? document.activeElement : null;
36
+ await nextTick();
37
+ focusables()[0]?.focus();
38
+ } else if (opener?.isConnected) {
39
+ opener.focus();
40
+ opener = null;
41
+ }
42
+ });
43
+ function keepFocusInside(event) {
44
+ const elements = focusables();
45
+ const first = elements[0];
46
+ const last = elements.at(-1);
47
+ if (!first || !last) return;
48
+ if (event.shiftKey && document.activeElement === first) {
49
+ event.preventDefault();
50
+ last.focus();
51
+ } else if (!event.shiftKey && document.activeElement === last) {
52
+ event.preventDefault();
53
+ first.focus();
54
+ }
55
+ }
28
56
  return (_ctx, _cache) => {
29
57
  return withDirectives((openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
30
58
  class: "absolute inset-0",
31
59
  onClick: _cache[0] || (_cache[0] = ($event) => close())
32
- }), createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [_cache[2] || (_cache[2] = createElementVNode("h2", { class: "flex-1 text-sm font-medium m-0" }, " Customize Layout ", -1)), createElementVNode("button", {
60
+ }), createElementVNode("div", {
61
+ ref_key: "panel",
62
+ ref: panel,
63
+ role: "dialog",
64
+ "aria-modal": "true",
65
+ "aria-labelledby": "poveste-layout-modal-title",
66
+ class: "bg-white dark:bg-gray-900 md:mt-16 md:mx-auto w-screen max-w-[512px] shadow-xl border border-gray-200 dark:border-gray-750 rounded-lg relative divide-y divide-gray-200 dark:divide-gray-850",
67
+ onKeydown: withKeys(keepFocusInside, ["tab"])
68
+ }, [createElementVNode("div", _hoisted_2, [_cache[2] || (_cache[2] = createElementVNode("h2", {
69
+ id: "poveste-layout-modal-title",
70
+ class: "flex-1 text-sm font-medium m-0"
71
+ }, " Customize Layout ", -1)), createElementVNode("button", {
33
72
  type: "button",
34
73
  class: "flex items-center justify-center p-1 bg-transparent border-0 text-gray-500 dark:text-gray-400 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer",
35
74
  "aria-label": "Close layout customization",
@@ -39,7 +78,7 @@ var LayoutModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
39
78
  icon: "carbon:close",
40
79
  class: "w-5 h-5",
41
80
  "aria-hidden": "true"
42
- })])]), createVNode(LayoutPane_default)])], 512)), [[vShow, __props.shown]]);
81
+ })])]), createVNode(LayoutPane_default)], 544)], 512)), [[vShow, __props.shown]]);
43
82
  };
44
83
  }
45
84
  });
@@ -0,0 +1,7 @@
1
+ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
2
+ import ComponentDocs_vue_vue_type_script_setup_true_lang_default from "./ComponentDocs.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/app/components/panel/ComponentDocs.vue
5
+ var ComponentDocs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ComponentDocs_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3b01b847"]]);
6
+ //#endregion
7
+ export { ComponentDocs_default as default };
@@ -0,0 +1,164 @@
1
+ import { modelLabel, rootFirst, tagHref, tagText } from "../../util/component-docs.js";
2
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, renderList, toDisplayString, unref } from "@poveste/vendors/vue";
3
+ //#region src/app/components/panel/ComponentDocs.vue?vue&type=script&setup=true&lang.ts
4
+ var _hoisted_1 = {
5
+ class: "poveste-component-docs",
6
+ "data-testid": "component-docs"
7
+ };
8
+ var _hoisted_2 = ["open", "data-component"];
9
+ var _hoisted_3 = { "data-slot": "component-name" };
10
+ var _hoisted_4 = {
11
+ key: 0,
12
+ title: "The component's type parameters, as its script declares them",
13
+ "data-slot": "generic"
14
+ };
15
+ var _hoisted_5 = {
16
+ key: 0,
17
+ "data-slot": "error"
18
+ };
19
+ var _hoisted_6 = {
20
+ key: 0,
21
+ "data-slot": "props"
22
+ };
23
+ var _hoisted_7 = ["data-prop"];
24
+ var _hoisted_8 = {
25
+ key: 0,
26
+ title: "Required",
27
+ "data-slot": "required"
28
+ };
29
+ var _hoisted_9 = ["title"];
30
+ var _hoisted_10 = { key: 0 };
31
+ var _hoisted_11 = ["title"];
32
+ var _hoisted_12 = {
33
+ key: 0,
34
+ "data-slot": "deprecated"
35
+ };
36
+ var _hoisted_13 = ["href"];
37
+ var _hoisted_14 = {
38
+ key: 1,
39
+ "data-slot": "see"
40
+ };
41
+ var _hoisted_15 = {
42
+ key: 1,
43
+ "data-slot": "example"
44
+ };
45
+ var _hoisted_16 = {
46
+ key: 1,
47
+ "data-slot": "slots"
48
+ };
49
+ var _hoisted_17 = ["data-slot-name"];
50
+ var _hoisted_18 = { key: 0 };
51
+ var _hoisted_19 = ["data-slot-prop"];
52
+ var _hoisted_20 = {
53
+ key: 2,
54
+ "data-slot": "events"
55
+ };
56
+ var _hoisted_21 = ["data-event"];
57
+ var _hoisted_22 = ["title"];
58
+ var _hoisted_23 = { key: 0 };
59
+ var ComponentDocs_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
60
+ __name: "ComponentDocs",
61
+ props: {
62
+ components: {},
63
+ storyFile: {}
64
+ },
65
+ setup(__props) {
66
+ const props = __props;
67
+ const ordered = computed(() => rootFirst(props.components, props.storyFile));
68
+ function shownDefault(prop) {
69
+ return prop.default ?? prop.defaultTag;
70
+ }
71
+ return (_ctx, _cache) => {
72
+ return openBlock(), createElementBlock("div", _hoisted_1, [(openBlock(true), createElementBlock(Fragment, null, renderList(ordered.value, (component, index) => {
73
+ return openBlock(), createElementBlock("details", {
74
+ key: component.file,
75
+ open: ordered.value.length <= unref(3) || index === 0,
76
+ "data-slot": "component",
77
+ "data-component": component.name
78
+ }, [createElementVNode("summary", null, [createElementVNode("h3", _hoisted_3, [createTextVNode(toDisplayString(component.name), 1), component.doc?.generic ? (openBlock(), createElementBlock("code", _hoisted_4, "<" + toDisplayString(component.doc.generic) + ">", 1)) : createCommentVNode("", true)])]), component.error ? (openBlock(), createElementBlock("p", _hoisted_5, " Could not read this component's types: " + toDisplayString(component.error), 1)) : component.doc ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
79
+ component.doc.props.length ? (openBlock(), createElementBlock("table", _hoisted_6, [_cache[1] || (_cache[1] = createElementVNode("thead", null, [createElementVNode("tr", null, [
80
+ createElementVNode("th", null, "Prop"),
81
+ createElementVNode("th", null, "Type"),
82
+ createElementVNode("th", null, "Default"),
83
+ createElementVNode("th", null, "Description")
84
+ ])], -1)), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(component.doc.props, (prop) => {
85
+ return openBlock(), createElementBlock("tr", {
86
+ key: prop.name,
87
+ "data-prop": prop.name
88
+ }, [
89
+ createElementVNode("td", null, [
90
+ createElementVNode("code", { class: normalizeClass({ deprecated: unref(tagText)(prop.tags, "deprecated") !== void 0 }) }, toDisplayString(prop.name), 3),
91
+ prop.required ? (openBlock(), createElementBlock("span", _hoisted_8, "*")) : createCommentVNode("", true),
92
+ unref(modelLabel)(component.doc, prop.name) ? (openBlock(), createElementBlock("code", {
93
+ key: 1,
94
+ title: `Bound two ways with ${unref(modelLabel)(component.doc, prop.name)}, through the update:${prop.name} event`,
95
+ "data-slot": "model"
96
+ }, toDisplayString(unref(modelLabel)(component.doc, prop.name)), 9, _hoisted_9)) : createCommentVNode("", true)
97
+ ]),
98
+ createElementVNode("td", null, [createElementVNode("code", null, toDisplayString(prop.type), 1)]),
99
+ createElementVNode("td", null, [shownDefault(prop) !== void 0 ? (openBlock(), createElementBlock("code", _hoisted_10, toDisplayString(shownDefault(prop)), 1)) : createCommentVNode("", true), _ctx.__POVESTE_DEV__ && prop.defaultConflict ? (openBlock(), createElementBlock("span", {
100
+ key: 1,
101
+ title: `The code's default is shown; the @default tag says ${prop.defaultTag}`,
102
+ "data-slot": "default-conflict"
103
+ }, "≠", 8, _hoisted_11)) : createCommentVNode("", true)]),
104
+ createElementVNode("td", null, [
105
+ unref(tagText)(prop.tags, "deprecated") !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_12, [_cache[0] || (_cache[0] = createTextVNode("Deprecated", -1)), unref(tagText)(prop.tags, "deprecated") ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(": " + toDisplayString(unref(tagText)(prop.tags, "deprecated")), 1)], 64)) : createCommentVNode("", true)])) : createCommentVNode("", true),
106
+ createTextVNode(" " + toDisplayString(prop.description) + " ", 1),
107
+ (openBlock(true), createElementBlock(Fragment, null, renderList(prop.tags.filter((tag) => tag.name === "see" || tag.name === "link"), (tag) => {
108
+ return openBlock(), createElementBlock(Fragment, { key: tag.text }, [unref(tagHref)(tag.text ?? "") ? (openBlock(), createElementBlock("a", {
109
+ key: 0,
110
+ href: unref(tagHref)(tag.text ?? ""),
111
+ target: "_blank",
112
+ rel: "noopener",
113
+ "data-slot": "see"
114
+ }, toDisplayString(tag.text), 9, _hoisted_13)) : (openBlock(), createElementBlock("span", _hoisted_14, toDisplayString(tag.text), 1))], 64);
115
+ }), 128)),
116
+ unref(tagText)(prop.tags, "example") ? (openBlock(), createElementBlock("pre", _hoisted_15, [createElementVNode("code", null, toDisplayString(unref(tagText)(prop.tags, "example")), 1)])) : createCommentVNode("", true)
117
+ ])
118
+ ], 8, _hoisted_7);
119
+ }), 128))])])) : createCommentVNode("", true),
120
+ component.doc.slots.length ? (openBlock(), createElementBlock("table", _hoisted_16, [_cache[2] || (_cache[2] = createElementVNode("thead", null, [createElementVNode("tr", null, [
121
+ createElementVNode("th", null, "Slot"),
122
+ createElementVNode("th", null, "Type"),
123
+ createElementVNode("th", null, "Description")
124
+ ])], -1)), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(component.doc.slots, (slot) => {
125
+ return openBlock(), createElementBlock(Fragment, { key: slot.name }, [createElementVNode("tr", { "data-slot-name": slot.name }, [
126
+ createElementVNode("td", null, [createElementVNode("code", null, toDisplayString(slot.name), 1)]),
127
+ createElementVNode("td", null, [slot.type && !slot.props?.length ? (openBlock(), createElementBlock("code", _hoisted_18, toDisplayString(slot.type), 1)) : createCommentVNode("", true)]),
128
+ createElementVNode("td", null, toDisplayString(slot.description), 1)
129
+ ], 8, _hoisted_17), (openBlock(true), createElementBlock(Fragment, null, renderList(slot.props ?? [], (slotProp) => {
130
+ return openBlock(), createElementBlock("tr", {
131
+ key: `${slot.name}.${slotProp.name}`,
132
+ "data-slot-prop": slotProp.name
133
+ }, [
134
+ createElementVNode("td", null, [createElementVNode("code", null, toDisplayString(slotProp.name), 1)]),
135
+ createElementVNode("td", null, [createElementVNode("code", null, toDisplayString(slotProp.type), 1)]),
136
+ createElementVNode("td", null, toDisplayString(slotProp.description), 1)
137
+ ], 8, _hoisted_19);
138
+ }), 128))], 64);
139
+ }), 128))])])) : createCommentVNode("", true),
140
+ component.doc.events.length ? (openBlock(), createElementBlock("table", _hoisted_20, [_cache[3] || (_cache[3] = createElementVNode("thead", null, [createElementVNode("tr", null, [
141
+ createElementVNode("th", null, "Event"),
142
+ createElementVNode("th", null, "Payload"),
143
+ createElementVNode("th", null, "Description")
144
+ ])], -1)), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(component.doc.events, (event) => {
145
+ return openBlock(), createElementBlock("tr", {
146
+ key: event.name,
147
+ "data-event": event.name
148
+ }, [
149
+ createElementVNode("td", null, [createElementVNode("code", null, toDisplayString(event.name), 1), unref(modelLabel)(component.doc, event.name) ? (openBlock(), createElementBlock("code", {
150
+ key: 0,
151
+ title: `Bound two ways with ${unref(modelLabel)(component.doc, event.name)}, with the ${event.name.slice(7)} prop`,
152
+ "data-slot": "model"
153
+ }, toDisplayString(unref(modelLabel)(component.doc, event.name)), 9, _hoisted_22)) : createCommentVNode("", true)]),
154
+ createElementVNode("td", null, [event.type ? (openBlock(), createElementBlock("code", _hoisted_23, toDisplayString(event.type), 1)) : createCommentVNode("", true)]),
155
+ createElementVNode("td", null, toDisplayString(event.description), 1)
156
+ ], 8, _hoisted_21);
157
+ }), 128))])])) : createCommentVNode("", true)
158
+ ], 64)) : createCommentVNode("", true)], 8, _hoisted_2);
159
+ }), 128))]);
160
+ };
161
+ }
162
+ });
163
+ //#endregion
164
+ export { ComponentDocs_vue_vue_type_script_setup_true_lang_default as default };