@devalok/shilp-sutra-karm 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/render-adjustment-type.js +50 -48
- package/dist/_chunks/sidebar-scratchpad.js +714 -326
- package/dist/_chunks/task-detail-panel.js +902 -634
- package/dist/_chunks/vendor.js +1154 -1123
- package/dist/dashboard/index.d.ts +20 -0
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +451 -5
- package/dist/dashboard/project-health-card.d.ts +22 -0
- package/dist/dashboard/project-health-card.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/index.d.ts +13 -0
- package/dist/dashboard/scratchpad/index.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts +11 -0
- package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts +15 -0
- package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-context.d.ts +44 -0
- package/dist/dashboard/scratchpad/scratchpad-context.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts +13 -0
- package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts +7 -0
- package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-header.d.ts +9 -0
- package/dist/dashboard/scratchpad/scratchpad-header.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-item.d.ts +13 -0
- package/dist/dashboard/scratchpad/scratchpad-item.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-list.d.ts +9 -0
- package/dist/dashboard/scratchpad/scratchpad-list.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts +11 -0
- package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad-root.d.ts +8 -0
- package/dist/dashboard/scratchpad/scratchpad-root.d.ts.map +1 -0
- package/dist/dashboard/scratchpad/scratchpad.d.ts +29 -0
- package/dist/dashboard/scratchpad/scratchpad.d.ts.map +1 -0
- package/dist/dashboard/scratchpad-widget.d.ts +5 -5
- package/dist/dashboard/scratchpad-widget.d.ts.map +1 -1
- package/dist/dashboard/sidebar-scratchpad.d.ts +8 -1
- package/dist/dashboard/sidebar-scratchpad.d.ts.map +1 -1
- package/dist/dashboard/week-heatmap/index.d.ts +10 -0
- package/dist/dashboard/week-heatmap/index.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts +31 -0
- package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts +7 -0
- package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts +15 -0
- package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts +7 -0
- package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts +8 -0
- package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts +7 -0
- package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts +7 -0
- package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts.map +1 -0
- package/dist/dashboard/week-heatmap/week-heatmap.d.ts +33 -0
- package/dist/dashboard/week-heatmap/week-heatmap.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -56
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +18 -17
- package/dist/tasks/task-action-row/index.d.ts +3 -0
- package/dist/tasks/task-action-row/index.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts +8 -0
- package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-context.d.ts +21 -0
- package/dist/tasks/task-action-row/task-action-row-context.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-due-date.d.ts +5 -0
- package/dist/tasks/task-action-row/task-action-row-due-date.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-labels.d.ts +8 -0
- package/dist/tasks/task-action-row/task-action-row-labels.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-navigate.d.ts +9 -0
- package/dist/tasks/task-action-row/task-action-row-navigate.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-priority.d.ts +5 -0
- package/dist/tasks/task-action-row/task-action-row-priority.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts +8 -0
- package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-root.d.ts +14 -0
- package/dist/tasks/task-action-row/task-action-row-root.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts +5 -0
- package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row-title.d.ts +9 -0
- package/dist/tasks/task-action-row/task-action-row-title.d.ts.map +1 -0
- package/dist/tasks/task-action-row/task-action-row.d.ts +48 -0
- package/dist/tasks/task-action-row/task-action-row.d.ts.map +1 -0
- package/dist/tasks/task-detail-panel.d.ts.map +1 -1
- package/docs/components/dashboard/project-health-card.md +90 -0
- package/docs/components/dashboard/scratchpad-widget.md +17 -0
- package/docs/components/dashboard/scratchpad.md +151 -0
- package/docs/components/dashboard/sidebar-scratchpad.md +29 -5
- package/docs/components/dashboard/week-heatmap.md +95 -0
- package/docs/components/tasks/task-action-row.md +159 -0
- package/package.json +82 -82
package/dist/tasks/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { cn as p } from "@devalok/shilp-sutra/ui/lib/utils";
|
|
|
5
5
|
import { Tabs as J, TabsList as ee, TabsTrigger as se, TabsContent as te } from "@devalok/shilp-sutra/ui";
|
|
6
6
|
import { Skeleton as v } from "@devalok/shilp-sutra/ui/skeleton";
|
|
7
7
|
import { P as ae } from "../_chunks/task-detail-panel.js";
|
|
8
|
-
import {
|
|
8
|
+
import { c as We, A as qe, d as ze, C as Qe, e as Ue, f as Xe, g as Ze, F as Je, M as es, h as ss, i as ts, j as as, k as rs, l as ns, R as cs, m as is, n as ls, o as os, p as ds, S as us, T as fs, a as ms, b as ps, V as gs } from "../_chunks/task-detail-panel.js";
|
|
9
9
|
import { Avatar as M, AvatarImage as O, AvatarFallback as A } from "@devalok/shilp-sutra/ui/avatar";
|
|
10
10
|
import { MemberPicker as _ } from "@devalok/shilp-sutra/composed/member-picker";
|
|
11
11
|
import { getInitials as L } from "@devalok/shilp-sutra/composed/lib/string-utils";
|
|
@@ -393,7 +393,7 @@ function De() {
|
|
|
393
393
|
const r = /* @__PURE__ */ new Date(), s = r.getDay(), n = s === 0 ? 1 : 8 - s, l = new Date(r);
|
|
394
394
|
return l.setDate(r.getDate() + n), l;
|
|
395
395
|
}
|
|
396
|
-
function
|
|
396
|
+
function R(r) {
|
|
397
397
|
const s = /* @__PURE__ */ new Date();
|
|
398
398
|
return s.setDate(s.getDate() + r), s;
|
|
399
399
|
}
|
|
@@ -453,7 +453,7 @@ const Ie = i.forwardRef(
|
|
|
453
453
|
"button",
|
|
454
454
|
{
|
|
455
455
|
type: "button",
|
|
456
|
-
onClick: () => a(
|
|
456
|
+
onClick: () => a(R(1)),
|
|
457
457
|
className: "rounded-ds-md px-ds-03 py-ds-02 text-left text-ds-sm text-surface-fg transition-colors hover:bg-surface-3",
|
|
458
458
|
children: "Tomorrow"
|
|
459
459
|
}
|
|
@@ -471,7 +471,7 @@ const Ie = i.forwardRef(
|
|
|
471
471
|
"button",
|
|
472
472
|
{
|
|
473
473
|
type: "button",
|
|
474
|
-
onClick: () => a(
|
|
474
|
+
onClick: () => a(R(7)),
|
|
475
475
|
className: "rounded-ds-md px-ds-03 py-ds-02 text-left text-ds-sm text-surface-fg transition-colors hover:bg-surface-3",
|
|
476
476
|
children: "+7 days"
|
|
477
477
|
}
|
|
@@ -480,7 +480,7 @@ const Ie = i.forwardRef(
|
|
|
480
480
|
"button",
|
|
481
481
|
{
|
|
482
482
|
type: "button",
|
|
483
|
-
onClick: () => a(
|
|
483
|
+
onClick: () => a(R(14)),
|
|
484
484
|
className: "rounded-ds-md px-ds-03 py-ds-02 text-left text-ds-sm text-surface-fg transition-colors hover:bg-surface-3",
|
|
485
485
|
children: "+14 days"
|
|
486
486
|
}
|
|
@@ -514,7 +514,7 @@ const Ie = i.forwardRef(
|
|
|
514
514
|
}
|
|
515
515
|
);
|
|
516
516
|
Ie.displayName = "TaskDatePicker";
|
|
517
|
-
const
|
|
517
|
+
const Re = i.forwardRef(
|
|
518
518
|
function({ value: s, onChange: n, availableLabels: l = [], readOnly: f, className: u }, h) {
|
|
519
519
|
const [o, t] = i.useState(""), [m, g] = i.useState(!1), [a, k] = i.useState(!1), x = i.useRef(null), y = i.useRef(!1), N = i.useMemo(() => {
|
|
520
520
|
const d = /* @__PURE__ */ new Map();
|
|
@@ -636,8 +636,8 @@ const Se = i.forwardRef(
|
|
|
636
636
|
] });
|
|
637
637
|
}
|
|
638
638
|
);
|
|
639
|
-
|
|
640
|
-
const
|
|
639
|
+
Re.displayName = "TaskLabelEditor";
|
|
640
|
+
const S = [
|
|
641
641
|
{
|
|
642
642
|
value: "INTERNAL",
|
|
643
643
|
icon: oe,
|
|
@@ -650,9 +650,9 @@ const R = [
|
|
|
650
650
|
label: "Everyone",
|
|
651
651
|
description: "Visible to clients"
|
|
652
652
|
}
|
|
653
|
-
],
|
|
653
|
+
], Se = i.forwardRef(
|
|
654
654
|
function({ value: s, onChange: n, confirmOnPublic: l, readOnly: f, className: u }, h) {
|
|
655
|
-
const [o, t] = i.useState(!1), [m, g] = i.useState(!1), a =
|
|
655
|
+
const [o, t] = i.useState(!1), [m, g] = i.useState(!1), a = S.find((N) => N.value === s) ?? S[0], k = a.icon, x = (N) => {
|
|
656
656
|
if (N === s) {
|
|
657
657
|
t(!1);
|
|
658
658
|
return;
|
|
@@ -692,7 +692,7 @@ const R = [
|
|
|
692
692
|
className: "w-[220px] border-surface-border-strong bg-surface-1 p-ds-02",
|
|
693
693
|
align: "start",
|
|
694
694
|
sideOffset: 4,
|
|
695
|
-
children:
|
|
695
|
+
children: S.map((N) => {
|
|
696
696
|
const w = N.icon;
|
|
697
697
|
return /* @__PURE__ */ c(
|
|
698
698
|
"button",
|
|
@@ -732,7 +732,7 @@ const R = [
|
|
|
732
732
|
] });
|
|
733
733
|
}
|
|
734
734
|
);
|
|
735
|
-
|
|
735
|
+
Se.displayName = "TaskVisibilityPicker";
|
|
736
736
|
export {
|
|
737
737
|
We as ActivityEntry,
|
|
738
738
|
qe as ActivityTab,
|
|
@@ -754,15 +754,16 @@ export {
|
|
|
754
754
|
os as SubtaskList,
|
|
755
755
|
ds as SubtaskProgress,
|
|
756
756
|
us as SubtasksTab,
|
|
757
|
+
fs as TaskActionRow,
|
|
757
758
|
Te as TaskAssigneePicker,
|
|
758
759
|
Ne as TaskColumnPicker,
|
|
759
760
|
Ie as TaskDatePicker,
|
|
760
|
-
|
|
761
|
-
|
|
761
|
+
ms as TaskDetailPanel,
|
|
762
|
+
Re as TaskLabelEditor,
|
|
762
763
|
ve as TaskMemberPicker,
|
|
763
764
|
Ke as TaskPanel,
|
|
764
765
|
we as TaskPriorityPicker,
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
766
|
+
ps as TaskProperties,
|
|
767
|
+
Se as TaskVisibilityPicker,
|
|
768
|
+
gs as VisibilityWarning
|
|
768
769
|
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { TaskActionRow, type TaskActionRowProps, type TaskActionRowTask, type TaskActionRowContextValue, type TaskActionRowRootProps, type TaskActionRowCheckboxProps, type TaskActionRowTitleProps, type TaskActionRowLabelsProps, type TaskActionRowProjectBadgeProps, type TaskActionRowNavigateProps, } from './task-action-row';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskActionRowCheckboxProps {
|
|
4
|
+
onComplete?: (taskId: string) => void | Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
declare const TaskActionRowCheckbox: React.ForwardRefExoticComponent<TaskActionRowCheckboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
export { TaskActionRowCheckbox };
|
|
8
|
+
//# sourceMappingURL=task-action-row-checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-checkbox.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtD;AAED,QAAA,MAAM,qBAAqB,sGAoC1B,CAAA;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Priority } from '../task-types';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export interface TaskActionRowTask {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
priority: Priority;
|
|
8
|
+
dueDate?: string | null;
|
|
9
|
+
projectName?: string;
|
|
10
|
+
projectId?: string;
|
|
11
|
+
stage?: string;
|
|
12
|
+
isOverdue?: boolean;
|
|
13
|
+
labels?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface TaskActionRowContextValue {
|
|
16
|
+
task: TaskActionRowTask;
|
|
17
|
+
}
|
|
18
|
+
declare const TaskActionRowContext: React.Context<TaskActionRowContextValue | null>;
|
|
19
|
+
export declare function useTaskActionRow(): TaskActionRowContextValue;
|
|
20
|
+
export { TaskActionRowContext };
|
|
21
|
+
//# sourceMappingURL=task-action-row-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-context.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-context.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,iBAAiB,CAAA;CACxB;AAED,QAAA,MAAM,oBAAoB,iDAA8D,CAAA;AAExF,wBAAgB,gBAAgB,IAAI,yBAAyB,CAM5D;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare const TaskActionRowDueDate: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
4
|
+
export { TaskActionRowDueDate };
|
|
5
|
+
//# sourceMappingURL=task-action-row-due-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-due-date.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-due-date.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmB9B,QAAA,MAAM,oBAAoB,4GAuBzB,CAAA;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskActionRowLabelsProps {
|
|
4
|
+
max?: number;
|
|
5
|
+
}
|
|
6
|
+
declare const TaskActionRowLabels: React.ForwardRefExoticComponent<TaskActionRowLabelsProps & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
export { TaskActionRowLabels };
|
|
8
|
+
//# sourceMappingURL=task-action-row-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-labels.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-labels.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,QAAA,MAAM,mBAAmB,iGAwBxB,CAAA;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskActionRowNavigateProps {
|
|
4
|
+
href?: string;
|
|
5
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const TaskActionRowNavigate: React.ForwardRefExoticComponent<TaskActionRowNavigateProps & React.RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export { TaskActionRowNavigate };
|
|
9
|
+
//# sourceMappingURL=task-action-row-navigate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-navigate.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-navigate.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;CACxC;AAED,QAAA,MAAM,qBAAqB,sGA0B1B,CAAA;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare const TaskActionRowPriority: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export { TaskActionRowPriority };
|
|
5
|
+
//# sourceMappingURL=task-action-row-priority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-priority.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-priority.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,QAAA,MAAM,qBAAqB,2GAY1B,CAAA;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskActionRowProjectBadgeProps {
|
|
4
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
5
|
+
}
|
|
6
|
+
declare const TaskActionRowProjectBadge: React.ForwardRefExoticComponent<TaskActionRowProjectBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
7
|
+
export { TaskActionRowProjectBadge };
|
|
8
|
+
//# sourceMappingURL=task-action-row-project-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-project-badge.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-project-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;CACxC;AAED,QAAA,MAAM,yBAAyB,wGA6B9B,CAAA;AAGD,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { TaskActionRowTask } from './task-action-row-context';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export interface TaskActionRowRootProps {
|
|
5
|
+
task: TaskActionRowTask;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
onContextMenu?: (e: React.MouseEvent) => void;
|
|
9
|
+
showSeparator?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const TaskActionRowRoot: React.ForwardRefExoticComponent<TaskActionRowRootProps & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export { TaskActionRowRoot };
|
|
14
|
+
//# sourceMappingURL=task-action-row-root.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-root.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-root.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAExF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,CAAA;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,iBAAiB,+FAiCtB,CAAA;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare const TaskActionRowStatusBadge: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
4
|
+
export { TaskActionRowStatusBadge };
|
|
5
|
+
//# sourceMappingURL=task-action-row-status-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-status-badge.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-status-badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,QAAA,MAAM,wBAAwB,4GAoB7B,CAAA;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskActionRowTitleProps {
|
|
4
|
+
truncate?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
declare const TaskActionRowTitle: React.ForwardRefExoticComponent<TaskActionRowTitleProps & React.RefAttributes<HTMLSpanElement>>;
|
|
8
|
+
export { TaskActionRowTitle };
|
|
9
|
+
//# sourceMappingURL=task-action-row-title.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row-title.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row-title.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,kBAAkB,iGAiBvB,CAAA;AAGD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { TaskActionRowRootProps } from './task-action-row-root';
|
|
3
|
+
import { TaskActionRowCheckboxProps } from './task-action-row-checkbox';
|
|
4
|
+
import { TaskActionRowTitleProps } from './task-action-row-title';
|
|
5
|
+
import { TaskActionRowLabelsProps } from './task-action-row-labels';
|
|
6
|
+
import { TaskActionRowProjectBadgeProps } from './task-action-row-project-badge';
|
|
7
|
+
import { TaskActionRowNavigateProps } from './task-action-row-navigate';
|
|
8
|
+
import { TaskActionRowTask } from './task-action-row-context';
|
|
9
|
+
import * as React from 'react';
|
|
10
|
+
export interface TaskActionRowProps {
|
|
11
|
+
task: TaskActionRowTask;
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
onComplete?: (taskId: string) => void | Promise<void>;
|
|
14
|
+
onContextMenu?: (e: React.MouseEvent) => void;
|
|
15
|
+
showCheckbox?: boolean;
|
|
16
|
+
showPriority?: boolean;
|
|
17
|
+
showLabels?: boolean;
|
|
18
|
+
showProject?: boolean;
|
|
19
|
+
showDueDate?: boolean;
|
|
20
|
+
showNavigate?: boolean;
|
|
21
|
+
showStatusBadge?: boolean;
|
|
22
|
+
truncateTitle?: boolean;
|
|
23
|
+
showSeparator?: boolean;
|
|
24
|
+
maxLabels?: number;
|
|
25
|
+
navigateHref?: string;
|
|
26
|
+
onProjectClick?: (e: React.MouseEvent) => void;
|
|
27
|
+
onNavigateClick?: (e: React.MouseEvent) => void;
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const TaskActionRow: React.ForwardRefExoticComponent<TaskActionRowProps & React.RefAttributes<HTMLDivElement>> & {
|
|
31
|
+
Root: React.ForwardRefExoticComponent<TaskActionRowRootProps & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
Checkbox: React.ForwardRefExoticComponent<TaskActionRowCheckboxProps & React.RefAttributes<HTMLButtonElement>>;
|
|
33
|
+
Priority: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
34
|
+
Title: React.ForwardRefExoticComponent<TaskActionRowTitleProps & React.RefAttributes<HTMLSpanElement>>;
|
|
35
|
+
Labels: React.ForwardRefExoticComponent<TaskActionRowLabelsProps & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
ProjectBadge: React.ForwardRefExoticComponent<TaskActionRowProjectBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
37
|
+
DueDate: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
38
|
+
StatusBadge: React.ForwardRefExoticComponent<Omit<Record<string, never>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
39
|
+
Navigate: React.ForwardRefExoticComponent<TaskActionRowNavigateProps & React.RefAttributes<HTMLButtonElement>>;
|
|
40
|
+
};
|
|
41
|
+
export type { TaskActionRowTask, TaskActionRowContextValue, } from './task-action-row-context';
|
|
42
|
+
export type { TaskActionRowRootProps };
|
|
43
|
+
export type { TaskActionRowCheckboxProps };
|
|
44
|
+
export type { TaskActionRowTitleProps };
|
|
45
|
+
export type { TaskActionRowLabelsProps };
|
|
46
|
+
export type { TaskActionRowProjectBadgeProps };
|
|
47
|
+
export type { TaskActionRowNavigateProps };
|
|
48
|
+
//# sourceMappingURL=task-action-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-action-row.d.ts","sourceRoot":"","sources":["../../../src/tasks/task-action-row/task-action-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAEnG,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAC7F,OAAO,EAA6B,KAAK,8BAA8B,EAAE,MAAM,iCAAiC,CAAA;AAGhH,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAMlE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrD,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC9C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqDD,eAAO,MAAM,aAAa;;;;;;;;;;CAUxB,CAAA;AAGF,YAAY,EACV,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,sBAAsB,EAAE,CAAA;AACtC,YAAY,EAAE,0BAA0B,EAAE,CAAA;AAC1C,YAAY,EAAE,uBAAuB,EAAE,CAAA;AACvC,YAAY,EAAE,wBAAwB,EAAE,CAAA;AACxC,YAAY,EAAE,8BAA8B,EAAE,CAAA;AAC9C,YAAY,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-detail-panel.d.ts","sourceRoot":"","sources":["../../src/tasks/task-detail-panel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"task-detail-panel.d.ts","sourceRoot":"","sources":["../../src/tasks/task-detail-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# ProjectHealthCard
|
|
2
|
+
|
|
3
|
+
Props-driven card showing project completion progress, status badge, sparkline trend, and context line.
|
|
4
|
+
|
|
5
|
+
- Import: @devalok/shilp-sutra-karm/dashboard
|
|
6
|
+
- Server-safe: No
|
|
7
|
+
- Category: dashboard
|
|
8
|
+
|
|
9
|
+
## Props
|
|
10
|
+
|
|
11
|
+
| Prop | Type | Default | Description |
|
|
12
|
+
|------|------|---------|-------------|
|
|
13
|
+
| project | ProjectHealthData | REQUIRED | Project data object |
|
|
14
|
+
| onClick | () => void | — | Makes card clickable with hover state and keyboard activation |
|
|
15
|
+
| loading | boolean | false | Shows skeleton placeholder when true |
|
|
16
|
+
| className | string | — | Additional CSS classes |
|
|
17
|
+
|
|
18
|
+
## Related Types
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
interface ProjectHealthData {
|
|
22
|
+
id: string
|
|
23
|
+
name: string
|
|
24
|
+
completed: number
|
|
25
|
+
total: number
|
|
26
|
+
overdue?: number
|
|
27
|
+
urgent?: number
|
|
28
|
+
contextLine?: string
|
|
29
|
+
/** 7 values (0-1) for sparkline trend chart */
|
|
30
|
+
trend?: number[]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Status Badge Severity
|
|
35
|
+
|
|
36
|
+
| Condition | Badge |
|
|
37
|
+
|-----------|-------|
|
|
38
|
+
| urgent > 0 | `solid` / `error` — "{urgent} urgent" |
|
|
39
|
+
| overdue > 0 (no urgent) | `subtle` / `warning` — "{overdue} overdue" |
|
|
40
|
+
| neither | `subtle` / `success` — "on track" |
|
|
41
|
+
|
|
42
|
+
## Progress Bar Color
|
|
43
|
+
|
|
44
|
+
| Percentage | Color |
|
|
45
|
+
|------------|-------|
|
|
46
|
+
| > 75% | success |
|
|
47
|
+
| 25%–75% | warning |
|
|
48
|
+
| < 25% | error |
|
|
49
|
+
|
|
50
|
+
## Sparkline
|
|
51
|
+
|
|
52
|
+
- Rendered as an inline SVG (48x20) when `trend` has >= 2 values
|
|
53
|
+
- Uses Catmull-Rom spline interpolation for smooth curves
|
|
54
|
+
- Color determined by comparing average of first 3 vs last 3 values:
|
|
55
|
+
- Improving (diff > 0.05): success stroke/fill
|
|
56
|
+
- Declining (diff < -0.05): error stroke/fill
|
|
57
|
+
- Flat: warning stroke/fill
|
|
58
|
+
- Fewer than 6 data points always renders warning color
|
|
59
|
+
|
|
60
|
+
## Defaults
|
|
61
|
+
loading=false
|
|
62
|
+
|
|
63
|
+
## Example
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
<ProjectHealthCard
|
|
67
|
+
project={{
|
|
68
|
+
id: 'proj-1',
|
|
69
|
+
name: 'Website Redesign',
|
|
70
|
+
completed: 12,
|
|
71
|
+
total: 20,
|
|
72
|
+
overdue: 3,
|
|
73
|
+
contextLine: 'Sprint 4 of 6',
|
|
74
|
+
trend: [0.3, 0.4, 0.5, 0.55, 0.6, 0.65, 0.7],
|
|
75
|
+
}}
|
|
76
|
+
onClick={() => navigateToProject('proj-1')}
|
|
77
|
+
/>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Gotchas
|
|
81
|
+
- Extends `Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'>` — native onClick is replaced by the typed onClick prop
|
|
82
|
+
- When `onClick` is provided, the card gets `role="button"`, `tabIndex={0}`, and keyboard activation (Enter/Space)
|
|
83
|
+
- When `onClick` is provided, the card uses `whileTap={{ scale: 0.98 }}` for press feedback
|
|
84
|
+
- `loading=true` renders a skeleton with no project data — use for async loading states
|
|
85
|
+
- The sparkline is `aria-hidden="true"` — it is decorative only
|
|
86
|
+
- `contextLine` and overdue count are combined in a third row separated by a middot
|
|
87
|
+
|
|
88
|
+
## Changes
|
|
89
|
+
### v0.20.0
|
|
90
|
+
- **Added** Initial release — project health card with progress bar, status badge, sparkline, and loading skeleton
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
onToggle: (id: string, done: boolean) => void (REQUIRED)
|
|
11
11
|
onAdd: (text: string) => void (REQUIRED)
|
|
12
12
|
onDelete: (id: string) => void (REQUIRED)
|
|
13
|
+
onEdit: (id: string, text: string) => void — enables inline editing (double-click)
|
|
14
|
+
onReorder: (items: ScratchpadItem[]) => void — enables drag-to-reorder via @dnd-kit
|
|
15
|
+
onPromote: (id: string) => void — enables promote-to-task button on items
|
|
13
16
|
title: string (default: "My Scratchpad")
|
|
14
17
|
resetLabel: string
|
|
15
18
|
emptyText: string (default: "Nothing here yet. Add a task!")
|
|
@@ -30,6 +33,9 @@
|
|
|
30
33
|
onToggle={(id, done) => toggleItem(id, done)}
|
|
31
34
|
onAdd={(text) => addItem(text)}
|
|
32
35
|
onDelete={(id) => deleteItem(id)}
|
|
36
|
+
onEdit={(id, text) => editItem(id, text)}
|
|
37
|
+
onReorder={(items) => reorderItems(items)}
|
|
38
|
+
onPromote={(id) => promoteToTask(id)}
|
|
33
39
|
maxItems={5}
|
|
34
40
|
/>
|
|
35
41
|
```
|
|
@@ -46,7 +52,18 @@
|
|
|
46
52
|
- resetLabel renders as footer text below the item list (e.g., "Resets daily at midnight")
|
|
47
53
|
- When loading=true, shows a shimmer skeleton placeholder
|
|
48
54
|
- Uses framer-motion AnimatePresence for item enter/exit animations
|
|
55
|
+
- Internally uses the composable Scratchpad compound component — see scratchpad.md for details
|
|
56
|
+
- onEdit, onReorder, onPromote are optional; features auto-enable when callbacks are provided
|
|
57
|
+
- onEdit: double-click item text to enter inline edit mode; Enter confirms, Escape cancels
|
|
58
|
+
- onReorder: items become draggable with @dnd-kit; drag handle appears on hover
|
|
59
|
+
- onPromote: arrow-up button appears on each item on hover
|
|
49
60
|
|
|
50
61
|
## Changes
|
|
62
|
+
### v0.20.0
|
|
63
|
+
- **Added** `onEdit` prop — inline editing via double-click
|
|
64
|
+
- **Added** `onReorder` prop — drag-to-reorder via @dnd-kit
|
|
65
|
+
- **Added** `onPromote` prop — promote-to-task button on items
|
|
66
|
+
- **Changed** Internally rebuilt on composable Scratchpad compound component
|
|
67
|
+
|
|
51
68
|
### v0.18.0
|
|
52
69
|
- **Added** Initial release
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Scratchpad (Composable)
|
|
2
|
+
|
|
3
|
+
Compound component for building custom scratchpad UIs with drag-to-reorder, inline editing, promote-to-task, and filter completed toggle.
|
|
4
|
+
|
|
5
|
+
- Import: @devalok/shilp-sutra-karm/dashboard
|
|
6
|
+
- Server-safe: No
|
|
7
|
+
- Category: dashboard
|
|
8
|
+
|
|
9
|
+
## Compound Parts
|
|
10
|
+
|
|
11
|
+
| Part | Description |
|
|
12
|
+
|------|-------------|
|
|
13
|
+
| `Scratchpad.Root` | Context provider + layout div. All other parts must be children. |
|
|
14
|
+
| `Scratchpad.Header` | Title bar with optional children slot (e.g. ProgressRing, FilterToggle) |
|
|
15
|
+
| `Scratchpad.List` | Item list with optional @dnd-kit drag-to-reorder and AnimatePresence |
|
|
16
|
+
| `Scratchpad.Item` | Single item row: checkbox, text, inline edit, drag handle, promote/delete buttons |
|
|
17
|
+
| `Scratchpad.AddInput` | "Add a task" trigger that expands to an inline input + Add button |
|
|
18
|
+
| `Scratchpad.EmptyState` | Empty placeholder shown when visibleItems is empty |
|
|
19
|
+
| `Scratchpad.ProgressRing` | SVG ring showing items.length / maxItems with completion pulse |
|
|
20
|
+
| `Scratchpad.FilterToggle` | Eye icon button toggling show/hide completed items |
|
|
21
|
+
| `Scratchpad.Collapse` | Collapsible section with chevron header, CSS grid-rows transition, badge count |
|
|
22
|
+
|
|
23
|
+
## Props (Root)
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
|------|------|---------|-------------|
|
|
27
|
+
| items | ScratchpadItem[] | REQUIRED | Full item list |
|
|
28
|
+
| onToggle | (id: string, done: boolean) => void | REQUIRED | Toggle item completion |
|
|
29
|
+
| onAdd | (text: string) => void | — | Enables AddInput when provided |
|
|
30
|
+
| onDelete | (id: string) => void | — | Enables delete button on items |
|
|
31
|
+
| onEdit | (id: string, text: string) => void | — | Enables inline editing (double-click) |
|
|
32
|
+
| onReorder | (items: ScratchpadItem[]) => void | — | Enables drag-to-reorder via @dnd-kit |
|
|
33
|
+
| onPromote | (id: string) => void | — | Enables promote-to-task button on items |
|
|
34
|
+
| maxItems | number | 20 | Maximum item count; AddInput hides when reached |
|
|
35
|
+
| defaultShowCompleted | boolean | true | Initial filter toggle state |
|
|
36
|
+
| className | string | — | Additional CSS classes |
|
|
37
|
+
|
|
38
|
+
## Props (Header)
|
|
39
|
+
|
|
40
|
+
| Prop | Type | Default | Description |
|
|
41
|
+
|------|------|---------|-------------|
|
|
42
|
+
| title | string | "Scratchpad" | Header title text |
|
|
43
|
+
| children | ReactNode | — | Slot for ProgressRing, FilterToggle, etc. |
|
|
44
|
+
|
|
45
|
+
## Props (List)
|
|
46
|
+
|
|
47
|
+
| Prop | Type | Default | Description |
|
|
48
|
+
|------|------|---------|-------------|
|
|
49
|
+
| compact | boolean | false | Compact layout passed to each item |
|
|
50
|
+
|
|
51
|
+
## Props (Item)
|
|
52
|
+
|
|
53
|
+
| Prop | Type | Default | Description |
|
|
54
|
+
|------|------|---------|-------------|
|
|
55
|
+
| item | ScratchpadItem | REQUIRED | The item data |
|
|
56
|
+
| compact | boolean | false | Compact sizing |
|
|
57
|
+
| sortable | boolean | false | Whether dnd-kit drag is active |
|
|
58
|
+
|
|
59
|
+
## Props (AddInput)
|
|
60
|
+
|
|
61
|
+
| Prop | Type | Default | Description |
|
|
62
|
+
|------|------|---------|-------------|
|
|
63
|
+
| placeholder | string | "What needs doing?" | Input placeholder |
|
|
64
|
+
| triggerLabel | string | "+ Add a task..." | Button label before expanding |
|
|
65
|
+
|
|
66
|
+
## Props (EmptyState)
|
|
67
|
+
|
|
68
|
+
| Prop | Type | Default | Description |
|
|
69
|
+
|------|------|---------|-------------|
|
|
70
|
+
| icon | React.ComponentType<{ className?: string }> | — | Icon shown above message |
|
|
71
|
+
| message | string | "Nothing here yet. Add a task!" | Empty state text |
|
|
72
|
+
|
|
73
|
+
## Props (ProgressRing)
|
|
74
|
+
|
|
75
|
+
| Prop | Type | Default | Description |
|
|
76
|
+
|------|------|---------|-------------|
|
|
77
|
+
| size | "sm" \| "md" | "md" | Ring diameter: sm=16px, md=20px |
|
|
78
|
+
|
|
79
|
+
## Props (FilterToggle)
|
|
80
|
+
|
|
81
|
+
No custom props. Extends `Omit<ButtonHTMLAttributes, 'children'>`.
|
|
82
|
+
|
|
83
|
+
## Props (Collapse)
|
|
84
|
+
|
|
85
|
+
| Prop | Type | Default | Description |
|
|
86
|
+
|------|------|---------|-------------|
|
|
87
|
+
| label | string | "Scratchpad" | Header label text |
|
|
88
|
+
| defaultOpen | boolean | true | Whether expanded initially |
|
|
89
|
+
| badgeCount | number | — | Badge pill count in header (hidden when 0 or undefined) |
|
|
90
|
+
| headerClassName | string | — | Override header text styling |
|
|
91
|
+
|
|
92
|
+
## Related Types
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
interface ScratchpadItem {
|
|
96
|
+
id: string
|
|
97
|
+
text: string
|
|
98
|
+
done: boolean
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Context-Driven Feature Visibility
|
|
103
|
+
|
|
104
|
+
Features auto-enable based on which callbacks are provided to Root:
|
|
105
|
+
|
|
106
|
+
| Callback | Enables |
|
|
107
|
+
|----------|---------|
|
|
108
|
+
| onAdd | AddInput component renders |
|
|
109
|
+
| onDelete | Delete (X) button on each item |
|
|
110
|
+
| onEdit | Double-click inline editing on items |
|
|
111
|
+
| onReorder | Drag handles + @dnd-kit SortableContext on List |
|
|
112
|
+
| onPromote | Promote (arrow-up) button on each item |
|
|
113
|
+
|
|
114
|
+
## Example
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<Scratchpad.Root
|
|
118
|
+
items={items}
|
|
119
|
+
onToggle={toggle}
|
|
120
|
+
onAdd={add}
|
|
121
|
+
onDelete={del}
|
|
122
|
+
onEdit={edit}
|
|
123
|
+
onReorder={reorder}
|
|
124
|
+
onPromote={promote}
|
|
125
|
+
>
|
|
126
|
+
<Scratchpad.Header title="My Scratchpad">
|
|
127
|
+
<Scratchpad.FilterToggle />
|
|
128
|
+
<Scratchpad.ProgressRing />
|
|
129
|
+
</Scratchpad.Header>
|
|
130
|
+
<Scratchpad.EmptyState />
|
|
131
|
+
<Scratchpad.List />
|
|
132
|
+
<Scratchpad.AddInput />
|
|
133
|
+
</Scratchpad.Root>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Gotchas
|
|
137
|
+
- All sub-components must be inside `Scratchpad.Root` — they use React context
|
|
138
|
+
- Root extends `Omit<HTMLDivElement, 'onToggle'>` to avoid conflict with native onToggle
|
|
139
|
+
- Drag-to-reorder uses @dnd-kit with PointerSensor (5px activation distance) and KeyboardSensor
|
|
140
|
+
- When sortable, List does NOT render `role="list"` because dnd-kit adds `role="button"` to items
|
|
141
|
+
- Inline editing activates on double-click; Enter confirms, Escape cancels, blur confirms
|
|
142
|
+
- AddInput auto-hides when items.length >= maxItems
|
|
143
|
+
- EmptyState auto-hides when visibleItems.length > 0
|
|
144
|
+
- FilterToggle shows IconEye when completed shown, IconEyeOff when hidden
|
|
145
|
+
- ProgressRing pulses (scale animation) when all items are done
|
|
146
|
+
- Items animate in/out with framer-motion (opacity + x slide)
|
|
147
|
+
- Collapse uses CSS `grid-template-rows` transition for smooth open/close
|
|
148
|
+
|
|
149
|
+
## Changes
|
|
150
|
+
### v0.20.0
|
|
151
|
+
- **Added** Initial release — 9-part composable scratchpad: Root, Header, List, Item, AddInput, EmptyState, ProgressRing, FilterToggle, Collapse
|