@adea-ai/ui 0.81.0 → 0.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +41 -8
  2. package/dist/components/composites/account-menu/account-menu.d.ts +5 -0
  3. package/dist/components/composites/account-menu/account-menu.d.ts.map +1 -1
  4. package/dist/components/composites/account-menu/account-menu.js +122 -70
  5. package/dist/components/composites/account-menu/account-menu.js.map +1 -1
  6. package/dist/components/composites/action-button/action-button.d.ts +27 -0
  7. package/dist/components/composites/action-button/action-button.d.ts.map +1 -0
  8. package/dist/components/composites/action-button/action-button.js +121 -0
  9. package/dist/components/composites/action-button/action-button.js.map +1 -0
  10. package/dist/components/composites/action-button/index.d.ts +3 -0
  11. package/dist/components/composites/action-button/index.d.ts.map +1 -0
  12. package/dist/components/composites/action-button/index.js +2 -0
  13. package/dist/components/conversation/thread-panel.d.ts +2 -0
  14. package/dist/components/conversation/thread-panel.d.ts.map +1 -1
  15. package/dist/components/conversation/thread-panel.js +36 -31
  16. package/dist/components/conversation/thread-panel.js.map +1 -1
  17. package/dist/components/layout/sidebar-nav/index.d.ts +1 -1
  18. package/dist/components/layout/sidebar-nav/index.d.ts.map +1 -1
  19. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts +6 -1
  20. package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts.map +1 -1
  21. package/dist/components/layout/sidebar-nav/sidebar-nav.js +66 -62
  22. package/dist/components/layout/sidebar-nav/sidebar-nav.js.map +1 -1
  23. package/dist/components/ui/board/board.d.ts.map +1 -1
  24. package/dist/components/ui/board/board.js +54 -7
  25. package/dist/components/ui/board/board.js.map +1 -1
  26. package/dist/components/ui/command/command.d.ts +5 -1
  27. package/dist/components/ui/command/command.d.ts.map +1 -1
  28. package/dist/components/ui/command/command.js +8 -3
  29. package/dist/components/ui/command/command.js.map +1 -1
  30. package/dist/components/ui/input/index.d.ts +1 -1
  31. package/dist/components/ui/input/index.d.ts.map +1 -1
  32. package/dist/components/ui/input/input.d.ts +5 -1
  33. package/dist/components/ui/input/input.d.ts.map +1 -1
  34. package/dist/components/ui/input/input.js +36 -17
  35. package/dist/components/ui/input/input.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -1
  39. package/dist/lint/index.d.ts.map +1 -1
  40. package/dist/lint.js +47 -7
  41. package/dist/lint.js.map +1 -1
  42. package/dist/r/account-menu.json +1 -0
  43. package/dist/r/action-button.json +24 -0
  44. package/dist/r/conversation.json +1 -0
  45. package/dist/r/registry.json +26 -0
  46. package/dist/r/src/components/composites/account-menu/account-menu.tsx +100 -44
  47. package/dist/r/src/components/composites/action-button/action-button.tsx +139 -0
  48. package/dist/r/src/components/composites/action-button/index.ts +2 -0
  49. package/dist/r/src/components/conversation/thread-panel.tsx +22 -12
  50. package/dist/r/src/components/layout/sidebar-nav/index.ts +1 -0
  51. package/dist/r/src/components/layout/sidebar-nav/sidebar-nav.tsx +29 -21
  52. package/dist/r/src/components/ui/board/board.tsx +74 -6
  53. package/dist/r/src/components/ui/command/command.tsx +15 -4
  54. package/dist/r/src/components/ui/input/index.ts +1 -1
  55. package/dist/r/src/components/ui/input/input.tsx +38 -21
  56. package/package.json +1 -1
  57. package/registry.json +26 -0
  58. package/src/components/composites/account-menu/account-menu.tsx +100 -44
  59. package/src/components/composites/action-button/action-button.tsx +139 -0
  60. package/src/components/composites/action-button/index.ts +2 -0
  61. package/src/components/conversation/thread-panel.tsx +22 -12
  62. package/src/components/layout/sidebar-nav/index.ts +1 -0
  63. package/src/components/layout/sidebar-nav/sidebar-nav.tsx +29 -21
  64. package/src/components/ui/board/board.tsx +74 -6
  65. package/src/components/ui/command/command.tsx +15 -4
  66. package/src/components/ui/input/index.ts +1 -1
  67. package/src/components/ui/input/input.tsx +38 -21
  68. package/src/index.ts +1 -0
  69. package/src/lint/index.ts +71 -7
@@ -1,5 +1,6 @@
1
1
  import { cn } from "../../lib/utils.js";
2
2
  import { Button } from "../ui/button/button.js";
3
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip/tooltip.js";
3
4
  import { createComponent, insert, mergeProps, spread, template } from "solid-js/web";
4
5
  import { X } from "lucide-solid";
5
6
  import { Show, splitProps } from "solid-js";
@@ -7,7 +8,7 @@ import { Show, splitProps } from "solid-js";
7
8
  var _tmpl$ = /*#__PURE__*/ template(`<span class="text-muted-foreground text-2xs"> `);
8
9
  var _tmpl$2 = /*#__PURE__*/ template(`<div class="bg-muted/40 shrink-0 border-b border-border px-3 py-2">`);
9
10
  var _tmpl$3 = /*#__PURE__*/ template(`<div class="shrink-0 border-t border-border p-2">`);
10
- var _tmpl$4 = /*#__PURE__*/ template(`<aside data-slot=thread-panel><header class="flex h-topbar shrink-0 items-center gap-2 border-b border-border px-3"><div class="flex min-w-0 flex-col"><span class="truncate text-sm font-semibold tracking-tight">Thread</span></div></header><div class="min-h-0 flex-1 overflow-y-auto overscroll-contain"role=region aria-label="Thread replies"tabindex=0>`);
11
+ var _tmpl$4 = /*#__PURE__*/ template(`<aside data-slot=thread-panel><header class="flex h-topbar shrink-0 items-center gap-2 border-b border-border px-3"><div class="flex min-w-0 flex-col"><span class="truncate text-sm font-semibold tracking-tight">Thread</span></div><div class="ms-auto flex shrink-0 items-center gap-1"></div></header><div class="min-h-0 flex-1 overflow-y-auto overscroll-contain"role=region aria-label="Thread replies"tabindex=0>`);
11
12
  var _tmpl$5 = /*#__PURE__*/ template(`<span class="text-muted-foreground truncate text-2xs">`);
12
13
  var _tmpl$6 = /*#__PURE__*/ template(`<button type=button><span class="flex min-w-0 flex-col"><span class="truncate text-xs font-medium">`);
13
14
  function ThreadPanel(props) {
@@ -17,19 +18,20 @@ function ThreadPanel(props) {
17
18
  "count",
18
19
  "root",
19
20
  "composer",
21
+ "headerActions",
20
22
  "onClose",
21
23
  "children"
22
24
  ]);
23
25
  return (() => {
24
26
  var _el$ = _tmpl$4(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
25
27
  _el$3.firstChild;
26
- var _el$8 = _el$2.nextSibling;
28
+ var _el$7 = _el$3.nextSibling, _el$9 = _el$2.nextSibling;
27
29
  spread(_el$, mergeProps({
28
30
  get ["aria-label"]() {
29
31
  return `Thread: ${local.label}`;
30
32
  },
31
33
  get ["class"]() {
32
- return cn("bg-surface flex h-full w-96 shrink-0 flex-col border-s border-border", local.class);
34
+ return cn("bg-surface flex h-full w-96 max-w-full shrink-0 flex-col border-s border-border", local.class);
33
35
  }
34
36
  }, rest), false, true);
35
37
  insert(_el$3, createComponent(Show, {
@@ -43,21 +45,24 @@ function ThreadPanel(props) {
43
45
  return _el$5;
44
46
  }
45
47
  }), null);
46
- insert(_el$2, createComponent(Show, {
48
+ insert(_el$7, () => local.headerActions, null);
49
+ insert(_el$7, createComponent(Show, {
47
50
  get when() {
48
51
  return local.onClose;
49
52
  },
50
53
  get children() {
51
- return createComponent(Button, {
52
- variant: "ghost",
53
- size: "icon-sm",
54
- "aria-label": "Close thread",
55
- "class": "ms-auto text-muted-foreground",
56
- onClick: () => local.onClose?.(),
57
- get children() {
58
- return createComponent(X, {});
59
- }
60
- });
54
+ return createComponent(Tooltip, { get children() {
55
+ return [createComponent(TooltipTrigger, {
56
+ as: Button,
57
+ variant: "ghost",
58
+ size: "icon-sm",
59
+ "aria-label": "Close thread",
60
+ onClick: () => local.onClose?.(),
61
+ get children() {
62
+ return createComponent(X, {});
63
+ }
64
+ }), createComponent(TooltipContent, { children: "Close thread" })];
65
+ } });
61
66
  }
62
67
  }), null);
63
68
  insert(_el$, createComponent(Show, {
@@ -65,20 +70,20 @@ function ThreadPanel(props) {
65
70
  return local.root;
66
71
  },
67
72
  get children() {
68
- var _el$7 = _tmpl$2();
69
- insert(_el$7, () => local.root);
70
- return _el$7;
73
+ var _el$8 = _tmpl$2();
74
+ insert(_el$8, () => local.root);
75
+ return _el$8;
71
76
  }
72
- }), _el$8);
73
- insert(_el$8, () => local.children);
77
+ }), _el$9);
78
+ insert(_el$9, () => local.children);
74
79
  insert(_el$, createComponent(Show, {
75
80
  get when() {
76
81
  return local.composer;
77
82
  },
78
83
  get children() {
79
- var _el$9 = _tmpl$3();
80
- insert(_el$9, () => local.composer);
81
- return _el$9;
84
+ var _el$0 = _tmpl$3();
85
+ insert(_el$0, () => local.composer);
86
+ return _el$0;
82
87
  }
83
88
  }), null);
84
89
  return _el$;
@@ -93,8 +98,8 @@ function AttachmentCard(props) {
93
98
  "icon"
94
99
  ]);
95
100
  return (() => {
96
- var _el$0 = _tmpl$6(), _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild;
97
- spread(_el$0, mergeProps({
101
+ var _el$1 = _tmpl$6(), _el$10 = _el$1.firstChild, _el$11 = _el$10.firstChild;
102
+ spread(_el$1, mergeProps({
98
103
  get disabled() {
99
104
  return local.unavailable;
100
105
  },
@@ -102,19 +107,19 @@ function AttachmentCard(props) {
102
107
  return cn("flex max-w-64 items-center gap-2.5 rounded-md border border-border bg-surface-sunken px-2.5 py-2 text-start", "transition-colors ease-out outline-none", local.unavailable ? "cursor-not-allowed opacity-60" : "hover:border-input hover:bg-surface-hover", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle", "[&_svg]:size-4 [&_svg]:shrink-0", local.class);
103
108
  }
104
109
  }, rest), false, true);
105
- insert(_el$0, () => local.icon, _el$1);
106
- insert(_el$10, () => local.name);
107
- insert(_el$1, createComponent(Show, {
110
+ insert(_el$1, () => local.icon, _el$10);
111
+ insert(_el$11, () => local.name);
112
+ insert(_el$10, createComponent(Show, {
108
113
  get when() {
109
114
  return local.detail;
110
115
  },
111
116
  get children() {
112
- var _el$11 = _tmpl$5();
113
- insert(_el$11, () => local.detail);
114
- return _el$11;
117
+ var _el$12 = _tmpl$5();
118
+ insert(_el$12, () => local.detail);
119
+ return _el$12;
115
120
  }
116
121
  }), null);
117
- return _el$0;
122
+ return _el$1;
118
123
  })();
119
124
  }
120
125
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"thread-panel.js","names":["X","ComponentProps","JSX","Show","splitProps","cn","Button","ThreadPanelProps","label","count","root","Element","composer","onClose","ThreadPanel","props","local","rest","_el$","_tmpl$4","_el$2","firstChild","_el$3","_el$4","_el$8","nextSibling","_$spread","_$mergeProps","aria-label","class","_$insert","_$createComponent","when","undefined","children","_el$5","_tmpl$","_el$6","variant","size","onClick","_el$7","_tmpl$2","_el$9","_tmpl$3","AttachmentCardProps","name","detail","unavailable","icon","AttachmentCard","_el$0","_tmpl$6","_el$1","_el$10","disabled","_el$11","_tmpl$5","_$mergeProps","_$createComponent"],"sources":["../../../src/components/conversation/thread-panel.tsx"],"sourcesContent":["import { X } from 'lucide-solid'\nimport type { ComponentProps, JSX } from 'solid-js'\nimport { Show, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\n\n/**\n * ThreadPanel.\n *\n * The replies to one message, shown beside the transcript rather than in it. Keeping\n * a thread out of the main flow is what stops a busy side conversation from burying\n * the conversation everyone is having.\n *\n * The root message is repeated at the top — with `pinned` — because a thread read out\n * of context is a set of answers to a question the reader can no longer see.\n *\n * The panel is a `complementary` landmark with a label, so it is reachable by\n * landmark navigation rather than by tabbing through the transcript to find it.\n */\nexport type ThreadPanelProps = ComponentProps<'aside'> & {\n /** The thread's title, usually the root message's author. */\n label: string\n /** A count of replies, shown beside the label. */\n count?: number\n /** The root message, drawn above the replies. */\n root?: JSX.Element\n /** The composer for a reply. */\n composer?: JSX.Element\n onClose?: () => void\n}\n\nexport function ThreadPanel(props: ThreadPanelProps) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'count',\n 'root',\n 'composer',\n 'onClose',\n 'children',\n ])\n\n return (\n <aside\n data-slot=\"thread-panel\"\n aria-label={`Thread: ${local.label}`}\n class={cn(\n 'bg-surface flex h-full w-96 shrink-0 flex-col border-s border-border',\n local.class\n )}\n {...rest}\n >\n <header class=\"flex h-topbar shrink-0 items-center gap-2 border-b border-border px-3\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"truncate text-sm font-semibold tracking-tight\">Thread</span>\n <Show when={local.count !== undefined}>\n <span class=\"text-muted-foreground text-2xs\">\n {local.count} {local.count === 1 ? 'reply' : 'replies'}\n </span>\n </Show>\n </div>\n <Show when={local.onClose}>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Close thread\"\n class=\"ms-auto text-muted-foreground\"\n onClick={() => local.onClose?.()}\n >\n <X />\n </Button>\n </Show>\n </header>\n\n <Show when={local.root}>\n <div class=\"bg-muted/40 shrink-0 border-b border-border px-3 py-2\">{local.root}</div>\n </Show>\n\n <div\n class=\"min-h-0 flex-1 overflow-y-auto overscroll-contain\"\n role=\"region\"\n aria-label=\"Thread replies\"\n tabindex=\"0\"\n >\n {local.children}\n </div>\n\n <Show when={local.composer}>\n <div class=\"shrink-0 border-t border-border p-2\">{local.composer}</div>\n </Show>\n </aside>\n )\n}\n\n/**\n * An attachment card.\n *\n * A file is not a link: the reader wants to know what it is and how big it is before\n * deciding to open it, so the media type and size are on the card rather than behind\n * a click. `unavailable` is a real state — an artifact can be deleted, or live on a\n * device this one is not authorized for — and it is drawn as text rather than as a\n * dead link.\n */\nexport type AttachmentCardProps = ComponentProps<'button'> & {\n name: string\n /** A short description of the type and size, e.g. \"image/png · 24,120 bytes\". */\n detail?: string\n /** Draw the card as unavailable, with the reason as the detail. */\n unavailable?: boolean\n icon?: JSX.Element\n}\n\nexport function AttachmentCard(props: AttachmentCardProps) {\n const [local, rest] = splitProps(props, ['class', 'name', 'detail', 'unavailable', 'icon'])\n\n return (\n <button\n type=\"button\"\n disabled={local.unavailable}\n class={cn(\n 'flex max-w-64 items-center gap-2.5 rounded-md border border-border bg-surface-sunken px-2.5 py-2 text-start',\n 'transition-colors ease-out outline-none',\n local.unavailable\n ? 'cursor-not-allowed opacity-60'\n : 'hover:border-input hover:bg-surface-hover',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',\n '[&_svg]:size-4 [&_svg]:shrink-0',\n local.class\n )}\n {...rest}\n >\n {local.icon}\n <span class=\"flex min-w-0 flex-col\">\n <span class=\"truncate text-xs font-medium\">{local.name}</span>\n <Show when={local.detail}>\n <span class=\"text-muted-foreground truncate text-2xs\">{local.detail}</span>\n </Show>\n </span>\n </button>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"thread-panel.js","names":["X","ComponentProps","JSX","Show","splitProps","cn","Button","Tooltip","TooltipContent","TooltipTrigger","ThreadPanelProps","label","count","root","Element","composer","headerActions","onClose","ThreadPanel","props","local","rest","_el$","_tmpl$4","_el$2","firstChild","_el$3","_el$4","_el$7","nextSibling","_el$9","_$spread","_$mergeProps","aria-label","class","_$insert","_$createComponent","when","undefined","children","_el$5","_tmpl$","_el$6","as","variant","size","onClick","_el$8","_tmpl$2","_el$0","_tmpl$3","AttachmentCardProps","name","detail","unavailable","icon","AttachmentCard","_el$1","_tmpl$6","_el$10","_el$11","disabled","_el$12","_tmpl$5","_$mergeProps","_$createComponent"],"sources":["../../../src/components/conversation/thread-panel.tsx"],"sourcesContent":["import { X } from 'lucide-solid'\nimport type { ComponentProps, JSX } from 'solid-js'\nimport { Show, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../ui/button/button'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip/tooltip'\n\n/**\n * ThreadPanel.\n *\n * The replies to one message, shown beside the transcript rather than in it. Keeping\n * a thread out of the main flow is what stops a busy side conversation from burying\n * the conversation everyone is having.\n *\n * The root message is repeated at the top — with `pinned` — because a thread read out\n * of context is a set of answers to a question the reader can no longer see.\n *\n * The panel is a `complementary` landmark with a label, so it is reachable by\n * landmark navigation rather than by tabbing through the transcript to find it.\n */\nexport type ThreadPanelProps = ComponentProps<'aside'> & {\n /** The thread's title, usually the root message's author. */\n label: string\n /** A count of replies, shown beside the label. */\n count?: number\n /** The root message, drawn above the replies. */\n root?: JSX.Element\n /** The composer for a reply. */\n composer?: JSX.Element\n /** Host actions, such as marking the thread unread, before the close control. */\n headerActions?: JSX.Element\n onClose?: () => void\n}\n\nexport function ThreadPanel(props: ThreadPanelProps) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'count',\n 'root',\n 'composer',\n 'headerActions',\n 'onClose',\n 'children',\n ])\n\n return (\n <aside\n data-slot=\"thread-panel\"\n aria-label={`Thread: ${local.label}`}\n class={cn(\n 'bg-surface flex h-full w-96 max-w-full shrink-0 flex-col border-s border-border',\n local.class\n )}\n {...rest}\n >\n <header class=\"flex h-topbar shrink-0 items-center gap-2 border-b border-border px-3\">\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"truncate text-sm font-semibold tracking-tight\">Thread</span>\n <Show when={local.count !== undefined}>\n <span class=\"text-muted-foreground text-2xs\">\n {local.count} {local.count === 1 ? 'reply' : 'replies'}\n </span>\n </Show>\n </div>\n <div class=\"ms-auto flex shrink-0 items-center gap-1\">\n {local.headerActions}\n <Show when={local.onClose}>\n <Tooltip>\n <TooltipTrigger\n as={Button}\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Close thread\"\n onClick={() => local.onClose?.()}\n >\n <X />\n </TooltipTrigger>\n <TooltipContent>Close thread</TooltipContent>\n </Tooltip>\n </Show>\n </div>\n </header>\n\n <Show when={local.root}>\n <div class=\"bg-muted/40 shrink-0 border-b border-border px-3 py-2\">{local.root}</div>\n </Show>\n\n <div\n class=\"min-h-0 flex-1 overflow-y-auto overscroll-contain\"\n role=\"region\"\n aria-label=\"Thread replies\"\n tabindex=\"0\"\n >\n {local.children}\n </div>\n\n <Show when={local.composer}>\n <div class=\"shrink-0 border-t border-border p-2\">{local.composer}</div>\n </Show>\n </aside>\n )\n}\n\n/**\n * An attachment card.\n *\n * A file is not a link: the reader wants to know what it is and how big it is before\n * deciding to open it, so the media type and size are on the card rather than behind\n * a click. `unavailable` is a real state — an artifact can be deleted, or live on a\n * device this one is not authorized for — and it is drawn as text rather than as a\n * dead link.\n */\nexport type AttachmentCardProps = ComponentProps<'button'> & {\n name: string\n /** A short description of the type and size, e.g. \"image/png · 24,120 bytes\". */\n detail?: string\n /** Draw the card as unavailable, with the reason as the detail. */\n unavailable?: boolean\n icon?: JSX.Element\n}\n\nexport function AttachmentCard(props: AttachmentCardProps) {\n const [local, rest] = splitProps(props, ['class', 'name', 'detail', 'unavailable', 'icon'])\n\n return (\n <button\n type=\"button\"\n disabled={local.unavailable}\n class={cn(\n 'flex max-w-64 items-center gap-2.5 rounded-md border border-border bg-surface-sunken px-2.5 py-2 text-start',\n 'transition-colors ease-out outline-none',\n local.unavailable\n ? 'cursor-not-allowed opacity-60'\n : 'hover:border-input hover:bg-surface-hover',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',\n '[&_svg]:size-4 [&_svg]:shrink-0',\n local.class\n )}\n {...rest}\n >\n {local.icon}\n <span class=\"flex min-w-0 flex-col\">\n <span class=\"truncate text-xs font-medium\">{local.name}</span>\n <Show when={local.detail}>\n <span class=\"text-muted-foreground truncate text-2xs\">{local.detail}</span>\n </Show>\n </span>\n </button>\n )\n}\n"],"mappings":";;;;;;;;;;;;;AAkCA,SAAgBkB,YAAYC,OAAyB;CACnD,MAAM,CAACC,OAAOC,QAAQjB,WAAWe,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX;CAED,cAAA;EAAA,IAAAG,OAAAC,QAAA,GAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC;EAAAC,MAAAD;EAAA,IAAAG,QAAAF,MAAAG,aAAAC,QAAAN,MAAAK;EAAAE,OAAAT,MAAAU,WAAA;GAAA,KAAA,gBAAA;IAAA,OAGgB,WAAWZ,MAAMT;GAAO;GAAA,KAAA,WAAA;IAAA,OAC7BN,GACL,mFACAe,MAAMc,KACR;GAAC;EAAA,GACGb,IAAI,GAAA,OAAA,IAAA;EAAAc,OAAAT,OAAAU,gBAKHjC,MAAI;GAAA,IAACkC,OAAI;IAAA,OAAEjB,MAAMR,UAAU0B,KAAAA;GAAS;GAAA,IAAAC,WAAA;IAAA,IAAAC,QAAAC,OAAA,GAAAC,QAAAF,MAAAf;IAAAU,OAAAK,aAEhCpB,MAAMR,OAAK8B,KAAA;IAAAP,OAAAK,aAAGpB,MAAMR,UAAU,IAAI,UAAU,WAAS,IAAA;IAAA,OAAA4B;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAL,OAAAP,aAKzDR,MAAMJ,eAAa,IAAA;EAAAmB,OAAAP,OAAAQ,gBACnBjC,MAAI;GAAA,IAACkC,OAAI;IAAA,OAAEjB,MAAMH;GAAO;GAAA,IAAAsB,WAAA;IAAA,OAAAH,gBACtB7B,SAAO,EAAA,IAAAgC,WAAA;KAAA,OAAA,CAAAH,gBACL3B,gBAAc;MACbkC,IAAIrC;MACJsC,SAAO;MACPC,MAAI;MAAA,cAAA;MAEJC,eAAe1B,MAAMH,UAAU;MAAC,IAAAsB,WAAA;OAAA,OAAAH,gBAE/BpC,GAAC,CAAA,CAAA;MAAA;KAAA,CAAA,GAAAoC,gBAEH5B,gBAAc,EAAA+B,UAAA,eAAA,CAAA,CAAA;IAAA,EAAA,CAAA;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAJ,OAAAb,MAAAc,gBAMtBjC,MAAI;GAAA,IAACkC,OAAI;IAAA,OAAEjB,MAAMP;GAAI;GAAA,IAAA0B,WAAA;IAAA,IAAAQ,QAAAC,QAAA;IAAAb,OAAAY,aACgD3B,MAAMP,IAAI;IAAA,OAAAkC;GAAA;EAAA,CAAA,GAAAjB,KAAA;EAAAK,OAAAL,aAS7EV,MAAMmB,QAAQ;EAAAJ,OAAAb,MAAAc,gBAGhBjC,MAAI;GAAA,IAACkC,OAAI;IAAA,OAAEjB,MAAML;GAAQ;GAAA,IAAAwB,WAAA;IAAA,IAAAU,QAAAC,QAAA;IAAAf,OAAAc,aAC0B7B,MAAML,QAAQ;IAAA,OAAAkC;GAAA;EAAA,CAAA,GAAA,IAAA;EAAA,OAAA3B;CAAA,EAAA,CAAA;AAIxE;AAoBA,SAAgBkC,eAAerC,OAA4B;CACzD,MAAM,CAACC,OAAOC,QAAQjB,WAAWe,OAAO;EAAC;EAAS;EAAQ;EAAU;EAAe;CAAM,CAAC;CAE1F,cAAA;EAAA,IAAAsC,QAAAC,QAAA,GAAAC,SAAAF,MAAAhC,YAAAmC,SAAAD,OAAAlC;EAAAM,OAAA0B,OAAAzB,WAAA;GAAA,IAGI6B,WAAQ;IAAA,OAAEzC,MAAMkC;GAAW;GAAA,KAAA,WAAA;IAAA,OACpBjD,GACL,+GACA,2CACAe,MAAMkC,cACF,kCACA,6CACJ,oFACA,mCACAlC,MAAMc,KACR;GAAC;EAAA,GACGb,IAAI,GAAA,OAAA,IAAA;EAAAc,OAAAsB,aAEPrC,MAAMmC,MAAII,MAAA;EAAAxB,OAAAyB,cAEmCxC,MAAMgC,IAAI;EAAAjB,OAAAwB,QAAAvB,gBACrDjC,MAAI;GAAA,IAACkC,OAAI;IAAA,OAAEjB,MAAMiC;GAAM;GAAA,IAAAd,WAAA;IAAA,IAAAuB,SAAAC,QAAA;IAAA5B,OAAA2B,cACiC1C,MAAMiC,MAAM;IAAA,OAAAS;GAAA;EAAA,CAAA,GAAA,IAAA;EAAA,OAAAL;CAAA,EAAA,CAAA;AAK7E"}
@@ -1,2 +1,2 @@
1
- export { SidebarNav, SidebarNavButton, SidebarNavContent, SidebarNavFooter, SidebarNavHeader, SidebarNavItem, SidebarNavSection, SidebarNavTitle, sidebarNavItemClass, sidebarNavItemStateClass, type SidebarNavItemProps, type SidebarNavProps, } from './sidebar-nav';
1
+ export { SidebarNav, SidebarNavButton, SidebarNavContent, SidebarNavFooter, SidebarNavHeader, SidebarNavItem, SidebarNavSection, SidebarNavTitle, sidebarNavItemClass, sidebarNavItemStateClass, type SidebarNavItemProps, type SidebarNavProps, type SidebarNavTitleProps, } from './sidebar-nav';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sidebar-nav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sidebar-nav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAA"}
@@ -23,7 +23,10 @@ export type SidebarNavProps<T extends ValidComponent = 'nav'> = PolymorphicProps
23
23
  }>;
24
24
  export declare function SidebarNav<T extends ValidComponent = 'nav'>(props: SidebarNavProps<T>): JSX.Element;
25
25
  export declare function SidebarNavHeader(props: ComponentProps<'div'>): JSX.Element;
26
- export declare function SidebarNavTitle(props: ComponentProps<'div'>): JSX.Element;
26
+ export type SidebarNavTitleProps<T extends ValidComponent = 'div'> = PolymorphicProps<T, {
27
+ class?: string;
28
+ }>;
29
+ export declare function SidebarNavTitle<T extends ValidComponent = 'div'>(props: SidebarNavTitleProps<T>): JSX.Element;
27
30
  /** The scrolling middle of the sidebar. */
28
31
  export declare function SidebarNavContent(props: ComponentProps<'div'>): JSX.Element;
29
32
  export declare function SidebarNavFooter(props: ComponentProps<'div'>): JSX.Element;
@@ -41,6 +44,8 @@ export declare function SidebarNavSection(props: ComponentProps<'div'> & {
41
44
  count?: number;
42
45
  /** A control at the trailing edge of the heading row. */
43
46
  action?: JSX.Element;
47
+ /** Semantic heading element for a host's section hierarchy. */
48
+ headingAs?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
44
49
  }): JSX.Element;
45
50
  export type SidebarNavItemProps<T extends ValidComponent = 'a'> = PolymorphicProps<T, {
46
51
  class?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-nav.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sidebar-nav/sidebar-nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAInE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,IAAI,gBAAgB,CAC9E,CAAC,EACD;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAC1C,CAAA;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,eAgBrF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS5D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS3D;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS7D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACrB,eA6DF;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,IAAI,gBAAgB,CAChF,CAAC,EACD;IACE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB,CACF,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,QAKrB,CAAA;AAEX,eAAO,MAAM,wBAAwB;;;CAGpC,CAAA;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,eA4B3F;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,eAiB/D"}
1
+ {"version":3,"file":"sidebar-nav.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sidebar-nav/sidebar-nav.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAInE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,IAAI,gBAAgB,CAC9E,CAAC,EACD;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAC1C,CAAA;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,eAgBrF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS5D;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,IAAI,gBAAgB,CACnF,CAAC,EACD;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,eAU/F;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS7D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,eAS5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACpD,eA6DF;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,IAAI,gBAAgB,CAChF,CAAC,EACD;IACE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB,CACF,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,QAKrB,CAAA;AAEX,eAAO,MAAM,wBAAwB;;;CAGpC,CAAA;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,GAAG,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,eA4B3F;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,eAiB/D"}
@@ -5,18 +5,16 @@ import { Show, createSignal, splitProps } from "solid-js";
5
5
  import { Polymorphic } from "@kobalte/core/polymorphic";
6
6
  //#region src/components/layout/sidebar-nav/sidebar-nav.tsx
7
7
  var _tmpl$ = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-header>`);
8
- var _tmpl$2 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-title>`);
9
- var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-content>`);
10
- var _tmpl$4 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-footer>`);
11
- var _tmpl$5 = /*#__PURE__*/ template(`<span class="min-w-0 flex-1 truncate">`);
12
- var _tmpl$6 = /*#__PURE__*/ template(`<span class="shrink-0 tabular-nums text-muted-foreground">`);
13
- var _tmpl$7 = /*#__PURE__*/ template(`<button type=button class="flex min-w-0 flex-1 items-center gap-1.5 rounded-sm text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase outline-none transition-colors ease-out hover:text-sidebar-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle">`);
14
- var _tmpl$8 = /*#__PURE__*/ template(`<span class="shrink-0 opacity-0 transition-opacity ease-out group-hover/section-header:opacity-100 focus-within:opacity-100">`);
15
- var _tmpl$9 = /*#__PURE__*/ template(`<div class="flex flex-col gap-0.5">`);
16
- var _tmpl$0 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-section><div class="group/section-header flex items-center gap-1 rounded-md px-2 py-1.5 hover:bg-sidebar-accent/60">`);
17
- var _tmpl$1 = /*#__PURE__*/ template(`<div class="flex min-w-0 flex-1 items-center gap-1.5 text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase">`);
18
- var _tmpl$10 = /*#__PURE__*/ template(`<span class="ms-auto flex shrink-0 items-center gap-1">`);
19
- var _tmpl$11 = /*#__PURE__*/ template(`<button type=button>`);
8
+ var _tmpl$2 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-content>`);
9
+ var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-footer>`);
10
+ var _tmpl$4 = /*#__PURE__*/ template(`<span class="min-w-0 flex-1 truncate">`);
11
+ var _tmpl$5 = /*#__PURE__*/ template(`<span class="shrink-0 tabular-nums text-muted-foreground">`);
12
+ var _tmpl$6 = /*#__PURE__*/ template(`<button type=button class="flex min-w-0 flex-1 items-center gap-1.5 rounded-sm text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase outline-none transition-colors ease-out hover:text-sidebar-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle">`);
13
+ var _tmpl$7 = /*#__PURE__*/ template(`<span class="shrink-0 opacity-0 transition-opacity ease-out group-hover/section-header:opacity-100 focus-within:opacity-100 [@media(hover:none)]:opacity-100">`);
14
+ var _tmpl$8 = /*#__PURE__*/ template(`<div class="flex flex-col gap-0.5">`);
15
+ var _tmpl$9 = /*#__PURE__*/ template(`<div data-slot=sidebar-nav-section><div class="group/section-header flex items-center gap-1 rounded-md px-2 py-1.5 hover:bg-sidebar-accent/60">`);
16
+ var _tmpl$0 = /*#__PURE__*/ template(`<span class="ms-auto flex shrink-0 items-center gap-1">`);
17
+ var _tmpl$1 = /*#__PURE__*/ template(`<button type=button>`);
20
18
  function SidebarNav(props) {
21
19
  const [local, rest] = splitProps(props, [
22
20
  "class",
@@ -47,33 +45,33 @@ function SidebarNavHeader(props) {
47
45
  }
48
46
  function SidebarNavTitle(props) {
49
47
  const [local, rest] = splitProps(props, ["class"]);
50
- return (() => {
51
- var _el$2 = _tmpl$2();
52
- spread(_el$2, mergeProps({ get ["class"]() {
48
+ return createComponent(Polymorphic, mergeProps({
49
+ as: "div",
50
+ "data-slot": "sidebar-nav-title",
51
+ get ["class"]() {
53
52
  return cn("truncate text-sm font-semibold tracking-tight", local.class);
54
- } }, rest), false, false);
55
- return _el$2;
56
- })();
53
+ }
54
+ }, rest));
57
55
  }
58
56
  /** The scrolling middle of the sidebar. */
59
57
  function SidebarNavContent(props) {
60
58
  const [local, rest] = splitProps(props, ["class"]);
61
59
  return (() => {
62
- var _el$3 = _tmpl$3();
63
- spread(_el$3, mergeProps({ get ["class"]() {
60
+ var _el$2 = _tmpl$2();
61
+ spread(_el$2, mergeProps({ get ["class"]() {
64
62
  return cn("flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2", local.class);
65
63
  } }, rest), false, false);
66
- return _el$3;
64
+ return _el$2;
67
65
  })();
68
66
  }
69
67
  function SidebarNavFooter(props) {
70
68
  const [local, rest] = splitProps(props, ["class"]);
71
69
  return (() => {
72
- var _el$4 = _tmpl$4();
73
- spread(_el$4, mergeProps({ get ["class"]() {
70
+ var _el$3 = _tmpl$3();
71
+ spread(_el$3, mergeProps({ get ["class"]() {
74
72
  return cn("flex shrink-0 items-center gap-1 border-t border-sidebar-border p-2", local.class);
75
73
  } }, rest), false, false);
76
- return _el$4;
74
+ return _el$3;
77
75
  })();
78
76
  }
79
77
  /**
@@ -89,6 +87,7 @@ function SidebarNavSection(props) {
89
87
  "defaultOpen",
90
88
  "count",
91
89
  "action",
90
+ "headingAs",
92
91
  "children"
93
92
  ]);
94
93
  const [open, setOpen] = createSignal(local.defaultOpen ?? true);
@@ -107,66 +106,71 @@ function SidebarNavSection(props) {
107
106
  }
108
107
  }),
109
108
  (() => {
110
- var _el$5 = _tmpl$5();
111
- insert(_el$5, () => local.label);
112
- return _el$5;
109
+ var _el$4 = _tmpl$4();
110
+ insert(_el$4, () => local.label);
111
+ return _el$4;
113
112
  })(),
114
113
  createComponent(Show, {
115
114
  get when() {
116
115
  return local.count !== void 0;
117
116
  },
118
117
  get children() {
119
- var _el$6 = _tmpl$6();
120
- insert(_el$6, () => local.count);
121
- return _el$6;
118
+ var _el$5 = _tmpl$5();
119
+ insert(_el$5, () => local.count);
120
+ return _el$5;
122
121
  }
123
122
  })
124
123
  ];
125
124
  return (() => {
126
- var _el$7 = _tmpl$0(), _el$8 = _el$7.firstChild;
127
- spread(_el$7, mergeProps({ get ["class"]() {
125
+ var _el$6 = _tmpl$9(), _el$7 = _el$6.firstChild;
126
+ spread(_el$6, mergeProps({ get ["class"]() {
128
127
  return cn("flex flex-col gap-0.5", local.class);
129
128
  } }, rest), false, true);
130
- insert(_el$8, createComponent(Show, {
131
- get when() {
132
- return local.collapsible;
129
+ insert(_el$7, createComponent(Polymorphic, {
130
+ get as() {
131
+ return local.headingAs ?? "div";
133
132
  },
134
- get fallback() {
135
- return (() => {
136
- var _el$10 = _tmpl$1();
137
- insert(_el$10, heading);
138
- return _el$10;
139
- })();
133
+ get ["aria-label"]() {
134
+ return memo(() => !!local.headingAs)() ? local.label : void 0;
140
135
  },
136
+ "class": "flex min-w-0 flex-1 items-center gap-1.5 text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase",
141
137
  get children() {
142
- var _el$9 = _tmpl$7();
143
- _el$9.$$click = () => setOpen((value) => !value);
144
- insert(_el$9, heading);
145
- effect(() => setAttribute(_el$9, "aria-expanded", open()));
146
- return _el$9;
138
+ return createComponent(Show, {
139
+ get when() {
140
+ return local.collapsible;
141
+ },
142
+ fallback: heading,
143
+ get children() {
144
+ var _el$8 = _tmpl$6();
145
+ _el$8.$$click = () => setOpen((value) => !value);
146
+ insert(_el$8, heading);
147
+ effect(() => setAttribute(_el$8, "aria-expanded", open()));
148
+ return _el$8;
149
+ }
150
+ });
147
151
  }
148
152
  }), null);
149
- insert(_el$8, createComponent(Show, {
153
+ insert(_el$7, createComponent(Show, {
150
154
  get when() {
151
155
  return local.action;
152
156
  },
153
157
  get children() {
154
- var _el$0 = _tmpl$8();
155
- insert(_el$0, () => local.action);
156
- return _el$0;
158
+ var _el$9 = _tmpl$7();
159
+ insert(_el$9, () => local.action);
160
+ return _el$9;
157
161
  }
158
162
  }), null);
159
- insert(_el$7, createComponent(Show, {
163
+ insert(_el$6, createComponent(Show, {
160
164
  get when() {
161
165
  return !local.collapsible || open();
162
166
  },
163
167
  get children() {
164
- var _el$1 = _tmpl$9();
165
- insert(_el$1, () => local.children);
166
- return _el$1;
168
+ var _el$0 = _tmpl$8();
169
+ insert(_el$0, () => local.children);
170
+ return _el$0;
167
171
  }
168
172
  }), null);
169
- return _el$7;
173
+ return _el$6;
170
174
  })();
171
175
  }
172
176
  /** A sidebar row. Exported classes, so a caller's own element can match it. */
@@ -205,9 +209,9 @@ function SidebarNavItem(props) {
205
209
  return local.trailing;
206
210
  },
207
211
  get children() {
208
- var _el$11 = _tmpl$10();
209
- insert(_el$11, () => local.trailing);
210
- return _el$11;
212
+ var _el$1 = _tmpl$0();
213
+ insert(_el$1, () => local.trailing);
214
+ return _el$1;
211
215
  }
212
216
  })];
213
217
  } }));
@@ -216,12 +220,12 @@ function SidebarNavItem(props) {
216
220
  function SidebarNavButton(props) {
217
221
  const [local, rest] = splitProps(props, ["class", "children"]);
218
222
  return (() => {
219
- var _el$12 = _tmpl$11();
220
- spread(_el$12, mergeProps({ get ["class"]() {
223
+ var _el$10 = _tmpl$1();
224
+ spread(_el$10, mergeProps({ get ["class"]() {
221
225
  return cn(sidebarNavItemClass, sidebarNavItemStateClass.idle, "w-full disabled:pointer-events-none disabled:opacity-50", local.class);
222
226
  } }, rest), false, true);
223
- insert(_el$12, () => local.children);
224
- return _el$12;
227
+ insert(_el$10, () => local.children);
228
+ return _el$10;
225
229
  })();
226
230
  }
227
231
  delegateEvents(["click"]);
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-nav.js","names":["PolymorphicProps","Polymorphic","ChevronRight","ComponentProps","JSX","ValidComponent","Show","createSignal","splitProps","cn","SidebarNavProps","T","class","SidebarNav","props","local","rest","_$createComponent","_$mergeProps","as","aria-label","children","SidebarNavHeader","_el$","_tmpl$","_$spread","SidebarNavTitle","_el$2","_tmpl$2","SidebarNavContent","_el$3","_tmpl$3","SidebarNavFooter","_el$4","_tmpl$4","SidebarNavSection","label","collapsible","defaultOpen","count","action","Element","open","setOpen","heading","when","_el$5","_tmpl$5","_$insert","undefined","_el$6","_tmpl$6","_el$7","_tmpl$0","_el$8","firstChild","fallback","_el$10","_tmpl$1","_el$9","_tmpl$7","$$click","value","_$effect","_$setAttribute","_el$0","_tmpl$8","_el$1","_tmpl$9","SidebarNavItemProps","active","nested","trailing","sidebarNavItemClass","join","sidebarNavItemStateClass","idle","SidebarNavItem","aria-current","data-active","_$memo","_el$11","_tmpl$10","SidebarNavButton","_el$12","_tmpl$11","_$delegateEvents","_$createComponent","_$mergeProps","_$setAttribute","_$memo","_$delegateEvents"],"sources":["../../../../src/components/layout/sidebar-nav/sidebar-nav.tsx"],"sourcesContent":["import type { PolymorphicProps } from '@kobalte/core/polymorphic'\nimport { Polymorphic } from '@kobalte/core/polymorphic'\nimport { ChevronRight } from 'lucide-solid'\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js'\nimport { Show, createSignal, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\n\n/**\n * SidebarNav.\n *\n * The secondary navigation column: the list of things inside the destination\n * the rail selected — projects, sessions, files, threads. It is a different\n * object from the rail, not a wider version of it, which is why it is a separate\n * component rather than the rail with labels on.\n *\n * Rows share one recipe with the rail's, so a row in a sidebar and a row in a\n * rail read as the same kind of thing at the same density. That recipe is\n * exactly KiroCrew's nav row: `text-sm font-medium`, `gap-2.5`, `px-3 py-2`,\n * `rounded-md`, `transition-colors`.\n *\n * The width comes from `--sidebar-width`. Sections collapse by default only when\n * the caller says so, because a section that starts collapsed and holds the\n * user's own work is a hidden default.\n */\nexport type SidebarNavProps<T extends ValidComponent = 'nav'> = PolymorphicProps<\n T,\n { class?: string; 'aria-label'?: string }\n>\n\nexport function SidebarNav<T extends ValidComponent = 'nav'>(props: SidebarNavProps<T>) {\n const [local, rest] = splitProps(props as SidebarNavProps, ['class', 'aria-label', 'children'])\n\n return (\n <Polymorphic\n as=\"nav\"\n aria-label={local['aria-label'] ?? 'Section'}\n class={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-sidebar shrink-0 flex-col border-e border-sidebar-border',\n local.class\n )}\n {...(rest as ComponentProps<'nav'>)}\n >\n {local.children}\n </Polymorphic>\n )\n}\n\nexport function SidebarNavHeader(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-header\"\n class={cn('flex h-topbar shrink-0 items-center justify-between gap-2 px-3', local.class)}\n {...rest}\n />\n )\n}\n\nexport function SidebarNavTitle(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-title\"\n class={cn('truncate text-sm font-semibold tracking-tight', local.class)}\n {...rest}\n />\n )\n}\n\n/** The scrolling middle of the sidebar. */\nexport function SidebarNavContent(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-content\"\n class={cn('flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2', local.class)}\n {...rest}\n />\n )\n}\n\nexport function SidebarNavFooter(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-footer\"\n class={cn('flex shrink-0 items-center gap-1 border-t border-sidebar-border p-2', local.class)}\n {...rest}\n />\n )\n}\n\n/**\n * A titled, collapsible group. Collapsible because a list of projects\n * inevitably outgrows the column, and the user needs to put the ones they are\n * not using away *without* them disappearing into a menu.\n */\nexport function SidebarNavSection(\n props: ComponentProps<'div'> & {\n label: string\n /** Render a disclosure control instead of a plain heading. */\n collapsible?: boolean\n defaultOpen?: boolean\n /** Count shown beside the label. */\n count?: number\n /** A control at the trailing edge of the heading row. */\n action?: JSX.Element\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'collapsible',\n 'defaultOpen',\n 'count',\n 'action',\n 'children',\n ])\n const [open, setOpen] = createSignal(local.defaultOpen ?? true)\n\n const heading = (\n <>\n <Show when={local.collapsible}>\n <ChevronRight\n aria-hidden=\"true\"\n class={cn('size-3.5 shrink-0 text-muted-foreground transition-transform ease-out', {\n 'rotate-90': open(),\n })}\n />\n </Show>\n <span class=\"min-w-0 flex-1 truncate\">{local.label}</span>\n <Show when={local.count !== undefined}>\n <span class=\"shrink-0 tabular-nums text-muted-foreground\">{local.count}</span>\n </Show>\n </>\n )\n\n return (\n <div data-slot=\"sidebar-nav-section\" class={cn('flex flex-col gap-0.5', local.class)} {...rest}>\n <div class=\"group/section-header flex items-center gap-1 rounded-md px-2 py-1.5 hover:bg-sidebar-accent/60\">\n <Show\n when={local.collapsible}\n fallback={\n <div class=\"flex min-w-0 flex-1 items-center gap-1.5 text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase\">\n {heading}\n </div>\n }\n >\n <button\n type=\"button\"\n aria-expanded={open()}\n onClick={() => setOpen((value) => !value)}\n class=\"flex min-w-0 flex-1 items-center gap-1.5 rounded-sm text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase outline-none transition-colors ease-out hover:text-sidebar-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle\"\n >\n {heading}\n </button>\n </Show>\n <Show when={local.action}>\n <span class=\"shrink-0 opacity-0 transition-opacity ease-out group-hover/section-header:opacity-100 focus-within:opacity-100\">\n {local.action}\n </span>\n </Show>\n </div>\n <Show when={!local.collapsible || open()}>\n <div class=\"flex flex-col gap-0.5\">{local.children}</div>\n </Show>\n </div>\n )\n}\n\nexport type SidebarNavItemProps<T extends ValidComponent = 'a'> = PolymorphicProps<\n T,\n {\n class?: string\n active?: boolean\n /** Indent one level, for a child row such as a branch under a project. */\n nested?: boolean\n /** Trailing slot: a count, a status dot, a hover action. */\n trailing?: JSX.Element\n }\n>\n\n/** A sidebar row. Exported classes, so a caller's own element can match it. */\nexport const sidebarNavItemClass = [\n 'group/nav-item relative flex min-w-0 items-center gap-2.5 rounded-md px-3 py-2 text-sm font-medium',\n 'whitespace-nowrap transition-colors ease-out outline-none select-none',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',\n '[&_svg]:size-4 [&_svg]:shrink-0',\n].join(' ')\n\nexport const sidebarNavItemStateClass = {\n active: 'bg-primary-subtle text-foreground',\n idle: 'text-muted-foreground hover:bg-surface-hover hover:text-foreground',\n}\n\nexport function SidebarNavItem<T extends ValidComponent = 'a'>(props: SidebarNavItemProps<T>) {\n const [local, rest] = splitProps(props as SidebarNavItemProps, [\n 'class',\n 'active',\n 'nested',\n 'trailing',\n 'children',\n ])\n\n return (\n <Polymorphic\n as=\"a\"\n aria-current={local.active ? 'page' : undefined}\n data-active={local.active ? '' : undefined}\n class={cn(\n sidebarNavItemClass,\n local.active ? sidebarNavItemStateClass.active : sidebarNavItemStateClass.idle,\n { 'ps-8': local.nested },\n local.class\n )}\n {...(rest as ComponentProps<'a'>)}\n >\n {local.children}\n <Show when={local.trailing}>\n <span class=\"ms-auto flex shrink-0 items-center gap-1\">{local.trailing}</span>\n </Show>\n </Polymorphic>\n )\n}\n\n/** A row that is a button rather than a destination — \"New project\". */\nexport function SidebarNavButton(props: ComponentProps<'button'>) {\n const [local, rest] = splitProps(props, ['class', 'children'])\n\n return (\n <button\n type=\"button\"\n class={cn(\n sidebarNavItemClass,\n sidebarNavItemStateClass.idle,\n 'w-full disabled:pointer-events-none disabled:opacity-50',\n local.class\n )}\n {...rest}\n >\n {local.children}\n </button>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6BA,SAAgBa,WAA6CC,OAA2B;CACtF,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAA0B;EAAC;EAAS;EAAc;CAAU,CAAC;CAE9F,OAAAG,gBACGhB,aAAWiB,WAAA;EACVC,IAAE;EAAA,KAAA,gBAAA;GAAA,OACUJ,MAAM,iBAAiB;EAAS;EAAA,KAAA,WAAA;GAAA,OACrCN,GACL,6GACAM,MAAMH,KACR;EAAC;CAAA,GACII,MAA6B,EAAA,IAAAK,WAAA;EAAA,OAEjCN,MAAMM;CAAQ,EAAA,CAAA,CAAA;AAGrB;AAEA,SAAgBC,iBAAiBR,OAA8B;CAC7D,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAS,OAAAC,OAAA;EAAAC,OAAAF,MAAAL,WAAA,EAAA,KAAA,WAAA;GAAA,OAGWT,GAAG,kEAAkEM,MAAMH,KAAK;EAAC,EAAA,GACpFI,IAAI,GAAA,OAAA,KAAA;EAAA,OAAAO;CAAA,EAAA,CAAA;AAGd;AAEA,SAAgBG,gBAAgBZ,OAA8B;CAC5D,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAa,QAAAC,QAAA;EAAAH,OAAAE,OAAAT,WAAA,EAAA,KAAA,WAAA;GAAA,OAGWT,GAAG,iDAAiDM,MAAMH,KAAK;EAAC,EAAA,GACnEI,IAAI,GAAA,OAAA,KAAA;EAAA,OAAAW;CAAA,EAAA,CAAA;AAGd;;AAGA,SAAgBE,kBAAkBf,OAA8B;CAC9D,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAgB,QAAAC,QAAA;EAAAN,OAAAK,OAAAZ,WAAA,EAAA,KAAA,WAAA;GAAA,OAGWT,GAAG,kEAAkEM,MAAMH,KAAK;EAAC,EAAA,GACpFI,IAAI,GAAA,OAAA,KAAA;EAAA,OAAAc;CAAA,EAAA,CAAA;AAGd;AAEA,SAAgBE,iBAAiBlB,OAA8B;CAC7D,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO,CAAC,OAAO,CAAC;CACjD,cAAA;EAAA,IAAAmB,QAAAC,QAAA;EAAAT,OAAAQ,OAAAf,WAAA,EAAA,KAAA,WAAA;GAAA,OAGWT,GAAG,uEAAuEM,MAAMH,KAAK;EAAC,EAAA,GACzFI,IAAI,GAAA,OAAA,KAAA;EAAA,OAAAiB;CAAA,EAAA,CAAA;AAGd;;;;;;AAOA,SAAgBE,kBACdrB,OAUA;CACA,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX;CACD,MAAM,CAAC4B,MAAMC,WAAWpC,aAAaQ,MAAMuB,eAAe,IAAI;CAE9D,MAAMM,UAAO;EAAA3B,gBAERX,MAAI;GAAA,IAACuC,OAAI;IAAA,OAAE9B,MAAMsB;GAAW;GAAA,IAAAhB,WAAA;IAAA,OAAAJ,gBAC1Bf,cAAY;KAAA,eAAA;KAAA,KAAA,WAAA;MAAA,OAEJO,GAAG,yEAAyE,EACjF,aAAaiC,KAAK,EACpB,CAAC;KAAC;IAAA,CAAA;GAAA;EAAA,CAAA;SAAA;GAAA,IAAAI,QAAAC,QAAA;GAAAC,OAAAF,aAGiC/B,MAAMqB,KAAK;GAAA,OAAAU;EAAA,EAAA,CAAA;EAAA7B,gBACjDX,MAAI;GAAA,IAACuC,OAAI;IAAA,OAAE9B,MAAMwB,UAAUU,KAAAA;GAAS;GAAA,IAAA5B,WAAA;IAAA,IAAA6B,QAAAC,QAAA;IAAAH,OAAAE,aACwBnC,MAAMwB,KAAK;IAAA,OAAAW;GAAA;EAAA,CAAA;CAAA;CAK5E,cAAA;EAAA,IAAAE,QAAAC,QAAA,GAAAC,QAAAF,MAAAG;EAAA9B,OAAA2B,OAAAlC,WAAA,EAAA,KAAA,WAAA;GAAA,OAC8CT,GAAG,yBAAyBM,MAAMH,KAAK;EAAC,EAAA,GAAMI,IAAI,GAAA,OAAA,IAAA;EAAAgC,OAAAM,OAAArC,gBAEzFX,MAAI;GAAA,IACHuC,OAAI;IAAA,OAAE9B,MAAMsB;GAAW;GAAA,IACvBmB,WAAQ;IAAA,cAAA;KAAA,IAAAC,SAAAC,QAAA;KAAAV,OAAAS,QAEHb,OAAO;KAAA,OAAAa;IAAA,EAAA,CAAA;GAAA;GAAA,IAAApC,WAAA;IAAA,IAAAsC,QAAAC,QAAA;IAAAD,MAAAE,gBAOKlB,SAASmB,UAAU,CAACA,KAAK;IAACd,OAAAW,OAGxCf,OAAO;IAAAmB,aAAAC,aAAAL,OAAA,iBAJOjB,KAAK,CAAC,CAAA;IAAA,OAAAiB;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAX,OAAAM,OAAArC,gBAOxBX,MAAI;GAAA,IAACuC,OAAI;IAAA,OAAE9B,MAAMyB;GAAM;GAAA,IAAAnB,WAAA;IAAA,IAAA4C,QAAAC,QAAA;IAAAlB,OAAAiB,aAEnBlD,MAAMyB,MAAM;IAAA,OAAAyB;GAAA;EAAA,CAAA,GAAA,IAAA;EAAAjB,OAAAI,OAAAnC,gBAIlBX,MAAI;GAAA,IAACuC,OAAI;IAAA,OAAE,CAAC9B,MAAMsB,eAAeK,KAAK;GAAC;GAAA,IAAArB,WAAA;IAAA,IAAA8C,QAAAC,QAAA;IAAApB,OAAAmB,aACFpD,MAAMM,QAAQ;IAAA,OAAA8C;GAAA;EAAA,CAAA,GAAA,IAAA;EAAA,OAAAf;CAAA,EAAA,CAAA;AAI1D;;AAeA,IAAaqB,sBAAsB;CACjC;CACA;CACA;CACA;AAAiC,CAClC,CAACC,KAAK,GAAG;AAEV,IAAaC,2BAA2B;CACtCL,QAAQ;CACRM,MAAM;AACR;AAEA,SAAgBC,eAA+C/D,OAA+B;CAC5F,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAA8B;EAC7D;EACA;EACA;EACA;EACA;CAAU,CACX;CAED,OAAAG,gBACGhB,aAAWiB,WAAA;EACVC,IAAE;EAAA,KAAA,kBAAA;GAAA,OACYJ,MAAMuD,SAAS,SAASrB,KAAAA;EAAS;EAAA,KAAA,iBAAA;GAAA,OAClClC,MAAMuD,SAAS,KAAKrB,KAAAA;EAAS;EAAA,KAAA,WAAA;GAAA,OACnCxC,GACLgE,qBACA1D,MAAMuD,SAASK,yBAAyBL,SAASK,yBAAyBC,MAC1E,EAAE,QAAQ7D,MAAMwD,OAAO,GACvBxD,MAAMH,KACR;EAAC;CAAA,GACII,MAA2B,EAAA,IAAAK,WAAA;EAAA,OAAA,CAAA2D,WAE/BjE,MAAMM,QAAQ,GAAAJ,gBACdX,MAAI;GAAA,IAACuC,OAAI;IAAA,OAAE9B,MAAMyD;GAAQ;GAAA,IAAAnD,WAAA;IAAA,IAAA4D,SAAAC,SAAA;IAAAlC,OAAAiC,cACgClE,MAAMyD,QAAQ;IAAA,OAAAS;GAAA;EAAA,CAAA,CAAA;CAAA,EAAA,CAAA,CAAA;AAI9E;;AAGA,SAAgBE,iBAAiBrE,OAAiC;CAChE,MAAM,CAACC,OAAOC,QAAQR,WAAWM,OAAO,CAAC,SAAS,UAAU,CAAC;CAE7D,cAAA;EAAA,IAAAsE,SAAAC,SAAA;EAAA5D,OAAA2D,QAAAlE,WAAA,EAAA,KAAA,WAAA;GAAA,OAGWT,GACLgE,qBACAE,yBAAyBC,MACzB,2DACA7D,MAAMH,KACR;EAAC,EAAA,GACGI,IAAI,GAAA,OAAA,IAAA;EAAAgC,OAAAoC,cAEPrE,MAAMM,QAAQ;EAAA,OAAA+D;CAAA,EAAA,CAAA;AAGrB;AAACE,eAAA,CAAA,OAAA,CAAA"}
1
+ {"version":3,"file":"sidebar-nav.js","names":["PolymorphicProps","Polymorphic","ChevronRight","ComponentProps","JSX","ValidComponent","Show","createSignal","splitProps","cn","SidebarNavProps","T","class","SidebarNav","props","local","rest","_$createComponent","_$mergeProps","as","aria-label","children","SidebarNavHeader","_el$","_tmpl$","_$spread","SidebarNavTitleProps","SidebarNavTitle","SidebarNavContent","_el$2","_tmpl$2","SidebarNavFooter","_el$3","_tmpl$3","SidebarNavSection","label","collapsible","defaultOpen","count","action","Element","headingAs","open","setOpen","heading","when","_el$4","_tmpl$4","_$insert","undefined","_el$5","_tmpl$5","_el$6","_tmpl$9","_el$7","firstChild","_$memo","fallback","_el$8","_tmpl$6","$$click","value","_$effect","_$setAttribute","_el$9","_tmpl$7","_el$0","_tmpl$8","SidebarNavItemProps","active","nested","trailing","sidebarNavItemClass","join","sidebarNavItemStateClass","idle","SidebarNavItem","aria-current","data-active","_el$1","_tmpl$0","SidebarNavButton","_el$10","_tmpl$1","_$delegateEvents","_$createComponent","_$mergeProps","_$memo","_$setAttribute","_$delegateEvents"],"sources":["../../../../src/components/layout/sidebar-nav/sidebar-nav.tsx"],"sourcesContent":["import type { PolymorphicProps } from '@kobalte/core/polymorphic'\nimport { Polymorphic } from '@kobalte/core/polymorphic'\nimport { ChevronRight } from 'lucide-solid'\nimport type { ComponentProps, JSX, ValidComponent } from 'solid-js'\nimport { Show, createSignal, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\n\n/**\n * SidebarNav.\n *\n * The secondary navigation column: the list of things inside the destination\n * the rail selected — projects, sessions, files, threads. It is a different\n * object from the rail, not a wider version of it, which is why it is a separate\n * component rather than the rail with labels on.\n *\n * Rows share one recipe with the rail's, so a row in a sidebar and a row in a\n * rail read as the same kind of thing at the same density. That recipe is\n * exactly KiroCrew's nav row: `text-sm font-medium`, `gap-2.5`, `px-3 py-2`,\n * `rounded-md`, `transition-colors`.\n *\n * The width comes from `--sidebar-width`. Sections collapse by default only when\n * the caller says so, because a section that starts collapsed and holds the\n * user's own work is a hidden default.\n */\nexport type SidebarNavProps<T extends ValidComponent = 'nav'> = PolymorphicProps<\n T,\n { class?: string; 'aria-label'?: string }\n>\n\nexport function SidebarNav<T extends ValidComponent = 'nav'>(props: SidebarNavProps<T>) {\n const [local, rest] = splitProps(props as SidebarNavProps, ['class', 'aria-label', 'children'])\n\n return (\n <Polymorphic\n as=\"nav\"\n aria-label={local['aria-label'] ?? 'Section'}\n class={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-sidebar shrink-0 flex-col border-e border-sidebar-border',\n local.class\n )}\n {...(rest as ComponentProps<'nav'>)}\n >\n {local.children}\n </Polymorphic>\n )\n}\n\nexport function SidebarNavHeader(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-header\"\n class={cn('flex h-topbar shrink-0 items-center justify-between gap-2 px-3', local.class)}\n {...rest}\n />\n )\n}\n\nexport type SidebarNavTitleProps<T extends ValidComponent = 'div'> = PolymorphicProps<\n T,\n { class?: string }\n>\n\nexport function SidebarNavTitle<T extends ValidComponent = 'div'>(props: SidebarNavTitleProps<T>) {\n const [local, rest] = splitProps(props as SidebarNavTitleProps, ['class'])\n return (\n <Polymorphic\n as=\"div\"\n data-slot=\"sidebar-nav-title\"\n class={cn('truncate text-sm font-semibold tracking-tight', local.class)}\n {...(rest as ComponentProps<'div'>)}\n />\n )\n}\n\n/** The scrolling middle of the sidebar. */\nexport function SidebarNavContent(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-content\"\n class={cn('flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-2 py-2', local.class)}\n {...rest}\n />\n )\n}\n\nexport function SidebarNavFooter(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"sidebar-nav-footer\"\n class={cn('flex shrink-0 items-center gap-1 border-t border-sidebar-border p-2', local.class)}\n {...rest}\n />\n )\n}\n\n/**\n * A titled, collapsible group. Collapsible because a list of projects\n * inevitably outgrows the column, and the user needs to put the ones they are\n * not using away *without* them disappearing into a menu.\n */\nexport function SidebarNavSection(\n props: ComponentProps<'div'> & {\n label: string\n /** Render a disclosure control instead of a plain heading. */\n collapsible?: boolean\n defaultOpen?: boolean\n /** Count shown beside the label. */\n count?: number\n /** A control at the trailing edge of the heading row. */\n action?: JSX.Element\n /** Semantic heading element for a host's section hierarchy. */\n headingAs?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'collapsible',\n 'defaultOpen',\n 'count',\n 'action',\n 'headingAs',\n 'children',\n ])\n const [open, setOpen] = createSignal(local.defaultOpen ?? true)\n\n const heading = (\n <>\n <Show when={local.collapsible}>\n <ChevronRight\n aria-hidden=\"true\"\n class={cn('size-3.5 shrink-0 text-muted-foreground transition-transform ease-out', {\n 'rotate-90': open(),\n })}\n />\n </Show>\n <span class=\"min-w-0 flex-1 truncate\">{local.label}</span>\n <Show when={local.count !== undefined}>\n <span class=\"shrink-0 tabular-nums text-muted-foreground\">{local.count}</span>\n </Show>\n </>\n )\n\n return (\n <div data-slot=\"sidebar-nav-section\" class={cn('flex flex-col gap-0.5', local.class)} {...rest}>\n <div class=\"group/section-header flex items-center gap-1 rounded-md px-2 py-1.5 hover:bg-sidebar-accent/60\">\n <Polymorphic\n as={local.headingAs ?? 'div'}\n aria-label={local.headingAs ? local.label : undefined}\n class=\"flex min-w-0 flex-1 items-center gap-1.5 text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase\"\n >\n <Show when={local.collapsible} fallback={heading}>\n <button\n type=\"button\"\n aria-expanded={open()}\n onClick={() => setOpen((value) => !value)}\n class=\"flex min-w-0 flex-1 items-center gap-1.5 rounded-sm text-2xs font-medium tracking-wide text-sidebar-muted-foreground uppercase outline-none transition-colors ease-out hover:text-sidebar-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle\"\n >\n {heading}\n </button>\n </Show>\n </Polymorphic>\n <Show when={local.action}>\n <span class=\"shrink-0 opacity-0 transition-opacity ease-out group-hover/section-header:opacity-100 focus-within:opacity-100 [@media(hover:none)]:opacity-100\">\n {local.action}\n </span>\n </Show>\n </div>\n <Show when={!local.collapsible || open()}>\n <div class=\"flex flex-col gap-0.5\">{local.children}</div>\n </Show>\n </div>\n )\n}\n\nexport type SidebarNavItemProps<T extends ValidComponent = 'a'> = PolymorphicProps<\n T,\n {\n class?: string\n active?: boolean\n /** Indent one level, for a child row such as a branch under a project. */\n nested?: boolean\n /** Trailing slot: a count, a status dot, a hover action. */\n trailing?: JSX.Element\n }\n>\n\n/** A sidebar row. Exported classes, so a caller's own element can match it. */\nexport const sidebarNavItemClass = [\n 'group/nav-item relative flex min-w-0 items-center gap-2.5 rounded-md px-3 py-2 text-sm font-medium',\n 'whitespace-nowrap transition-colors ease-out outline-none select-none',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',\n '[&_svg]:size-4 [&_svg]:shrink-0',\n].join(' ')\n\nexport const sidebarNavItemStateClass = {\n active: 'bg-primary-subtle text-foreground',\n idle: 'text-muted-foreground hover:bg-surface-hover hover:text-foreground',\n}\n\nexport function SidebarNavItem<T extends ValidComponent = 'a'>(props: SidebarNavItemProps<T>) {\n const [local, rest] = splitProps(props as SidebarNavItemProps, [\n 'class',\n 'active',\n 'nested',\n 'trailing',\n 'children',\n ])\n\n return (\n <Polymorphic\n as=\"a\"\n aria-current={local.active ? 'page' : undefined}\n data-active={local.active ? '' : undefined}\n class={cn(\n sidebarNavItemClass,\n local.active ? sidebarNavItemStateClass.active : sidebarNavItemStateClass.idle,\n { 'ps-8': local.nested },\n local.class\n )}\n {...(rest as ComponentProps<'a'>)}\n >\n {local.children}\n <Show when={local.trailing}>\n <span class=\"ms-auto flex shrink-0 items-center gap-1\">{local.trailing}</span>\n </Show>\n </Polymorphic>\n )\n}\n\n/** A row that is a button rather than a destination — \"New project\". */\nexport function SidebarNavButton(props: ComponentProps<'button'>) {\n const [local, rest] = splitProps(props, ['class', 'children'])\n\n return (\n <button\n type=\"button\"\n class={cn(\n sidebarNavItemClass,\n sidebarNavItemStateClass.idle,\n 'w-full disabled:pointer-events-none disabled:opacity-50',\n local.class\n )}\n {...rest}\n >\n {local.children}\n </button>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/board/board.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;IACnB,4BAA4B;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IAC3B,uDAAuD;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IAC/B,iFAAiF;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACvD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACjC,kFAAkF;IAClF,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAChE,wCAAwC;IACxC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAA;IAClD,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAOD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,eAiK5C;AAED,eAAO,MAAM,sBAAsB;;8EAGjC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,YAAY,CACxF,OAAO,sBAAsB,CAC9B,CAAA;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAIxD;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,eAE7E"}
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/board/board.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,GAAG,EACT,MAAM,UAAU,CAAA;AACjB,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAC,CAAA;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;IACnB,4BAA4B;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IAC3B,uDAAuD;IACvD,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IAC/B,iFAAiF;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACvD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACjC,kFAAkF;IAClF,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAChE,wCAAwC;IACxC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAA;IAClD,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAOD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,eA4N5C;AAED,eAAO,MAAM,sBAAsB;;8EAGjC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,YAAY,CACxF,OAAO,sBAAsB,CAC9B,CAAA;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAIxD;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,eAE7E"}