@devalok/shilp-sutra 0.15.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.
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ActivityItem {
4
+ id: string;
5
+ actor?: {
6
+ name: string;
7
+ image?: string;
8
+ };
9
+ action: string | React.ReactNode;
10
+ timestamp: Date | string;
11
+ icon?: React.ReactNode;
12
+ color?: 'default' | 'success' | 'warning' | 'error' | 'info';
13
+ detail?: React.ReactNode;
14
+ }
15
+ export interface ActivityFeedProps extends React.HTMLAttributes<HTMLDivElement> {
16
+ items: ActivityItem[];
17
+ onLoadMore?: () => void;
18
+ loading?: boolean;
19
+ hasMore?: boolean;
20
+ emptyState?: React.ReactNode;
21
+ compact?: boolean;
22
+ maxInitialItems?: number;
23
+ }
24
+ declare const ActivityFeed: React.ForwardRefExoticComponent<ActivityFeedProps & React.RefAttributes<HTMLDivElement>>;
25
+ export { ActivityFeed };
26
+ //# sourceMappingURL=activity-feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../src/composed/activity-feed.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;IAChC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC7E,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AA2ID,QAAA,MAAM,YAAY,0FA4EjB,CAAA;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,132 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import * as u from "react";
4
+ import { c as s } from "../_chunks/utils.js";
5
+ import { IconChevronRight as y } from "@tabler/icons-react";
6
+ import { A as b, a as k, b as A } from "../_chunks/avatar.js";
7
+ import { B as v } from "../_chunks/button.js";
8
+ import { Skeleton as f } from "../ui/skeleton.js";
9
+ import { getInitials as D } from "./lib/string-utils.js";
10
+ const S = {
11
+ default: "bg-text-placeholder",
12
+ success: "bg-success",
13
+ warning: "bg-warning",
14
+ error: "bg-error",
15
+ info: "bg-interactive"
16
+ };
17
+ function j(e) {
18
+ const r = typeof e == "string" ? new Date(e) : e, c = (/* @__PURE__ */ new Date()).getTime() - r.getTime(), i = Math.floor(c / 1e3), l = Math.floor(i / 60), a = Math.floor(l / 60), o = Math.floor(a / 24);
19
+ return i < 60 ? "just now" : l < 60 ? `${l}m ago` : a < 24 ? `${a}h ago` : o < 7 ? `${o}d ago` : r.toLocaleDateString();
20
+ }
21
+ function C({ compact: e }) {
22
+ return /* @__PURE__ */ t("div", { className: s("flex flex-col", e ? "gap-1" : "gap-3"), children: [0, 1, 2].map((r) => /* @__PURE__ */ n("div", { className: "flex items-center gap-ds-03", children: [
23
+ /* @__PURE__ */ t(f, { className: "h-2 w-2 shrink-0 rounded-ds-full" }),
24
+ !e && /* @__PURE__ */ t(f, { className: "h-4 w-4 shrink-0 rounded-ds-full" }),
25
+ /* @__PURE__ */ t(f, { className: s("flex-1", e ? "h-3" : "h-4") }),
26
+ /* @__PURE__ */ t(f, { className: "h-3 w-12" })
27
+ ] }, r)) });
28
+ }
29
+ function M({
30
+ item: e,
31
+ compact: r
32
+ }) {
33
+ const [d, c] = u.useState(!1), i = e.color ?? "default", l = () => {
34
+ e.detail && c((a) => !a);
35
+ };
36
+ return /* @__PURE__ */ n("div", { className: s("relative flex items-start", r ? "gap-ds-02" : "gap-ds-03"), children: [
37
+ /* @__PURE__ */ t(
38
+ "div",
39
+ {
40
+ className: s(
41
+ "relative z-10 mt-1.5 h-2 w-2 shrink-0 rounded-ds-full ring-2 ring-surface",
42
+ S[i]
43
+ )
44
+ }
45
+ ),
46
+ !r && e.actor && /* @__PURE__ */ n(b, { className: "h-5 w-5 shrink-0 text-[9px]", children: [
47
+ e.actor.image && /* @__PURE__ */ t(k, { src: e.actor.image, alt: e.actor.name }),
48
+ /* @__PURE__ */ t(A, { className: "text-[9px]", children: D(e.actor.name) })
49
+ ] }),
50
+ /* @__PURE__ */ n("div", { className: "flex min-w-0 flex-1 flex-col", children: [
51
+ /* @__PURE__ */ n("div", { className: "flex items-center justify-between gap-ds-02", children: [
52
+ /* @__PURE__ */ n("div", { className: s("min-w-0 flex-1 flex items-center gap-ds-01 flex-wrap", r ? "text-ds-xs" : "text-ds-sm"), children: [
53
+ e.actor && /* @__PURE__ */ n("span", { className: "font-medium text-text-primary", children: [
54
+ e.actor.name,
55
+ " "
56
+ ] }),
57
+ e.detail && /* @__PURE__ */ t(y, { className: s("h-3 w-3 shrink-0 text-text-placeholder transition-transform", d && "rotate-90") }),
58
+ /* @__PURE__ */ t(
59
+ "span",
60
+ {
61
+ className: s(
62
+ "text-text-secondary",
63
+ e.detail && "cursor-pointer hover:underline"
64
+ ),
65
+ onClick: l,
66
+ role: e.detail ? "button" : void 0,
67
+ tabIndex: e.detail ? 0 : void 0,
68
+ onKeyDown: e.detail ? (a) => {
69
+ (a.key === "Enter" || a.key === " ") && (a.preventDefault(), l());
70
+ } : void 0,
71
+ children: e.action
72
+ }
73
+ )
74
+ ] }),
75
+ /* @__PURE__ */ t(
76
+ "time",
77
+ {
78
+ className: s(
79
+ "shrink-0 whitespace-nowrap text-text-placeholder",
80
+ r ? "text-ds-xs" : "text-ds-sm"
81
+ ),
82
+ dateTime: (typeof e.timestamp == "string" ? new Date(e.timestamp) : e.timestamp).toISOString(),
83
+ children: j(e.timestamp)
84
+ }
85
+ )
86
+ ] }),
87
+ d && e.detail && /* @__PURE__ */ t("div", { className: "mt-ds-02 animate-in fade-in slide-in-from-top-1 text-ds-sm text-text-secondary", children: e.detail })
88
+ ] })
89
+ ] });
90
+ }
91
+ const R = u.forwardRef(
92
+ ({
93
+ items: e,
94
+ onLoadMore: r,
95
+ loading: d = !1,
96
+ hasMore: c = !1,
97
+ emptyState: i,
98
+ compact: l = !1,
99
+ maxInitialItems: a,
100
+ className: o,
101
+ ...h
102
+ }, m) => {
103
+ const [p, w] = u.useState(!1);
104
+ if (d)
105
+ return /* @__PURE__ */ t("div", { ref: m, className: s("relative", o), ...h, children: /* @__PURE__ */ t(C, { compact: l }) });
106
+ if (e.length === 0)
107
+ return i ? /* @__PURE__ */ t("div", { ref: m, className: o, ...h, children: i }) : null;
108
+ const x = a != null && !p && e.length > a, N = x ? e.slice(0, a) : e;
109
+ return /* @__PURE__ */ n("div", { ref: m, className: s("relative", o), ...h, children: [
110
+ /* @__PURE__ */ t("div", { className: "absolute bottom-0 left-[3px] top-0 w-px bg-border" }),
111
+ /* @__PURE__ */ t("div", { className: s("relative flex flex-col", l ? "gap-1" : "gap-3"), children: N.map((g) => /* @__PURE__ */ t(M, { item: g, compact: l }, g.id)) }),
112
+ x && /* @__PURE__ */ t("div", { className: "relative mt-ds-03 flex justify-center", children: /* @__PURE__ */ n(
113
+ v,
114
+ {
115
+ variant: "ghost",
116
+ size: "sm",
117
+ onClick: () => w(!0),
118
+ children: [
119
+ "Show all (",
120
+ e.length,
121
+ ")"
122
+ ]
123
+ }
124
+ ) }),
125
+ c && r && !x && /* @__PURE__ */ t("div", { className: "relative mt-ds-03 flex justify-center", children: /* @__PURE__ */ t(v, { variant: "ghost", size: "sm", onClick: r, children: "Load more" }) })
126
+ ] });
127
+ }
128
+ );
129
+ R.displayName = "ActivityFeed";
130
+ export {
131
+ R as ActivityFeed
132
+ };
@@ -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"}