@devalok/shilp-sutra 0.33.2 → 0.34.1

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 (175) hide show
  1. package/dist/_chunks/badge-group.js +306 -246
  2. package/dist/_chunks/chat.js +513 -0
  3. package/dist/_chunks/date-picker.js +748 -0
  4. package/dist/_chunks/document-preview.js +109 -90
  5. package/dist/_chunks/file-preview.js +492 -504
  6. package/dist/_chunks/framer.js +5564 -5613
  7. package/dist/_chunks/image-preview.js +127 -88
  8. package/dist/_chunks/keybinding.js +12 -14
  9. package/dist/_chunks/link-context.js +19 -16
  10. package/dist/_chunks/mention-suggestion.js +353 -350
  11. package/dist/_chunks/motion-provider.js +26 -20
  12. package/dist/_chunks/popover.js +127 -0
  13. package/dist/_chunks/primitives.js +7584 -6425
  14. package/dist/_chunks/rich-chat-input.js +2070 -0
  15. package/dist/_chunks/rolldown-runtime.js +21 -0
  16. package/dist/_chunks/shared.js +126 -0
  17. package/dist/_chunks/sonner.js +605 -734
  18. package/dist/_chunks/stat-row.js +418 -440
  19. package/dist/_chunks/tiptap.js +15850 -19964
  20. package/dist/_chunks/tree-view.js +231 -290
  21. package/dist/_chunks/use-calendar.js +161 -208
  22. package/dist/_chunks/vendor-client.js +314 -2199
  23. package/dist/_chunks/vendor-utils.js +1721 -2978
  24. package/dist/ai/ai-command-provider.js +23 -17
  25. package/dist/ai/block-renderer.js +68 -51
  26. package/dist/ai/blocks/index.js +2 -12
  27. package/dist/ai/command-bar.js +470 -519
  28. package/dist/ai/conversation.js +241 -227
  29. package/dist/ai/index.js +181 -167
  30. package/dist/ai/types.js +0 -1
  31. package/dist/composed/activity-feed.js +232 -202
  32. package/dist/composed/avatar-group.js +164 -222
  33. package/dist/composed/bulk-action-bar.js +174 -165
  34. package/dist/composed/command-palette.js +290 -308
  35. package/dist/composed/confirm-dialog.js +28 -48
  36. package/dist/composed/content-card.js +69 -108
  37. package/dist/composed/date-picker/index.js +3 -13
  38. package/dist/composed/deadline-indicator.js +68 -74
  39. package/dist/composed/emoji-picker.js +83 -110
  40. package/dist/composed/empty-state.js +64 -103
  41. package/dist/composed/error-boundary.js +129 -127
  42. package/dist/composed/file-preview.js +2 -12
  43. package/dist/composed/filter-bar.js +98 -130
  44. package/dist/composed/form-section.js +61 -45
  45. package/dist/composed/global-loading.js +34 -47
  46. package/dist/composed/index.js +34 -92
  47. package/dist/composed/inline-edit.js +92 -107
  48. package/dist/composed/lib/string-utils.js +8 -8
  49. package/dist/composed/loading-skeleton.js +103 -171
  50. package/dist/composed/markdown-viewer.js +187 -139
  51. package/dist/composed/master-detail.js +147 -156
  52. package/dist/composed/member-picker.js +46 -49
  53. package/dist/composed/multi-select-popover.js +181 -179
  54. package/dist/composed/page-header.js +54 -76
  55. package/dist/composed/page-skeletons.js +143 -127
  56. package/dist/composed/priority-indicator.js +105 -111
  57. package/dist/composed/responsive-overlay.js +36 -41
  58. package/dist/composed/rich-chat-input.js +2 -1860
  59. package/dist/composed/rich-text-editor.js +561 -424
  60. package/dist/composed/schedule-view.js +134 -185
  61. package/dist/composed/simple-tooltip.js +21 -21
  62. package/dist/composed/status-badge.js +133 -137
  63. package/dist/hooks/index.js +7 -12
  64. package/dist/hooks/use-color-mode.js +28 -25
  65. package/dist/hooks/use-mobile.js +13 -13
  66. package/dist/hooks/use-toast.js +2 -4
  67. package/dist/hooks/use-touch-device.js +9 -11
  68. package/dist/hooks/use-viewport-height.js +14 -14
  69. package/dist/motion/index.js +3 -11
  70. package/dist/motion/primitives-index.js +226 -186
  71. package/dist/shell/app-command-palette.js +203 -234
  72. package/dist/shell/bottom-navbar.js +150 -190
  73. package/dist/shell/command-registry.js +13 -14
  74. package/dist/shell/index.js +10 -20
  75. package/dist/shell/link-context.js +2 -5
  76. package/dist/shell/notification-center.js +238 -259
  77. package/dist/shell/notification-preferences.js +241 -184
  78. package/dist/shell/sidebar.js +251 -281
  79. package/dist/shell/top-bar.js +203 -237
  80. package/dist/tailwind/index.cjs +426 -451
  81. package/dist/tailwind/index.js +2 -4
  82. package/dist/tailwind/preset.d.ts.map +1 -1
  83. package/dist/tailwind/preset.js +443 -468
  84. package/dist/ui/accordion.js +52 -60
  85. package/dist/ui/alert-dialog.js +111 -156
  86. package/dist/ui/alert.js +177 -99
  87. package/dist/ui/aspect-ratio.js +13 -16
  88. package/dist/ui/autocomplete.js +112 -148
  89. package/dist/ui/avatar.js +196 -169
  90. package/dist/ui/badge-group.js +2 -7
  91. package/dist/ui/badge-indicator.js +42 -51
  92. package/dist/ui/badge.js +2 -15
  93. package/dist/ui/banner.js +76 -68
  94. package/dist/ui/breadcrumb.js +65 -84
  95. package/dist/ui/button-group.js +109 -102
  96. package/dist/ui/button-processing.js +69 -73
  97. package/dist/ui/button.js +393 -279
  98. package/dist/ui/card.js +151 -157
  99. package/dist/ui/charts/index.js +1002 -1319
  100. package/dist/ui/chat/index.js +2 -11
  101. package/dist/ui/checkbox.js +77 -100
  102. package/dist/ui/code.js +18 -32
  103. package/dist/ui/collapsible.js +21 -29
  104. package/dist/ui/color-input.js +453 -372
  105. package/dist/ui/color-swatch.js +60 -90
  106. package/dist/ui/combobox.js +244 -293
  107. package/dist/ui/container.js +18 -24
  108. package/dist/ui/context-menu.js +154 -203
  109. package/dist/ui/data-table-body.js +116 -213
  110. package/dist/ui/data-table-bulk-actions.js +43 -59
  111. package/dist/ui/data-table-card.js +84 -71
  112. package/dist/ui/data-table-context.js +39 -42
  113. package/dist/ui/data-table-header.js +98 -139
  114. package/dist/ui/data-table-pagination.js +69 -82
  115. package/dist/ui/data-table-toolbar.js +104 -130
  116. package/dist/ui/data-table.js +278 -354
  117. package/dist/ui/devalok-grain.js +77 -66
  118. package/dist/ui/dialog.js +122 -151
  119. package/dist/ui/dropdown-menu.js +152 -203
  120. package/dist/ui/file-upload.js +242 -266
  121. package/dist/ui/form.js +60 -56
  122. package/dist/ui/hover-card.js +54 -54
  123. package/dist/ui/icon-button.js +21 -26
  124. package/dist/ui/icon-context.js +17 -17
  125. package/dist/ui/icon-group.js +22 -29
  126. package/dist/ui/icon.js +201 -121
  127. package/dist/ui/index.js +74 -350
  128. package/dist/ui/input-otp.d.ts.map +1 -1
  129. package/dist/ui/input-otp.js +44 -48
  130. package/dist/ui/input.js +92 -169
  131. package/dist/ui/label.js +17 -22
  132. package/dist/ui/lib/date-utils.js +14 -11
  133. package/dist/ui/lib/motion.js +77 -36
  134. package/dist/ui/lib/utils.js +39 -16
  135. package/dist/ui/link.js +13 -24
  136. package/dist/ui/menubar.js +132 -210
  137. package/dist/ui/navigation-menu.js +164 -194
  138. package/dist/ui/number-input.js +72 -95
  139. package/dist/ui/pagination.js +122 -159
  140. package/dist/ui/popover.js +2 -131
  141. package/dist/ui/progress-ring.js +133 -143
  142. package/dist/ui/progress.js +51 -95
  143. package/dist/ui/radio.js +41 -50
  144. package/dist/ui/search-input.js +51 -53
  145. package/dist/ui/segmented-control.js +93 -114
  146. package/dist/ui/select.js +131 -157
  147. package/dist/ui/separator.js +15 -25
  148. package/dist/ui/sheet.js +135 -163
  149. package/dist/ui/sidebar.js +357 -600
  150. package/dist/ui/skeleton.js +179 -231
  151. package/dist/ui/slider.js +24 -34
  152. package/dist/ui/spinner.js +226 -205
  153. package/dist/ui/split-button.js +227 -276
  154. package/dist/ui/stack.js +56 -70
  155. package/dist/ui/stat-card.js +259 -251
  156. package/dist/ui/status-dot.js +67 -63
  157. package/dist/ui/stepper.js +119 -168
  158. package/dist/ui/switch.js +51 -54
  159. package/dist/ui/table.js +57 -90
  160. package/dist/ui/tabs.js +139 -156
  161. package/dist/ui/text.js +52 -59
  162. package/dist/ui/textarea.js +40 -57
  163. package/dist/ui/toast-types.js +0 -1
  164. package/dist/ui/toast.js +554 -536
  165. package/dist/ui/toaster.js +23 -33
  166. package/dist/ui/toggle-group.js +37 -41
  167. package/dist/ui/toggle.js +36 -40
  168. package/dist/ui/tooltip.js +80 -65
  169. package/dist/ui/tree-view/index.js +2 -6
  170. package/dist/ui/visually-hidden.js +12 -10
  171. package/llms-full.txt +1 -1
  172. package/llms.txt +12 -0
  173. package/package.json +3 -3
  174. package/dist/_chunks/date-time-picker.js +0 -851
  175. package/dist/_chunks/typing-indicator.js +0 -565
@@ -1,164 +1,155 @@
1
1
  "use client";
2
- import { jsx as d, jsxs as D } from "react/jsx-runtime";
3
- import * as e from "react";
4
- import { IconArrowLeft as M } from "@tabler/icons-react";
5
- import { cn as b } from "../ui/lib/utils.js";
6
- import { Button as C } from "../ui/button.js";
7
- import { Icon as k } from "../ui/icon.js";
8
- import { springs as R } from "../ui/lib/motion.js";
9
- import { A as L, m as A } from "../_chunks/framer.js";
10
- const E = {
11
- sm: "640px",
12
- md: "768px",
13
- lg: "1024px"
2
+ import { a as e, c as t } from "../_chunks/framer.js";
3
+ import { springs as n } from "../ui/lib/motion.js";
4
+ import { cn as r } from "../ui/lib/utils.js";
5
+ import { Icon as i } from "../ui/icon.js";
6
+ import { Button as a } from "../ui/button.js";
7
+ import * as o from "react";
8
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
9
+ import { IconArrowLeft as l } from "@tabler/icons-react";
10
+ //#region src/composed/master-detail.tsx
11
+ var u = {
12
+ sm: "640px",
13
+ md: "768px",
14
+ lg: "1024px"
14
15
  };
15
- function N(s) {
16
- const [i, c] = e.useState(!1);
17
- return e.useEffect(() => {
18
- if (typeof window > "u") return;
19
- const r = window.matchMedia(s);
20
- c(r.matches);
21
- const t = (a) => c(a.matches);
22
- return r.addEventListener("change", t), () => r.removeEventListener("change", t);
23
- }, [s]), i;
16
+ function d(e) {
17
+ let [t, n] = o.useState(!1);
18
+ return o.useEffect(() => {
19
+ if (typeof window > "u") return;
20
+ let t = window.matchMedia(e);
21
+ n(t.matches);
22
+ let r = (e) => n(e.matches);
23
+ return t.addEventListener("change", r), () => t.removeEventListener("change", r);
24
+ }, [e]), t;
24
25
  }
25
- const y = e.createContext({
26
- selected: null,
27
- isMobile: !1,
28
- activeIndex: 0,
29
- setActiveIndex: () => {
30
- },
31
- registerItemRef: () => {
32
- },
33
- itemCount: 0,
34
- setItemCount: () => {
35
- }
26
+ var f = o.createContext({
27
+ selected: null,
28
+ isMobile: !1,
29
+ activeIndex: 0,
30
+ setActiveIndex: () => {},
31
+ registerItemRef: () => {},
32
+ itemCount: 0,
33
+ setItemCount: () => {}
36
34
  });
37
- function K({ children: s, className: i, ...c }) {
38
- const { selected: r, isMobile: t, onNavigate: a, activeIndex: l, setActiveIndex: m, registerItemRef: u, setItemCount: x } = e.useContext(y), f = e.useRef([]), p = e.Children.count(s);
39
- if (e.useEffect(() => {
40
- x(p);
41
- }, [p, x]), t && r) return null;
42
- function h(n) {
43
- if (n.key === "ArrowDown") {
44
- n.preventDefault();
45
- const o = Math.min(l + 1, p - 1);
46
- m(o), f.current[o]?.focus(), a?.("down");
47
- } else if (n.key === "ArrowUp") {
48
- n.preventDefault();
49
- const o = Math.max(l - 1, 0);
50
- m(o), f.current[o]?.focus(), a?.("up");
51
- } else if (n.key === "Home")
52
- n.preventDefault(), m(0), f.current[0]?.focus();
53
- else if (n.key === "End") {
54
- n.preventDefault();
55
- const o = p - 1;
56
- m(o), f.current[o]?.focus();
57
- }
58
- }
59
- return /* @__PURE__ */ d(
60
- "div",
61
- {
62
- role: "listbox",
63
- tabIndex: -1,
64
- className: b(
65
- "overflow-y-auto focus-visible:outline-none",
66
- !t && "border-r border-surface-border",
67
- i
68
- ),
69
- onKeyDown: h,
70
- ...c,
71
- children: e.Children.map(s, (n, o) => e.isValidElement(n) ? e.cloneElement(n, {
72
- ref: (v) => {
73
- f.current[o] = v, u(o, v);
74
- },
75
- tabIndex: o === l ? 0 : -1
76
- }) : n)
77
- }
78
- );
35
+ function p({ children: e, className: t, ...n }) {
36
+ let { selected: i, isMobile: a, onNavigate: c, activeIndex: l, setActiveIndex: u, registerItemRef: d, setItemCount: p } = o.useContext(f), m = o.useRef([]), h = o.Children.count(e);
37
+ if (o.useEffect(() => {
38
+ p(h);
39
+ }, [h, p]), a && i) return null;
40
+ function g(e) {
41
+ if (e.key === "ArrowDown") {
42
+ e.preventDefault();
43
+ let t = Math.min(l + 1, h - 1);
44
+ u(t), m.current[t]?.focus(), c?.("down");
45
+ } else if (e.key === "ArrowUp") {
46
+ e.preventDefault();
47
+ let t = Math.max(l - 1, 0);
48
+ u(t), m.current[t]?.focus(), c?.("up");
49
+ } else if (e.key === "Home") e.preventDefault(), u(0), m.current[0]?.focus();
50
+ else if (e.key === "End") {
51
+ e.preventDefault();
52
+ let t = h - 1;
53
+ u(t), m.current[t]?.focus();
54
+ }
55
+ }
56
+ return /* @__PURE__ */ s("div", {
57
+ role: "listbox",
58
+ tabIndex: -1,
59
+ className: r("overflow-y-auto focus-visible:outline-hidden", !a && "border-r border-surface-border", t),
60
+ onKeyDown: g,
61
+ ...n,
62
+ children: o.Children.map(e, (e, t) => o.isValidElement(e) ? o.cloneElement(e, {
63
+ ref: (e) => {
64
+ m.current[t] = e, d(t, e);
65
+ },
66
+ tabIndex: t === l ? 0 : -1
67
+ }) : e)
68
+ });
79
69
  }
80
- function S({ children: s, className: i, ...c }) {
81
- const { selected: r, isMobile: t, onBack: a, emptyState: l } = e.useContext(y);
82
- return t && !r ? null : /* @__PURE__ */ D("div", { className: b("flex-1 overflow-y-auto", i), ...c, children: [
83
- t && a && /* @__PURE__ */ d("div", { className: "border-b border-surface-border px-ds-04 py-ds-03", children: /* @__PURE__ */ d(C, { variant: "ghost", size: "xs", onClick: a, startIcon: /* @__PURE__ */ d(k, { icon: M }), children: "Back" }) }),
84
- /* @__PURE__ */ d(L, { mode: "wait", children: /* @__PURE__ */ d(
85
- A.div,
86
- {
87
- initial: t ? { x: 20, opacity: 0 } : !1,
88
- animate: { x: 0, opacity: 1 },
89
- exit: t ? { x: -20, opacity: 0 } : void 0,
90
- transition: R.snappy,
91
- children: r ? s : l ?? s
92
- },
93
- r ?? "empty"
94
- ) })
95
- ] });
70
+ function m({ children: u, className: d, ...p }) {
71
+ let { selected: m, isMobile: h, onBack: g, emptyState: _ } = o.useContext(f);
72
+ return h && !m ? null : /* @__PURE__ */ c("div", {
73
+ className: r("flex-1 overflow-y-auto", d),
74
+ ...p,
75
+ children: [h && g && /* @__PURE__ */ s("div", {
76
+ className: "border-b border-surface-border px-ds-04 py-ds-03",
77
+ children: /* @__PURE__ */ s(a, {
78
+ variant: "ghost",
79
+ size: "xs",
80
+ onClick: g,
81
+ startIcon: /* @__PURE__ */ s(i, { icon: l }),
82
+ children: "Back"
83
+ })
84
+ }), /* @__PURE__ */ s(t, {
85
+ mode: "wait",
86
+ children: /* @__PURE__ */ s(e.div, {
87
+ initial: h ? {
88
+ x: 20,
89
+ opacity: 0
90
+ } : !1,
91
+ animate: {
92
+ x: 0,
93
+ opacity: 1
94
+ },
95
+ exit: h ? {
96
+ x: -20,
97
+ opacity: 0
98
+ } : void 0,
99
+ transition: n.snappy,
100
+ children: m ? u : _ ?? u
101
+ }, m ?? "empty")
102
+ })]
103
+ });
96
104
  }
97
- const j = e.forwardRef(
98
- function({ active: i = !1, children: c, className: r, onKeyDown: t, ...a }, l) {
99
- function m(u) {
100
- (u.key === "Enter" || u.key === " ") && (u.preventDefault(), u.target.click()), t?.(u);
101
- }
102
- return /* @__PURE__ */ d(
103
- "button",
104
- {
105
- ref: l,
106
- type: "button",
107
- role: "option",
108
- "aria-selected": i,
109
- "data-active": i || void 0,
110
- onKeyDown: m,
111
- className: b(
112
- "flex w-full items-center px-ds-04 py-ds-03 text-left text-ds-md font-sans text-surface-fg",
113
- "transition-colors duration-fast-01 ease-productive-standard",
114
- "hover:bg-surface-raised-hover",
115
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-7 focus-visible:ring-inset",
116
- i && "bg-accent-2 text-accent-11 border-l-2 border-accent-9",
117
- r
118
- ),
119
- ...a,
120
- children: c
121
- }
122
- );
123
- }
124
- );
125
- function B({
126
- selected: s = null,
127
- onBack: i,
128
- masterWidth: c = "280px",
129
- breakpoint: r = "md",
130
- emptyState: t,
131
- onNavigate: a,
132
- children: l,
133
- className: m,
134
- style: u,
135
- ...x
136
- }) {
137
- const f = N(`(max-width: ${E[r]})`), [p, h] = e.useState(0), [n, o] = e.useState(0), v = e.useRef([]), I = e.useCallback((g, w) => {
138
- v.current[g] = w;
139
- }, []);
140
- return /* @__PURE__ */ d(y.Provider, { value: { selected: s, isMobile: f, onBack: i, emptyState: t, onNavigate: a, activeIndex: p, setActiveIndex: h, registerItemRef: I, itemCount: n, setItemCount: o }, children: /* @__PURE__ */ d(
141
- "div",
142
- {
143
- className: b(
144
- "flex h-full",
145
- !f && "grid",
146
- m
147
- ),
148
- style: {
149
- ...u,
150
- ...f ? {} : { gridTemplateColumns: `${c} 1fr` }
151
- },
152
- ...x,
153
- children: l
154
- }
155
- ) });
105
+ var h = o.forwardRef(function({ active: e = !1, children: t, className: n, onKeyDown: i, ...a }, o) {
106
+ function c(e) {
107
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.target.click()), i?.(e);
108
+ }
109
+ return /* @__PURE__ */ s("button", {
110
+ ref: o,
111
+ type: "button",
112
+ role: "option",
113
+ "aria-selected": e,
114
+ "data-active": e || void 0,
115
+ onKeyDown: c,
116
+ className: r("flex w-full items-center px-ds-04 py-ds-03 text-left text-ds-md font-sans text-surface-fg", "transition-colors duration-fast-01 ease-productive-standard", "hover:bg-surface-raised-hover", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-7 focus-visible:ring-inset", e && "bg-accent-2 text-accent-11 border-l-2 border-accent-9", n),
117
+ ...a,
118
+ children: t
119
+ });
120
+ });
121
+ function g({ selected: e = null, onBack: t, masterWidth: n = "280px", breakpoint: i = "md", emptyState: a, onNavigate: c, children: l, className: p, style: m, ...h }) {
122
+ let g = d(`(max-width: ${u[i]})`), [_, v] = o.useState(0), [y, b] = o.useState(0), x = o.useRef([]), S = o.useCallback((e, t) => {
123
+ x.current[e] = t;
124
+ }, []);
125
+ return /* @__PURE__ */ s(f.Provider, {
126
+ value: {
127
+ selected: e,
128
+ isMobile: g,
129
+ onBack: t,
130
+ emptyState: a,
131
+ onNavigate: c,
132
+ activeIndex: _,
133
+ setActiveIndex: v,
134
+ registerItemRef: S,
135
+ itemCount: y,
136
+ setItemCount: b
137
+ },
138
+ children: /* @__PURE__ */ s("div", {
139
+ className: r("flex h-full", !g && "grid", p),
140
+ style: {
141
+ ...m,
142
+ ...g ? {} : { gridTemplateColumns: `${n} 1fr` }
143
+ },
144
+ ...h,
145
+ children: l
146
+ })
147
+ });
156
148
  }
157
- const U = Object.assign(B, {
158
- List: K,
159
- Detail: S,
160
- ListItem: j
149
+ var _ = Object.assign(g, {
150
+ List: p,
151
+ Detail: m,
152
+ ListItem: h
161
153
  });
162
- export {
163
- U as MasterDetail
164
- };
154
+ //#endregion
155
+ export { _ as MasterDetail };
@@ -1,50 +1,47 @@
1
1
  "use client";
2
- import { jsx as a, jsxs as s } from "react/jsx-runtime";
3
- import * as c from "react";
4
- import { Avatar as b, AvatarImage as v, AvatarFallback as N } from "../ui/avatar.js";
5
- import { MultiSelectPopover as M } from "./multi-select-popover.js";
6
- import { getInitials as P } from "./lib/string-utils.js";
7
- const k = c.forwardRef(
8
- ({
9
- members: l,
10
- selectedIds: r,
11
- onSelect: i,
12
- children: n,
13
- multiple: m = !1,
14
- placeholder: d = "Search members...",
15
- ...f
16
- }, g) => {
17
- const h = c.useMemo(
18
- () => l.map((e) => ({ id: e.id, label: e.name, image: e.avatar })),
19
- [l]
20
- );
21
- function u(e) {
22
- const p = e.find((t) => !r.includes(t)), x = r.find((t) => !e.includes(t)), o = p ?? x;
23
- o && i(o);
24
- }
25
- return /* @__PURE__ */ a(
26
- M,
27
- {
28
- ref: g,
29
- items: h,
30
- value: r,
31
- onValueChange: u,
32
- searchPlaceholder: d,
33
- maxSelections: m ? void 0 : 1,
34
- renderItem: (e) => /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03", children: [
35
- /* @__PURE__ */ s(b, { className: "h-ico-md w-ico-md", children: [
36
- e.image && /* @__PURE__ */ a(v, { src: e.image, alt: e.label }),
37
- /* @__PURE__ */ a(N, { className: "bg-surface-raised-hover text-ds-xs font-semibold text-surface-fg", children: P(e.label) })
38
- ] }),
39
- /* @__PURE__ */ a("span", { className: "flex-1 truncate text-ds-md font-body text-surface-fg", children: e.label })
40
- ] }),
41
- ...f,
42
- children: n
43
- }
44
- );
45
- }
46
- );
47
- k.displayName = "MemberPicker";
48
- export {
49
- k as MemberPicker
50
- };
2
+ import { Avatar as e, AvatarFallback as t, AvatarImage as n } from "../ui/avatar.js";
3
+ import { getInitials as r } from "./lib/string-utils.js";
4
+ import { MultiSelectPopover as i } from "./multi-select-popover.js";
5
+ import * as a from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ //#region src/composed/member-picker.tsx
8
+ var c = a.forwardRef(({ members: c, selectedIds: l, onSelect: u, children: d, multiple: f = !1, placeholder: p = "Search members...", ...m }, h) => {
9
+ let g = a.useMemo(() => c.map((e) => ({
10
+ id: e.id,
11
+ label: e.name,
12
+ image: e.avatar
13
+ })), [c]);
14
+ function _(e) {
15
+ let t = e.find((e) => !l.includes(e)), n = l.find((t) => !e.includes(t)), r = t ?? n;
16
+ r && u(r);
17
+ }
18
+ return /* @__PURE__ */ o(i, {
19
+ ref: h,
20
+ items: g,
21
+ value: l,
22
+ onValueChange: _,
23
+ searchPlaceholder: p,
24
+ maxSelections: f ? void 0 : 1,
25
+ renderItem: (i) => /* @__PURE__ */ s("div", {
26
+ className: "flex items-center gap-ds-03",
27
+ children: [/* @__PURE__ */ s(e, {
28
+ className: "h-ico-md w-ico-md",
29
+ children: [i.image && /* @__PURE__ */ o(n, {
30
+ src: i.image,
31
+ alt: i.label
32
+ }), /* @__PURE__ */ o(t, {
33
+ className: "bg-surface-raised-hover text-ds-xs font-semibold text-surface-fg",
34
+ children: r(i.label)
35
+ })]
36
+ }), /* @__PURE__ */ o("span", {
37
+ className: "flex-1 truncate text-ds-md font-body text-surface-fg",
38
+ children: i.label
39
+ })]
40
+ }),
41
+ ...m,
42
+ children: d
43
+ });
44
+ });
45
+ c.displayName = "MemberPicker";
46
+ //#endregion
47
+ export { c as MemberPicker };