@devalok/shilp-sutra 0.14.0 → 0.16.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 (43) hide show
  1. package/dist/_chunks/sidebar.js +21 -21
  2. package/dist/composed/activity-feed.d.ts +26 -0
  3. package/dist/composed/activity-feed.d.ts.map +1 -0
  4. package/dist/composed/activity-feed.js +132 -0
  5. package/dist/composed/command-palette.d.ts.map +1 -1
  6. package/dist/composed/command-palette.js +130 -110
  7. package/dist/composed/empty-state.d.ts +2 -0
  8. package/dist/composed/empty-state.d.ts.map +1 -1
  9. package/dist/composed/empty-state.js +30 -24
  10. package/dist/composed/index.d.ts +4 -0
  11. package/dist/composed/index.d.ts.map +1 -1
  12. package/dist/composed/index.js +31 -26
  13. package/dist/composed/upload-progress.d.ts +33 -0
  14. package/dist/composed/upload-progress.d.ts.map +1 -0
  15. package/dist/composed/upload-progress.js +386 -0
  16. package/dist/shell/bottom-navbar.d.ts +2 -0
  17. package/dist/shell/bottom-navbar.d.ts.map +1 -1
  18. package/dist/shell/bottom-navbar.js +70 -52
  19. package/dist/shell/notification-center.js +1 -1
  20. package/dist/shell/sidebar.d.ts +2 -0
  21. package/dist/shell/sidebar.d.ts.map +1 -1
  22. package/dist/shell/sidebar.js +99 -98
  23. package/dist/ui/color-input.js +1 -1
  24. package/dist/ui/data-table.d.ts +35 -1
  25. package/dist/ui/data-table.d.ts.map +1 -1
  26. package/dist/ui/data-table.js +423 -277
  27. package/dist/ui/index.d.ts +1 -1
  28. package/dist/ui/index.d.ts.map +1 -1
  29. package/dist/ui/index.js +143 -136
  30. package/dist/ui/input.js +9 -9
  31. package/dist/ui/number-input.js +9 -9
  32. package/dist/ui/search-input.js +1 -1
  33. package/dist/ui/select.js +1 -1
  34. package/dist/ui/skeleton.d.ts +44 -1
  35. package/dist/ui/skeleton.d.ts.map +1 -1
  36. package/dist/ui/skeleton.js +209 -14
  37. package/dist/ui/stat-card.d.ts +20 -0
  38. package/dist/ui/stat-card.d.ts.map +1 -1
  39. package/dist/ui/stat-card.js +173 -37
  40. package/dist/ui/textarea.js +10 -10
  41. package/llms-full.txt +88 -3
  42. package/llms.txt +11 -0
  43. package/package.json +1 -1
@@ -1,99 +1,99 @@
1
1
  "use client";
2
- import { jsx as s, jsxs as a } from "react/jsx-runtime";
2
+ import { jsx as t, jsxs as r } from "react/jsx-runtime";
3
3
  import * as d from "react";
4
- import { Dialog as A, DialogPortal as M, DialogOverlay as R, DialogContentRaw as L, DialogTitle as S, DialogDescription as $ } from "../ui/dialog.js";
5
- import { IconSearch as K, IconCornerDownLeft as v, IconArrowUp as P, IconArrowDown as q } from "@tabler/icons-react";
6
- import { c as b } from "../_chunks/utils.js";
7
- import { VisuallyHidden as z } from "../ui/visually-hidden.js";
4
+ import { Dialog as $, DialogPortal as A, DialogOverlay as R, DialogContentRaw as L, DialogTitle as S, DialogDescription as K } from "../ui/dialog.js";
5
+ import { IconSearch as P, IconCornerDownLeft as k, IconArrowUp as q, IconArrowDown as z } from "@tabler/icons-react";
6
+ import { c as x } from "../_chunks/utils.js";
7
+ import { VisuallyHidden as F } from "../ui/visually-hidden.js";
8
8
  const O = d.forwardRef(
9
9
  function({
10
- groups: x = [],
11
- placeholder: k = "Search or jump to...",
12
- onSearch: f,
10
+ groups: u = [],
11
+ placeholder: D = "Search or jump to...",
12
+ onSearch: h,
13
13
  emptyMessage: C = "No results found."
14
- }, D) {
15
- const [u, c] = d.useState(!1), [p, y] = d.useState(""), [l, i] = d.useState(0), N = d.useRef(null), g = d.useRef(null), h = d.useId(), w = `command-palette-listbox-${h}`, n = d.useMemo(() => {
16
- if (!p.trim()) return x;
17
- const t = p.toLowerCase();
18
- return x.map((e) => ({
19
- ...e,
20
- items: e.items.filter(
21
- (r) => {
22
- var o;
23
- return r.label.toLowerCase().includes(t) || ((o = r.description) == null ? void 0 : o.toLowerCase().includes(t));
14
+ }, I) {
15
+ const [b, i] = d.useState(!1), [f, v] = d.useState(""), [o, c] = d.useState(0), N = d.useRef(null), g = d.useRef(null), y = d.useId(), w = `command-palette-listbox-${y}`, l = d.useMemo(() => {
16
+ if (!f.trim()) return u;
17
+ const e = f.toLowerCase();
18
+ return u.map((a) => ({
19
+ ...a,
20
+ items: a.items.filter(
21
+ (s) => {
22
+ var n;
23
+ return s.label.toLowerCase().includes(e) || ((n = s.description) == null ? void 0 : n.toLowerCase().includes(e));
24
24
  }
25
25
  )
26
- })).filter((e) => e.items.length > 0);
27
- }, [x, p]), m = d.useMemo(
28
- () => n.flatMap((t) => t.items),
29
- [n]
26
+ })).filter((a) => a.items.length > 0);
27
+ }, [u, f]), m = d.useMemo(
28
+ () => l.flatMap((e) => e.items),
29
+ [l]
30
30
  );
31
31
  d.useEffect(() => {
32
- function t(e) {
33
- (e.metaKey || e.ctrlKey) && e.key === "k" && (e.preventDefault(), c((r) => !r));
32
+ function e(a) {
33
+ (a.metaKey || a.ctrlKey) && a.key === "k" && (a.preventDefault(), i((s) => !s));
34
34
  }
35
- return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
35
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
36
36
  }, []), d.useEffect(() => {
37
- u && (y(""), i(0), requestAnimationFrame(() => {
38
- var t;
39
- (t = N.current) == null || t.focus();
37
+ b && (v(""), c(0), requestAnimationFrame(() => {
38
+ var e;
39
+ (e = N.current) == null || e.focus();
40
40
  }));
41
- }, [u]);
42
- const I = (t) => {
43
- switch (t.key) {
41
+ }, [b]);
42
+ const j = (e) => {
43
+ switch (e.key) {
44
44
  case "ArrowDown": {
45
- t.preventDefault(), i(
46
- (e) => e < m.length - 1 ? e + 1 : 0
45
+ e.preventDefault(), c(
46
+ (a) => a < m.length - 1 ? a + 1 : 0
47
47
  );
48
48
  break;
49
49
  }
50
50
  case "ArrowUp": {
51
- t.preventDefault(), i(
52
- (e) => e > 0 ? e - 1 : m.length - 1
51
+ e.preventDefault(), c(
52
+ (a) => a > 0 ? a - 1 : m.length - 1
53
53
  );
54
54
  break;
55
55
  }
56
56
  case "Enter": {
57
- t.preventDefault();
58
- const e = m[l];
59
- e && (e.onSelect(), c(!1));
57
+ e.preventDefault();
58
+ const a = m[o];
59
+ a && (a.onSelect(), i(!1));
60
60
  break;
61
61
  }
62
62
  case "Escape": {
63
- t.preventDefault(), c(!1);
63
+ e.preventDefault(), i(!1);
64
64
  break;
65
65
  }
66
66
  }
67
67
  };
68
68
  d.useEffect(() => {
69
- var e;
70
- const t = (e = g.current) == null ? void 0 : e.querySelector(
71
- `[data-command-index="${l}"]`
69
+ var a;
70
+ const e = (a = g.current) == null ? void 0 : a.querySelector(
71
+ `[data-command-index="${o}"]`
72
72
  );
73
- t == null || t.scrollIntoView({ block: "nearest" });
73
+ e == null || e.scrollIntoView({ block: "nearest" });
74
+ }, [o]);
75
+ const E = (e) => {
76
+ v(e), c(0), h == null || h(e);
77
+ }, M = d.useMemo(() => {
78
+ const e = /* @__PURE__ */ new Map();
79
+ let a = 0;
80
+ for (const s of l)
81
+ for (const n of s.items)
82
+ e.set(n.id, a++);
83
+ return e;
74
84
  }, [l]);
75
- const j = (t) => {
76
- y(t), i(0), f == null || f(t);
77
- }, E = d.useMemo(() => {
78
- const t = /* @__PURE__ */ new Map();
79
- let e = 0;
80
- for (const r of n)
81
- for (const o of r.items)
82
- t.set(o.id, e++);
83
- return t;
84
- }, [n]);
85
- return /* @__PURE__ */ s(A, { open: u, onOpenChange: c, children: /* @__PURE__ */ a(M, { children: [
86
- /* @__PURE__ */ s(
85
+ return /* @__PURE__ */ t($, { open: b, onOpenChange: i, children: /* @__PURE__ */ r(A, { children: [
86
+ /* @__PURE__ */ t(
87
87
  R,
88
88
  {
89
89
  className: "fixed inset-0 z-overlay bg-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
90
90
  }
91
91
  ),
92
- /* @__PURE__ */ a(
92
+ /* @__PURE__ */ r(
93
93
  L,
94
94
  {
95
- ref: D,
96
- className: b(
95
+ ref: I,
96
+ className: x(
97
97
  "fixed left-1/2 top-[20%] z-modal w-full max-w-[560px] -translate-x-1/2",
98
98
  "overflow-hidden rounded-ds-xl border border-border bg-layer-01 shadow-05",
99
99
  "duration-moderate-02 data-[state=open]:animate-in data-[state=closed]:animate-out",
@@ -102,33 +102,33 @@ const O = d.forwardRef(
102
102
  "data-[state=closed]:slide-out-to-left-1/2 data-[state=open]:slide-in-from-left-1/2",
103
103
  "data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2"
104
104
  ),
105
- onKeyDown: I,
105
+ onKeyDown: j,
106
106
  children: [
107
- /* @__PURE__ */ a(z, { children: [
108
- /* @__PURE__ */ s(S, { children: "Command Palette" }),
109
- /* @__PURE__ */ s($, { children: "Search or jump to pages, projects, tasks, and actions" })
107
+ /* @__PURE__ */ r(F, { children: [
108
+ /* @__PURE__ */ t(S, { children: "Command Palette" }),
109
+ /* @__PURE__ */ t(K, { children: "Search or jump to pages, projects, tasks, and actions" })
110
110
  ] }),
111
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-04 border-b border-border px-ds-05 py-ds-04", children: [
112
- /* @__PURE__ */ s(
113
- K,
111
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-04 border-b border-border px-ds-05 py-ds-04", children: [
112
+ /* @__PURE__ */ t(
113
+ P,
114
114
  {
115
- className: "h-ico-sm w-ico-sm shrink-0 text-text-placeholder",
115
+ className: "h-ico-sm w-ico-sm shrink-0 animate-scale-in text-text-placeholder",
116
116
  stroke: 1.5
117
117
  }
118
118
  ),
119
- /* @__PURE__ */ s(
119
+ /* @__PURE__ */ t(
120
120
  "input",
121
121
  {
122
122
  ref: N,
123
- value: p,
124
- onChange: (t) => j(t.target.value),
125
- placeholder: k,
123
+ value: f,
124
+ onChange: (e) => E(e.target.value),
125
+ placeholder: D,
126
126
  role: "combobox",
127
127
  "aria-expanded": !0,
128
128
  "aria-controls": w,
129
- "aria-activedescendant": m[l] ? `command-item-${h}-${m[l].id}` : void 0,
129
+ "aria-activedescendant": m[o] ? `command-item-${y}-${m[o].id}` : void 0,
130
130
  "aria-autocomplete": "list",
131
- className: b(
131
+ className: x(
132
132
  "flex-1 bg-transparent text-ds-base text-text-primary outline-none",
133
133
  "placeholder:text-text-placeholder"
134
134
  ),
@@ -137,9 +137,9 @@ const O = d.forwardRef(
137
137
  spellCheck: !1
138
138
  }
139
139
  ),
140
- /* @__PURE__ */ s("kbd", { className: "hidden shrink-0 select-none rounded-ds-md border border-border bg-layer-02 px-ds-02b py-ds-01 text-ds-sm font-medium text-text-placeholder sm:inline-flex", children: "Esc" })
140
+ /* @__PURE__ */ t("kbd", { className: "hidden shrink-0 select-none rounded-ds-md border border-border bg-layer-02 px-ds-02b py-ds-01 text-ds-sm font-medium text-text-placeholder sm:inline-flex", children: "Esc" })
141
141
  ] }),
142
- /* @__PURE__ */ a(
142
+ /* @__PURE__ */ r(
143
143
  "div",
144
144
  {
145
145
  ref: g,
@@ -148,65 +148,85 @@ const O = d.forwardRef(
148
148
  "aria-label": "Command results",
149
149
  className: "max-h-[320px] overflow-y-auto px-ds-03 py-ds-03",
150
150
  children: [
151
- n.length === 0 && /* @__PURE__ */ s("div", { className: "flex items-center justify-center py-ds-07", children: /* @__PURE__ */ s("p", { className: "text-ds-md text-text-placeholder", children: C }) }),
152
- n.map((t) => /* @__PURE__ */ a("div", { className: "mb-ds-02", children: [
153
- /* @__PURE__ */ s("div", { className: "px-ds-03 pb-ds-02 pt-ds-03", children: /* @__PURE__ */ s("span", { className: "text-ds-xs font-semibold uppercase tracking-wider text-text-placeholder", children: t.label }) }),
154
- t.items.map((e) => {
155
- const r = E.get(e.id) ?? 0, o = r === l;
156
- return /* @__PURE__ */ a(
151
+ l.length === 0 && /* @__PURE__ */ t("div", { className: "flex animate-fade-in items-center justify-center py-ds-07", children: /* @__PURE__ */ t("p", { className: "text-ds-md text-text-placeholder", children: C }) }),
152
+ l.map((e, a) => /* @__PURE__ */ r("div", { className: "mb-ds-02 animate-fade-in", style: { animationDelay: `${a * 60}ms` }, children: [
153
+ /* @__PURE__ */ t("div", { className: "px-ds-03 pb-ds-02 pt-ds-03", children: /* @__PURE__ */ t("span", { className: "text-ds-xs font-semibold uppercase tracking-wider text-text-placeholder", children: e.label }) }),
154
+ e.items.map((s) => {
155
+ const n = M.get(s.id) ?? 0, p = n === o;
156
+ return /* @__PURE__ */ r(
157
157
  "button",
158
158
  {
159
- id: `command-item-${h}-${e.id}`,
159
+ id: `command-item-${y}-${s.id}`,
160
160
  type: "button",
161
161
  role: "option",
162
- "aria-selected": o,
163
- "data-command-index": r,
162
+ "aria-selected": p,
163
+ "data-command-index": n,
164
164
  onClick: () => {
165
- e.onSelect(), c(!1);
165
+ s.onSelect(), i(!1);
166
166
  },
167
- onMouseEnter: () => i(r),
168
- className: b(
169
- "flex w-full items-center gap-ds-04 rounded-ds-lg px-ds-03 py-ds-03 text-left transition-colors duration-fast-01 ease-productive-standard",
170
- o ? "bg-layer-03 text-text-primary" : "text-text-secondary hover:bg-layer-02"
167
+ onMouseEnter: () => c(n),
168
+ className: x(
169
+ "flex w-full items-center gap-ds-04 rounded-ds-lg px-ds-03 py-ds-03 text-left transition-all duration-fast-02 ease-productive-standard",
170
+ p ? "bg-layer-03 text-text-primary" : "text-text-secondary hover:bg-layer-02"
171
171
  ),
172
+ style: {
173
+ animationName: "slide-up",
174
+ animationDuration: "var(--duration-moderate-02)",
175
+ animationTimingFunction: "var(--ease-expressive-entrance)",
176
+ animationFillMode: "both",
177
+ animationDelay: `${n * 30}ms`
178
+ },
172
179
  children: [
173
- e.icon && /* @__PURE__ */ s("span", { className: "[&>svg]:h-ico-sm [&>svg]:w-ico-sm shrink-0 text-text-placeholder", "aria-hidden": "true", children: e.icon }),
174
- /* @__PURE__ */ a("div", { className: "flex flex-1 flex-col", children: [
175
- /* @__PURE__ */ s("span", { className: "text-ds-md", children: e.label }),
176
- e.description && /* @__PURE__ */ s("span", { className: "text-ds-sm text-text-placeholder", children: e.description })
180
+ s.icon && /* @__PURE__ */ t(
181
+ "span",
182
+ {
183
+ className: x(
184
+ "[&>svg]:h-ico-sm [&>svg]:w-ico-sm shrink-0 transition-colors duration-fast-02",
185
+ p ? "text-interactive" : "text-text-placeholder"
186
+ ),
187
+ "aria-hidden": "true",
188
+ children: s.icon
189
+ }
190
+ ),
191
+ /* @__PURE__ */ r("div", { className: "flex flex-1 flex-col", children: [
192
+ /* @__PURE__ */ t("span", { className: "text-ds-md", children: s.label }),
193
+ s.description && /* @__PURE__ */ t("span", { className: "text-ds-sm text-text-placeholder", children: s.description })
177
194
  ] }),
178
- e.shortcut && /* @__PURE__ */ s("kbd", { className: "shrink-0 rounded border border-border bg-layer-02 px-ds-02b py-ds-01 text-ds-xs font-medium text-text-placeholder", children: e.shortcut }),
179
- o && /* @__PURE__ */ s(
180
- v,
195
+ s.shortcut && /* @__PURE__ */ t("kbd", { className: x(
196
+ "shrink-0 rounded border border-border px-ds-02b py-ds-01 text-ds-xs font-medium transition-colors duration-fast-02",
197
+ p ? "bg-interactive/10 text-interactive border-interactive/30" : "bg-layer-02 text-text-placeholder"
198
+ ), children: s.shortcut }),
199
+ p && /* @__PURE__ */ t(
200
+ k,
181
201
  {
182
- className: "h-ico-sm w-ico-sm shrink-0 text-text-placeholder",
202
+ className: "h-ico-sm w-ico-sm shrink-0 animate-fade-in text-text-placeholder",
183
203
  stroke: 1.5
184
204
  }
185
205
  )
186
206
  ]
187
207
  },
188
- e.id
208
+ s.id
189
209
  );
190
210
  })
191
- ] }, t.label))
211
+ ] }, e.label))
192
212
  ]
193
213
  }
194
214
  ),
195
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-05 border-t border-border px-ds-05 py-ds-03", children: [
196
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-02b", children: [
197
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-01", children: [
198
- /* @__PURE__ */ s("kbd", { className: "inline-flex h-ico-md w-ico-md items-center justify-center rounded border border-border bg-layer-02", children: /* @__PURE__ */ s(P, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) }),
199
- /* @__PURE__ */ s("kbd", { className: "inline-flex h-ico-md w-ico-md items-center justify-center rounded border border-border bg-layer-02", children: /* @__PURE__ */ s(q, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) })
215
+ /* @__PURE__ */ r("div", { className: "flex animate-fade-in items-center gap-ds-05 border-t border-border px-ds-05 py-ds-03", children: [
216
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-02b", children: [
217
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-01", children: [
218
+ /* @__PURE__ */ t("kbd", { className: "inline-flex h-ico-md w-ico-md items-center justify-center rounded border border-border bg-layer-02", children: /* @__PURE__ */ t(q, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) }),
219
+ /* @__PURE__ */ t("kbd", { className: "inline-flex h-ico-md w-ico-md items-center justify-center rounded border border-border bg-layer-02", children: /* @__PURE__ */ t(z, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) })
200
220
  ] }),
201
- /* @__PURE__ */ s("span", { className: "text-ds-xs text-text-placeholder", children: "Navigate" })
221
+ /* @__PURE__ */ t("span", { className: "text-ds-xs text-text-placeholder", children: "Navigate" })
202
222
  ] }),
203
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-02b", children: [
204
- /* @__PURE__ */ s("kbd", { className: "inline-flex h-[20px] items-center justify-center rounded-ds-md border border-border bg-layer-02 px-ds-02b", children: /* @__PURE__ */ s(v, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) }),
205
- /* @__PURE__ */ s("span", { className: "text-ds-xs text-text-placeholder", children: "Select" })
223
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-02b", children: [
224
+ /* @__PURE__ */ t("kbd", { className: "inline-flex h-[20px] items-center justify-center rounded-ds-md border border-border bg-layer-02 px-ds-02b", children: /* @__PURE__ */ t(k, { className: "h-ds-03 w-ds-03 text-text-placeholder", stroke: 2 }) }),
225
+ /* @__PURE__ */ t("span", { className: "text-ds-xs text-text-placeholder", children: "Select" })
206
226
  ] }),
207
- /* @__PURE__ */ a("div", { className: "flex items-center gap-ds-02b", children: [
208
- /* @__PURE__ */ s("kbd", { className: "inline-flex h-[20px] items-center justify-center rounded-ds-md border border-border bg-layer-02 px-ds-02b text-ds-xs font-medium text-text-placeholder", children: "Esc" }),
209
- /* @__PURE__ */ s("span", { className: "text-ds-xs text-text-placeholder", children: "Close" })
227
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-ds-02b", children: [
228
+ /* @__PURE__ */ t("kbd", { className: "inline-flex h-[20px] items-center justify-center rounded-ds-md border border-border bg-layer-02 px-ds-02b text-ds-xs font-medium text-text-placeholder", children: "Esc" }),
229
+ /* @__PURE__ */ t("span", { className: "text-ds-xs text-text-placeholder", children: "Close" })
210
230
  ] })
211
231
  ] })
212
232
  ]
@@ -7,6 +7,8 @@ export interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
7
7
  description?: string;
8
8
  action?: React.ReactNode;
9
9
  compact?: boolean;
10
+ /** Icon size. Defaults to 'sm' when compact, 'md' otherwise. */
11
+ iconSize?: 'sm' | 'md' | 'lg';
10
12
  }
11
13
  declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
12
14
  export { EmptyState };
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/composed/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAcD,QAAA,MAAM,UAAU,wFAwEf,CAAA;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/composed/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAC9B;AAcD,QAAA,MAAM,UAAU,wFAgFf,CAAA;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as m } from "react/jsx-runtime";
2
- import * as c from "react";
2
+ import * as d from "react";
3
3
  import { c as s } from "../_chunks/utils.js";
4
- const h = ({ className: e }) => /* @__PURE__ */ t(
4
+ const y = ({ className: e }) => /* @__PURE__ */ t(
5
5
  "svg",
6
6
  {
7
7
  xmlns: "http://www.w3.org/2000/svg",
@@ -11,43 +11,49 @@ const h = ({ className: e }) => /* @__PURE__ */ t(
11
11
  "aria-hidden": "true",
12
12
  children: /* @__PURE__ */ t("path", { d: "M25.97,21.39c-0.9-1.85,0.08-3.95-1.72-5.39c1.76-1.44,0.8-3.55,1.69-5.39c0.05-0.12,0.04-0.25-0.02-0.35c-0.06-0.1-0.16-0.18-0.29-0.19c-2.05-0.15-3.35-2.04-5.5-1.21c-0.39-2.21-2.7-2.44-3.84-4.13c-0.08-0.1-0.19-0.16-0.31-0.16c-0.12,0-0.23,0.05-0.31,0.16c-1.14,1.69-3.43,1.92-3.82,4.13c-2.14-0.83-3.47,1.07-5.52,1.21c-0.13,0.01-0.23,0.09-0.29,0.19c-0.06,0.1-0.07,0.23-0.02,0.35c0.9,1.85-0.08,3.95,1.72,5.39c-1.76,1.44-0.8,3.55-1.69,5.39C6,21.51,6.02,21.64,6.07,21.74c0.06,0.1,0.16,0.18,0.29,0.19c2.05,0.15,3.38,2.06,5.52,1.23c0.39,2.21,2.67,2.43,3.82,4.12c0.08,0.1,0.19,0.16,0.31,0.16c0.12,0,0.23-0.05,0.31-0.16c1.14-1.69,3.42-1.92,3.81-4.13c2.14,0.83,3.48-1.07,5.53-1.22c0.13-0.01,0.23-0.09,0.29-0.19C26.01,21.64,26.02,21.51,25.97,21.39z" })
13
13
  }
14
- ), y = c.forwardRef(
14
+ ), g = d.forwardRef(
15
15
  ({
16
16
  icon: e,
17
- title: o,
18
- description: d,
19
- action: a,
17
+ title: i,
18
+ description: a,
19
+ action: o,
20
20
  compact: l = !1,
21
- className: i,
22
- ...n
23
- }, x) => {
24
- const r = l ? "h-ico-md w-ico-md" : "h-ico-lg w-ico-lg", f = e != null && !c.isValidElement(e) && (typeof e == "function" || typeof e == "object" && "$$typeof" in e), p = e ? f ? c.createElement(e, {
25
- className: s("text-text-placeholder", r)
21
+ iconSize: n,
22
+ className: x,
23
+ ...p
24
+ }, f) => {
25
+ const c = {
26
+ sm: "h-ico-sm w-ico-sm",
27
+ md: "h-ico-lg w-ico-lg",
28
+ lg: "h-ico-xl w-ico-xl"
29
+ }[n ?? (l ? "sm" : "md")], r = e != null && !d.isValidElement(e) && (typeof e == "function" || typeof e == "object" && "$$typeof" in e), h = e ? r ? d.createElement(e, {
30
+ className: s("text-text-placeholder", c)
26
31
  }) : e : /* @__PURE__ */ t(
27
- h,
32
+ y,
28
33
  {
29
- className: s("text-text-placeholder", r)
34
+ className: s("text-text-placeholder", c)
30
35
  }
31
36
  );
32
37
  return /* @__PURE__ */ m(
33
38
  "div",
34
39
  {
35
- ref: x,
40
+ ref: f,
36
41
  className: s(
37
42
  "flex flex-col items-center justify-center text-center",
38
43
  l ? "gap-ds-04 py-ds-07" : "gap-ds-05 py-ds-10",
39
- i
44
+ x
40
45
  ),
41
- ...n,
46
+ ...p,
42
47
  children: [
43
48
  /* @__PURE__ */ t(
44
49
  "div",
45
50
  {
46
51
  className: s(
47
52
  "flex items-center justify-center rounded-ds-xl bg-layer-02 animate-float",
48
- l ? "h-ds-md w-ds-md" : "h-ds-lg w-ds-lg"
53
+ l ? "h-ds-md w-ds-md" : "h-ds-lg w-ds-lg",
54
+ !r && e != null && c
49
55
  ),
50
- children: p
56
+ children: h
51
57
  }
52
58
  ),
53
59
  /* @__PURE__ */ m("div", { className: "flex max-w-[280px] flex-col gap-ds-02", children: [
@@ -58,27 +64,27 @@ const h = ({ className: e }) => /* @__PURE__ */ t(
58
64
  "text-text-primary",
59
65
  l ? "text-ds-md font-semibold" : "text-ds-base font-semibold"
60
66
  ),
61
- children: o
67
+ children: i
62
68
  }
63
69
  ),
64
- d && /* @__PURE__ */ t(
70
+ a && /* @__PURE__ */ t(
65
71
  "p",
66
72
  {
67
73
  className: s(
68
74
  "text-text-placeholder",
69
75
  l ? "text-ds-sm" : "text-ds-md"
70
76
  ),
71
- children: d
77
+ children: a
72
78
  }
73
79
  )
74
80
  ] }),
75
- a && /* @__PURE__ */ t("div", { className: "mt-ds-02", children: a })
81
+ o && /* @__PURE__ */ t("div", { className: "mt-ds-02", children: o })
76
82
  ]
77
83
  }
78
84
  );
79
85
  }
80
86
  );
81
- y.displayName = "EmptyState";
87
+ g.displayName = "EmptyState";
82
88
  export {
83
- y as EmptyState
89
+ g as EmptyState
84
90
  };
@@ -46,5 +46,9 @@ export { ScheduleView } from './schedule-view';
46
46
  export type { ScheduleViewProps, ScheduleEvent } from './schedule-view';
47
47
  export { ConfirmDialog } from './confirm-dialog';
48
48
  export type { ConfirmDialogProps } from './confirm-dialog';
49
+ export { UploadProgress, formatFileSize } from './upload-progress';
50
+ export type { UploadProgressProps, UploadFile } from './upload-progress';
51
+ export { ActivityFeed } from './activity-feed';
52
+ export type { ActivityItem, ActivityFeedProps } from './activity-feed';
49
53
  export { getInitials } from './lib/string-utils';
50
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEhE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE5E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE/F,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACpJ,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAE9M,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7F,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtH,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composed/index.ts"],"names":[],"mappings":"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"}
@@ -3,53 +3,58 @@ import { PageHeader as o } from "./page-header.js";
3
3
  import { ContentCard as a, contentCardVariants as i } from "./content-card.js";
4
4
  import { StatusBadge as p, statusBadgeVariants as s } from "./status-badge.js";
5
5
  import { EmptyState as l } from "./empty-state.js";
6
- import { AvatarGroup as f } from "./avatar-group.js";
6
+ import { AvatarGroup as x } from "./avatar-group.js";
7
7
  import { PriorityIndicator as k } from "./priority-indicator.js";
8
8
  import { RichTextEditor as P, RichTextViewer as S } from "./rich-text-editor.js";
9
- import { C as D, D as T, a as g, b as u, M as b, P as h, T as V, Y as y, u as B } from "../_chunks/use-calendar.js";
9
+ import { C as g, D, a as T, b as u, M as b, P as h, T as y, Y as V, u as B } from "../_chunks/use-calendar.js";
10
10
  import { BoardSkeleton as G, CardSkeleton as L, ListSkeleton as M, TableSkeleton as R } from "./loading-skeleton.js";
11
- import { DashboardSkeleton as I, ProjectListSkeleton as Y, TaskDetailSkeleton as j } from "./page-skeletons.js";
12
- import { ErrorDisplay as A } from "./error-boundary.js";
13
- import { GlobalLoading as q } from "./global-loading.js";
14
- import { CommandPalette as F } from "./command-palette.js";
15
- import { MemberPicker as K } from "./member-picker.js";
16
- import { SimpleTooltip as O } from "./simple-tooltip.js";
17
- import { ScheduleView as U } from "./schedule-view.js";
11
+ import { DashboardSkeleton as w, ProjectListSkeleton as A, TaskDetailSkeleton as F } from "./page-skeletons.js";
12
+ import { ErrorDisplay as Y } from "./error-boundary.js";
13
+ import { GlobalLoading as z } from "./global-loading.js";
14
+ import { CommandPalette as U } from "./command-palette.js";
15
+ import { MemberPicker as J } from "./member-picker.js";
16
+ import { SimpleTooltip as N } from "./simple-tooltip.js";
17
+ import { ScheduleView as Q } from "./schedule-view.js";
18
18
  import { ConfirmDialog as X } from "./confirm-dialog.js";
19
- import { getInitials as _ } from "./lib/string-utils.js";
19
+ import { UploadProgress as _, formatFileSize as $ } from "./upload-progress.js";
20
+ import { ActivityFeed as re } from "./activity-feed.js";
21
+ import { getInitials as te } from "./lib/string-utils.js";
20
22
  export {
21
- f as AvatarGroup,
23
+ re as ActivityFeed,
24
+ x as AvatarGroup,
22
25
  G as BoardSkeleton,
23
- D as CalendarGrid,
26
+ g as CalendarGrid,
24
27
  L as CardSkeleton,
25
- F as CommandPalette,
28
+ U as CommandPalette,
26
29
  X as ConfirmDialog,
27
30
  a as ContentCard,
28
- I as DashboardSkeleton,
29
- T as DatePicker,
30
- g as DateRangePicker,
31
+ w as DashboardSkeleton,
32
+ D as DatePicker,
33
+ T as DateRangePicker,
31
34
  u as DateTimePicker,
32
35
  l as EmptyState,
33
- A as ErrorDisplay,
34
- q as GlobalLoading,
36
+ Y as ErrorDisplay,
37
+ z as GlobalLoading,
35
38
  M as ListSkeleton,
36
- K as MemberPicker,
39
+ J as MemberPicker,
37
40
  b as MonthPicker,
38
41
  o as PageHeader,
39
42
  h as Presets,
40
43
  k as PriorityIndicator,
41
- Y as ProjectListSkeleton,
44
+ A as ProjectListSkeleton,
42
45
  P as RichTextEditor,
43
46
  S as RichTextViewer,
44
- U as ScheduleView,
45
- O as SimpleTooltip,
47
+ Q as ScheduleView,
48
+ N as SimpleTooltip,
46
49
  p as StatusBadge,
47
50
  R as TableSkeleton,
48
- j as TaskDetailSkeleton,
49
- V as TimePicker,
50
- y as YearPicker,
51
+ F as TaskDetailSkeleton,
52
+ y as TimePicker,
53
+ _ as UploadProgress,
54
+ V as YearPicker,
51
55
  i as contentCardVariants,
52
- _ as getInitials,
56
+ $ as formatFileSize,
57
+ te as getInitials,
53
58
  s as statusBadgeVariants,
54
59
  B as useCalendar
55
60
  };
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface UploadFile {
4
+ id: string;
5
+ name: string;
6
+ /** File size in bytes */
7
+ size: number;
8
+ /** 0-100 progress percentage. undefined = indeterminate */
9
+ progress?: number;
10
+ /** Upload state */
11
+ status: 'pending' | 'uploading' | 'processing' | 'complete' | 'error';
12
+ /** Error message if status is 'error' */
13
+ error?: string;
14
+ /** Optional preview URL (for images) */
15
+ previewUrl?: string;
16
+ }
17
+ export interface UploadProgressProps extends React.HTMLAttributes<HTMLDivElement> {
18
+ files: UploadFile[];
19
+ /** Called when user cancels/removes a file */
20
+ onRemove?: (fileId: string) => void;
21
+ /** Called when user retries a failed upload */
22
+ onRetry?: (fileId: string) => void;
23
+ /** Called when user dismisses all terminal files */
24
+ onDismissAll?: () => void;
25
+ /** Show compact single-line items vs expanded items */
26
+ variant?: 'default' | 'compact';
27
+ /** Whether to show file size */
28
+ showSize?: boolean;
29
+ }
30
+ declare function formatFileSize(bytes: number): string;
31
+ declare const UploadProgress: React.ForwardRefExoticComponent<UploadProgressProps & React.RefAttributes<HTMLDivElement>>;
32
+ export { UploadProgress, formatFileSize };
33
+ //# sourceMappingURL=upload-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-progress.d.ts","sourceRoot":"","sources":["../../src/composed/upload-progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB;IACnB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAA;IACrE,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,uDAAuD;IACvD,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAMD,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO7C;AAgWD,QAAA,MAAM,cAAc,4FA4GnB,CAAA;AAGD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAA"}