@juxtui/ui 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Comment, Fragment, Teleport, Text, Transition, TransitionGroup, cloneVNode, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, h, inject, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, toValue, unref, useId, useModel, useSlots, vModelDynamic, vModelText, watch, watchEffect, withCtx, withDirectives, withModifiers } from "vue";
1
+ import { Comment, Fragment, Teleport, Text, Transition, TransitionGroup, cloneVNode, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, h, inject, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, toValue, unref, useId, useModel, useSlots, vModelDynamic, vModelText, vShow, watch, watchEffect, withCtx, withDirectives, withModifiers } from "vue";
2
2
  import { autoUpdate, computePosition, flip, offset, shift, size } from "@floating-ui/dom";
3
3
  //#region \0rolldown/runtime.js
4
4
  var __defProp = Object.defineProperty;
@@ -246,12 +246,12 @@ var Spinner = (props) => {
246
246
  Spinner.displayName = "JSpinner";
247
247
  //#endregion
248
248
  //#region src/components/accordion/JAccordionItem.vue?vue&type=script&setup=true&lang.ts
249
- var _hoisted_1$43 = ["data-state"];
250
- var _hoisted_2$33 = ["aria-expanded", "disabled"];
251
- var _hoisted_3$27 = { class: "j-accordion__title" };
252
- var _hoisted_4$21 = ["inert"];
253
- var _hoisted_5$16 = { class: "j-accordion__panel-inner" };
254
- var _hoisted_6$10 = { class: "j-accordion__content" };
249
+ var _hoisted_1$51 = ["data-state"];
250
+ var _hoisted_2$38 = ["aria-expanded", "disabled"];
251
+ var _hoisted_3$32 = { class: "j-accordion__title" };
252
+ var _hoisted_4$25 = ["inert"];
253
+ var _hoisted_5$19 = { class: "j-accordion__panel-inner" };
254
+ var _hoisted_6$11 = { class: "j-accordion__content" };
255
255
  //#endregion
256
256
  //#region src/components/accordion/JAccordionItem.vue
257
257
  var JAccordionItem_default = /* @__PURE__ */ defineComponent({
@@ -282,7 +282,7 @@ var JAccordionItem_default = /* @__PURE__ */ defineComponent({
282
282
  "aria-controls": panelId,
283
283
  disabled: __props.disabled,
284
284
  onClick: _cache[0] || (_cache[0] = ($event) => unref(accordion).toggle(__props.value))
285
- }, [createElementVNode("span", _hoisted_3$27, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), createVNode(unref(IconChevronDown), { class: "j-accordion__chevron" })], 8, _hoisted_2$33)]),
285
+ }, [createElementVNode("span", _hoisted_3$32, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]), createVNode(unref(IconChevronDown), { class: "j-accordion__chevron" })], 8, _hoisted_2$38)]),
286
286
  _: 3
287
287
  })), createElementVNode("div", {
288
288
  id: panelId,
@@ -290,27 +290,27 @@ var JAccordionItem_default = /* @__PURE__ */ defineComponent({
290
290
  class: "j-accordion__panel",
291
291
  "aria-labelledby": triggerId,
292
292
  inert: !open.value
293
- }, [createElementVNode("div", _hoisted_5$16, [createElementVNode("div", _hoisted_6$10, [renderSlot(_ctx.$slots, "default")])])], 8, _hoisted_4$21)], 10, _hoisted_1$43);
293
+ }, [createElementVNode("div", _hoisted_5$19, [createElementVNode("div", _hoisted_6$11, [renderSlot(_ctx.$slots, "default")])])], 8, _hoisted_4$25)], 10, _hoisted_1$51);
294
294
  };
295
295
  }
296
296
  });
297
297
  //#endregion
298
298
  //#region src/components/alert/JAlert.vue?vue&type=script&setup=true&lang.ts
299
- var _hoisted_1$42 = {
299
+ var _hoisted_1$50 = {
300
300
  key: 0,
301
301
  class: "j-alert__icon",
302
302
  "aria-hidden": "true"
303
303
  };
304
- var _hoisted_2$32 = { class: "j-alert__body" };
305
- var _hoisted_3$26 = {
304
+ var _hoisted_2$37 = { class: "j-alert__body" };
305
+ var _hoisted_3$31 = {
306
306
  key: 0,
307
307
  class: "j-alert__title"
308
308
  };
309
- var _hoisted_4$20 = {
309
+ var _hoisted_4$24 = {
310
310
  key: 1,
311
311
  class: "j-alert__description"
312
312
  };
313
- var _hoisted_5$15 = {
313
+ var _hoisted_5$18 = {
314
314
  key: 2,
315
315
  class: "j-alert__actions"
316
316
  };
@@ -337,11 +337,11 @@ var JAlert_default = /* @__PURE__ */ defineComponent({
337
337
  };
338
338
  return (_ctx, _cache) => {
339
339
  return openBlock(), createElementBlock("div", { class: normalizeClass(["j-alert", `j-alert--${__props.variant}`]) }, [
340
- !__props.hideIcon ? (openBlock(), createElementBlock("span", _hoisted_1$42, [renderSlot(_ctx.$slots, "icon", {}, () => [(openBlock(), createBlock(resolveDynamicComponent(icons[__props.variant])))])])) : createCommentVNode("", true),
341
- createElementVNode("div", _hoisted_2$32, [
342
- __props.title ? (openBlock(), createElementBlock("p", _hoisted_3$26, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
343
- __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$20, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
344
- _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5$15, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
340
+ !__props.hideIcon ? (openBlock(), createElementBlock("span", _hoisted_1$50, [renderSlot(_ctx.$slots, "icon", {}, () => [(openBlock(), createBlock(resolveDynamicComponent(icons[__props.variant])))])])) : createCommentVNode("", true),
341
+ createElementVNode("div", _hoisted_2$37, [
342
+ __props.title ? (openBlock(), createElementBlock("p", _hoisted_3$31, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
343
+ __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$24, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
344
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5$18, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
345
345
  ]),
346
346
  __props.dismissible ? (openBlock(), createElementBlock("button", {
347
347
  key: 1,
@@ -356,7 +356,7 @@ var JAlert_default = /* @__PURE__ */ defineComponent({
356
356
  });
357
357
  //#endregion
358
358
  //#region src/components/aspect-ratio/JAspectRatio.vue?vue&type=script&setup=true&lang.ts
359
- var _hoisted_1$41 = { class: "j-aspect-ratio__content" };
359
+ var _hoisted_1$49 = { class: "j-aspect-ratio__content" };
360
360
  //#endregion
361
361
  //#region src/components/aspect-ratio/JAspectRatio.vue
362
362
  var JAspectRatio_default = /* @__PURE__ */ defineComponent({
@@ -369,25 +369,25 @@ var JAspectRatio_default = /* @__PURE__ */ defineComponent({
369
369
  return openBlock(), createElementBlock("div", {
370
370
  class: "j-aspect-ratio",
371
371
  style: normalizeStyle(style.value)
372
- }, [createElementVNode("div", _hoisted_1$41, [renderSlot(_ctx.$slots, "default")])], 4);
372
+ }, [createElementVNode("div", _hoisted_1$49, [renderSlot(_ctx.$slots, "default")])], 4);
373
373
  };
374
374
  }
375
375
  });
376
376
  //#endregion
377
377
  //#region src/components/avatar/JAvatar.vue?vue&type=script&setup=true&lang.ts
378
- var _hoisted_1$40 = [
378
+ var _hoisted_1$48 = [
379
379
  "role",
380
380
  "aria-label",
381
381
  "data-state"
382
382
  ];
383
- var _hoisted_2$31 = { class: "j-avatar__frame" };
384
- var _hoisted_3$25 = ["src"];
385
- var _hoisted_4$19 = {
383
+ var _hoisted_2$36 = { class: "j-avatar__frame" };
384
+ var _hoisted_3$30 = ["src"];
385
+ var _hoisted_4$23 = {
386
386
  key: 1,
387
387
  class: "j-avatar__fallback",
388
388
  "aria-hidden": "true"
389
389
  };
390
- var _hoisted_5$14 = {
390
+ var _hoisted_5$17 = {
391
391
  key: 1,
392
392
  viewBox: "0 0 16 16",
393
393
  fill: "currentColor",
@@ -439,7 +439,7 @@ var JAvatar_default = /* @__PURE__ */ defineComponent({
439
439
  role: label.value ? "img" : void 0,
440
440
  "aria-label": label.value,
441
441
  "data-state": state.value
442
- }, [createElementVNode("span", _hoisted_2$31, [__props.src && state.value !== "error" ? (openBlock(), createElementBlock("img", {
442
+ }, [createElementVNode("span", _hoisted_2$36, [__props.src && state.value !== "error" ? (openBlock(), createElementBlock("img", {
443
443
  key: 0,
444
444
  ref_key: "img",
445
445
  ref: img,
@@ -448,7 +448,7 @@ var JAvatar_default = /* @__PURE__ */ defineComponent({
448
448
  alt: "",
449
449
  onLoad: _cache[0] || (_cache[0] = ($event) => state.value = "loaded"),
450
450
  onError: _cache[1] || (_cache[1] = ($event) => state.value = "error")
451
- }, null, 40, _hoisted_3$25)) : createCommentVNode("", true), state.value !== "loaded" ? (openBlock(), createElementBlock("span", _hoisted_4$19, [renderSlot(_ctx.$slots, "fallback", {}, () => [initials.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(initials.value), 1)], 64)) : (openBlock(), createElementBlock("svg", _hoisted_5$14, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
451
+ }, null, 40, _hoisted_3$30)) : createCommentVNode("", true), state.value !== "loaded" ? (openBlock(), createElementBlock("span", _hoisted_4$23, [renderSlot(_ctx.$slots, "fallback", {}, () => [initials.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(initials.value), 1)], 64)) : (openBlock(), createElementBlock("svg", _hoisted_5$17, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
452
452
  cx: "8",
453
453
  cy: "6",
454
454
  r: "2.75"
@@ -456,14 +456,14 @@ var JAvatar_default = /* @__PURE__ */ defineComponent({
456
456
  key: 0,
457
457
  class: normalizeClass(["j-avatar__status", `j-avatar__status--${__props.status}`]),
458
458
  "aria-hidden": "true"
459
- }, null, 2)) : createCommentVNode("", true)], 10, _hoisted_1$40);
459
+ }, null, 2)) : createCommentVNode("", true)], 10, _hoisted_1$48);
460
460
  };
461
461
  }
462
462
  });
463
463
  //#endregion
464
464
  //#region src/components/avatar-group/JAvatarGroup.vue?vue&type=script&setup=true&lang.ts
465
- var _hoisted_1$39 = ["aria-label"];
466
- var _hoisted_2$30 = ["aria-label"];
465
+ var _hoisted_1$47 = ["aria-label"];
466
+ var _hoisted_2$35 = ["aria-label"];
467
467
  //#endregion
468
468
  //#region src/components/avatar-group/JAvatarGroup.vue
469
469
  var JAvatarGroup_default = /* @__PURE__ */ defineComponent({
@@ -505,18 +505,18 @@ var JAvatarGroup_default = /* @__PURE__ */ defineComponent({
505
505
  class: normalizeClass(["j-avatar-group__item j-avatar-group__overflow j-focusable", { "j-avatar-group__overflow--square": __props.shape === "square" }]),
506
506
  tabindex: "0",
507
507
  "aria-label": `${overflow.value} more`
508
- }, " +" + toDisplayString(overflow.value), 11, _hoisted_2$30)) : createCommentVNode("", true)], 10, _hoisted_1$39);
508
+ }, " +" + toDisplayString(overflow.value), 11, _hoisted_2$35)) : createCommentVNode("", true)], 10, _hoisted_1$47);
509
509
  };
510
510
  }
511
511
  });
512
512
  //#endregion
513
513
  //#region src/components/badge/JBadge.vue?vue&type=script&setup=true&lang.ts
514
- var _hoisted_1$38 = {
514
+ var _hoisted_1$46 = {
515
515
  key: 0,
516
516
  class: "j-badge__marker",
517
517
  "aria-hidden": "true"
518
518
  };
519
- var _hoisted_2$29 = {
519
+ var _hoisted_2$34 = {
520
520
  key: 1,
521
521
  class: "j-badge__icon"
522
522
  };
@@ -535,28 +535,28 @@ var JBadge_default = /* @__PURE__ */ defineComponent({
535
535
  `j-badge--${__props.variant}`,
536
536
  `j-badge--${__props.size}`,
537
537
  { "j-badge--status": __props.dot }
538
- ]]) }, [__props.dot ? (openBlock(), createElementBlock("span", _hoisted_1$38)) : _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$29, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 2);
538
+ ]]) }, [__props.dot ? (openBlock(), createElementBlock("span", _hoisted_1$46)) : _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$34, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 2);
539
539
  };
540
540
  }
541
541
  });
542
542
  //#endregion
543
543
  //#region src/components/banner/JBanner.vue?vue&type=script&setup=true&lang.ts
544
- var _hoisted_1$37 = ["aria-label"];
545
- var _hoisted_2$28 = {
544
+ var _hoisted_1$45 = ["aria-label"];
545
+ var _hoisted_2$33 = {
546
546
  key: 0,
547
547
  class: "j-banner__icon",
548
548
  "aria-hidden": "true"
549
549
  };
550
- var _hoisted_3$24 = { class: "j-banner__body" };
551
- var _hoisted_4$18 = {
550
+ var _hoisted_3$29 = { class: "j-banner__body" };
551
+ var _hoisted_4$22 = {
552
552
  key: 0,
553
553
  class: "j-banner__title"
554
554
  };
555
- var _hoisted_5$13 = {
555
+ var _hoisted_5$16 = {
556
556
  key: 1,
557
557
  class: "j-banner__description"
558
558
  };
559
- var _hoisted_6$9 = {
559
+ var _hoisted_6$10 = {
560
560
  key: 1,
561
561
  class: "j-banner__actions"
562
562
  };
@@ -587,9 +587,9 @@ var JBanner_default = /* @__PURE__ */ defineComponent({
587
587
  role: "region",
588
588
  "aria-label": __props.title
589
589
  }, [
590
- !__props.hideIcon ? (openBlock(), createElementBlock("span", _hoisted_2$28, [renderSlot(_ctx.$slots, "icon", {}, () => [(openBlock(), createBlock(resolveDynamicComponent(icons[__props.variant])))])])) : createCommentVNode("", true),
591
- createElementVNode("div", _hoisted_3$24, [__props.title ? (openBlock(), createElementBlock("p", _hoisted_4$18, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_5$13, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true)]),
592
- _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_6$9, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
590
+ !__props.hideIcon ? (openBlock(), createElementBlock("span", _hoisted_2$33, [renderSlot(_ctx.$slots, "icon", {}, () => [(openBlock(), createBlock(resolveDynamicComponent(icons[__props.variant])))])])) : createCommentVNode("", true),
591
+ createElementVNode("div", _hoisted_3$29, [__props.title ? (openBlock(), createElementBlock("p", _hoisted_4$22, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_5$16, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true)]),
592
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_6$10, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
593
593
  __props.dismissible ? (openBlock(), createElementBlock("button", {
594
594
  key: 2,
595
595
  type: "button",
@@ -597,21 +597,21 @@ var JBanner_default = /* @__PURE__ */ defineComponent({
597
597
  "aria-label": "Dismiss",
598
598
  onClick: _cache[0] || (_cache[0] = ($event) => emit("dismiss"))
599
599
  }, [createVNode(unref(IconX))])) : createCommentVNode("", true)
600
- ], 10, _hoisted_1$37);
600
+ ], 10, _hoisted_1$45);
601
601
  };
602
602
  }
603
603
  });
604
604
  //#endregion
605
605
  //#region src/components/breadcrumb/JBreadcrumb.vue?vue&type=script&setup=true&lang.ts
606
- var _hoisted_1$36 = ["aria-label"];
607
- var _hoisted_2$27 = { class: "j-breadcrumb__list" };
608
- var _hoisted_3$23 = {
606
+ var _hoisted_1$44 = ["aria-label"];
607
+ var _hoisted_2$32 = { class: "j-breadcrumb__list" };
608
+ var _hoisted_3$28 = {
609
609
  key: 0,
610
610
  class: "j-breadcrumb__ellipsis",
611
611
  "aria-hidden": "true"
612
612
  };
613
- var _hoisted_4$17 = ["href"];
614
- var _hoisted_5$12 = ["aria-current"];
613
+ var _hoisted_4$21 = ["href"];
614
+ var _hoisted_5$15 = ["aria-current"];
615
615
  //#endregion
616
616
  //#region src/components/breadcrumb/JBreadcrumb.vue
617
617
  var JBreadcrumb_default = /* @__PURE__ */ defineComponent({
@@ -645,35 +645,82 @@ var JBreadcrumb_default = /* @__PURE__ */ defineComponent({
645
645
  return openBlock(), createElementBlock("nav", {
646
646
  class: "j-breadcrumb",
647
647
  "aria-label": __props.label || "Breadcrumb"
648
- }, [createElementVNode("ol", _hoisted_2$27, [__props.items && __props.items.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(visibleItems.value, (item, index) => {
648
+ }, [createElementVNode("ol", _hoisted_2$32, [__props.items && __props.items.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(visibleItems.value, (item, index) => {
649
649
  return openBlock(), createElementBlock("li", {
650
650
  key: `${item.label}-${index}`,
651
651
  class: "j-breadcrumb__item"
652
- }, [item.ellipsis ? (openBlock(), createElementBlock("span", _hoisted_3$23, toDisplayString(item.label), 1)) : item.href && index !== visibleItems.value.length - 1 ? (openBlock(), createElementBlock("a", {
652
+ }, [item.ellipsis ? (openBlock(), createElementBlock("span", _hoisted_3$28, toDisplayString(item.label), 1)) : item.href && index !== visibleItems.value.length - 1 ? (openBlock(), createElementBlock("a", {
653
653
  key: 1,
654
654
  class: "j-breadcrumb__link j-focusable",
655
655
  href: item.href
656
- }, toDisplayString(item.label), 9, _hoisted_4$17)) : (openBlock(), createElementBlock("span", {
656
+ }, toDisplayString(item.label), 9, _hoisted_4$21)) : (openBlock(), createElementBlock("span", {
657
657
  key: 2,
658
658
  class: "j-breadcrumb__current",
659
659
  "aria-current": index === visibleItems.value.length - 1 ? "page" : void 0
660
- }, toDisplayString(item.label), 9, _hoisted_5$12))]);
661
- }), 128)) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)])], 8, _hoisted_1$36);
660
+ }, toDisplayString(item.label), 9, _hoisted_5$15))]);
661
+ }), 128)) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)])], 8, _hoisted_1$44);
662
+ };
663
+ }
664
+ });
665
+ //#endregion
666
+ //#region src/components/burger/JBurger.vue?vue&type=script&setup=true&lang.ts
667
+ var _hoisted_1$43 = [
668
+ "data-state",
669
+ "aria-expanded",
670
+ "aria-controls",
671
+ "aria-label"
672
+ ];
673
+ //#endregion
674
+ //#region src/components/burger/JBurger.vue
675
+ var JBurger_default = /* @__PURE__ */ defineComponent({
676
+ __name: "JBurger",
677
+ props: /*@__PURE__*/ mergeModels({
678
+ openLabel: { default: "Open menu" },
679
+ closeLabel: { default: "Close menu" },
680
+ size: { default: "md" },
681
+ controls: {}
682
+ }, {
683
+ "modelValue": {
684
+ type: Boolean,
685
+ default: false
686
+ },
687
+ "modelModifiers": {}
688
+ }),
689
+ emits: ["update:modelValue"],
690
+ setup(__props) {
691
+ const open = useModel(__props, "modelValue");
692
+ return (_ctx, _cache) => {
693
+ return openBlock(), createElementBlock("button", {
694
+ type: "button",
695
+ class: normalizeClass(["j-burger j-focusable", `j-burger--${__props.size}`]),
696
+ "data-state": open.value ? "open" : "closed",
697
+ "aria-expanded": open.value,
698
+ "aria-controls": __props.controls,
699
+ "aria-label": open.value ? __props.closeLabel : __props.openLabel,
700
+ onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
701
+ }, [..._cache[1] || (_cache[1] = [createElementVNode("span", {
702
+ class: "j-burger__lines",
703
+ "aria-hidden": "true"
704
+ }, [
705
+ createElementVNode("span", { class: "j-burger__line" }),
706
+ createElementVNode("span", { class: "j-burger__line" }),
707
+ createElementVNode("span", { class: "j-burger__line" })
708
+ ], -1)])], 10, _hoisted_1$43);
662
709
  };
663
710
  }
664
711
  });
665
712
  //#endregion
666
713
  //#region src/components/button/JButton.vue?vue&type=script&setup=true&lang.ts
667
- var _hoisted_1$35 = { class: "j-button__content" };
668
- var _hoisted_2$26 = {
714
+ var _hoisted_1$42 = { class: "j-button__content" };
715
+ var _hoisted_2$31 = {
669
716
  key: 0,
670
717
  class: "j-button__icon"
671
718
  };
672
- var _hoisted_3$22 = {
719
+ var _hoisted_3$27 = {
673
720
  key: 1,
674
721
  class: "j-button__icon"
675
722
  };
676
- var _hoisted_4$16 = {
723
+ var _hoisted_4$20 = {
677
724
  key: 0,
678
725
  class: "j-button__spinner"
679
726
  };
@@ -727,12 +774,12 @@ var JButton_default = /* @__PURE__ */ defineComponent({
727
774
  "data-disabled": __props.disabled || void 0,
728
775
  onClickCapture: onClick
729
776
  }), {
730
- default: withCtx(() => [createElementVNode("span", _hoisted_1$35, [
731
- _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$26, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
777
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$42, [
778
+ _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$31, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
732
779
  renderSlot(_ctx.$slots, "default"),
733
- _ctx.$slots.trailing ? (openBlock(), createElementBlock("span", _hoisted_3$22, [renderSlot(_ctx.$slots, "trailing")])) : createCommentVNode("", true)
780
+ _ctx.$slots.trailing ? (openBlock(), createElementBlock("span", _hoisted_3$27, [renderSlot(_ctx.$slots, "trailing")])) : createCommentVNode("", true)
734
781
  ]), createVNode(Transition, { name: "j-button-spinner" }, {
735
- default: withCtx(() => [__props.loading ? (openBlock(), createElementBlock("span", _hoisted_4$16, [createVNode(unref(Spinner), { size: __props.size === "xs" ? 12 : __props.size === "lg" ? 16 : 14 }, null, 8, ["size"])])) : createCommentVNode("", true)]),
782
+ default: withCtx(() => [__props.loading ? (openBlock(), createElementBlock("span", _hoisted_4$20, [createVNode(unref(Spinner), { size: __props.size === "xs" ? 12 : __props.size === "lg" ? 16 : 14 }, null, 8, ["size"])])) : createCommentVNode("", true)]),
736
783
  _: 1
737
784
  })]),
738
785
  _: 3
@@ -746,28 +793,28 @@ var JButton_default = /* @__PURE__ */ defineComponent({
746
793
  });
747
794
  //#endregion
748
795
  //#region src/components/card/JCard.vue?vue&type=script&setup=true&lang.ts
749
- var _hoisted_1$34 = {
796
+ var _hoisted_1$41 = {
750
797
  key: 0,
751
798
  class: "j-card__header"
752
799
  };
753
- var _hoisted_2$25 = { class: "j-card__heading" };
754
- var _hoisted_3$21 = {
800
+ var _hoisted_2$30 = { class: "j-card__heading" };
801
+ var _hoisted_3$26 = {
755
802
  key: 0,
756
803
  class: "j-card__title"
757
804
  };
758
- var _hoisted_4$15 = {
805
+ var _hoisted_4$19 = {
759
806
  key: 1,
760
807
  class: "j-card__description"
761
808
  };
762
- var _hoisted_5$11 = {
809
+ var _hoisted_5$14 = {
763
810
  key: 0,
764
811
  class: "j-card__actions"
765
812
  };
766
- var _hoisted_6$8 = {
813
+ var _hoisted_6$9 = {
767
814
  key: 1,
768
815
  class: "j-card__body"
769
816
  };
770
- var _hoisted_7$4 = {
817
+ var _hoisted_7$5 = {
771
818
  key: 2,
772
819
  class: "j-card__footer"
773
820
  };
@@ -786,9 +833,9 @@ var JCard_default = /* @__PURE__ */ defineComponent({
786
833
  return (_ctx, _cache) => {
787
834
  return openBlock(), createBlock(resolveDynamicComponent(__props.as), { class: normalizeClass(["j-card", [`j-card--${__props.variant}`, `j-card--p-${__props.padding}`]]) }, {
788
835
  default: withCtx(() => [
789
- __props.title || __props.description || _ctx.$slots.header || _ctx.$slots.actions ? (openBlock(), createElementBlock("header", _hoisted_1$34, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", _hoisted_2$25, [__props.title ? (openBlock(), createElementBlock("h3", _hoisted_3$21, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$15, toDisplayString(__props.description), 1)) : createCommentVNode("", true)])]), _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5$11, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)])) : createCommentVNode("", true),
790
- _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_6$8, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true),
791
- _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_7$4, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
836
+ __props.title || __props.description || _ctx.$slots.header || _ctx.$slots.actions ? (openBlock(), createElementBlock("header", _hoisted_1$41, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", _hoisted_2$30, [__props.title ? (openBlock(), createElementBlock("h3", _hoisted_3$26, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$19, toDisplayString(__props.description), 1)) : createCommentVNode("", true)])]), _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5$14, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)])) : createCommentVNode("", true),
837
+ _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_6$9, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true),
838
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_7$5, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
792
839
  ]),
793
840
  _: 3
794
841
  }, 8, ["class"]);
@@ -797,9 +844,9 @@ var JCard_default = /* @__PURE__ */ defineComponent({
797
844
  });
798
845
  //#endregion
799
846
  //#region src/components/checkbox/JCheckbox.vue?vue&type=script&setup=true&lang.ts
800
- var _hoisted_1$33 = ["data-state"];
801
- var _hoisted_2$24 = { class: "j-checkbox__control" };
802
- var _hoisted_3$20 = [
847
+ var _hoisted_1$40 = ["data-state"];
848
+ var _hoisted_2$29 = { class: "j-checkbox__control" };
849
+ var _hoisted_3$25 = [
803
850
  "id",
804
851
  "checked",
805
852
  "disabled",
@@ -808,12 +855,12 @@ var _hoisted_3$20 = [
808
855
  "value",
809
856
  "aria-describedby"
810
857
  ];
811
- var _hoisted_4$14 = {
858
+ var _hoisted_4$18 = {
812
859
  key: 0,
813
860
  class: "j-checkbox__text"
814
861
  };
815
- var _hoisted_5$10 = ["for"];
816
- var _hoisted_6$7 = ["id"];
862
+ var _hoisted_5$13 = ["for"];
863
+ var _hoisted_6$8 = ["id"];
817
864
  //#endregion
818
865
  //#region src/components/checkbox/JCheckbox.vue
819
866
  var JCheckbox_default = /* @__PURE__ */ defineComponent({
@@ -859,7 +906,7 @@ var JCheckbox_default = /* @__PURE__ */ defineComponent({
859
906
  class: normalizeClass(["j-checkbox", [_ctx.$attrs.class, { "is-disabled": __props.disabled }]]),
860
907
  style: normalizeStyle(_ctx.$attrs.style),
861
908
  "data-state": state.value
862
- }, [createElementVNode("span", _hoisted_2$24, [createElementVNode("input", mergeProps({
909
+ }, [createElementVNode("span", _hoisted_2$29, [createElementVNode("input", mergeProps({
863
910
  id: id.value,
864
911
  ref_key: "input",
865
912
  ref: input
@@ -877,26 +924,26 @@ var JCheckbox_default = /* @__PURE__ */ defineComponent({
877
924
  value: __props.value,
878
925
  "aria-describedby": __props.description || _ctx.$slots.description ? descriptionId.value : void 0,
879
926
  onChange
880
- }), null, 16, _hoisted_3$20), _cache[0] || (_cache[0] = createStaticVNode("<span class=\"j-checkbox__box\" aria-hidden=\"true\"><svg class=\"j-checkbox__check\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 8.25l2.75 2.75L12 5.5\" pathLength=\"1\"></path></svg><svg class=\"j-checkbox__dash\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4.5 8h7\"></path></svg></span>", 1))]), __props.label || _ctx.$slots.default || __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_4$14, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
927
+ }), null, 16, _hoisted_3$25), _cache[0] || (_cache[0] = createStaticVNode("<span class=\"j-checkbox__box\" aria-hidden=\"true\"><svg class=\"j-checkbox__check\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4 8.25l2.75 2.75L12 5.5\" pathLength=\"1\"></path></svg><svg class=\"j-checkbox__dash\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M4.5 8h7\"></path></svg></span>", 1))]), __props.label || _ctx.$slots.default || __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_4$18, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
881
928
  key: 0,
882
929
  for: id.value,
883
930
  class: "j-checkbox__label"
884
- }, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])], 8, _hoisted_5$10)) : createCommentVNode("", true), __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", {
931
+ }, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])], 8, _hoisted_5$13)) : createCommentVNode("", true), __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", {
885
932
  key: 1,
886
933
  id: descriptionId.value,
887
934
  class: "j-checkbox__description"
888
- }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])], 8, _hoisted_6$7)) : createCommentVNode("", true)])) : createCommentVNode("", true)], 14, _hoisted_1$33);
935
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])], 8, _hoisted_6$8)) : createCommentVNode("", true)])) : createCommentVNode("", true)], 14, _hoisted_1$40);
889
936
  };
890
937
  }
891
938
  });
892
939
  //#endregion
893
940
  //#region src/components/collapsible/JCollapsible.vue?vue&type=script&setup=true&lang.ts
894
- var _hoisted_1$32 = ["data-state"];
895
- var _hoisted_2$23 = ["aria-expanded", "disabled"];
896
- var _hoisted_3$19 = { class: "j-collapsible__label" };
897
- var _hoisted_4$13 = ["inert"];
898
- var _hoisted_5$9 = { class: "j-collapsible__panel-inner" };
899
- var _hoisted_6$6 = { class: "j-collapsible__content" };
941
+ var _hoisted_1$39 = ["data-state"];
942
+ var _hoisted_2$28 = ["aria-expanded", "disabled"];
943
+ var _hoisted_3$24 = { class: "j-collapsible__label" };
944
+ var _hoisted_4$17 = ["inert"];
945
+ var _hoisted_5$12 = { class: "j-collapsible__panel-inner" };
946
+ var _hoisted_6$7 = { class: "j-collapsible__content" };
900
947
  //#endregion
901
948
  //#region src/components/collapsible/JCollapsible.vue
902
949
  var JCollapsible_default = /* @__PURE__ */ defineComponent({
@@ -933,13 +980,13 @@ var JCollapsible_default = /* @__PURE__ */ defineComponent({
933
980
  "aria-controls": panelId,
934
981
  disabled: __props.disabled,
935
982
  onClick: toggle
936
- }, [createVNode(unref(IconChevronDown), { class: "j-collapsible__chevron" }), createElementVNode("span", _hoisted_3$19, [renderSlot(_ctx.$slots, "trigger", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])])], 8, _hoisted_2$23), createElementVNode("div", {
983
+ }, [createVNode(unref(IconChevronDown), { class: "j-collapsible__chevron" }), createElementVNode("span", _hoisted_3$24, [renderSlot(_ctx.$slots, "trigger", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])])], 8, _hoisted_2$28), createElementVNode("div", {
937
984
  id: panelId,
938
985
  role: "region",
939
986
  class: "j-collapsible__panel",
940
987
  "aria-labelledby": triggerId,
941
988
  inert: !model.value
942
- }, [createElementVNode("div", _hoisted_5$9, [createElementVNode("div", _hoisted_6$6, [renderSlot(_ctx.$slots, "default")])])], 8, _hoisted_4$13)], 8, _hoisted_1$32);
989
+ }, [createElementVNode("div", _hoisted_5$12, [createElementVNode("div", _hoisted_6$7, [renderSlot(_ctx.$slots, "default")])])], 8, _hoisted_4$17)], 8, _hoisted_1$39);
943
990
  };
944
991
  }
945
992
  });
@@ -1311,25 +1358,25 @@ var JPortal_default = /* @__PURE__ */ defineComponent({
1311
1358
  });
1312
1359
  //#endregion
1313
1360
  //#region src/components/command-palette/JCommandPalette.vue?vue&type=script&setup=true&lang.ts
1314
- var _hoisted_1$31 = {
1361
+ var _hoisted_1$38 = {
1315
1362
  key: 0,
1316
1363
  class: "j-command__overlay",
1317
1364
  "aria-hidden": "true"
1318
1365
  };
1319
- var _hoisted_2$22 = ["aria-label"];
1320
- var _hoisted_3$18 = { class: "j-command__search" };
1321
- var _hoisted_4$12 = [
1366
+ var _hoisted_2$27 = ["aria-label"];
1367
+ var _hoisted_3$23 = { class: "j-command__search" };
1368
+ var _hoisted_4$16 = [
1322
1369
  "aria-activedescendant",
1323
1370
  "aria-label",
1324
1371
  "placeholder"
1325
1372
  ];
1326
- var _hoisted_5$8 = {
1373
+ var _hoisted_5$11 = {
1327
1374
  key: 0,
1328
1375
  class: "j-command__progress",
1329
1376
  "aria-hidden": "true"
1330
1377
  };
1331
- var _hoisted_6$5 = ["aria-label"];
1332
- var _hoisted_7$3 = ["aria-labelledby"];
1378
+ var _hoisted_6$6 = ["aria-label"];
1379
+ var _hoisted_7$4 = ["aria-labelledby"];
1333
1380
  var _hoisted_8$1 = ["id"];
1334
1381
  var _hoisted_9$1 = [
1335
1382
  "id",
@@ -1564,7 +1611,7 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1564
1611
  return (_ctx, _cache) => {
1565
1612
  return openBlock(), createBlock(JPortal_default, null, {
1566
1613
  default: withCtx(() => [createVNode(Transition, { name: "j-command-overlay" }, {
1567
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$31)) : createCommentVNode("", true)]),
1614
+ default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$38)) : createCommentVNode("", true)]),
1568
1615
  _: 1
1569
1616
  }), createVNode(Transition, {
1570
1617
  name: "j-command",
@@ -1586,7 +1633,7 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1586
1633
  "aria-label": __props.label,
1587
1634
  class: "j-command"
1588
1635
  }, [
1589
- createElementVNode("div", _hoisted_3$18, [
1636
+ createElementVNode("div", _hoisted_3$23, [
1590
1637
  createVNode(unref(IconSearch), { class: "j-command__search-icon" }),
1591
1638
  withDirectives(createElementVNode("input", {
1592
1639
  ref_key: "input",
@@ -1607,7 +1654,7 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1607
1654
  spellcheck: "false",
1608
1655
  enterkeyhint: "go",
1609
1656
  onKeydown
1610
- }, null, 40, _hoisted_4$12), [[vModelText, search.value]]),
1657
+ }, null, 40, _hoisted_4$16), [[vModelText, search.value]]),
1611
1658
  createElementVNode("button", {
1612
1659
  type: "button",
1613
1660
  class: "j-command__esc j-kbd",
@@ -1615,7 +1662,7 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1615
1662
  "aria-label": "Close",
1616
1663
  onClick: close
1617
1664
  }, " Esc "),
1618
- __props.loading ? (openBlock(), createElementBlock("span", _hoisted_5$8)) : createCommentVNode("", true)
1665
+ __props.loading ? (openBlock(), createElementBlock("span", _hoisted_5$11)) : createCommentVNode("", true)
1619
1666
  ]),
1620
1667
  createElementVNode("div", {
1621
1668
  id: listboxId,
@@ -1661,8 +1708,8 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1661
1708
  }, toDisplayString(key), 1);
1662
1709
  }), 128))])) : createCommentVNode("", true)
1663
1710
  ])], 42, _hoisted_9$1);
1664
- }), 128))], 8, _hoisted_7$3);
1665
- }), 128)), !rows.value.length ? (openBlock(), createElementBlock("div", _hoisted_15, [__props.loading ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(unref(Spinner), { size: 16 }), _cache[2] || (_cache[2] = createElementVNode("span", null, "Searching…", -1))], 64)) : renderSlot(_ctx.$slots, "empty", { search: search.value }, () => [createElementVNode("span", _hoisted_16, toDisplayString(__props.emptyText), 1), search.value ? (openBlock(), createElementBlock("span", _hoisted_17, "Nothing matches “" + toDisplayString(search.value) + "”. Try fewer words.", 1)) : createCommentVNode("", true)], void 0, 1)])) : createCommentVNode("", true)], 40, _hoisted_6$5),
1711
+ }), 128))], 8, _hoisted_7$4);
1712
+ }), 128)), !rows.value.length ? (openBlock(), createElementBlock("div", _hoisted_15, [__props.loading ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(unref(Spinner), { size: 16 }), _cache[2] || (_cache[2] = createElementVNode("span", null, "Searching…", -1))], 64)) : renderSlot(_ctx.$slots, "empty", { search: search.value }, () => [createElementVNode("span", _hoisted_16, toDisplayString(__props.emptyText), 1), search.value ? (openBlock(), createElementBlock("span", _hoisted_17, "Nothing matches “" + toDisplayString(search.value) + "”. Try fewer words.", 1)) : createCommentVNode("", true)], void 0, 1)])) : createCommentVNode("", true)], 40, _hoisted_6$6),
1666
1713
  createElementVNode("div", _hoisted_18, [renderSlot(_ctx.$slots, "footer", {}, () => [
1667
1714
  _cache[3] || (_cache[3] = createElementVNode("span", { class: "j-command__hint" }, [
1668
1715
  createElementVNode("kbd", { class: "j-kbd" }, "↑"),
@@ -1673,7 +1720,7 @@ var JCommandPalette_default = /* @__PURE__ */ defineComponent({
1673
1720
  _cache[5] || (_cache[5] = createElementVNode("span", { class: "j-command__hint" }, [createElementVNode("kbd", { class: "j-kbd" }, "Esc"), createTextVNode(" Close")], -1))
1674
1721
  ])]),
1675
1722
  createElementVNode("span", _hoisted_19, toDisplayString(announcement.value), 1)
1676
- ], 8, _hoisted_2$22)], 32)) : createCommentVNode("", true)]),
1723
+ ], 8, _hoisted_2$27)], 32)) : createCommentVNode("", true)]),
1677
1724
  _: 3
1678
1725
  })]),
1679
1726
  _: 3
@@ -1723,25 +1770,25 @@ function useModal(panel, open, options) {
1723
1770
  var FIELD_SELECTOR = ":is(input:not([type=hidden]), textarea, select, [role=combobox]):not(:disabled)";
1724
1771
  //#endregion
1725
1772
  //#region src/components/dialog/JDialog.vue?vue&type=script&setup=true&lang.ts
1726
- var _hoisted_1$30 = {
1773
+ var _hoisted_1$37 = {
1727
1774
  key: 0,
1728
1775
  class: "j-dialog__overlay",
1729
1776
  "aria-hidden": "true"
1730
1777
  };
1731
- var _hoisted_2$21 = [
1778
+ var _hoisted_2$26 = [
1732
1779
  "aria-labelledby",
1733
1780
  "aria-label",
1734
1781
  "aria-describedby"
1735
1782
  ];
1736
- var _hoisted_3$17 = {
1783
+ var _hoisted_3$22 = {
1737
1784
  key: 0,
1738
1785
  class: "j-dialog__header"
1739
1786
  };
1740
- var _hoisted_4$11 = {
1787
+ var _hoisted_4$15 = {
1741
1788
  key: 1,
1742
1789
  class: "j-dialog__body"
1743
1790
  };
1744
- var _hoisted_5$7 = {
1791
+ var _hoisted_5$10 = {
1745
1792
  key: 2,
1746
1793
  class: "j-dialog__footer"
1747
1794
  };
@@ -1792,7 +1839,7 @@ var JDialog_default = /* @__PURE__ */ defineComponent({
1792
1839
  return (_ctx, _cache) => {
1793
1840
  return openBlock(), createBlock(JPortal_default, null, {
1794
1841
  default: withCtx(() => [createVNode(Transition, { name: "j-dialog-overlay" }, {
1795
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$30)) : createCommentVNode("", true)]),
1842
+ default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$37)) : createCommentVNode("", true)]),
1796
1843
  _: 1
1797
1844
  }), createVNode(Transition, {
1798
1845
  name: "j-dialog",
@@ -1819,7 +1866,7 @@ var JDialog_default = /* @__PURE__ */ defineComponent({
1819
1866
  "aria-describedby": __props.description ? descriptionId : void 0,
1820
1867
  onAnimationend: _cache[0] || (_cache[0] = ($event) => nudging.value = false)
1821
1868
  }, [
1822
- __props.title || __props.description || _ctx.$slots.header ? (openBlock(), createElementBlock("header", _hoisted_3$17, [renderSlot(_ctx.$slots, "header", {
1869
+ __props.title || __props.description || _ctx.$slots.header ? (openBlock(), createElementBlock("header", _hoisted_3$22, [renderSlot(_ctx.$slots, "header", {
1823
1870
  titleId,
1824
1871
  descriptionId
1825
1872
  }, () => [createElementVNode("h2", {
@@ -1830,8 +1877,8 @@ var JDialog_default = /* @__PURE__ */ defineComponent({
1830
1877
  id: descriptionId,
1831
1878
  class: "j-dialog__description"
1832
1879
  }, toDisplayString(__props.description), 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
1833
- _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$11, [renderSlot(_ctx.$slots, "default", { close })])) : createCommentVNode("", true),
1834
- _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5$7, [renderSlot(_ctx.$slots, "footer", { close })])) : createCommentVNode("", true),
1880
+ _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$15, [renderSlot(_ctx.$slots, "default", { close })])) : createCommentVNode("", true),
1881
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5$10, [renderSlot(_ctx.$slots, "footer", { close })])) : createCommentVNode("", true),
1835
1882
  !__props.hideClose ? (openBlock(), createElementBlock("button", {
1836
1883
  key: 3,
1837
1884
  type: "button",
@@ -1839,7 +1886,7 @@ var JDialog_default = /* @__PURE__ */ defineComponent({
1839
1886
  "aria-label": "Close",
1840
1887
  onClick: close
1841
1888
  }, [createVNode(unref(IconX))])) : createCommentVNode("", true)
1842
- ], 42, _hoisted_2$21)], 32)) : createCommentVNode("", true)]),
1889
+ ], 42, _hoisted_2$26)], 32)) : createCommentVNode("", true)]),
1843
1890
  _: 3
1844
1891
  })]),
1845
1892
  _: 3
@@ -2001,7 +2048,7 @@ function useTypeahead(timeout = 500) {
2001
2048
  }
2002
2049
  //#endregion
2003
2050
  //#region src/components/dropdown-menu/JMenuContent.vue?vue&type=script&setup=true&lang.ts
2004
- var _hoisted_1$29 = ["id", "aria-labelledby"];
2051
+ var _hoisted_1$36 = ["id", "aria-labelledby"];
2005
2052
  //#endregion
2006
2053
  //#region src/components/dropdown-menu/JMenuContent.vue
2007
2054
  var JMenuContent_default = /* @__PURE__ */ defineComponent({
@@ -2145,7 +2192,7 @@ var JMenuContent_default = /* @__PURE__ */ defineComponent({
2145
2192
  "aria-orientation": "vertical",
2146
2193
  onKeydown,
2147
2194
  onPointerenter: _cache[0] || (_cache[0] = ($event) => emit("pointerenter"))
2148
- }, [renderSlot(_ctx.$slots, "default")], 46, _hoisted_1$29)) : createCommentVNode("", true)]),
2195
+ }, [renderSlot(_ctx.$slots, "default")], 46, _hoisted_1$36)) : createCommentVNode("", true)]),
2149
2196
  _: 3
2150
2197
  })]),
2151
2198
  _: 3
@@ -2245,12 +2292,12 @@ var JDropdownMenu_default = /* @__PURE__ */ defineComponent({
2245
2292
  });
2246
2293
  //#endregion
2247
2294
  //#region src/components/dropdown-menu/JDropdownMenuItem.vue?vue&type=script&setup=true&lang.ts
2248
- var _hoisted_1$28 = {
2295
+ var _hoisted_1$35 = {
2249
2296
  key: 0,
2250
2297
  class: "j-menu__icon"
2251
2298
  };
2252
- var _hoisted_2$20 = { class: "j-menu__text" };
2253
- var _hoisted_3$16 = {
2299
+ var _hoisted_2$25 = { class: "j-menu__text" };
2300
+ var _hoisted_3$21 = {
2254
2301
  key: 1,
2255
2302
  class: "j-menu__shortcut"
2256
2303
  };
@@ -2312,9 +2359,9 @@ var JDropdownMenuItem_default = /* @__PURE__ */ defineComponent({
2312
2359
  onPointerleave: onPointerLeave
2313
2360
  }, {
2314
2361
  default: withCtx(() => [
2315
- _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$28, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2316
- createElementVNode("span", _hoisted_2$20, [renderSlot(_ctx.$slots, "default")]),
2317
- __props.shortcut ? (openBlock(), createElementBlock("span", _hoisted_3$16, toDisplayString(__props.shortcut), 1)) : createCommentVNode("", true),
2362
+ _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$35, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2363
+ createElementVNode("span", _hoisted_2$25, [renderSlot(_ctx.$slots, "default")]),
2364
+ __props.shortcut ? (openBlock(), createElementBlock("span", _hoisted_3$21, toDisplayString(__props.shortcut), 1)) : createCommentVNode("", true),
2318
2365
  __props.checked !== void 0 ? (openBlock(), createBlock(unref(IconCheck), {
2319
2366
  key: 2,
2320
2367
  class: normalizeClass(["j-menu__check", { "is-checked": __props.checked }])
@@ -2332,7 +2379,7 @@ var JDropdownMenuItem_default = /* @__PURE__ */ defineComponent({
2332
2379
  });
2333
2380
  //#endregion
2334
2381
  //#region src/components/dropdown-menu/JDropdownMenuLabel.vue?vue&type=script&setup=true&lang.ts
2335
- var _hoisted_1$27 = {
2382
+ var _hoisted_1$34 = {
2336
2383
  class: "j-menu__label",
2337
2384
  role: "presentation"
2338
2385
  };
@@ -2342,7 +2389,7 @@ var JDropdownMenuLabel_default = /* @__PURE__ */ defineComponent({
2342
2389
  __name: "JDropdownMenuLabel",
2343
2390
  setup(__props) {
2344
2391
  return (_ctx, _cache) => {
2345
- return openBlock(), createElementBlock("div", _hoisted_1$27, [renderSlot(_ctx.$slots, "default")]);
2392
+ return openBlock(), createElementBlock("div", _hoisted_1$34, [renderSlot(_ctx.$slots, "default")]);
2346
2393
  };
2347
2394
  }
2348
2395
  });
@@ -2356,27 +2403,27 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
2356
2403
  //#endregion
2357
2404
  //#region src/components/dropdown-menu/JDropdownMenuSeparator.vue
2358
2405
  var _sfc_main = {};
2359
- var _hoisted_1$26 = {
2406
+ var _hoisted_1$33 = {
2360
2407
  role: "separator",
2361
2408
  "aria-orientation": "horizontal",
2362
2409
  class: "j-menu__separator"
2363
2410
  };
2364
2411
  function _sfc_render(_ctx, _cache) {
2365
- return openBlock(), createElementBlock("div", _hoisted_1$26);
2412
+ return openBlock(), createElementBlock("div", _hoisted_1$33);
2366
2413
  }
2367
2414
  var JDropdownMenuSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
2368
2415
  //#endregion
2369
2416
  //#region src/components/dropdown-menu/JDropdownMenuSub.vue?vue&type=script&setup=true&lang.ts
2370
- var _hoisted_1$25 = [
2417
+ var _hoisted_1$32 = [
2371
2418
  "aria-expanded",
2372
2419
  "aria-controls",
2373
2420
  "aria-disabled"
2374
2421
  ];
2375
- var _hoisted_2$19 = {
2422
+ var _hoisted_2$24 = {
2376
2423
  key: 0,
2377
2424
  class: "j-menu__icon"
2378
2425
  };
2379
- var _hoisted_3$15 = { class: "j-menu__text" };
2426
+ var _hoisted_3$20 = { class: "j-menu__text" };
2380
2427
  //#endregion
2381
2428
  //#region src/components/dropdown-menu/JDropdownMenuSub.vue
2382
2429
  var JDropdownMenuSub_default = /* @__PURE__ */ defineComponent({
@@ -2450,10 +2497,10 @@ var JDropdownMenuSub_default = /* @__PURE__ */ defineComponent({
2450
2497
  onKeydown,
2451
2498
  onClick
2452
2499
  }, [
2453
- _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$19, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2454
- createElementVNode("span", _hoisted_3$15, toDisplayString(__props.label), 1),
2500
+ _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_2$24, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2501
+ createElementVNode("span", _hoisted_3$20, toDisplayString(__props.label), 1),
2455
2502
  createVNode(unref(IconChevronRight), { class: "j-menu__chevron" })
2456
- ], 40, _hoisted_1$25), createVNode(JMenuContent_default, {
2503
+ ], 40, _hoisted_1$32), createVNode(JMenuContent_default, {
2457
2504
  id: menuId,
2458
2505
  ref_key: "sub",
2459
2506
  ref: sub,
@@ -2484,19 +2531,19 @@ var JDropdownMenuSub_default = /* @__PURE__ */ defineComponent({
2484
2531
  });
2485
2532
  //#endregion
2486
2533
  //#region src/components/empty-state/JEmptyState.vue?vue&type=script&setup=true&lang.ts
2487
- var _hoisted_1$24 = {
2534
+ var _hoisted_1$31 = {
2488
2535
  key: 0,
2489
2536
  class: "j-empty-state__icon"
2490
2537
  };
2491
- var _hoisted_2$18 = {
2538
+ var _hoisted_2$23 = {
2492
2539
  key: 1,
2493
2540
  class: "j-empty-state__title"
2494
2541
  };
2495
- var _hoisted_3$14 = {
2542
+ var _hoisted_3$19 = {
2496
2543
  key: 2,
2497
2544
  class: "j-empty-state__description"
2498
2545
  };
2499
- var _hoisted_4$10 = {
2546
+ var _hoisted_4$14 = {
2500
2547
  key: 3,
2501
2548
  class: "j-empty-state__actions"
2502
2549
  };
@@ -2512,24 +2559,86 @@ var JEmptyState_default = /* @__PURE__ */ defineComponent({
2512
2559
  setup(__props) {
2513
2560
  return (_ctx, _cache) => {
2514
2561
  return openBlock(), createElementBlock("div", { class: normalizeClass(["j-empty-state", `j-empty-state--${__props.size}`]) }, [
2515
- _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_1$24, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
2516
- __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$18, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
2517
- __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_3$14, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
2518
- _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_4$10, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
2562
+ _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_1$31, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
2563
+ __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$23, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
2564
+ __props.description || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_3$19, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true),
2565
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_4$14, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
2519
2566
  ], 2);
2520
2567
  };
2521
2568
  }
2522
2569
  });
2523
2570
  //#endregion
2571
+ //#region src/components/footer/JFooter.vue?vue&type=script&setup=true&lang.ts
2572
+ var _hoisted_1$30 = { class: "j-footer__inner" };
2573
+ var _hoisted_2$22 = {
2574
+ key: 0,
2575
+ class: "j-footer__top"
2576
+ };
2577
+ var _hoisted_3$18 = {
2578
+ key: 0,
2579
+ class: "j-footer__brand"
2580
+ };
2581
+ var _hoisted_4$13 = {
2582
+ key: 1,
2583
+ class: "j-footer__columns"
2584
+ };
2585
+ var _hoisted_5$9 = {
2586
+ key: 1,
2587
+ class: "j-footer__bottom"
2588
+ };
2589
+ //#endregion
2590
+ //#region src/components/footer/JFooter.vue
2591
+ var JFooter_default = /* @__PURE__ */ defineComponent({
2592
+ __name: "JFooter",
2593
+ props: {
2594
+ maxWidth: { default: "72rem" },
2595
+ bordered: {
2596
+ type: Boolean,
2597
+ default: true
2598
+ }
2599
+ },
2600
+ setup(__props) {
2601
+ const props = __props;
2602
+ const style = computed(() => ({ "--j-footer-max": props.maxWidth === "none" ? "none" : props.maxWidth }));
2603
+ return (_ctx, _cache) => {
2604
+ return openBlock(), createElementBlock("footer", {
2605
+ class: normalizeClass(["j-footer", { "is-bordered": __props.bordered }]),
2606
+ style: normalizeStyle(style.value)
2607
+ }, [createElementVNode("div", _hoisted_1$30, [_ctx.$slots.brand || _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2$22, [_ctx.$slots.brand ? (openBlock(), createElementBlock("div", _hoisted_3$18, [renderSlot(_ctx.$slots, "brand")])) : createCommentVNode("", true), _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_4$13, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)])) : createCommentVNode("", true), _ctx.$slots.bottom ? (openBlock(), createElementBlock("div", _hoisted_5$9, [renderSlot(_ctx.$slots, "bottom")])) : createCommentVNode("", true)])], 6);
2608
+ };
2609
+ }
2610
+ });
2611
+ //#endregion
2612
+ //#region src/components/footer/JFooterColumn.vue?vue&type=script&setup=true&lang.ts
2613
+ var _hoisted_1$29 = { class: "j-footer-column__links" };
2614
+ //#endregion
2615
+ //#region src/components/footer/JFooterColumn.vue
2616
+ var JFooterColumn_default = /* @__PURE__ */ defineComponent({
2617
+ __name: "JFooterColumn",
2618
+ props: { title: {} },
2619
+ setup(__props) {
2620
+ const titleId = `j-${useId()}-title`;
2621
+ return (_ctx, _cache) => {
2622
+ return openBlock(), createElementBlock("nav", {
2623
+ class: "j-footer-column",
2624
+ "aria-labelledby": titleId
2625
+ }, [createElementVNode("p", {
2626
+ id: titleId,
2627
+ class: "j-footer-column__title"
2628
+ }, toDisplayString(__props.title), 1), createElementVNode("div", _hoisted_1$29, [renderSlot(_ctx.$slots, "default")])]);
2629
+ };
2630
+ }
2631
+ });
2632
+ //#endregion
2524
2633
  //#region src/components/field/JFieldShell.vue?vue&type=script&setup=true&lang.ts
2525
- var _hoisted_1$23 = {
2634
+ var _hoisted_1$28 = {
2526
2635
  key: 0,
2527
2636
  class: "j-field__required",
2528
2637
  "aria-hidden": "true"
2529
2638
  };
2530
- var _hoisted_2$17 = { class: "j-field__messages" };
2531
- var _hoisted_3$13 = ["id"];
2532
- var _hoisted_4$9 = ["id"];
2639
+ var _hoisted_2$21 = { class: "j-field__messages" };
2640
+ var _hoisted_3$17 = ["id"];
2641
+ var _hoisted_4$12 = ["id"];
2533
2642
  //#endregion
2534
2643
  //#region src/components/field/JFieldShell.vue
2535
2644
  var JFieldShell_default = /* @__PURE__ */ defineComponent({
@@ -2560,11 +2669,11 @@ var JFieldShell_default = /* @__PURE__ */ defineComponent({
2560
2669
  class: "j-field__label",
2561
2670
  for: __props.labelFor === null ? void 0 : __props.labelFor ?? __props.id
2562
2671
  }, {
2563
- default: withCtx(() => [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.label), 1)]), __props.required ? (openBlock(), createElementBlock("span", _hoisted_1$23, "*")) : createCommentVNode("", true)]),
2672
+ default: withCtx(() => [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.label), 1)]), __props.required ? (openBlock(), createElementBlock("span", _hoisted_1$28, "*")) : createCommentVNode("", true)]),
2564
2673
  _: 3
2565
2674
  }, 8, ["id", "for"])) : createCommentVNode("", true),
2566
2675
  renderSlot(_ctx.$slots, "default"),
2567
- createElementVNode("div", _hoisted_2$17, [createVNode(Transition, {
2676
+ createElementVNode("div", _hoisted_2$21, [createVNode(Transition, {
2568
2677
  name: "j-field-message",
2569
2678
  mode: "out-in"
2570
2679
  }, {
@@ -2572,11 +2681,11 @@ var JFieldShell_default = /* @__PURE__ */ defineComponent({
2572
2681
  id: __props.errorId,
2573
2682
  key: __props.errorMessage,
2574
2683
  class: "j-field__error"
2575
- }, toDisplayString(__props.errorMessage), 9, _hoisted_3$13)) : __props.showDescription ? (openBlock(), createElementBlock("p", {
2684
+ }, toDisplayString(__props.errorMessage), 9, _hoisted_3$17)) : __props.showDescription ? (openBlock(), createElementBlock("p", {
2576
2685
  key: 1,
2577
2686
  id: __props.descriptionId,
2578
2687
  class: "j-field__description"
2579
- }, toDisplayString(__props.description), 9, _hoisted_4$9)) : createCommentVNode("", true)]),
2688
+ }, toDisplayString(__props.description), 9, _hoisted_4$12)) : createCommentVNode("", true)]),
2580
2689
  _: 1
2581
2690
  })])
2582
2691
  ], 2);
@@ -2613,11 +2722,11 @@ function useField(props) {
2613
2722
  }
2614
2723
  //#endregion
2615
2724
  //#region src/components/input/JInput.vue?vue&type=script&setup=true&lang.ts
2616
- var _hoisted_1$22 = {
2725
+ var _hoisted_1$27 = {
2617
2726
  key: 0,
2618
2727
  class: "j-control__adornment j-control__adornment--leading"
2619
2728
  };
2620
- var _hoisted_2$16 = [
2729
+ var _hoisted_2$20 = [
2621
2730
  "id",
2622
2731
  "type",
2623
2732
  "name",
@@ -2629,7 +2738,7 @@ var _hoisted_2$16 = [
2629
2738
  "aria-invalid",
2630
2739
  "aria-describedby"
2631
2740
  ];
2632
- var _hoisted_3$12 = {
2741
+ var _hoisted_3$16 = {
2633
2742
  key: 1,
2634
2743
  class: "j-control__adornment j-control__adornment--trailing"
2635
2744
  };
@@ -2699,7 +2808,7 @@ var JInput_default = /* @__PURE__ */ defineComponent({
2699
2808
  }]]),
2700
2809
  onPointerdown: onFramePointerDown
2701
2810
  }, [
2702
- _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$22, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2811
+ _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$27, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
2703
2812
  withDirectives(createElementVNode("input", mergeProps({
2704
2813
  id: unref(field).id.value,
2705
2814
  ref_key: "input",
@@ -2720,8 +2829,8 @@ var JInput_default = /* @__PURE__ */ defineComponent({
2720
2829
  autocomplete: __props.autocomplete,
2721
2830
  "aria-invalid": unref(field).invalid.value || void 0,
2722
2831
  "aria-describedby": unref(field).describedBy.value
2723
- }), null, 16, _hoisted_2$16), [[vModelDynamic, model.value]]),
2724
- _ctx.$slots.trailing ? (openBlock(), createElementBlock("span", _hoisted_3$12, [renderSlot(_ctx.$slots, "trailing")])) : createCommentVNode("", true)
2832
+ }), null, 16, _hoisted_2$20), [[vModelDynamic, model.value]]),
2833
+ _ctx.$slots.trailing ? (openBlock(), createElementBlock("span", _hoisted_3$16, [renderSlot(_ctx.$slots, "trailing")])) : createCommentVNode("", true)
2725
2834
  ], 34)]),
2726
2835
  _: 2
2727
2836
  }, [_ctx.$slots.label ? {
@@ -2779,21 +2888,171 @@ var JKbd_default = /* @__PURE__ */ defineComponent({
2779
2888
  }
2780
2889
  });
2781
2890
  //#endregion
2891
+ //#region src/components/navbar/JNavbar.vue?vue&type=script&setup=true&lang.ts
2892
+ var _hoisted_1$26 = { class: "j-navbar__bar" };
2893
+ var _hoisted_2$19 = {
2894
+ key: 0,
2895
+ class: "j-navbar__brand"
2896
+ };
2897
+ var _hoisted_3$15 = ["aria-label"];
2898
+ var _hoisted_4$11 = { class: "j-navbar__end" };
2899
+ var _hoisted_5$8 = {
2900
+ key: 0,
2901
+ class: "j-navbar__actions"
2902
+ };
2903
+ var _hoisted_6$5 = ["aria-label"];
2904
+ var _hoisted_7$3 = {
2905
+ key: 1,
2906
+ class: "j-navbar__menu-footer"
2907
+ };
2908
+ //#endregion
2909
+ //#region src/components/navbar/JNavbar.vue
2910
+ var JNavbar_default = /* @__PURE__ */ defineComponent({
2911
+ __name: "JNavbar",
2912
+ props: /*@__PURE__*/ mergeModels({
2913
+ sticky: {
2914
+ type: Boolean,
2915
+ default: true
2916
+ },
2917
+ bordered: {
2918
+ type: Boolean,
2919
+ default: true
2920
+ },
2921
+ label: { default: "Main" },
2922
+ collapse: { default: "md" },
2923
+ maxWidth: { default: "72rem" }
2924
+ }, {
2925
+ "open": {
2926
+ type: Boolean,
2927
+ default: false
2928
+ },
2929
+ "openModifiers": {}
2930
+ }),
2931
+ emits: ["update:open"],
2932
+ setup(__props) {
2933
+ const props = __props;
2934
+ /** Mobile menu state. */
2935
+ const open = useModel(__props, "open");
2936
+ const menuId = `j-${useId()}-menu`;
2937
+ const root = ref(null);
2938
+ const menu = ref(null);
2939
+ const breakpoints = {
2940
+ sm: 640,
2941
+ md: 768,
2942
+ lg: 1024
2943
+ };
2944
+ function close(returnFocus = false) {
2945
+ if (!open.value) return;
2946
+ open.value = false;
2947
+ if (returnFocus) nextTick(() => focusElement(root.value?.querySelector(".j-burger")));
2948
+ }
2949
+ useLayer({
2950
+ active: open,
2951
+ elements: () => [root.value],
2952
+ onEscape: () => close(true),
2953
+ onPointerDownOutside: () => close()
2954
+ });
2955
+ function onMenuClick(event) {
2956
+ const target = event.target.closest("a, button");
2957
+ if (target && !target.hasAttribute("aria-expanded")) close();
2958
+ }
2959
+ let media;
2960
+ const onMediaChange = (event) => event.matches && close();
2961
+ onMounted(() => {
2962
+ if (props.collapse === "never") return;
2963
+ media = window.matchMedia(`(min-width: ${breakpoints[props.collapse]}px)`);
2964
+ media.addEventListener("change", onMediaChange);
2965
+ });
2966
+ onBeforeUnmount(() => media?.removeEventListener("change", onMediaChange));
2967
+ watch(open, async (value) => {
2968
+ if (!value) return;
2969
+ await nextTick();
2970
+ (menu.value?.querySelector("a, button"))?.focus({ preventScroll: true });
2971
+ });
2972
+ const style = computed(() => ({ "--j-navbar-max": props.maxWidth === "none" ? "none" : props.maxWidth }));
2973
+ return (_ctx, _cache) => {
2974
+ return openBlock(), createElementBlock("header", {
2975
+ ref_key: "root",
2976
+ ref: root,
2977
+ class: normalizeClass(["j-navbar", [`j-navbar--collapse-${__props.collapse}`, {
2978
+ "is-sticky": __props.sticky,
2979
+ "is-bordered": __props.bordered,
2980
+ "is-open": open.value
2981
+ }]]),
2982
+ style: normalizeStyle(style.value)
2983
+ }, [createElementVNode("div", _hoisted_1$26, [
2984
+ _ctx.$slots.brand ? (openBlock(), createElementBlock("div", _hoisted_2$19, [renderSlot(_ctx.$slots, "brand")])) : createCommentVNode("", true),
2985
+ _ctx.$slots.default ? (openBlock(), createElementBlock("nav", {
2986
+ key: 1,
2987
+ class: "j-navbar__links",
2988
+ "aria-label": __props.label
2989
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$15)) : createCommentVNode("", true),
2990
+ createElementVNode("div", _hoisted_4$11, [_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_5$8, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true), __props.collapse !== "never" && (_ctx.$slots.default || _ctx.$slots["menu-footer"]) ? (openBlock(), createBlock(JBurger_default, {
2991
+ key: 1,
2992
+ modelValue: open.value,
2993
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => open.value = $event),
2994
+ class: "j-navbar__burger",
2995
+ controls: menuId
2996
+ }, null, 8, ["modelValue"])) : createCommentVNode("", true)])
2997
+ ]), createVNode(Transition, { name: "j-navbar-menu" }, {
2998
+ default: withCtx(() => [withDirectives(createElementVNode("div", {
2999
+ id: menuId,
3000
+ ref_key: "menu",
3001
+ ref: menu,
3002
+ class: "j-navbar__menu",
3003
+ onClick: onMenuClick
3004
+ }, [_ctx.$slots.default ? (openBlock(), createElementBlock("nav", {
3005
+ key: 0,
3006
+ class: "j-navbar__menu-links",
3007
+ "aria-label": __props.label
3008
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_6$5)) : createCommentVNode("", true), _ctx.$slots["menu-footer"] ? (openBlock(), createElementBlock("div", _hoisted_7$3, [renderSlot(_ctx.$slots, "menu-footer")])) : createCommentVNode("", true)], 512), [[vShow, open.value]])]),
3009
+ _: 3
3010
+ })], 6);
3011
+ };
3012
+ }
3013
+ });
3014
+ //#endregion
3015
+ //#region src/components/navbar/JNavbarLink.vue?vue&type=script&setup=true&lang.ts
3016
+ var _hoisted_1$25 = {
3017
+ key: 0,
3018
+ class: "j-navbar-link__icon"
3019
+ };
3020
+ //#endregion
3021
+ //#region src/components/navbar/JNavbarLink.vue
3022
+ var JNavbarLink_default = /* @__PURE__ */ defineComponent({
3023
+ __name: "JNavbarLink",
3024
+ props: {
3025
+ active: { type: Boolean },
3026
+ as: { default: "a" }
3027
+ },
3028
+ setup(__props) {
3029
+ return (_ctx, _cache) => {
3030
+ return openBlock(), createBlock(resolveDynamicComponent(__props.as), {
3031
+ class: normalizeClass(["j-navbar-link j-focusable", { "is-active": __props.active }]),
3032
+ "aria-current": __props.active ? "page" : void 0
3033
+ }, {
3034
+ default: withCtx(() => [_ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$25, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")]),
3035
+ _: 3
3036
+ }, 8, ["class", "aria-current"]);
3037
+ };
3038
+ }
3039
+ });
3040
+ //#endregion
2782
3041
  //#region src/components/pagination/JPagination.vue?vue&type=script&setup=true&lang.ts
2783
- var _hoisted_1$21 = ["aria-label"];
2784
- var _hoisted_2$15 = ["disabled"];
2785
- var _hoisted_3$11 = {
3042
+ var _hoisted_1$24 = ["aria-label"];
3043
+ var _hoisted_2$18 = ["disabled"];
3044
+ var _hoisted_3$14 = {
2786
3045
  key: 0,
2787
3046
  class: "j-pagination__ellipsis",
2788
3047
  "aria-hidden": "true"
2789
3048
  };
2790
- var _hoisted_4$8 = [
3049
+ var _hoisted_4$10 = [
2791
3050
  "aria-current",
2792
3051
  "aria-label",
2793
3052
  "disabled",
2794
3053
  "onClick"
2795
3054
  ];
2796
- var _hoisted_5$6 = ["disabled"];
3055
+ var _hoisted_5$7 = ["disabled"];
2797
3056
  //#endregion
2798
3057
  //#region src/components/pagination/JPagination.vue
2799
3058
  var JPagination_default = /* @__PURE__ */ defineComponent({
@@ -2858,14 +3117,14 @@ var JPagination_default = /* @__PURE__ */ defineComponent({
2858
3117
  "aria-label": "Previous page",
2859
3118
  disabled: __props.disabled || current.value === 1,
2860
3119
  onClick: _cache[0] || (_cache[0] = ($event) => goTo(current.value - 1, true))
2861
- }, [createVNode(unref(IconChevronLeft))], 8, _hoisted_2$15),
3120
+ }, [createVNode(unref(IconChevronLeft))], 8, _hoisted_2$18),
2862
3121
  createElementVNode("ul", {
2863
3122
  ref_key: "list",
2864
3123
  ref: list,
2865
3124
  class: "j-pagination__list",
2866
3125
  onKeydown
2867
3126
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(pageItems.value, (item, index) => {
2868
- return openBlock(), createElementBlock("li", { key: index }, [item === "ellipsis" ? (openBlock(), createElementBlock("span", _hoisted_3$11, [createVNode(unref(IconMoreHorizontal))])) : (openBlock(), createElementBlock("button", {
3127
+ return openBlock(), createElementBlock("li", { key: index }, [item === "ellipsis" ? (openBlock(), createElementBlock("span", _hoisted_3$14, [createVNode(unref(IconMoreHorizontal))])) : (openBlock(), createElementBlock("button", {
2869
3128
  key: 1,
2870
3129
  type: "button",
2871
3130
  class: normalizeClass(["j-pagination__page j-focusable", { "is-current": item === current.value }]),
@@ -2873,7 +3132,7 @@ var JPagination_default = /* @__PURE__ */ defineComponent({
2873
3132
  "aria-label": `Page ${item}`,
2874
3133
  disabled: __props.disabled,
2875
3134
  onClick: ($event) => goTo(item)
2876
- }, toDisplayString(item), 11, _hoisted_4$8))]);
3135
+ }, toDisplayString(item), 11, _hoisted_4$10))]);
2877
3136
  }), 128))], 544),
2878
3137
  createElementVNode("button", {
2879
3138
  type: "button",
@@ -2881,14 +3140,14 @@ var JPagination_default = /* @__PURE__ */ defineComponent({
2881
3140
  "aria-label": "Next page",
2882
3141
  disabled: __props.disabled || current.value === totalPages.value,
2883
3142
  onClick: _cache[1] || (_cache[1] = ($event) => goTo(current.value + 1, true))
2884
- }, [createVNode(unref(IconChevronRight))], 8, _hoisted_5$6)
2885
- ], 10, _hoisted_1$21);
3143
+ }, [createVNode(unref(IconChevronRight))], 8, _hoisted_5$7)
3144
+ ], 10, _hoisted_1$24);
2886
3145
  };
2887
3146
  }
2888
3147
  });
2889
3148
  //#endregion
2890
3149
  //#region src/components/popover/JPopover.vue?vue&type=script&setup=true&lang.ts
2891
- var _hoisted_1$20 = ["aria-label"];
3150
+ var _hoisted_1$23 = ["aria-label"];
2892
3151
  //#endregion
2893
3152
  //#region src/components/popover/JPopover.vue
2894
3153
  var JPopover_default = /* @__PURE__ */ defineComponent({
@@ -2978,7 +3237,7 @@ var JPopover_default = /* @__PURE__ */ defineComponent({
2978
3237
  style: normalizeStyle(unref(styles)),
2979
3238
  "aria-label": __props.ariaLabel,
2980
3239
  onFocusout: onFocusOut
2981
- }, [renderSlot(_ctx.$slots, "default", { close: () => close(true) })], 44, _hoisted_1$20)) : createCommentVNode("", true)]),
3240
+ }, [renderSlot(_ctx.$slots, "default", { close: () => close(true) })], 44, _hoisted_1$23)) : createCommentVNode("", true)]),
2982
3241
  _: 3
2983
3242
  })]),
2984
3243
  _: 3
@@ -2988,16 +3247,16 @@ var JPopover_default = /* @__PURE__ */ defineComponent({
2988
3247
  });
2989
3248
  //#endregion
2990
3249
  //#region src/components/progress/JProgress.vue?vue&type=script&setup=true&lang.ts
2991
- var _hoisted_1$19 = {
3250
+ var _hoisted_1$22 = {
2992
3251
  key: 0,
2993
3252
  class: "j-progress__header"
2994
3253
  };
2995
- var _hoisted_2$14 = ["id"];
2996
- var _hoisted_3$10 = {
3254
+ var _hoisted_2$17 = ["id"];
3255
+ var _hoisted_3$13 = {
2997
3256
  key: 1,
2998
3257
  class: "j-progress__value"
2999
3258
  };
3000
- var _hoisted_4$7 = [
3259
+ var _hoisted_4$9 = [
3001
3260
  "aria-labelledby",
3002
3261
  "aria-valuemax",
3003
3262
  "aria-valuenow",
@@ -3026,11 +3285,11 @@ var JProgress_default = /* @__PURE__ */ defineComponent({
3026
3285
  `j-progress--${__props.size}`,
3027
3286
  `j-progress--${__props.variant}`,
3028
3287
  { "is-indeterminate": indeterminate.value }
3029
- ]]) }, [__props.label || __props.showValue ? (openBlock(), createElementBlock("div", _hoisted_1$19, [__props.label ? (openBlock(), createElementBlock("span", {
3288
+ ]]) }, [__props.label || __props.showValue ? (openBlock(), createElementBlock("div", _hoisted_1$22, [__props.label ? (openBlock(), createElementBlock("span", {
3030
3289
  key: 0,
3031
3290
  id: `${id}-label`,
3032
3291
  class: "j-progress__label"
3033
- }, toDisplayString(__props.label), 9, _hoisted_2$14)) : createCommentVNode("", true), __props.showValue && !indeterminate.value ? (openBlock(), createElementBlock("span", _hoisted_3$10, toDisplayString(percent.value) + "%", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
3292
+ }, toDisplayString(__props.label), 9, _hoisted_2$17)) : createCommentVNode("", true), __props.showValue && !indeterminate.value ? (openBlock(), createElementBlock("span", _hoisted_3$13, toDisplayString(percent.value) + "%", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
3034
3293
  class: "j-progress__track",
3035
3294
  role: "progressbar",
3036
3295
  "aria-labelledby": __props.label ? `${id}-label` : void 0,
@@ -3041,7 +3300,7 @@ var JProgress_default = /* @__PURE__ */ defineComponent({
3041
3300
  }, [createElementVNode("span", {
3042
3301
  class: "j-progress__fill",
3043
3302
  style: normalizeStyle(indeterminate.value ? void 0 : { transform: `scaleX(${ratio.value})` })
3044
- }, null, 4)], 8, _hoisted_4$7)], 2);
3303
+ }, null, 4)], 8, _hoisted_4$9)], 2);
3045
3304
  };
3046
3305
  }
3047
3306
  });
@@ -3050,9 +3309,9 @@ var JProgress_default = /* @__PURE__ */ defineComponent({
3050
3309
  var RADIO_GROUP = Symbol("JRadioGroup");
3051
3310
  //#endregion
3052
3311
  //#region src/components/radio/JRadio.vue?vue&type=script&setup=true&lang.ts
3053
- var _hoisted_1$18 = ["data-state"];
3054
- var _hoisted_2$13 = { class: "j-radio__control" };
3055
- var _hoisted_3$9 = [
3312
+ var _hoisted_1$21 = ["data-state"];
3313
+ var _hoisted_2$16 = { class: "j-radio__control" };
3314
+ var _hoisted_3$12 = [
3056
3315
  "name",
3057
3316
  "value",
3058
3317
  "checked",
@@ -3060,7 +3319,7 @@ var _hoisted_3$9 = [
3060
3319
  "required",
3061
3320
  "aria-describedby"
3062
3321
  ];
3063
- var _hoisted_4$6 = {
3322
+ var _hoisted_4$8 = {
3064
3323
  key: 0,
3065
3324
  class: "j-radio__text"
3066
3325
  };
@@ -3087,7 +3346,7 @@ var JRadio_default = /* @__PURE__ */ defineComponent({
3087
3346
  class: normalizeClass(["j-radio", [_ctx.$attrs.class, { "is-disabled": isDisabled.value }]]),
3088
3347
  style: normalizeStyle(_ctx.$attrs.style),
3089
3348
  "data-state": checked.value ? "checked" : "unchecked"
3090
- }, [createElementVNode("span", _hoisted_2$13, [createElementVNode("input", mergeProps({ id }, {
3349
+ }, [createElementVNode("span", _hoisted_2$16, [createElementVNode("input", mergeProps({ id }, {
3091
3350
  ..._ctx.$attrs,
3092
3351
  class: void 0,
3093
3352
  style: void 0
@@ -3101,10 +3360,10 @@ var JRadio_default = /* @__PURE__ */ defineComponent({
3101
3360
  required: unref(group)?.required.value,
3102
3361
  "aria-describedby": __props.description || _ctx.$slots.description ? descriptionId : void 0,
3103
3362
  onChange: _cache[0] || (_cache[0] = ($event) => unref(group)?.select(__props.value))
3104
- }), null, 16, _hoisted_3$9), _cache[1] || (_cache[1] = createElementVNode("span", {
3363
+ }), null, 16, _hoisted_3$12), _cache[1] || (_cache[1] = createElementVNode("span", {
3105
3364
  class: "j-radio__circle",
3106
3365
  "aria-hidden": "true"
3107
- }, null, -1))]), __props.label || _ctx.$slots.default || __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_4$6, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
3366
+ }, null, -1))]), __props.label || _ctx.$slots.default || __props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_4$8, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("label", {
3108
3367
  key: 0,
3109
3368
  for: id,
3110
3369
  class: "j-radio__label"
@@ -3112,23 +3371,23 @@ var JRadio_default = /* @__PURE__ */ defineComponent({
3112
3371
  key: 1,
3113
3372
  id: descriptionId,
3114
3373
  class: "j-radio__description"
3115
- }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true)])) : createCommentVNode("", true)], 14, _hoisted_1$18);
3374
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true)])) : createCommentVNode("", true)], 14, _hoisted_1$21);
3116
3375
  };
3117
3376
  }
3118
3377
  });
3119
3378
  //#endregion
3120
3379
  //#region src/components/radio/JRadioGroup.vue?vue&type=script&setup=true&lang.ts
3121
- var _hoisted_1$17 = [
3380
+ var _hoisted_1$20 = [
3122
3381
  "disabled",
3123
3382
  "aria-describedby",
3124
3383
  "aria-invalid",
3125
3384
  "aria-required"
3126
3385
  ];
3127
- var _hoisted_2$12 = {
3386
+ var _hoisted_2$15 = {
3128
3387
  key: 0,
3129
3388
  class: "j-radio-group__legend"
3130
3389
  };
3131
- var _hoisted_3$8 = {
3390
+ var _hoisted_3$11 = {
3132
3391
  key: 0,
3133
3392
  class: "j-field__required",
3134
3393
  "aria-hidden": "true"
@@ -3182,7 +3441,7 @@ var JRadioGroup_default = /* @__PURE__ */ defineComponent({
3182
3441
  "aria-invalid": !!__props.error || void 0,
3183
3442
  "aria-required": __props.required || void 0
3184
3443
  }, [
3185
- __props.label || _ctx.$slots.label ? (openBlock(), createElementBlock("legend", _hoisted_2$12, [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.label), 1)]), __props.required ? (openBlock(), createElementBlock("span", _hoisted_3$8, "*")) : createCommentVNode("", true)])) : createCommentVNode("", true),
3444
+ __props.label || _ctx.$slots.label ? (openBlock(), createElementBlock("legend", _hoisted_2$15, [renderSlot(_ctx.$slots, "label", {}, () => [createTextVNode(toDisplayString(__props.label), 1)]), __props.required ? (openBlock(), createElementBlock("span", _hoisted_3$11, "*")) : createCommentVNode("", true)])) : createCommentVNode("", true),
3186
3445
  __props.description && !errorMessage.value ? (openBlock(), createElementBlock("p", {
3187
3446
  key: 1,
3188
3447
  id: descriptionId,
@@ -3194,18 +3453,18 @@ var JRadioGroup_default = /* @__PURE__ */ defineComponent({
3194
3453
  id: errorId,
3195
3454
  class: "j-radio-group__error"
3196
3455
  }, toDisplayString(errorMessage.value), 1)) : createCommentVNode("", true)
3197
- ], 10, _hoisted_1$17);
3456
+ ], 10, _hoisted_1$20);
3198
3457
  };
3199
3458
  }
3200
3459
  });
3201
3460
  //#endregion
3202
3461
  //#region src/components/rating/JRating.vue?vue&type=script&setup=true&lang.ts
3203
- var _hoisted_1$16 = [
3462
+ var _hoisted_1$19 = [
3204
3463
  "role",
3205
3464
  "aria-label",
3206
3465
  "aria-disabled"
3207
3466
  ];
3208
- var _hoisted_2$11 = [
3467
+ var _hoisted_2$14 = [
3209
3468
  "aria-checked",
3210
3469
  "aria-label",
3211
3470
  "tabindex",
@@ -3301,14 +3560,14 @@ var JRating_default = /* @__PURE__ */ defineComponent({
3301
3560
  }, [createElementVNode("path", { d: "M8 1.5l1.98 4.01 4.42.64-3.2 3.12.76 4.4L8 11.6l-3.96 2.08.76-4.4-3.2-3.12 4.42-.64z" })], -1)), createElementVNode("span", {
3302
3561
  class: "j-rating__star-fill",
3303
3562
  style: normalizeStyle({ width: `${fillFor(star) * 100}%` })
3304
- }, [..._cache[4] || (_cache[4] = [createElementVNode("svg", { viewBox: "0 0 16 16" }, [createElementVNode("path", { d: "M8 1.5l1.98 4.01 4.42.64-3.2 3.12.76 4.4L8 11.6l-3.96 2.08.76-4.4-3.2-3.12 4.42-.64z" })], -1)])], 4)], 40, _hoisted_2$11);
3305
- }), 128))], 42, _hoisted_1$16);
3563
+ }, [..._cache[4] || (_cache[4] = [createElementVNode("svg", { viewBox: "0 0 16 16" }, [createElementVNode("path", { d: "M8 1.5l1.98 4.01 4.42.64-3.2 3.12.76 4.4L8 11.6l-3.96 2.08.76-4.4-3.2-3.12 4.42-.64z" })], -1)])], 4)], 40, _hoisted_2$14);
3564
+ }), 128))], 42, _hoisted_1$19);
3306
3565
  };
3307
3566
  }
3308
3567
  });
3309
3568
  //#endregion
3310
3569
  //#region src/components/select/JSelect.vue?vue&type=script&setup=true&lang.ts
3311
- var _hoisted_1$15 = [
3570
+ var _hoisted_1$18 = [
3312
3571
  "id",
3313
3572
  "aria-expanded",
3314
3573
  "aria-controls",
@@ -3319,10 +3578,10 @@ var _hoisted_1$15 = [
3319
3578
  "aria-required",
3320
3579
  "disabled"
3321
3580
  ];
3322
- var _hoisted_2$10 = ["id"];
3323
- var _hoisted_3$7 = ["name", "value"];
3324
- var _hoisted_4$5 = ["id", "aria-labelledby"];
3325
- var _hoisted_5$5 = [
3581
+ var _hoisted_2$13 = ["id"];
3582
+ var _hoisted_3$10 = ["name", "value"];
3583
+ var _hoisted_4$7 = ["id", "aria-labelledby"];
3584
+ var _hoisted_5$6 = [
3326
3585
  "id",
3327
3586
  "aria-selected",
3328
3587
  "aria-disabled",
@@ -3568,13 +3827,13 @@ var JSelect_default = /* @__PURE__ */ defineComponent({
3568
3827
  }), [createElementVNode("span", {
3569
3828
  id: valueId.value,
3570
3829
  class: normalizeClass(["j-select__value", { "is-placeholder": !selected.value }])
3571
- }, [selected.value ? renderSlot(_ctx.$slots, "value", { option: selected.value }, () => [createTextVNode(toDisplayString(selected.value.label), 1)], void 0, 0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.placeholder), 1)], 64))], 10, _hoisted_2$10), createVNode(unref(IconChevronUpDown), { class: "j-select__chevron" })], 16, _hoisted_1$15),
3830
+ }, [selected.value ? renderSlot(_ctx.$slots, "value", { option: selected.value }, () => [createTextVNode(toDisplayString(selected.value.label), 1)], void 0, 0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.placeholder), 1)], 64))], 10, _hoisted_2$13), createVNode(unref(IconChevronUpDown), { class: "j-select__chevron" })], 16, _hoisted_1$18),
3572
3831
  __props.name ? (openBlock(), createElementBlock("input", {
3573
3832
  key: 0,
3574
3833
  type: "hidden",
3575
3834
  name: __props.name,
3576
3835
  value: model.value ?? ""
3577
- }, null, 8, _hoisted_3$7)) : createCommentVNode("", true),
3836
+ }, null, 8, _hoisted_3$10)) : createCommentVNode("", true),
3578
3837
  createVNode(JPortal_default, null, {
3579
3838
  default: withCtx(() => [createVNode(Transition, { name: "j-pop" }, {
3580
3839
  default: withCtx(() => [open.value ? (openBlock(), createElementBlock("ul", {
@@ -3605,8 +3864,8 @@ var JSelect_default = /* @__PURE__ */ defineComponent({
3605
3864
  option,
3606
3865
  selected: option.value === model.value,
3607
3866
  active: index === activeIndex.value
3608
- }, () => [createElementVNode("span", _hoisted_7$2, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(option.description), 1)) : createCommentVNode("", true)])]), createVNode(unref(IconCheck), { class: "j-select__check" })], 42, _hoisted_5$5);
3609
- }), 128)), visibleOptions.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_9, " No options ")) : createCommentVNode("", true)], 46, _hoisted_4$5)) : createCommentVNode("", true)]),
3867
+ }, () => [createElementVNode("span", _hoisted_7$2, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(option.description), 1)) : createCommentVNode("", true)])]), createVNode(unref(IconCheck), { class: "j-select__check" })], 42, _hoisted_5$6);
3868
+ }), 128)), visibleOptions.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_9, " No options ")) : createCommentVNode("", true)], 46, _hoisted_4$7)) : createCommentVNode("", true)]),
3610
3869
  _: 3
3611
3870
  })]),
3612
3871
  _: 3
@@ -3636,8 +3895,8 @@ var JSelect_default = /* @__PURE__ */ defineComponent({
3636
3895
  });
3637
3896
  //#endregion
3638
3897
  //#region src/components/separator/JSeparator.vue?vue&type=script&setup=true&lang.ts
3639
- var _hoisted_1$14 = ["role", "aria-orientation"];
3640
- var _hoisted_2$9 = {
3898
+ var _hoisted_1$17 = ["role", "aria-orientation"];
3899
+ var _hoisted_2$12 = {
3641
3900
  key: 0,
3642
3901
  class: "j-separator__label"
3643
3902
  };
@@ -3659,28 +3918,28 @@ var JSeparator_default = /* @__PURE__ */ defineComponent({
3659
3918
  class: normalizeClass(["j-separator", [`j-separator--${__props.orientation}`, { "j-separator--labelled": __props.label || _ctx.$slots.default }]]),
3660
3919
  role: __props.decorative ? "none" : "separator",
3661
3920
  "aria-orientation": __props.decorative ? void 0 : __props.orientation
3662
- }, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_2$9, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])])) : createCommentVNode("", true)], 10, _hoisted_1$14);
3921
+ }, [__props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_2$12, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.label), 1)])])) : createCommentVNode("", true)], 10, _hoisted_1$17);
3663
3922
  };
3664
3923
  }
3665
3924
  });
3666
3925
  //#endregion
3667
3926
  //#region src/components/sheet/JSheet.vue?vue&type=script&setup=true&lang.ts
3668
- var _hoisted_1$13 = {
3927
+ var _hoisted_1$16 = {
3669
3928
  key: 0,
3670
3929
  class: "j-sheet__overlay",
3671
3930
  "aria-hidden": "true"
3672
3931
  };
3673
- var _hoisted_2$8 = [
3932
+ var _hoisted_2$11 = [
3674
3933
  "aria-labelledby",
3675
3934
  "aria-label",
3676
3935
  "aria-describedby"
3677
3936
  ];
3678
- var _hoisted_3$6 = {
3937
+ var _hoisted_3$9 = {
3679
3938
  key: 0,
3680
3939
  class: "j-sheet__header"
3681
3940
  };
3682
- var _hoisted_4$4 = { class: "j-sheet__body" };
3683
- var _hoisted_5$4 = {
3941
+ var _hoisted_4$6 = { class: "j-sheet__body" };
3942
+ var _hoisted_5$5 = {
3684
3943
  key: 1,
3685
3944
  class: "j-sheet__footer"
3686
3945
  };
@@ -3732,7 +3991,7 @@ var JSheet_default = /* @__PURE__ */ defineComponent({
3732
3991
  return (_ctx, _cache) => {
3733
3992
  return openBlock(), createBlock(JPortal_default, null, {
3734
3993
  default: withCtx(() => [createVNode(Transition, { name: "j-sheet-overlay" }, {
3735
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$13)) : createCommentVNode("", true)]),
3994
+ default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$16)) : createCommentVNode("", true)]),
3736
3995
  _: 1
3737
3996
  }), createVNode(Transition, {
3738
3997
  name: "j-sheet",
@@ -3763,7 +4022,7 @@ var JSheet_default = /* @__PURE__ */ defineComponent({
3763
4022
  "aria-describedby": __props.description ? descriptionId : void 0,
3764
4023
  onAnimationend: _cache[0] || (_cache[0] = ($event) => nudging.value = false)
3765
4024
  }, [
3766
- __props.title || __props.description || _ctx.$slots.header ? (openBlock(), createElementBlock("header", _hoisted_3$6, [renderSlot(_ctx.$slots, "header", {
4025
+ __props.title || __props.description || _ctx.$slots.header ? (openBlock(), createElementBlock("header", _hoisted_3$9, [renderSlot(_ctx.$slots, "header", {
3767
4026
  titleId,
3768
4027
  descriptionId
3769
4028
  }, () => [createElementVNode("h2", {
@@ -3774,8 +4033,8 @@ var JSheet_default = /* @__PURE__ */ defineComponent({
3774
4033
  id: descriptionId,
3775
4034
  class: "j-sheet__description"
3776
4035
  }, toDisplayString(__props.description), 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
3777
- createElementVNode("div", _hoisted_4$4, [renderSlot(_ctx.$slots, "default", { close })]),
3778
- _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5$4, [renderSlot(_ctx.$slots, "footer", { close })])) : createCommentVNode("", true),
4036
+ createElementVNode("div", _hoisted_4$6, [renderSlot(_ctx.$slots, "default", { close })]),
4037
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5$5, [renderSlot(_ctx.$slots, "footer", { close })])) : createCommentVNode("", true),
3779
4038
  !__props.hideClose ? (openBlock(), createElementBlock("button", {
3780
4039
  key: 2,
3781
4040
  type: "button",
@@ -3783,7 +4042,7 @@ var JSheet_default = /* @__PURE__ */ defineComponent({
3783
4042
  "aria-label": "Close",
3784
4043
  onClick: close
3785
4044
  }, [createVNode(unref(IconX))])) : createCommentVNode("", true)
3786
- ], 42, _hoisted_2$8)], 34)) : createCommentVNode("", true)]),
4045
+ ], 42, _hoisted_2$11)], 34)) : createCommentVNode("", true)]),
3787
4046
  _: 3
3788
4047
  })]),
3789
4048
  _: 3
@@ -3792,6 +4051,139 @@ var JSheet_default = /* @__PURE__ */ defineComponent({
3792
4051
  }
3793
4052
  });
3794
4053
  //#endregion
4054
+ //#region src/components/sidebar/JSidebar.vue?vue&type=script&setup=true&lang.ts
4055
+ var _hoisted_1$15 = { class: "j-sidebar" };
4056
+ var _hoisted_2$10 = {
4057
+ key: 0,
4058
+ class: "j-sidebar__header"
4059
+ };
4060
+ var _hoisted_3$8 = ["aria-label"];
4061
+ var _hoisted_4$5 = {
4062
+ key: 1,
4063
+ class: "j-sidebar__footer"
4064
+ };
4065
+ //#endregion
4066
+ //#region src/components/sidebar/JSidebar.vue
4067
+ var JSidebar_default = /* @__PURE__ */ defineComponent({
4068
+ __name: "JSidebar",
4069
+ props: { label: { default: "Sidebar" } },
4070
+ setup(__props) {
4071
+ return (_ctx, _cache) => {
4072
+ return openBlock(), createElementBlock("aside", _hoisted_1$15, [
4073
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_2$10, [renderSlot(_ctx.$slots, "header")])) : createCommentVNode("", true),
4074
+ createElementVNode("nav", {
4075
+ class: "j-sidebar__nav",
4076
+ "aria-label": __props.label
4077
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$8),
4078
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_4$5, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
4079
+ ]);
4080
+ };
4081
+ }
4082
+ });
4083
+ //#endregion
4084
+ //#region src/components/sidebar/JSidebarGroup.vue?vue&type=script&setup=true&lang.ts
4085
+ var _hoisted_1$14 = ["data-state"];
4086
+ var _hoisted_2$9 = ["aria-expanded"];
4087
+ var _hoisted_3$7 = ["aria-labelledby", "inert"];
4088
+ var _hoisted_4$4 = { class: "j-sidebar-group__panel-inner" };
4089
+ var _hoisted_5$4 = { class: "j-sidebar-group__items" };
4090
+ //#endregion
4091
+ //#region src/components/sidebar/JSidebarGroup.vue
4092
+ var JSidebarGroup_default = /* @__PURE__ */ defineComponent({
4093
+ __name: "JSidebarGroup",
4094
+ props: /*@__PURE__*/ mergeModels({
4095
+ title: {},
4096
+ collapsible: {
4097
+ type: Boolean,
4098
+ default: true
4099
+ }
4100
+ }, {
4101
+ "open": {
4102
+ type: Boolean,
4103
+ default: true
4104
+ },
4105
+ "openModifiers": {}
4106
+ }),
4107
+ emits: ["update:open"],
4108
+ setup(__props) {
4109
+ /** Whether the group is expanded. Open by default. */
4110
+ const open = useModel(__props, "open");
4111
+ const id = `j-${useId()}`;
4112
+ const titleId = `${id}-title`;
4113
+ const listId = `${id}-list`;
4114
+ return (_ctx, _cache) => {
4115
+ return openBlock(), createElementBlock("div", {
4116
+ class: "j-sidebar-group",
4117
+ "data-state": open.value ? "open" : "closed"
4118
+ }, [__props.title && __props.collapsible ? (openBlock(), createElementBlock("button", {
4119
+ key: 0,
4120
+ id: titleId,
4121
+ type: "button",
4122
+ class: "j-sidebar-group__title j-sidebar-group__toggle j-focusable",
4123
+ "aria-expanded": open.value,
4124
+ "aria-controls": listId,
4125
+ onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
4126
+ }, [createElementVNode("span", null, toDisplayString(__props.title), 1), createVNode(unref(IconChevronDown), { class: "j-sidebar-group__chevron" })], 8, _hoisted_2$9)) : __props.title ? (openBlock(), createElementBlock("p", {
4127
+ key: 1,
4128
+ id: titleId,
4129
+ class: "j-sidebar-group__title"
4130
+ }, toDisplayString(__props.title), 1)) : createCommentVNode("", true), createElementVNode("div", {
4131
+ id: listId,
4132
+ class: "j-sidebar-group__panel",
4133
+ role: "group",
4134
+ "aria-labelledby": __props.title ? titleId : void 0,
4135
+ inert: !open.value
4136
+ }, [createElementVNode("div", _hoisted_4$4, [createElementVNode("div", _hoisted_5$4, [renderSlot(_ctx.$slots, "default")])])], 8, _hoisted_3$7)], 8, _hoisted_1$14);
4137
+ };
4138
+ }
4139
+ });
4140
+ //#endregion
4141
+ //#region src/components/sidebar/JSidebarItem.vue?vue&type=script&setup=true&lang.ts
4142
+ var _hoisted_1$13 = {
4143
+ key: 0,
4144
+ class: "j-sidebar-item__icon"
4145
+ };
4146
+ var _hoisted_2$8 = { class: "j-sidebar-item__label" };
4147
+ var _hoisted_3$6 = {
4148
+ key: 1,
4149
+ class: "j-sidebar-item__trailing"
4150
+ };
4151
+ //#endregion
4152
+ //#region src/components/sidebar/JSidebarItem.vue
4153
+ var JSidebarItem_default = /* @__PURE__ */ defineComponent({
4154
+ __name: "JSidebarItem",
4155
+ props: {
4156
+ active: { type: Boolean },
4157
+ disabled: { type: Boolean },
4158
+ as: { default: "a" }
4159
+ },
4160
+ setup(__props) {
4161
+ return (_ctx, _cache) => {
4162
+ return openBlock(), createBlock(resolveDynamicComponent(__props.as), {
4163
+ class: normalizeClass(["j-sidebar-item j-focusable", {
4164
+ "is-active": __props.active,
4165
+ "is-disabled": __props.disabled
4166
+ }]),
4167
+ "aria-current": __props.active ? "page" : void 0,
4168
+ "aria-disabled": __props.disabled || void 0,
4169
+ tabindex: __props.disabled ? -1 : void 0
4170
+ }, {
4171
+ default: withCtx(() => [
4172
+ _ctx.$slots.leading ? (openBlock(), createElementBlock("span", _hoisted_1$13, [renderSlot(_ctx.$slots, "leading")])) : createCommentVNode("", true),
4173
+ createElementVNode("span", _hoisted_2$8, [renderSlot(_ctx.$slots, "default")]),
4174
+ _ctx.$slots.trailing ? (openBlock(), createElementBlock("span", _hoisted_3$6, [renderSlot(_ctx.$slots, "trailing")])) : createCommentVNode("", true)
4175
+ ]),
4176
+ _: 3
4177
+ }, 8, [
4178
+ "class",
4179
+ "aria-current",
4180
+ "aria-disabled",
4181
+ "tabindex"
4182
+ ]);
4183
+ };
4184
+ }
4185
+ });
4186
+ //#endregion
3795
4187
  //#region src/components/skeleton/JSkeleton.vue
3796
4188
  var JSkeleton_default = /* @__PURE__ */ defineComponent({
3797
4189
  __name: "JSkeleton",
@@ -5133,6 +5525,7 @@ var components_exports = /* @__PURE__ */ __exportAll({
5133
5525
  JBadge: () => JBadge_default,
5134
5526
  JBanner: () => JBanner_default,
5135
5527
  JBreadcrumb: () => JBreadcrumb_default,
5528
+ JBurger: () => JBurger_default,
5136
5529
  JButton: () => JButton_default,
5137
5530
  JCard: () => JCard_default,
5138
5531
  JCheckbox: () => JCheckbox_default,
@@ -5145,8 +5538,12 @@ var components_exports = /* @__PURE__ */ __exportAll({
5145
5538
  JDropdownMenuSeparator: () => JDropdownMenuSeparator_default,
5146
5539
  JDropdownMenuSub: () => JDropdownMenuSub_default,
5147
5540
  JEmptyState: () => JEmptyState_default,
5541
+ JFooter: () => JFooter_default,
5542
+ JFooterColumn: () => JFooterColumn_default,
5148
5543
  JInput: () => JInput_default,
5149
5544
  JKbd: () => JKbd_default,
5545
+ JNavbar: () => JNavbar_default,
5546
+ JNavbarLink: () => JNavbarLink_default,
5150
5547
  JPagination: () => JPagination_default,
5151
5548
  JPopover: () => JPopover_default,
5152
5549
  JProgress: () => JProgress_default,
@@ -5156,6 +5553,9 @@ var components_exports = /* @__PURE__ */ __exportAll({
5156
5553
  JSelect: () => JSelect_default,
5157
5554
  JSeparator: () => JSeparator_default,
5158
5555
  JSheet: () => JSheet_default,
5556
+ JSidebar: () => JSidebar_default,
5557
+ JSidebarGroup: () => JSidebarGroup_default,
5558
+ JSidebarItem: () => JSidebarItem_default,
5159
5559
  JSkeleton: () => JSkeleton_default,
5160
5560
  JSlider: () => JSlider_default,
5161
5561
  JSpinner: () => JSpinner_default,
@@ -5230,6 +5630,6 @@ var JuxtUI = { install(app) {
5230
5630
  for (const [name, component] of Object.entries(components_exports)) app.component(name, component);
5231
5631
  } };
5232
5632
  //#endregion
5233
- export { JAccordion_default as JAccordion, JAccordionItem_default as JAccordionItem, JAlert_default as JAlert, JAspectRatio_default as JAspectRatio, JAvatar_default as JAvatar, JAvatarGroup_default as JAvatarGroup, JBadge_default as JBadge, JBanner_default as JBanner, JBreadcrumb_default as JBreadcrumb, JButton_default as JButton, JCard_default as JCard, JCheckbox_default as JCheckbox, JCollapsible_default as JCollapsible, JCommandPalette_default as JCommandPalette, JDialog_default as JDialog, JDropdownMenu_default as JDropdownMenu, JDropdownMenuItem_default as JDropdownMenuItem, JDropdownMenuLabel_default as JDropdownMenuLabel, JDropdownMenuSeparator_default as JDropdownMenuSeparator, JDropdownMenuSub_default as JDropdownMenuSub, JEmptyState_default as JEmptyState, JInput_default as JInput, JKbd_default as JKbd, JPagination_default as JPagination, JPopover_default as JPopover, JProgress_default as JProgress, JRadio_default as JRadio, JRadioGroup_default as JRadioGroup, JRating_default as JRating, JSelect_default as JSelect, JSeparator_default as JSeparator, JSheet_default as JSheet, JSkeleton_default as JSkeleton, JSlider_default as JSlider, JSpinner_default as JSpinner, JStat_default as JStat, JSwitch_default as JSwitch, JTabs_default as JTabs, JTag_default as JTag, JTextarea_default as JTextarea, JTimeline_default as JTimeline, JTimelineItem_default as JTimelineItem, JToaster_default as JToaster, JToggleGroup_default as JToggleGroup, JToggleGroupItem_default as JToggleGroupItem, JTooltip_default as JTooltip, JVisuallyHidden_default as JVisuallyHidden, JuxtUI, JuxtUI as default, formatHotkey, matchText, matchesHotkey, toast, useFocusTrap, useHotkey, useRecentCommands, useScrollLock, useToast };
5633
+ export { JAccordion_default as JAccordion, JAccordionItem_default as JAccordionItem, JAlert_default as JAlert, JAspectRatio_default as JAspectRatio, JAvatar_default as JAvatar, JAvatarGroup_default as JAvatarGroup, JBadge_default as JBadge, JBanner_default as JBanner, JBreadcrumb_default as JBreadcrumb, JBurger_default as JBurger, JButton_default as JButton, JCard_default as JCard, JCheckbox_default as JCheckbox, JCollapsible_default as JCollapsible, JCommandPalette_default as JCommandPalette, JDialog_default as JDialog, JDropdownMenu_default as JDropdownMenu, JDropdownMenuItem_default as JDropdownMenuItem, JDropdownMenuLabel_default as JDropdownMenuLabel, JDropdownMenuSeparator_default as JDropdownMenuSeparator, JDropdownMenuSub_default as JDropdownMenuSub, JEmptyState_default as JEmptyState, JFooter_default as JFooter, JFooterColumn_default as JFooterColumn, JInput_default as JInput, JKbd_default as JKbd, JNavbar_default as JNavbar, JNavbarLink_default as JNavbarLink, JPagination_default as JPagination, JPopover_default as JPopover, JProgress_default as JProgress, JRadio_default as JRadio, JRadioGroup_default as JRadioGroup, JRating_default as JRating, JSelect_default as JSelect, JSeparator_default as JSeparator, JSheet_default as JSheet, JSidebar_default as JSidebar, JSidebarGroup_default as JSidebarGroup, JSidebarItem_default as JSidebarItem, JSkeleton_default as JSkeleton, JSlider_default as JSlider, JSpinner_default as JSpinner, JStat_default as JStat, JSwitch_default as JSwitch, JTabs_default as JTabs, JTag_default as JTag, JTextarea_default as JTextarea, JTimeline_default as JTimeline, JTimelineItem_default as JTimelineItem, JToaster_default as JToaster, JToggleGroup_default as JToggleGroup, JToggleGroupItem_default as JToggleGroupItem, JTooltip_default as JTooltip, JVisuallyHidden_default as JVisuallyHidden, JuxtUI, JuxtUI as default, formatHotkey, matchText, matchesHotkey, toast, useFocusTrap, useHotkey, useRecentCommands, useScrollLock, useToast };
5234
5634
 
5235
5635
  //# sourceMappingURL=index.js.map