@devalok/shilp-sutra-karm 0.18.1 → 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.
Files changed (185) hide show
  1. package/dist/_chunks/render-adjustment-type.js +50 -48
  2. package/dist/_chunks/sidebar-scratchpad.js +714 -326
  3. package/dist/_chunks/task-detail-panel.js +1638 -1175
  4. package/dist/_chunks/vendor.js +1154 -1123
  5. package/dist/dashboard/index.d.ts +20 -0
  6. package/dist/dashboard/index.d.ts.map +1 -1
  7. package/dist/dashboard/index.js +451 -5
  8. package/dist/dashboard/project-health-card.d.ts +22 -0
  9. package/dist/dashboard/project-health-card.d.ts.map +1 -0
  10. package/dist/dashboard/scratchpad/index.d.ts +13 -0
  11. package/dist/dashboard/scratchpad/index.d.ts.map +1 -0
  12. package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts +11 -0
  13. package/dist/dashboard/scratchpad/scratchpad-add-input.d.ts.map +1 -0
  14. package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts +15 -0
  15. package/dist/dashboard/scratchpad/scratchpad-collapse.d.ts.map +1 -0
  16. package/dist/dashboard/scratchpad/scratchpad-context.d.ts +44 -0
  17. package/dist/dashboard/scratchpad/scratchpad-context.d.ts.map +1 -0
  18. package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts +13 -0
  19. package/dist/dashboard/scratchpad/scratchpad-empty-state.d.ts.map +1 -0
  20. package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts +7 -0
  21. package/dist/dashboard/scratchpad/scratchpad-filter-toggle.d.ts.map +1 -0
  22. package/dist/dashboard/scratchpad/scratchpad-header.d.ts +9 -0
  23. package/dist/dashboard/scratchpad/scratchpad-header.d.ts.map +1 -0
  24. package/dist/dashboard/scratchpad/scratchpad-item.d.ts +13 -0
  25. package/dist/dashboard/scratchpad/scratchpad-item.d.ts.map +1 -0
  26. package/dist/dashboard/scratchpad/scratchpad-list.d.ts +9 -0
  27. package/dist/dashboard/scratchpad/scratchpad-list.d.ts.map +1 -0
  28. package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts +11 -0
  29. package/dist/dashboard/scratchpad/scratchpad-progress-ring.d.ts.map +1 -0
  30. package/dist/dashboard/scratchpad/scratchpad-root.d.ts +8 -0
  31. package/dist/dashboard/scratchpad/scratchpad-root.d.ts.map +1 -0
  32. package/dist/dashboard/scratchpad/scratchpad.d.ts +29 -0
  33. package/dist/dashboard/scratchpad/scratchpad.d.ts.map +1 -0
  34. package/dist/dashboard/scratchpad-widget.d.ts +5 -5
  35. package/dist/dashboard/scratchpad-widget.d.ts.map +1 -1
  36. package/dist/dashboard/sidebar-scratchpad.d.ts +8 -1
  37. package/dist/dashboard/sidebar-scratchpad.d.ts.map +1 -1
  38. package/dist/dashboard/week-heatmap/index.d.ts +10 -0
  39. package/dist/dashboard/week-heatmap/index.d.ts.map +1 -0
  40. package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts +31 -0
  41. package/dist/dashboard/week-heatmap/week-heatmap-context.d.ts.map +1 -0
  42. package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts +7 -0
  43. package/dist/dashboard/week-heatmap/week-heatmap-day-strip.d.ts.map +1 -0
  44. package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts +15 -0
  45. package/dist/dashboard/week-heatmap/week-heatmap-day.d.ts.map +1 -0
  46. package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts +7 -0
  47. package/dist/dashboard/week-heatmap/week-heatmap-progress-bar.d.ts.map +1 -0
  48. package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts +8 -0
  49. package/dist/dashboard/week-heatmap/week-heatmap-root.d.ts.map +1 -0
  50. package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts +7 -0
  51. package/dist/dashboard/week-heatmap/week-heatmap-streak.d.ts.map +1 -0
  52. package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts +7 -0
  53. package/dist/dashboard/week-heatmap/week-heatmap-summary.d.ts.map +1 -0
  54. package/dist/dashboard/week-heatmap/week-heatmap.d.ts +33 -0
  55. package/dist/dashboard/week-heatmap/week-heatmap.d.ts.map +1 -0
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +57 -56
  59. package/dist/tasks/activity-tab.d.ts +2 -11
  60. package/dist/tasks/activity-tab.d.ts.map +1 -1
  61. package/dist/tasks/conversation-tab.d.ts +2 -21
  62. package/dist/tasks/conversation-tab.d.ts.map +1 -1
  63. package/dist/tasks/files-tab.d.ts +2 -18
  64. package/dist/tasks/files-tab.d.ts.map +1 -1
  65. package/dist/tasks/index.d.ts +13 -6
  66. package/dist/tasks/index.d.ts.map +1 -1
  67. package/dist/tasks/index.js +766 -8
  68. package/dist/tasks/pickers/index.d.ts +16 -0
  69. package/dist/tasks/pickers/index.d.ts.map +1 -0
  70. package/dist/tasks/pickers/task-assignee-picker.d.ts +14 -0
  71. package/dist/tasks/pickers/task-assignee-picker.d.ts.map +1 -0
  72. package/dist/tasks/pickers/task-column-picker.d.ts +13 -0
  73. package/dist/tasks/pickers/task-column-picker.d.ts.map +1 -0
  74. package/dist/tasks/pickers/task-date-picker.d.ts +12 -0
  75. package/dist/tasks/pickers/task-date-picker.d.ts.map +1 -0
  76. package/dist/tasks/pickers/task-label-editor.d.ts +13 -0
  77. package/dist/tasks/pickers/task-label-editor.d.ts.map +1 -0
  78. package/dist/tasks/pickers/task-member-picker.d.ts +14 -0
  79. package/dist/tasks/pickers/task-member-picker.d.ts.map +1 -0
  80. package/dist/tasks/pickers/task-priority-picker.d.ts +12 -0
  81. package/dist/tasks/pickers/task-priority-picker.d.ts.map +1 -0
  82. package/dist/tasks/pickers/task-visibility-picker.d.ts +13 -0
  83. package/dist/tasks/pickers/task-visibility-picker.d.ts.map +1 -0
  84. package/dist/tasks/review-tab.d.ts +4 -20
  85. package/dist/tasks/review-tab.d.ts.map +1 -1
  86. package/dist/tasks/subtasks-tab.d.ts +2 -18
  87. package/dist/tasks/subtasks-tab.d.ts.map +1 -1
  88. package/dist/tasks/tabs/activity-entry.d.ts +9 -0
  89. package/dist/tasks/tabs/activity-entry.d.ts.map +1 -0
  90. package/dist/tasks/tabs/activity-timeline.d.ts +8 -0
  91. package/dist/tasks/tabs/activity-timeline.d.ts.map +1 -0
  92. package/dist/tasks/tabs/file-drop-zone.d.ts +10 -0
  93. package/dist/tasks/tabs/file-drop-zone.d.ts.map +1 -0
  94. package/dist/tasks/tabs/file-item.d.ts +11 -0
  95. package/dist/tasks/tabs/file-item.d.ts.map +1 -0
  96. package/dist/tasks/tabs/file-list.d.ts +8 -0
  97. package/dist/tasks/tabs/file-list.d.ts.map +1 -0
  98. package/dist/tasks/tabs/index.d.ts +34 -0
  99. package/dist/tasks/tabs/index.d.ts.map +1 -0
  100. package/dist/tasks/tabs/message-bubble.d.ts +14 -0
  101. package/dist/tasks/tabs/message-bubble.d.ts.map +1 -0
  102. package/dist/tasks/tabs/message-input.d.ts +16 -0
  103. package/dist/tasks/tabs/message-input.d.ts.map +1 -0
  104. package/dist/tasks/tabs/message-list.d.ts +9 -0
  105. package/dist/tasks/tabs/message-list.d.ts.map +1 -0
  106. package/dist/tasks/tabs/review-card.d.ts +10 -0
  107. package/dist/tasks/tabs/review-card.d.ts.map +1 -0
  108. package/dist/tasks/tabs/review-request-button.d.ts +10 -0
  109. package/dist/tasks/tabs/review-request-button.d.ts.map +1 -0
  110. package/dist/tasks/tabs/review-response-form.d.ts +11 -0
  111. package/dist/tasks/tabs/review-response-form.d.ts.map +1 -0
  112. package/dist/tasks/tabs/subtask-add-form.d.ts +9 -0
  113. package/dist/tasks/tabs/subtask-add-form.d.ts.map +1 -0
  114. package/dist/tasks/tabs/subtask-item.d.ts +12 -0
  115. package/dist/tasks/tabs/subtask-item.d.ts.map +1 -0
  116. package/dist/tasks/tabs/subtask-list.d.ts +8 -0
  117. package/dist/tasks/tabs/subtask-list.d.ts.map +1 -0
  118. package/dist/tasks/tabs/subtask-progress.d.ts +9 -0
  119. package/dist/tasks/tabs/subtask-progress.d.ts.map +1 -0
  120. package/dist/tasks/tabs/visibility-warning.d.ts +7 -0
  121. package/dist/tasks/tabs/visibility-warning.d.ts.map +1 -0
  122. package/dist/tasks/task-action-row/index.d.ts +3 -0
  123. package/dist/tasks/task-action-row/index.d.ts.map +1 -0
  124. package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts +8 -0
  125. package/dist/tasks/task-action-row/task-action-row-checkbox.d.ts.map +1 -0
  126. package/dist/tasks/task-action-row/task-action-row-context.d.ts +21 -0
  127. package/dist/tasks/task-action-row/task-action-row-context.d.ts.map +1 -0
  128. package/dist/tasks/task-action-row/task-action-row-due-date.d.ts +5 -0
  129. package/dist/tasks/task-action-row/task-action-row-due-date.d.ts.map +1 -0
  130. package/dist/tasks/task-action-row/task-action-row-labels.d.ts +8 -0
  131. package/dist/tasks/task-action-row/task-action-row-labels.d.ts.map +1 -0
  132. package/dist/tasks/task-action-row/task-action-row-navigate.d.ts +9 -0
  133. package/dist/tasks/task-action-row/task-action-row-navigate.d.ts.map +1 -0
  134. package/dist/tasks/task-action-row/task-action-row-priority.d.ts +5 -0
  135. package/dist/tasks/task-action-row/task-action-row-priority.d.ts.map +1 -0
  136. package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts +8 -0
  137. package/dist/tasks/task-action-row/task-action-row-project-badge.d.ts.map +1 -0
  138. package/dist/tasks/task-action-row/task-action-row-root.d.ts +14 -0
  139. package/dist/tasks/task-action-row/task-action-row-root.d.ts.map +1 -0
  140. package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts +5 -0
  141. package/dist/tasks/task-action-row/task-action-row-status-badge.d.ts.map +1 -0
  142. package/dist/tasks/task-action-row/task-action-row-title.d.ts +9 -0
  143. package/dist/tasks/task-action-row/task-action-row-title.d.ts.map +1 -0
  144. package/dist/tasks/task-action-row/task-action-row.d.ts +48 -0
  145. package/dist/tasks/task-action-row/task-action-row.d.ts.map +1 -0
  146. package/dist/tasks/task-detail-panel.d.ts.map +1 -1
  147. package/dist/tasks/task-panel.d.ts +104 -0
  148. package/dist/tasks/task-panel.d.ts.map +1 -0
  149. package/dist/tasks/task-properties.d.ts +2 -12
  150. package/dist/tasks/task-properties.d.ts.map +1 -1
  151. package/dist/tasks/task-types.d.ts +104 -0
  152. package/dist/tasks/task-types.d.ts.map +1 -0
  153. package/docs/components/admin/admin-dashboard.md +6 -6
  154. package/docs/components/admin/admin-utils.md +2 -2
  155. package/docs/components/admin/break-admin.md +14 -14
  156. package/docs/components/board/board-provider.md +16 -0
  157. package/docs/components/board/column-empty.md +1 -1
  158. package/docs/components/board/task-card.md +4 -0
  159. package/docs/components/chat/streaming-text.md +1 -1
  160. package/docs/components/client/client-portal-header.md +2 -2
  161. package/docs/components/dashboard/attendance-cta.md +3 -3
  162. package/docs/components/dashboard/daily-brief.md +1 -1
  163. package/docs/components/dashboard/project-health-card.md +90 -0
  164. package/docs/components/dashboard/scratchpad-widget.md +17 -0
  165. package/docs/components/dashboard/scratchpad.md +151 -0
  166. package/docs/components/dashboard/sidebar-scratchpad.md +29 -5
  167. package/docs/components/dashboard/week-heatmap.md +95 -0
  168. package/docs/components/tasks/activity-tab.md +4 -0
  169. package/docs/components/tasks/conversation-tab.md +4 -0
  170. package/docs/components/tasks/files-tab.md +4 -0
  171. package/docs/components/tasks/review-tab.md +5 -1
  172. package/docs/components/tasks/subtasks-tab.md +5 -0
  173. package/docs/components/tasks/task-action-row.md +159 -0
  174. package/docs/components/tasks/task-assignee-picker.md +36 -0
  175. package/docs/components/tasks/task-column-picker.md +37 -0
  176. package/docs/components/tasks/task-date-picker.md +49 -0
  177. package/docs/components/tasks/task-detail-panel.md +256 -84
  178. package/docs/components/tasks/task-label-editor.md +42 -0
  179. package/docs/components/tasks/task-member-picker.md +35 -0
  180. package/docs/components/tasks/task-panel.md +89 -0
  181. package/docs/components/tasks/task-priority-picker.md +37 -0
  182. package/docs/components/tasks/task-properties.md +5 -0
  183. package/docs/components/tasks/task-visibility-picker.md +38 -0
  184. package/llms.txt +40 -13
  185. package/package.json +1 -1
@@ -1,6 +1,26 @@
1
1
  "use client";
2
2
  export { AttendanceCTA, type AttendanceCTAProps } from './attendance-cta';
3
+ export { ProjectHealthCard, type ProjectHealthCardProps, type ProjectHealthData, } from './project-health-card';
3
4
  export { DailyBrief, type BriefData, type DailyBriefProps } from './daily-brief';
4
5
  export { ScratchpadWidget, type ScratchpadItem, type ScratchpadWidgetProps } from './scratchpad-widget';
5
6
  export { SidebarScratchpad, type SidebarScratchpadProps } from './sidebar-scratchpad';
7
+ export { Scratchpad } from './scratchpad';
8
+ export { ScratchpadProvider, useScratchpad, type ScratchpadContextValue, type ScratchpadProviderProps, } from './scratchpad/scratchpad-context';
9
+ export { type ScratchpadRootProps } from './scratchpad/scratchpad-root';
10
+ export { type ScratchpadHeaderProps } from './scratchpad/scratchpad-header';
11
+ export { type ScratchpadListProps } from './scratchpad/scratchpad-list';
12
+ export { type ScratchpadItemProps } from './scratchpad/scratchpad-item';
13
+ export { type ScratchpadAddInputProps } from './scratchpad/scratchpad-add-input';
14
+ export { type ScratchpadEmptyStateProps } from './scratchpad/scratchpad-empty-state';
15
+ export { type ScratchpadProgressRingProps } from './scratchpad/scratchpad-progress-ring';
16
+ export { type ScratchpadFilterToggleProps } from './scratchpad/scratchpad-filter-toggle';
17
+ export { type ScratchpadCollapseProps } from './scratchpad/scratchpad-collapse';
18
+ export { WeekHeatmap, type WeekHeatmapProps } from './week-heatmap';
19
+ export { WeekHeatmapProvider, useWeekHeatmap, type WeekHeatmapContextValue, type WeekHeatmapProviderProps, type WeekDay, } from './week-heatmap/week-heatmap-context';
20
+ export { type WeekHeatmapRootProps } from './week-heatmap/week-heatmap-root';
21
+ export { type WeekHeatmapDayStripProps } from './week-heatmap/week-heatmap-day-strip';
22
+ export { type WeekHeatmapDayProps } from './week-heatmap/week-heatmap-day';
23
+ export { type WeekHeatmapSummaryProps } from './week-heatmap/week-heatmap-summary';
24
+ export { type WeekHeatmapProgressBarProps } from './week-heatmap/week-heatmap-progress-bar';
25
+ export { type WeekHeatmapStreakProps } from './week-heatmap/week-heatmap-streak';
6
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAGrF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uCAAuC,CAAA;AACxF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uCAAuC,CAAA;AACxF,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAG/E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,OAAO,GACb,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AACrF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,0CAA0C,CAAA;AAC3F,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oCAAoC,CAAA"}
@@ -1,8 +1,454 @@
1
1
  "use client";
2
- import { A as r, D as t, S as c, a as d } from "../_chunks/sidebar-scratchpad.js";
2
+ import { A as Me, D as Re, b as je, c as Ae, S as Le, a as Be, u as Ie } from "../_chunks/sidebar-scratchpad.js";
3
+ import { jsx as r, jsxs as u, Fragment as G } from "react/jsx-runtime";
4
+ import * as k from "react";
5
+ import { useMemo as U, useContext as Z, createContext as q, useState as J, useRef as Q, useCallback as V } from "react";
6
+ import { motion as C } from "framer-motion";
7
+ import { cn as b } from "@devalok/shilp-sutra/ui/lib/utils";
8
+ import { motionProps as M } from "@devalok/shilp-sutra/ui/lib/motion";
9
+ import { Badge as S } from "@devalok/shilp-sutra/ui/badge";
10
+ import { Progress as R } from "@devalok/shilp-sutra/ui/progress";
11
+ import { MotionStagger as ee, MotionPop as te, MotionStaggerItem as re } from "@devalok/shilp-sutra/motion/primitives";
12
+ import { Tooltip as ae, TooltipTrigger as se, TooltipContent as ne, TooltipProvider as oe } from "@devalok/shilp-sutra/ui/tooltip";
13
+ function ce(t, e, s, o) {
14
+ if (t.length < 2) return { path: "", endX: 0, endY: 0, startX: 0 };
15
+ const a = t.length, i = e - o * 2, c = s - o * 2;
16
+ let m = Math.min(...t), p = Math.max(...t);
17
+ if (p - m < 0.1) {
18
+ const d = (p + m) / 2;
19
+ m = d - 0.05, p = d + 0.05;
20
+ }
21
+ const f = t.map((d, h) => o + h / (a - 1) * i), n = t.map(
22
+ (d) => o + (1 - (d - m) / (p - m)) * c
23
+ ), l = [];
24
+ l.push(`M ${f[0]} ${n[0]}`);
25
+ for (let d = 0; d < a - 1; d++) {
26
+ const h = f[Math.max(0, d - 1)], g = n[Math.max(0, d - 1)], w = f[d], x = n[d], N = f[d + 1], v = n[d + 1], B = f[Math.min(a - 1, d + 2)], I = n[Math.min(a - 1, d + 2)], E = (N - h) / 6, X = (v - g) / 6, z = (B - w) / 6, F = (I - x) / 6, K = w + E, O = x + X, Y = N - z, _ = v - F;
27
+ l.push(`C ${K} ${O}, ${Y} ${_}, ${N} ${v}`);
28
+ }
29
+ return {
30
+ path: l.join(" "),
31
+ endX: f[a - 1],
32
+ endY: n[a - 1],
33
+ startX: f[0]
34
+ };
35
+ }
36
+ function le(t) {
37
+ const e = t.length;
38
+ if (e < 6)
39
+ return { stroke: "var(--warning-9)", fill: "var(--warning-4)" };
40
+ const s = (t[0] + t[1] + t[2]) / 3, a = (t[e - 3] + t[e - 2] + t[e - 1]) / 3 - s;
41
+ return a > 0.05 ? { stroke: "var(--success-9)", fill: "var(--success-4)" } : a < -0.05 ? { stroke: "var(--error-9)", fill: "var(--error-4)" } : { stroke: "var(--warning-9)", fill: "var(--warning-4)" };
42
+ }
43
+ function ie({ trend: t, id: e }) {
44
+ const { path: i, endX: c, endY: m, startX: p } = ce(
45
+ t,
46
+ 48,
47
+ 20,
48
+ 2
49
+ ), { stroke: f, fill: n } = le(t);
50
+ if (!i) return null;
51
+ const l = `sparkline-fill-${e}`;
52
+ return /* @__PURE__ */ u(
53
+ "svg",
54
+ {
55
+ width: 48,
56
+ height: 20,
57
+ viewBox: "0 0 48 20",
58
+ className: "sparkline",
59
+ "aria-hidden": "true",
60
+ children: [
61
+ /* @__PURE__ */ r("defs", { children: /* @__PURE__ */ u("linearGradient", { id: l, x1: "0", y1: "0", x2: "0", y2: "1", children: [
62
+ /* @__PURE__ */ r("stop", { offset: "0%", stopColor: n, stopOpacity: 0.15 }),
63
+ /* @__PURE__ */ r("stop", { offset: "100%", stopColor: n, stopOpacity: 0 })
64
+ ] }) }),
65
+ /* @__PURE__ */ r(
66
+ "path",
67
+ {
68
+ d: `${i} L ${c} 18 L ${p} 18 Z`,
69
+ fill: `url(#${l})`
70
+ }
71
+ ),
72
+ /* @__PURE__ */ r(
73
+ "path",
74
+ {
75
+ d: i,
76
+ fill: "none",
77
+ stroke: f,
78
+ strokeWidth: 1.5,
79
+ strokeLinecap: "round",
80
+ strokeLinejoin: "round"
81
+ }
82
+ ),
83
+ /* @__PURE__ */ r("circle", { cx: c, cy: m, r: 2, fill: f })
84
+ ]
85
+ }
86
+ );
87
+ }
88
+ function de({
89
+ className: t,
90
+ ...e
91
+ }) {
92
+ return /* @__PURE__ */ r(
93
+ "div",
94
+ {
95
+ className: b(
96
+ "rounded-ds-md border border-surface-border bg-surface-1 p-ds-04",
97
+ t
98
+ ),
99
+ ...e,
100
+ children: /* @__PURE__ */ u("div", { className: "flex flex-col gap-ds-03", children: [
101
+ /* @__PURE__ */ u("div", { className: "flex justify-between", children: [
102
+ /* @__PURE__ */ r("div", { className: "h-5 w-32 animate-pulse rounded bg-surface-2" }),
103
+ /* @__PURE__ */ r("div", { className: "h-5 w-16 animate-pulse rounded bg-surface-2" })
104
+ ] }),
105
+ /* @__PURE__ */ r("div", { className: "h-2 w-full animate-pulse rounded bg-surface-2" }),
106
+ /* @__PURE__ */ r("div", { className: "h-4 w-48 animate-pulse rounded bg-surface-2" })
107
+ ] })
108
+ }
109
+ );
110
+ }
111
+ function ue({
112
+ urgent: t,
113
+ overdue: e
114
+ }) {
115
+ return t && t > 0 ? /* @__PURE__ */ u(S, { variant: "solid", color: "error", size: "xs", className: "whitespace-nowrap", children: [
116
+ t,
117
+ " urgent"
118
+ ] }) : e && e > 0 ? /* @__PURE__ */ u(S, { variant: "subtle", color: "warning", size: "xs", className: "whitespace-nowrap", children: [
119
+ e,
120
+ " overdue"
121
+ ] }) : /* @__PURE__ */ r(S, { variant: "subtle", color: "success", size: "xs", className: "whitespace-nowrap", children: "on track" });
122
+ }
123
+ function me(t) {
124
+ return t > 75 ? "success" : t >= 25 ? "warning" : "error";
125
+ }
126
+ const pe = k.forwardRef(function({ project: e, onClick: s, loading: o, className: a, ...i }, c) {
127
+ if (o)
128
+ return /* @__PURE__ */ r(de, { className: a, ...i });
129
+ const { id: m, name: p, completed: f, total: n, overdue: l, urgent: d, contextLine: h, trend: g } = e, w = n > 0 ? Math.round(f / n * 100) : 0, x = [];
130
+ h && x.push(
131
+ /* @__PURE__ */ r("span", { children: h }, "ctx")
132
+ ), l && l > 0 && (x.length > 0 && x.push(
133
+ /* @__PURE__ */ r("span", { "aria-hidden": "true", children: " · " }, "sep")
134
+ ), x.push(
135
+ /* @__PURE__ */ u("span", { className: "text-error-11", children: [
136
+ l,
137
+ " overdue"
138
+ ] }, "overdue")
139
+ ));
140
+ const N = s ? {
141
+ whileTap: { scale: 0.98 },
142
+ onClick: s,
143
+ role: "button",
144
+ tabIndex: 0,
145
+ onKeyDown: (v) => {
146
+ (v.key === "Enter" || v.key === " ") && (v.preventDefault(), s());
147
+ }
148
+ } : {};
149
+ return /* @__PURE__ */ r(
150
+ C.div,
151
+ {
152
+ ref: c,
153
+ "data-testid": "project-health-card",
154
+ className: b(
155
+ "rounded-ds-md border border-surface-border bg-surface-1 p-ds-04",
156
+ s && "cursor-pointer hover:bg-surface-2 transition-colors duration-150",
157
+ a
158
+ ),
159
+ ...N,
160
+ ...M(i),
161
+ children: /* @__PURE__ */ u("div", { className: "flex flex-col gap-ds-03", children: [
162
+ /* @__PURE__ */ u("div", { className: "flex items-center justify-between gap-ds-02", children: [
163
+ /* @__PURE__ */ r("span", { className: "min-w-0 truncate text-ds-md font-semibold text-surface-fg", children: p }),
164
+ /* @__PURE__ */ r(ue, { urgent: d, overdue: l })
165
+ ] }),
166
+ /* @__PURE__ */ u("div", { className: "flex items-center gap-ds-03", children: [
167
+ /* @__PURE__ */ u("div", { className: "flex-1 flex items-center gap-ds-03", children: [
168
+ /* @__PURE__ */ r("div", { className: "flex-1", children: /* @__PURE__ */ r(R, { size: "sm", color: me(w), value: w, "aria-label": `${p} progress` }) }),
169
+ /* @__PURE__ */ u("span", { className: "shrink-0 text-ds-sm text-surface-fg-muted", children: [
170
+ f,
171
+ "/",
172
+ n,
173
+ " tasks"
174
+ ] })
175
+ ] }),
176
+ g && g.length >= 2 && /* @__PURE__ */ r(ie, { trend: g, id: m })
177
+ ] }),
178
+ x.length > 0 && /* @__PURE__ */ r("div", { className: "text-ds-xs text-surface-fg-subtle", children: x })
179
+ ] })
180
+ }
181
+ );
182
+ });
183
+ pe.displayName = "ProjectHealthCard";
184
+ const j = q(null);
185
+ function y() {
186
+ const t = Z(j);
187
+ if (!t)
188
+ throw new Error("useWeekHeatmap must be used within a WeekHeatmapProvider");
189
+ return t;
190
+ }
191
+ function fe(t, e) {
192
+ const s = t.filter((a) => a.date < e).sort((a, i) => i.date.localeCompare(a.date));
193
+ let o = 0;
194
+ for (const a of s)
195
+ if (a.total > 0 && a.completed === a.total)
196
+ o++;
197
+ else
198
+ break;
199
+ return o;
200
+ }
201
+ function A({
202
+ children: t,
203
+ days: e,
204
+ onDayClick: s,
205
+ overdue: o,
206
+ today: a
207
+ }) {
208
+ const i = a ?? (/* @__PURE__ */ new Date()).toISOString().split("T")[0], c = U(() => {
209
+ const m = e.reduce((n, l) => n + l.completed, 0), p = e.reduce((n, l) => n + l.total, 0), f = fe(e, i);
210
+ return {
211
+ days: e,
212
+ onDayClick: s,
213
+ overdue: o,
214
+ totalCompleted: m,
215
+ totalTasks: p,
216
+ streak: f,
217
+ today: i
218
+ };
219
+ }, [e, s, o, i]);
220
+ return /* @__PURE__ */ r(j.Provider, { value: c, children: t });
221
+ }
222
+ A.displayName = "WeekHeatmapProvider";
223
+ const H = k.forwardRef(
224
+ function({ days: e, onDayClick: s, overdue: o, today: a, className: i, children: c, ...m }, p) {
225
+ return /* @__PURE__ */ r(
226
+ A,
227
+ {
228
+ days: e,
229
+ onDayClick: s,
230
+ overdue: o,
231
+ today: a,
232
+ children: /* @__PURE__ */ r("div", { ref: p, className: b("flex flex-col gap-ds-04", i), ...m, children: c })
233
+ }
234
+ );
235
+ }
236
+ );
237
+ H.displayName = "WeekHeatmapRoot";
238
+ const he = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
239
+ function ge(t) {
240
+ const s = (/* @__PURE__ */ new Date(t + "T00:00:00")).getDay(), o = s === 0 ? 6 : s - 1;
241
+ return he[o];
242
+ }
243
+ function xe(t) {
244
+ return (/* @__PURE__ */ new Date(t + "T00:00:00")).toLocaleDateString("en-US", {
245
+ weekday: "long",
246
+ month: "short",
247
+ day: "numeric"
248
+ });
249
+ }
250
+ function ke(t, e) {
251
+ return t.date === e ? "today" : t.total === 0 ? "empty" : t.date > e ? "future" : t.completed === t.total ? "complete" : t.completed > 0 ? "partial" : "none";
252
+ }
253
+ const be = {
254
+ complete: "bg-success-9 text-success-11",
255
+ partial: "bg-warning-9 text-warning-11",
256
+ none: "bg-error-9 text-error-11",
257
+ today: "bg-info-9 ring-1 ring-info-7 text-info-11 font-medium",
258
+ future: "bg-surface-3 text-surface-fg-muted",
259
+ empty: "bg-surface-2 border border-dashed border-surface-border text-surface-fg-subtle"
260
+ }, W = k.forwardRef(
261
+ function({ day: e, index: s, focusedIndex: o, onFocusChange: a }, i) {
262
+ const { onDayClick: c, today: m } = y(), p = ke(e, m), f = ge(e.date), n = p === "empty", l = /* @__PURE__ */ u("div", { className: "flex flex-col", children: [
263
+ /* @__PURE__ */ r("span", { children: xe(e.date) }),
264
+ /* @__PURE__ */ r("span", { children: e.total > 0 ? `${e.completed} of ${e.total} completed` : "No tasks" })
265
+ ] }), d = () => {
266
+ n || p === "future" || c == null || c(e.date);
267
+ }, h = (g) => {
268
+ (g.key === "Enter" || g.key === " ") && (g.preventDefault(), c == null || c(e.date));
269
+ };
270
+ return /* @__PURE__ */ u(ae, { children: [
271
+ /* @__PURE__ */ r(se, { asChild: !0, children: /* @__PURE__ */ u(
272
+ C.div,
273
+ {
274
+ ref: i,
275
+ role: "gridcell",
276
+ tabIndex: o === s ? 0 : -1,
277
+ "aria-disabled": n || void 0,
278
+ "aria-label": `${f}, ${e.completed} of ${e.total} completed`,
279
+ className: "flex cursor-pointer flex-col items-center gap-ds-02 outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-7",
280
+ onClick: d,
281
+ onFocus: () => a(s),
282
+ onKeyDown: h,
283
+ whileTap: { scale: 0.95 },
284
+ children: [
285
+ /* @__PURE__ */ r("span", { className: "text-ds-xs text-surface-fg-muted", children: f }),
286
+ /* @__PURE__ */ r(
287
+ "div",
288
+ {
289
+ className: b(
290
+ "flex h-8 w-10 items-center justify-center rounded-ds-md transition-colors duration-150",
291
+ be[p]
292
+ )
293
+ }
294
+ ),
295
+ e.total > 0 ? /* @__PURE__ */ u("span", { className: "text-ds-xs text-surface-fg-muted", children: [
296
+ e.completed,
297
+ "/",
298
+ e.total
299
+ ] }) : /* @__PURE__ */ r("span", { className: "text-ds-xs text-surface-fg-subtle", children: "—" })
300
+ ]
301
+ }
302
+ ) }),
303
+ /* @__PURE__ */ r(ne, { children: l })
304
+ ] });
305
+ }
306
+ );
307
+ W.displayName = "WeekHeatmapDay";
308
+ const D = k.forwardRef(
309
+ function({ className: e, ...s }, o) {
310
+ const { days: a, today: i } = y(), [c, m] = J(0), p = Q([]), f = V(
311
+ (n) => {
312
+ var d;
313
+ let l = c;
314
+ switch (n.key) {
315
+ case "ArrowRight":
316
+ n.preventDefault(), l = Math.min(c + 1, a.length - 1);
317
+ break;
318
+ case "ArrowLeft":
319
+ n.preventDefault(), l = Math.max(c - 1, 0);
320
+ break;
321
+ case "Home":
322
+ n.preventDefault(), l = 0;
323
+ break;
324
+ case "End":
325
+ n.preventDefault(), l = a.length - 1;
326
+ break;
327
+ default:
328
+ return;
329
+ }
330
+ m(l), (d = p.current[l]) == null || d.focus();
331
+ },
332
+ [c, a.length]
333
+ );
334
+ return /* @__PURE__ */ r(oe, { children: /* @__PURE__ */ r(
335
+ ee,
336
+ {
337
+ ref: o,
338
+ role: "grid",
339
+ "aria-label": "Weekly task completion",
340
+ delay: 0.05,
341
+ className: b("grid grid-cols-7 gap-ds-03", e),
342
+ onKeyDown: f,
343
+ ...M(s),
344
+ children: /* @__PURE__ */ r("div", { role: "row", className: "contents", children: a.map((n, l) => {
345
+ const d = n.date === i, h = /* @__PURE__ */ r(
346
+ W,
347
+ {
348
+ ref: (g) => {
349
+ p.current[l] = g;
350
+ },
351
+ day: n,
352
+ index: l,
353
+ focusedIndex: c,
354
+ onFocusChange: m
355
+ }
356
+ );
357
+ return d ? /* @__PURE__ */ r(te, { show: !0, preset: "bouncy", children: h }, n.date) : /* @__PURE__ */ r(re, { children: h }, n.date);
358
+ }) })
359
+ }
360
+ ) });
361
+ }
362
+ );
363
+ D.displayName = "WeekHeatmapDayStrip";
364
+ const $ = k.forwardRef(
365
+ function({ className: e, ...s }, o) {
366
+ const { totalCompleted: a, totalTasks: i, overdue: c } = y(), m = i - a;
367
+ return /* @__PURE__ */ u(
368
+ "div",
369
+ {
370
+ ref: o,
371
+ className: b("flex items-center gap-ds-03 text-ds-sm", e),
372
+ ...s,
373
+ children: [
374
+ /* @__PURE__ */ u("span", { className: "text-success-11", children: [
375
+ a,
376
+ " completed"
377
+ ] }),
378
+ /* @__PURE__ */ r("span", { className: "text-surface-fg-subtle", children: "·" }),
379
+ /* @__PURE__ */ u("span", { className: "text-surface-fg-muted", children: [
380
+ m,
381
+ " remaining"
382
+ ] }),
383
+ c != null && c > 0 && /* @__PURE__ */ u(G, { children: [
384
+ /* @__PURE__ */ r("span", { className: "text-surface-fg-subtle", children: "·" }),
385
+ /* @__PURE__ */ u("span", { className: "text-error-11", children: [
386
+ c,
387
+ " overdue"
388
+ ] })
389
+ ] })
390
+ ]
391
+ }
392
+ );
393
+ }
394
+ );
395
+ $.displayName = "WeekHeatmapSummary";
396
+ const P = k.forwardRef(
397
+ function({ className: e, ...s }, o) {
398
+ const { totalCompleted: a, totalTasks: i } = y(), c = i > 0 ? Math.round(a / i * 100) : 0;
399
+ return /* @__PURE__ */ r("div", { ref: o, className: b(e), ...s, children: /* @__PURE__ */ r(R, { color: "success", size: "sm", value: c, "aria-label": "Weekly completion progress" }) });
400
+ }
401
+ );
402
+ P.displayName = "WeekHeatmapProgressBar";
403
+ const T = k.forwardRef(
404
+ function({ className: e, ...s }, o) {
405
+ const { streak: a } = y();
406
+ return a <= 1 ? null : /* @__PURE__ */ u(
407
+ "div",
408
+ {
409
+ ref: o,
410
+ className: b("text-ds-sm font-medium text-warning-11", e),
411
+ ...s,
412
+ children: [
413
+ "🔥 ",
414
+ a,
415
+ "-day streak"
416
+ ]
417
+ }
418
+ );
419
+ }
420
+ );
421
+ T.displayName = "WeekHeatmapStreak";
422
+ const L = k.forwardRef(
423
+ function(e, s) {
424
+ const { children: o, ...a } = e;
425
+ return /* @__PURE__ */ u(H, { ref: s, ...a, children: [
426
+ /* @__PURE__ */ r(D, {}),
427
+ /* @__PURE__ */ r(T, {}),
428
+ /* @__PURE__ */ r($, {}),
429
+ /* @__PURE__ */ r(P, {})
430
+ ] });
431
+ }
432
+ );
433
+ L.displayName = "WeekHeatmap";
434
+ const Pe = Object.assign(L, {
435
+ Root: H,
436
+ DayStrip: D,
437
+ Day: W,
438
+ Summary: $,
439
+ ProgressBar: P,
440
+ Streak: T
441
+ });
3
442
  export {
4
- r as AttendanceCTA,
5
- t as DailyBrief,
6
- c as ScratchpadWidget,
7
- d as SidebarScratchpad
443
+ Me as AttendanceCTA,
444
+ Re as DailyBrief,
445
+ pe as ProjectHealthCard,
446
+ je as Scratchpad,
447
+ Ae as ScratchpadProvider,
448
+ Le as ScratchpadWidget,
449
+ Be as SidebarScratchpad,
450
+ Pe as WeekHeatmap,
451
+ A as WeekHeatmapProvider,
452
+ Ie as useScratchpad,
453
+ y as useWeekHeatmap
8
454
  };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ProjectHealthData {
4
+ id: string;
5
+ name: string;
6
+ completed: number;
7
+ total: number;
8
+ overdue?: number;
9
+ urgent?: number;
10
+ contextLine?: string;
11
+ /** 7 values (0–1) for sparkline */
12
+ trend?: number[];
13
+ }
14
+ export interface ProjectHealthCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick'> {
15
+ project: ProjectHealthData;
16
+ onClick?: () => void;
17
+ loading?: boolean;
18
+ className?: string;
19
+ }
20
+ declare const ProjectHealthCard: React.ForwardRefExoticComponent<ProjectHealthCardProps & React.RefAttributes<HTMLDivElement>>;
21
+ export { ProjectHealthCard };
22
+ //# sourceMappingURL=project-health-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-health-card.d.ts","sourceRoot":"","sources":["../../src/dashboard/project-health-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC7D,OAAO,EAAE,iBAAiB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA2ND,QAAA,MAAM,iBAAiB,+FA+FrB,CAAA;AAIF,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ export { Scratchpad } from './scratchpad';
3
+ export { ScratchpadRoot, type ScratchpadRootProps } from './scratchpad-root';
4
+ export { ScratchpadHeader, type ScratchpadHeaderProps } from './scratchpad-header';
5
+ export { ScratchpadList, type ScratchpadListProps } from './scratchpad-list';
6
+ export { ScratchpadItem, type ScratchpadItemProps } from './scratchpad-item';
7
+ export { ScratchpadAddInput, type ScratchpadAddInputProps } from './scratchpad-add-input';
8
+ export { ScratchpadEmptyState, type ScratchpadEmptyStateProps } from './scratchpad-empty-state';
9
+ export { ScratchpadProgressRing, type ScratchpadProgressRingProps } from './scratchpad-progress-ring';
10
+ export { ScratchpadFilterToggle, type ScratchpadFilterToggleProps } from './scratchpad-filter-toggle';
11
+ export { ScratchpadCollapse, type ScratchpadCollapseProps } from './scratchpad-collapse';
12
+ export { ScratchpadProvider, useScratchpad, type ScratchpadItem as ScratchpadItemData, type ScratchpadContextValue, type ScratchpadProviderProps, } from './scratchpad-context';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAGxF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,cAAc,IAAI,kBAAkB,EACzC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ScratchpadAddInputProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Placeholder text for the input */
5
+ placeholder?: string;
6
+ /** Label for the trigger button */
7
+ triggerLabel?: string;
8
+ }
9
+ declare const ScratchpadAddInput: React.ForwardRefExoticComponent<ScratchpadAddInputProps & React.RefAttributes<HTMLDivElement>>;
10
+ export { ScratchpadAddInput };
11
+ //# sourceMappingURL=scratchpad-add-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratchpad-add-input.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/scratchpad-add-input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnF,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAMD,QAAA,MAAM,kBAAkB,gGAiFvB,CAAA;AAID,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ScratchpadCollapseProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Header label */
5
+ label?: string;
6
+ /** Whether expanded on first render */
7
+ defaultOpen?: boolean;
8
+ /** Badge count shown next to the label */
9
+ badgeCount?: number;
10
+ /** Header text size class override */
11
+ headerClassName?: string;
12
+ }
13
+ declare const ScratchpadCollapse: React.ForwardRefExoticComponent<ScratchpadCollapseProps & React.RefAttributes<HTMLDivElement>>;
14
+ export { ScratchpadCollapse };
15
+ //# sourceMappingURL=scratchpad-collapse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratchpad-collapse.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/scratchpad-collapse.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnF,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAMD,QAAA,MAAM,kBAAkB,gGAqDvB,CAAA;AAID,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ScratchpadItem {
4
+ id: string;
5
+ text: string;
6
+ done: boolean;
7
+ }
8
+ export interface ScratchpadContextValue {
9
+ items: ScratchpadItem[];
10
+ visibleItems: ScratchpadItem[];
11
+ maxItems: number;
12
+ showCompleted: boolean;
13
+ setShowCompleted: (show: boolean) => void;
14
+ onToggle: (id: string, done: boolean) => void;
15
+ onAdd?: (text: string) => void;
16
+ onDelete?: (id: string) => void;
17
+ onEdit?: (id: string, text: string) => void;
18
+ onReorder?: (items: ScratchpadItem[]) => void;
19
+ onPromote?: (id: string) => void;
20
+ canAdd: boolean;
21
+ canDelete: boolean;
22
+ canEdit: boolean;
23
+ canReorder: boolean;
24
+ canPromote: boolean;
25
+ }
26
+ export interface ScratchpadProviderProps {
27
+ children: React.ReactNode;
28
+ items: ScratchpadItem[];
29
+ maxItems?: number;
30
+ onToggle: (id: string, done: boolean) => void;
31
+ onAdd?: (text: string) => void;
32
+ onDelete?: (id: string) => void;
33
+ onEdit?: (id: string, text: string) => void;
34
+ onReorder?: (items: ScratchpadItem[]) => void;
35
+ onPromote?: (id: string) => void;
36
+ defaultShowCompleted?: boolean;
37
+ }
38
+ export declare function useScratchpad(): ScratchpadContextValue;
39
+ declare function ScratchpadProvider({ children, items, maxItems, onToggle, onAdd, onDelete, onEdit, onReorder, onPromote, defaultShowCompleted, }: ScratchpadProviderProps): import("react/jsx-runtime").JSX.Element;
40
+ declare namespace ScratchpadProvider {
41
+ var displayName: string;
42
+ }
43
+ export { ScratchpadProvider };
44
+ //# sourceMappingURL=scratchpad-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratchpad-context.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/scratchpad-context.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,YAAY,EAAE,cAAc,EAAE,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACzC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAQD,wBAAgB,aAAa,IAAI,sBAAsB,CAMtD;AAMD,iBAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,QAAa,EACb,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,oBAA2B,GAC5B,EAAE,uBAAuB,2CA+BzB;kBA1CQ,kBAAkB;;;AA8C3B,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ScratchpadEmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Icon shown above the message */
5
+ icon?: React.ComponentType<{
6
+ className?: string;
7
+ }>;
8
+ /** Message displayed when no items */
9
+ message?: string;
10
+ }
11
+ declare const ScratchpadEmptyState: React.ForwardRefExoticComponent<ScratchpadEmptyStateProps & React.RefAttributes<HTMLDivElement>>;
12
+ export { ScratchpadEmptyState };
13
+ //# sourceMappingURL=scratchpad-empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratchpad-empty-state.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/scratchpad-empty-state.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrF,mCAAmC;IACnC,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,QAAA,MAAM,oBAAoB,kGAwBzB,CAAA;AAID,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import * as React from 'react';
3
+ export interface ScratchpadFilterToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
4
+ }
5
+ declare const ScratchpadFilterToggle: React.ForwardRefExoticComponent<ScratchpadFilterToggleProps & React.RefAttributes<HTMLButtonElement>>;
6
+ export { ScratchpadFilterToggle };
7
+ //# sourceMappingURL=scratchpad-filter-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scratchpad-filter-toggle.d.ts","sourceRoot":"","sources":["../../../src/dashboard/scratchpad/scratchpad-filter-toggle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAAG;AAM5E,QAAA,MAAM,sBAAsB,uGAsB3B,CAAA;AAID,OAAO,EAAE,sBAAsB,EAAE,CAAA"}