@joewinke/jatui 0.1.22 → 0.1.24

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 (124) hide show
  1. package/CLAUDE.md +244 -0
  2. package/package.json +23 -10
  3. package/src/lib/actions/collapse.ts +0 -134
  4. package/src/lib/actions/railNav.ts +0 -473
  5. package/src/lib/components/AnnotationLayer.svelte +0 -108
  6. package/src/lib/components/AnnotationPanel.svelte +0 -319
  7. package/src/lib/components/AudioWaveform.svelte +0 -698
  8. package/src/lib/components/AvailabilityModal.svelte +0 -177
  9. package/src/lib/components/AvatarUpload.svelte +0 -234
  10. package/src/lib/components/Badge.svelte +0 -38
  11. package/src/lib/components/BookingForm.svelte +0 -278
  12. package/src/lib/components/BurndownChart.svelte +0 -778
  13. package/src/lib/components/Button.svelte +0 -81
  14. package/src/lib/components/CalendarPicker.svelte +0 -284
  15. package/src/lib/components/Card.svelte +0 -67
  16. package/src/lib/components/CharacterCounter.svelte +0 -82
  17. package/src/lib/components/ChipInput.svelte +0 -609
  18. package/src/lib/components/Collapse.svelte +0 -82
  19. package/src/lib/components/ColorSelector.svelte +0 -167
  20. package/src/lib/components/CommentThread.svelte +0 -773
  21. package/src/lib/components/ConfirmDialog.svelte +0 -348
  22. package/src/lib/components/ConfirmModal.svelte +0 -142
  23. package/src/lib/components/ContextMenu.svelte +0 -188
  24. package/src/lib/components/CountdownTimer.svelte +0 -94
  25. package/src/lib/components/DateRangePicker.svelte +0 -194
  26. package/src/lib/components/Drawer.svelte +0 -143
  27. package/src/lib/components/EmojiPicker.svelte +0 -159
  28. package/src/lib/components/EntityPreviewCard.svelte +0 -104
  29. package/src/lib/components/FileDropzone.svelte +0 -493
  30. package/src/lib/components/FilePicker.svelte +0 -488
  31. package/src/lib/components/FileThumbnail.svelte +0 -80
  32. package/src/lib/components/FilterDropdown.svelte +0 -203
  33. package/src/lib/components/FloatingActionBar.svelte +0 -354
  34. package/src/lib/components/GPSTracker.svelte +0 -202
  35. package/src/lib/components/HunkDiffView.svelte +0 -348
  36. package/src/lib/components/ImageLightbox.svelte +0 -274
  37. package/src/lib/components/ImageUpload.svelte +0 -147
  38. package/src/lib/components/InlineEdit.svelte +0 -291
  39. package/src/lib/components/InputDialog.svelte +0 -327
  40. package/src/lib/components/KeyboardShortcutsOverlay.svelte +0 -296
  41. package/src/lib/components/LazyImage.svelte +0 -123
  42. package/src/lib/components/LinkShortener.svelte +0 -274
  43. package/src/lib/components/LoadingSpinner.svelte +0 -106
  44. package/src/lib/components/LocationMap.svelte +0 -186
  45. package/src/lib/components/MapView.svelte +0 -341
  46. package/src/lib/components/MarkupEditor.svelte +0 -485
  47. package/src/lib/components/MarkupOverlay.svelte +0 -55
  48. package/src/lib/components/MediaWorkbench.svelte +0 -871
  49. package/src/lib/components/MilestoneCard.svelte +0 -98
  50. package/src/lib/components/MilestoneTimeline.svelte +0 -91
  51. package/src/lib/components/Modal.svelte +0 -244
  52. package/src/lib/components/PDFViewer.svelte +0 -105
  53. package/src/lib/components/PdfThumbnail.svelte +0 -63
  54. package/src/lib/components/PhoneInput.svelte +0 -212
  55. package/src/lib/components/ResizableDivider.svelte +0 -307
  56. package/src/lib/components/ResizablePanel.svelte +0 -305
  57. package/src/lib/components/SearchDropdown.svelte +0 -421
  58. package/src/lib/components/SelectInput.svelte +0 -237
  59. package/src/lib/components/SidebarUserFooter.svelte +0 -34
  60. package/src/lib/components/SignaturePad.svelte +0 -175
  61. package/src/lib/components/SmartImageEditor.svelte +0 -720
  62. package/src/lib/components/SortDropdown.svelte +0 -156
  63. package/src/lib/components/Sparkline.svelte +0 -116
  64. package/src/lib/components/SpeechForm.svelte +0 -114
  65. package/src/lib/components/StatusBadge.svelte +0 -157
  66. package/src/lib/components/TaskTypeIcon.svelte +0 -54
  67. package/src/lib/components/TextArea.svelte +0 -162
  68. package/src/lib/components/TextInput.svelte +0 -131
  69. package/src/lib/components/ThemeSelector.svelte +0 -206
  70. package/src/lib/components/TimeSlotPicker.svelte +0 -162
  71. package/src/lib/components/UserAvatar.svelte +0 -72
  72. package/src/lib/components/VariablePicker.svelte +0 -170
  73. package/src/lib/components/VoicePlayer.svelte +0 -422
  74. package/src/lib/components/linked-columns/LinkedColumns.svelte +0 -526
  75. package/src/lib/components/markup.ts +0 -287
  76. package/src/lib/components/messaging/Avatar.svelte +0 -81
  77. package/src/lib/components/messaging/ChannelInfoModal.svelte +0 -163
  78. package/src/lib/components/messaging/ChannelList.svelte +0 -107
  79. package/src/lib/components/messaging/ChannelMemberAvatarStack.svelte +0 -69
  80. package/src/lib/components/messaging/ChannelMembersModal.svelte +0 -182
  81. package/src/lib/components/messaging/CreateChannelModal.svelte +0 -190
  82. package/src/lib/components/messaging/DirectMessageList.svelte +0 -145
  83. package/src/lib/components/messaging/EmojiSelector.svelte +0 -261
  84. package/src/lib/components/messaging/MentionAutocomplete.svelte +0 -193
  85. package/src/lib/components/messaging/MessageAttachment.svelte +0 -273
  86. package/src/lib/components/messaging/MessageAttachmentUpload.svelte +0 -243
  87. package/src/lib/components/messaging/MessageInput.svelte +0 -452
  88. package/src/lib/components/messaging/MessageItem.svelte +0 -341
  89. package/src/lib/components/messaging/MessageThread.svelte +0 -306
  90. package/src/lib/components/messaging/NotificationSettingsModal.svelte +0 -234
  91. package/src/lib/components/messaging/QuotedMessageDisplay.svelte +0 -123
  92. package/src/lib/components/messaging/StartDMModal.svelte +0 -100
  93. package/src/lib/components/messaging/ThreadPanel.svelte +0 -153
  94. package/src/lib/components/pipeline/DESIGN.md +0 -361
  95. package/src/lib/components/pipeline/Pipeline.svelte +0 -391
  96. package/src/lib/components/pipeline/PipelineCard.svelte +0 -94
  97. package/src/lib/components/pipeline/PipelineColumn.svelte +0 -163
  98. package/src/lib/components/replay/ChapterTimeline.svelte +0 -326
  99. package/src/lib/components/session-nav/transcriptModel.ts +0 -352
  100. package/src/lib/data/emojis.ts +0 -1208
  101. package/src/lib/index.ts +0 -405
  102. package/src/lib/stores/confirmDialog.svelte.ts +0 -48
  103. package/src/lib/stores/inputDialog.svelte.ts +0 -51
  104. package/src/lib/styles/rail.css +0 -63
  105. package/src/lib/types/annotation.ts +0 -38
  106. package/src/lib/types/booking.ts +0 -143
  107. package/src/lib/types/comments.ts +0 -97
  108. package/src/lib/types/entityPreview.ts +0 -45
  109. package/src/lib/types/filePicker.ts +0 -16
  110. package/src/lib/types/googleMaps.d.ts +0 -51
  111. package/src/lib/types/maps.ts +0 -43
  112. package/src/lib/types/messaging.ts +0 -459
  113. package/src/lib/types/milestone.ts +0 -22
  114. package/src/lib/types/pipeline.ts +0 -150
  115. package/src/lib/types/smartImageEditor.ts +0 -39
  116. package/src/lib/types/templateVars.ts +0 -36
  117. package/src/lib/utils/currency.ts +0 -20
  118. package/src/lib/utils/daisyuiColors.ts +0 -243
  119. package/src/lib/utils/dateFormatters.ts +0 -196
  120. package/src/lib/utils/googleMapsLoader.ts +0 -84
  121. package/src/lib/utils/mentionParser.ts +0 -188
  122. package/src/lib/utils/phone.ts +0 -80
  123. package/src/lib/utils/phoneFormat.ts +0 -74
  124. package/src/lib/utils/taskUtils.ts +0 -75
package/src/lib/index.ts DELETED
@@ -1,405 +0,0 @@
1
- // Actions
2
- export { railNav, createRailNav, cycle } from './actions/railNav';
3
- export type { RailNavOptions, RailNavController } from './actions/railNav';
4
- export { collapse } from './actions/collapse';
5
- export type { CollapseOptions } from './actions/collapse';
6
- export { default as Collapse } from './components/Collapse.svelte';
7
-
8
- // Components — Session primitives (from JAT IDE, jat-jj79f.16 G1)
9
- export { default as LinkedColumns } from './components/linked-columns/LinkedColumns.svelte';
10
- export type { ColumnLink } from './components/linked-columns/LinkedColumns.svelte';
11
-
12
- export { default as ChapterTimeline } from './components/replay/ChapterTimeline.svelte';
13
- export type { ChapterBlock } from './components/replay/ChapterTimeline.svelte';
14
-
15
- // Data models — Session transcript (from JAT IDE, jat-jj79f.16 G1)
16
- export {
17
- buildLinkedSession,
18
- buildLinkedSessionFromWork,
19
- rawTypeToState,
20
- sampleLinkedSession,
21
- SAMPLE_TRANSCRIPT_LINES,
22
- } from './components/session-nav/transcriptModel';
23
- export type {
24
- ItemKind,
25
- TranscriptItem,
26
- FileTouchedEntry,
27
- SignalNode,
28
- LinkedSession,
29
- WorkBlockClient,
30
- WorkTranscriptItemClient,
31
- } from './components/session-nav/transcriptModel';
32
-
33
- // Components — Universal
34
- export { default as UserAvatar } from './components/UserAvatar.svelte';
35
- export { default as SidebarUserFooter } from './components/SidebarUserFooter.svelte';
36
- export { default as TaskTypeIcon } from './components/TaskTypeIcon.svelte';
37
-
38
- // Components — from JAT IDE
39
- export { default as ConfirmDialog } from './components/ConfirmDialog.svelte';
40
- export { showConfirm, confirmDialog, cancelDialog, getPending } from './stores/confirmDialog.svelte';
41
- export type { ConfirmOptions } from './stores/confirmDialog.svelte';
42
- export { default as InputDialog } from './components/InputDialog.svelte';
43
- export { showInput, submitInput, cancelInput, getPendingInput } from './stores/inputDialog.svelte';
44
- export type { InputOptions } from './stores/inputDialog.svelte';
45
- export { default as SearchDropdown } from './components/SearchDropdown.svelte';
46
- export { default as FilterDropdown } from './components/FilterDropdown.svelte';
47
- export { default as ContextMenu } from './components/ContextMenu.svelte';
48
- export { default as ChipInput } from './components/ChipInput.svelte';
49
- export { default as ResizableDivider } from './components/ResizableDivider.svelte';
50
- export { default as DateRangePicker } from './components/DateRangePicker.svelte';
51
- export { default as SortDropdown } from './components/SortDropdown.svelte';
52
- export { default as InlineEdit } from './components/InlineEdit.svelte';
53
- export { default as FloatingActionBar } from './components/FloatingActionBar.svelte';
54
- export { default as HunkDiffView } from './components/HunkDiffView.svelte';
55
-
56
- // Components — from Flush
57
- export { default as Button } from './components/Button.svelte';
58
- export { default as Badge } from './components/Badge.svelte';
59
- export { default as Card } from './components/Card.svelte';
60
- export { default as Drawer } from './components/Drawer.svelte';
61
- export { default as Modal } from './components/Modal.svelte';
62
- export { default as LoadingSpinner } from './components/LoadingSpinner.svelte';
63
- export { default as StatusBadge } from './components/StatusBadge.svelte';
64
- export { default as TextInput } from './components/TextInput.svelte';
65
- export { default as TextArea } from './components/TextArea.svelte';
66
- export { default as SelectInput } from './components/SelectInput.svelte';
67
- export { default as PhoneInput } from './components/PhoneInput.svelte';
68
-
69
- // Components — from Chimaro
70
- export { default as AudioWaveform } from './components/AudioWaveform.svelte';
71
- export { default as CharacterCounter } from './components/CharacterCounter.svelte';
72
- export { default as ColorSelector } from './components/ColorSelector.svelte';
73
- export { default as ConfirmModal } from './components/ConfirmModal.svelte';
74
- export { default as CountdownTimer } from './components/CountdownTimer.svelte';
75
- export { default as ImageUpload } from './components/ImageUpload.svelte';
76
- export { default as SmartImageEditor } from './components/SmartImageEditor.svelte';
77
- export { default as LazyImage } from './components/LazyImage.svelte';
78
- export { default as ResizablePanel } from './components/ResizablePanel.svelte';
79
- export { default as VoicePlayer } from './components/VoicePlayer.svelte';
80
- export { default as SpeechForm } from './components/SpeechForm.svelte';
81
-
82
- // Components — from Headcount
83
- export { default as ThemeSelector } from './components/ThemeSelector.svelte';
84
- export { default as Sparkline } from './components/Sparkline.svelte';
85
- export { default as BurndownChart } from './components/BurndownChart.svelte';
86
-
87
- // Components — from JST
88
- export { default as AvatarUpload } from './components/AvatarUpload.svelte';
89
- export { default as PdfThumbnail } from './components/PdfThumbnail.svelte';
90
- export { default as FilePicker } from './components/FilePicker.svelte';
91
- export { default as FileDropzone } from './components/FileDropzone.svelte';
92
- export { default as FileThumbnail } from './components/FileThumbnail.svelte';
93
- export { default as EntityPreviewCard } from './components/EntityPreviewCard.svelte';
94
-
95
- // EntityPreviewCard types
96
- export type { EntityPreviewData, EntityPreviewStat, EntityPreviewBadge } from './types/entityPreview';
97
-
98
- // FilePicker types
99
- export type { FilePickerFile, FilePickerSelection } from './types/filePicker';
100
-
101
- // FileDropzone types
102
- export type { FileDropzoneFile } from './components/FileDropzone.svelte';
103
-
104
- // Components — Document Templates (JST)
105
- export { default as VariablePicker } from './components/VariablePicker.svelte';
106
-
107
- // Template variable types
108
- export type { TemplateVar, TemplateVarGroup } from './types/templateVars';
109
-
110
- // Components — Emoji
111
- export { default as EmojiPicker } from './components/EmojiPicker.svelte';
112
-
113
- // Emoji data
114
- export { EMOJI_DATA, ALL_EMOJIS, searchEmojis } from './data/emojis';
115
- export type { EmojiEntry, EmojiGroup } from './data/emojis';
116
-
117
- // Components — from Meadow
118
- export { default as LinkShortener } from './components/LinkShortener.svelte';
119
-
120
- // Components — Media
121
- export { default as MediaWorkbench } from './components/MediaWorkbench.svelte';
122
-
123
- // Components — from Marduk
124
- export { default as SignaturePad } from './components/SignaturePad.svelte';
125
- export { default as MilestoneCard } from './components/MilestoneCard.svelte';
126
- export { default as MilestoneTimeline } from './components/MilestoneTimeline.svelte';
127
- export { default as TimeSlotPicker } from './components/TimeSlotPicker.svelte';
128
- export { default as CalendarPicker } from './components/CalendarPicker.svelte';
129
- export { default as AvailabilityModal } from './components/AvailabilityModal.svelte';
130
- export { default as BookingForm } from './components/BookingForm.svelte';
131
-
132
- // Component types — Meadow
133
- export type { ShortenedLink } from './components/LinkShortener.svelte';
134
-
135
- // Component types — JAT IDE
136
- export type { SearchDropdownOption, SearchDropdownGroup } from './components/SearchDropdown.svelte';
137
- export type { ChipSuggestion, SuggestionGroup, ChipInfo } from './components/ChipInput.svelte';
138
- export type { SortOption } from './components/SortDropdown.svelte';
139
- export type { ContextMenuItem } from './components/ContextMenu.svelte';
140
- export type { DisplaySegment } from './components/InlineEdit.svelte';
141
- export type { ActionButton, ActionDropdown, DropdownItem } from './components/FloatingActionBar.svelte';
142
-
143
- // Component types — Flush
144
- export type { SelectOption } from './components/SelectInput.svelte';
145
- export type { StatusValue } from './components/StatusBadge.svelte';
146
-
147
- // Milestone types (from JST contract/billing)
148
- export type { Milestone, MilestoneStatus } from './types/milestone';
149
-
150
- // Booking types (centralized)
151
- export type {
152
- LocationType,
153
- BookingStatus,
154
- OverrideType,
155
- Host,
156
- EventType,
157
- WeeklyAvailability,
158
- DateOverride,
159
- Booking,
160
- BookingAttendee,
161
- TimeSlot,
162
- BookingFormData,
163
- AvailabilityCounts
164
- } from './types/booking';
165
- export {
166
- DAYS_OF_WEEK,
167
- DAYS_SHORT,
168
- LOCATION_LABELS,
169
- LOCATION_ICONS
170
- } from './types/booking';
171
-
172
- // SmartImageEditor types
173
- export type {
174
- ImageVariantSpec,
175
- ImageProcessingSpec,
176
- VariantResult,
177
- VariantState,
178
- } from './types/smartImageEditor';
179
-
180
- // Utilities — date formatting
181
- export {
182
- normalizeTimestamp,
183
- parseTimestamp,
184
- formatRelativeTime,
185
- formatFullDate,
186
- formatShortDate,
187
- formatLastActivity,
188
- formatDate,
189
- getTimeSinceMs,
190
- getTimeSinceMinutes,
191
- isWithinMinutes,
192
- formatDateTime,
193
- taskAge,
194
- } from './utils/dateFormatters';
195
- // Utilities — task display helpers
196
- export {
197
- statusColor,
198
- priorityColor,
199
- typeIcon,
200
- statusLabel,
201
- } from './utils/taskUtils';
202
-
203
- // Utilities — phone formatting (legacy US-only)
204
- export {
205
- stripPhoneNumber,
206
- formatPhoneNumber,
207
- isCompletePhoneNumber,
208
- isValidPhoneNumber,
209
- updatePhoneInput
210
- } from './utils/phoneFormat';
211
-
212
- // Utilities — international phone (E.164) — pairs with PhoneInput
213
- export {
214
- toE164,
215
- formatPhoneForDisplay,
216
- isValidPhone,
217
- listCountries,
218
- DEFAULT_COUNTRY,
219
- PRIORITY_COUNTRIES,
220
- type CountryOption,
221
- } from './utils/phone';
222
-
223
- // Utilities — currency
224
- export { formatCurrency } from './utils/currency';
225
-
226
- // Utilities — DaisyUI colors (Canvas/JS contexts)
227
- export {
228
- getDaisyUIColor,
229
- lightenColor,
230
- darkenColor,
231
- watchThemeChanges,
232
- isDarkTheme,
233
- getCurrentTheme,
234
- clearColorCache
235
- } from './utils/daisyuiColors';
236
-
237
- // Components — Messaging (from Flush)
238
- export { default as Avatar } from './components/messaging/Avatar.svelte';
239
- export { default as ChannelList } from './components/messaging/ChannelList.svelte';
240
- export { default as ChannelMemberAvatarStack } from './components/messaging/ChannelMemberAvatarStack.svelte';
241
- export { default as DirectMessageList } from './components/messaging/DirectMessageList.svelte';
242
- export { default as EmojiSelector } from './components/messaging/EmojiSelector.svelte';
243
- export { default as MentionAutocomplete } from './components/messaging/MentionAutocomplete.svelte';
244
- export { default as MessageAttachment } from './components/messaging/MessageAttachment.svelte';
245
- export { default as MessageAttachmentUpload } from './components/messaging/MessageAttachmentUpload.svelte';
246
- export { default as MessageInput } from './components/messaging/MessageInput.svelte';
247
- export { default as MessageItem } from './components/messaging/MessageItem.svelte';
248
- export { default as MessageThread } from './components/messaging/MessageThread.svelte';
249
- export { default as QuotedMessageDisplay } from './components/messaging/QuotedMessageDisplay.svelte';
250
- export { default as ThreadPanel } from './components/messaging/ThreadPanel.svelte';
251
- export { default as CreateChannelModal } from './components/messaging/CreateChannelModal.svelte';
252
- export { default as StartDMModal } from './components/messaging/StartDMModal.svelte';
253
- export { default as ChannelInfoModal } from './components/messaging/ChannelInfoModal.svelte';
254
- export { default as ChannelMembersModal } from './components/messaging/ChannelMembersModal.svelte';
255
- export { default as NotificationSettingsModal } from './components/messaging/NotificationSettingsModal.svelte';
256
-
257
- // Messaging types
258
- export type {
259
- Message,
260
- QuotedMessage,
261
- MessageAttachment as MessageAttachmentType,
262
- PendingAttachment,
263
- Channel,
264
- ChannelMember,
265
- DirectConversation,
266
- OrgMember,
267
- EmojiCategory,
268
- SkinTone,
269
- StandardEmoji,
270
- CustomEmoji,
271
- EmojiReaction,
272
- ReactionSummary,
273
- EmojiSelection,
274
- EmojiPreferences,
275
- EmojiCategoryInfo,
276
- SkinToneInfo,
277
- MentionItem,
278
- NotificationPreferences,
279
- PresenceState,
280
- MessageCallbacks,
281
- ReactionCallbacks,
282
- AttachmentCallbacks,
283
- MentionCallbacks,
284
- EmojiCallbacks,
285
- ChannelCallbacks,
286
- ThreadCallbacks,
287
- NotificationCallbacks
288
- } from './types/messaging';
289
- export {
290
- EMOJI_CATEGORIES,
291
- SKIN_TONES,
292
- DEFAULT_QUICK_REACTIONS
293
- } from './types/messaging';
294
-
295
- // Components — Pipeline
296
- export { default as Pipeline } from './components/pipeline/Pipeline.svelte';
297
- export { default as PipelineColumn } from './components/pipeline/PipelineColumn.svelte';
298
- export { default as PipelineCard } from './components/pipeline/PipelineCard.svelte';
299
-
300
- // Pipeline types
301
- export type {
302
- PipelineStage,
303
- StageColors,
304
- PipelineItem,
305
- PipelineMetric,
306
- StageMetrics,
307
- PipelineViewMode,
308
- PipelineTableColumn,
309
- PipelineDragConfig,
310
- PipelineConfig,
311
- PipelineStageChangeEvent,
312
- PipelineItemClickEvent
313
- } from './types/pipeline';
314
- export {
315
- DEFAULT_DRAG_CONFIG,
316
- DEFAULT_PIPELINE_CONFIG
317
- } from './types/pipeline';
318
-
319
- // Utilities — mention parsing
320
- export {
321
- parseMentions,
322
- renderMentionsAsHTML,
323
- createMentionString,
324
- extractPlainText,
325
- findMentionAtCursor,
326
- findPartialMention,
327
- replaceMentionInContent,
328
- escapeHTML,
329
- countMentions,
330
- setMentionUrlGenerator
331
- } from './utils/mentionParser';
332
-
333
- // Components — Comments (universal threaded comments)
334
- export { default as CommentThread } from './components/CommentThread.svelte';
335
-
336
- // Comment types
337
- export type {
338
- Comment,
339
- CommentEntityType,
340
- CommentVisibility,
341
- CommentCreateInput,
342
- CommentCallbacks
343
- } from './types/comments';
344
- export { COMMENT_ENTITY_TYPES, COMMENT_VISIBILITIES } from './types/comments';
345
-
346
- // Components — PDF Viewer (server-side PDFium WASM rendering, no client pdf.js)
347
- export { default as PDFViewer } from './components/PDFViewer.svelte';
348
-
349
- // Components — Document annotation suite (from Steelbridge FileManager)
350
- export { default as MarkupEditor } from './components/MarkupEditor.svelte';
351
- export { default as MarkupOverlay } from './components/MarkupOverlay.svelte';
352
- export { default as ImageLightbox } from './components/ImageLightbox.svelte';
353
- export { default as AnnotationLayer } from './components/AnnotationLayer.svelte';
354
- export { default as AnnotationPanel } from './components/AnnotationPanel.svelte';
355
-
356
- // Markup drawing utilities
357
- export {
358
- MARKUP_COLORS,
359
- DEFAULT_STROKE_WIDTH,
360
- renderShape,
361
- renderAllShapes,
362
- nextShapeId,
363
- } from './components/markup';
364
-
365
- // Markup + annotation types
366
- export type {
367
- MarkupTool,
368
- Point,
369
- MarkupShape,
370
- ArrowShape,
371
- RectangleShape,
372
- EllipseShape,
373
- CloudShape,
374
- FreehandShape,
375
- TextShape,
376
- } from './components/markup';
377
-
378
- export type {
379
- Annotation,
380
- AnnotationProfile,
381
- AnnotationThread,
382
- AnnotationCallbacks,
383
- } from './types/annotation';
384
-
385
- // Components — Keyboard Navigation
386
- export { default as KeyboardShortcutsOverlay } from './components/KeyboardShortcutsOverlay.svelte';
387
- export type {
388
- KeyboardShortcut,
389
- SectionEntry as KeyboardShortcutSectionEntry,
390
- ShortcutSection as KeyboardShortcutSection,
391
- } from './components/KeyboardShortcutsOverlay.svelte';
392
-
393
- // Components — Google Maps (DispatchMap fork + location primitives)
394
- export { default as MapView } from './components/MapView.svelte';
395
- export { default as LocationMap } from './components/LocationMap.svelte';
396
- export { default as GPSTracker } from './components/GPSTracker.svelte';
397
- export type { MapJob, MapAgent } from './types/maps';
398
-
399
- // Utilities — Google Maps loader
400
- export {
401
- loadGoogleMapsAPI,
402
- isGoogleMapsLoaded,
403
- isPlacesLoaded,
404
- isGeometryLoaded,
405
- } from './utils/googleMapsLoader';
@@ -1,48 +0,0 @@
1
- /**
2
- * Global promise-based confirm dialog.
3
- * Usage: const ok = await showConfirm({ title: '...', body: '...' })
4
- */
5
-
6
- export type ConfirmOptions = {
7
- title: string;
8
- body?: string;
9
- confirmLabel?: string;
10
- cancelLabel?: string;
11
- danger?: boolean;
12
- timeoutMs?: number; // auto-cancel after this ms; 0 = no timeout (default 8000)
13
- };
14
-
15
- type Pending = {
16
- options: ConfirmOptions;
17
- resolve: (result: boolean) => void;
18
- };
19
-
20
- let pending = $state<Pending | null>(null);
21
-
22
- export function getPending(): Pending | null {
23
- return pending;
24
- }
25
-
26
- export function showConfirm(options: ConfirmOptions): Promise<boolean> {
27
- // If a dialog is already open, cancel it first.
28
- if (pending) {
29
- pending.resolve(false);
30
- }
31
- return new Promise<boolean>((resolve) => {
32
- pending = { options, resolve };
33
- });
34
- }
35
-
36
- export function confirmDialog(): void {
37
- if (!pending) return;
38
- const p = pending;
39
- pending = null;
40
- p.resolve(true);
41
- }
42
-
43
- export function cancelDialog(): void {
44
- if (!pending) return;
45
- const p = pending;
46
- pending = null;
47
- p.resolve(false);
48
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Global promise-based input dialog.
3
- * Usage: const value = await showInput({ title: '...', placeholder: '...' })
4
- * Returns the typed string if confirmed, null if cancelled.
5
- */
6
-
7
- export type InputOptions = {
8
- title: string;
9
- body?: string;
10
- placeholder?: string;
11
- confirmLabel?: string;
12
- cancelLabel?: string;
13
- timeoutMs?: number; // reserved; InputDialog never auto-cancels (user is typing)
14
- validate?: (value: string) => string | null; // null = valid, string = error message
15
- maxLength?: number;
16
- };
17
-
18
- type Pending = {
19
- options: InputOptions;
20
- resolve: (result: string | null) => void;
21
- };
22
-
23
- let pending = $state<Pending | null>(null);
24
-
25
- export function getPendingInput(): Pending | null {
26
- return pending;
27
- }
28
-
29
- export function showInput(options: InputOptions): Promise<string | null> {
30
- // If a dialog is already open, cancel it first.
31
- if (pending) {
32
- pending.resolve(null);
33
- }
34
- return new Promise<string | null>((resolve) => {
35
- pending = { options, resolve };
36
- });
37
- }
38
-
39
- export function submitInput(value: string): void {
40
- if (!pending) return;
41
- const p = pending;
42
- pending = null;
43
- p.resolve(value);
44
- }
45
-
46
- export function cancelInput(): void {
47
- if (!pending) return;
48
- const p = pending;
49
- pending = null;
50
- p.resolve(null);
51
- }
@@ -1,63 +0,0 @@
1
- /**
2
- * rail.css — keyboard rail-navigation primitives
3
- *
4
- * Provides focus-ring and value-change-pulse treatments for rail-nav
5
- * components (vertical or horizontal keyboard-navigable lists where each
6
- * rung carries a [data-rail-id] attribute).
7
- *
8
- * Usage: import once in your app's root layout or global stylesheet:
9
- * @import '@joewinke/jatui/src/lib/styles/rail.css';
10
- *
11
- * Token: var(--color-primary) — DaisyUI v5 primary (resolves to the
12
- * consuming app's active theme primary hue).
13
- *
14
- * Naming contract (must match the companion railNav Svelte action):
15
- * - Active-rung focus treatment: [data-rail-id]:focus-visible selector
16
- * AND .rail-focus utility class (both route to the same ring + tint).
17
- * - Value-change one-shot pulse: .rail-cycled (added by the action,
18
- * removed after the animation fires).
19
- *
20
- * Design rules enforced:
21
- * - Ring + tint only — NO colored side-stripe (§6 Don't: border-l/r > 1px).
22
- * - No box-shadow at rest; shadow only during the pulse keyframe.
23
- * - Respects prefers-reduced-motion.
24
- */
25
-
26
- /* ─── Active-rung focus ring ───────────────────────────────────────────────
27
- Applied via :focus-visible on the rung element (attribute-based, works
28
- without adding a class) AND via .rail-focus (explicit class, same visual).
29
- The ring is primary-tinted at 65% opacity; border-radius matches DaisyUI's
30
- field radius token (falls back to 0.25rem). No side-stripe. No shadow at
31
- rest (Flat-by-Default rule). ─────────────────────────────────────────── */
32
-
33
- [data-rail-id]:focus-visible,
34
- [data-rail-id]:has(:focus-visible),
35
- .rail-focus {
36
- outline: 2px solid color-mix(in oklch, var(--color-primary) 65%, transparent);
37
- outline-offset: 2px;
38
- border-radius: var(--radius-field, 0.25rem);
39
- }
40
-
41
- /* ─── Value-change pulse ────────────────────────────────────────────────────
42
- One-shot animation applied by the railNav action when the rung's bound
43
- value changes. Scales up 2.5% and blooms a brief primary-hued glow ring,
44
- then returns to rest. Duration 260ms — fast enough to feel snappy,
45
- long enough to register as intentional feedback.
46
- Box-shadow (not outline) is used here so it can animate smoothly;
47
- outline transitions are not interpolated by CSS. ─────────────────────── */
48
-
49
- @keyframes rail-cycled {
50
- 0% { transform: scale(1); box-shadow: 0 0 0 0 color-mix(in oklch, var(--color-primary) 0%, transparent); }
51
- 35% { transform: scale(1.025); box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 32%, transparent); }
52
- 100% { transform: scale(1); box-shadow: 0 0 0 0 color-mix(in oklch, var(--color-primary) 0%, transparent); }
53
- }
54
-
55
- .rail-cycled {
56
- animation: rail-cycled 0.26s cubic-bezier(0.22, 1, 0.36, 1);
57
- }
58
-
59
- @media (prefers-reduced-motion: reduce) {
60
- .rail-cycled {
61
- animation: none;
62
- }
63
- }
@@ -1,38 +0,0 @@
1
- // Annotation types for document/image annotation suite
2
- // Used by AnnotationLayer, AnnotationPanel, ImageLightbox
3
-
4
- export interface Annotation {
5
- id: string
6
- user_id: string
7
- x_percent: number
8
- y_percent: number
9
- content: string
10
- parent_annotation_id: string | null
11
- resolved: boolean
12
- resolved_by: string | null
13
- resolved_at: string | null
14
- created_at: string
15
- updated_at: string
16
- }
17
-
18
- export interface AnnotationProfile {
19
- full_name: string | null
20
- avatar_url: string | null
21
- }
22
-
23
- export interface AnnotationThread {
24
- root: Annotation
25
- replies: Annotation[]
26
- }
27
-
28
- /** Callbacks for AnnotationPanel async operations */
29
- export interface AnnotationCallbacks {
30
- /** Post a reply to a root annotation. Must return the new annotation or throw. */
31
- onAddReply: (parentId: string, content: string) => Promise<void>
32
- /** Toggle resolved state. */
33
- onResolve: (annotationId: string, resolved: boolean) => Promise<void>
34
- /** Delete an annotation (and its replies). */
35
- onDelete: (annotationId: string) => Promise<void>
36
- /** Edit annotation content. */
37
- onEdit: (annotationId: string, content: string) => Promise<void>
38
- }