cursedbelt 5.93.0 → 5.95.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/react/components/AppShell.d.ts +12 -1
- package/dist/react/components/AppShell.d.ts.map +1 -1
- package/dist/react/components/AppShell.js +24 -5
- package/dist/react/components/AppShell.js.map +1 -1
- package/dist/react/components/ComboboxField.js +2 -2
- package/dist/react/components/ComboboxField.js.map +1 -1
- package/dist/react/components/CommentThread.d.ts +9 -3
- package/dist/react/components/CommentThread.d.ts.map +1 -1
- package/dist/react/components/CommentThread.js +25 -11
- package/dist/react/components/CommentThread.js.map +1 -1
- package/dist/react/components/DatePicker.d.ts +9 -5
- package/dist/react/components/DatePicker.d.ts.map +1 -1
- package/dist/react/components/DatePicker.js +192 -27
- package/dist/react/components/DatePicker.js.map +1 -1
- package/dist/react/components/InlineEditableText.d.ts +12 -2
- package/dist/react/components/InlineEditableText.d.ts.map +1 -1
- package/dist/react/components/InlineEditableText.js +11 -8
- package/dist/react/components/InlineEditableText.js.map +1 -1
- package/dist/react/components/VoiceNote.d.ts +20 -0
- package/dist/react/components/VoiceNote.d.ts.map +1 -0
- package/dist/react/components/VoiceNote.js +54 -0
- package/dist/react/components/VoiceNote.js.map +1 -0
- package/dist/react/components/VoiceRecorder.d.ts +35 -0
- package/dist/react/components/VoiceRecorder.d.ts.map +1 -0
- package/dist/react/components/VoiceRecorder.js +155 -0
- package/dist/react/components/VoiceRecorder.js.map +1 -0
- package/dist/react/components/suggestionList.js +2 -2
- package/dist/react/components/suggestionList.js.map +1 -1
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/lib/dateText.d.ts +21 -0
- package/dist/react/lib/dateText.d.ts.map +1 -0
- package/dist/react/lib/dateText.js +94 -0
- package/dist/react/lib/dateText.js.map +1 -0
- package/dist/react/lib/floatingStyles.d.ts +12 -0
- package/dist/react/lib/floatingStyles.d.ts.map +1 -1
- package/dist/react/lib/floatingStyles.js +12 -0
- package/dist/react/lib/floatingStyles.js.map +1 -1
- package/dist/react/map-frame/MapFrame.d.ts +219 -0
- package/dist/react/map-frame/MapFrame.d.ts.map +1 -0
- package/dist/react/map-frame/MapFrame.js +726 -0
- package/dist/react/map-frame/MapFrame.js.map +1 -0
- package/dist/react/map-frame/geo.d.ts +210 -0
- package/dist/react/map-frame/geo.d.ts.map +1 -0
- package/dist/react/map-frame/geo.js +345 -0
- package/dist/react/map-frame/geo.js.map +1 -0
- package/dist/react/map-frame/index.d.ts +5 -0
- package/dist/react/map-frame/index.d.ts.map +1 -0
- package/dist/react/map-frame/index.js +3 -0
- package/dist/react/map-frame/index.js.map +1 -0
- package/dist/styles-areas/analytics.css +11 -10
- package/dist/styles-areas/canvas-hud.css +5 -5
- package/dist/styles-areas/data-table.css +13 -12
- package/dist/styles-areas/fields.css +12 -10
- package/dist/styles-areas/stats.css +12 -11
- package/dist/styles-areas/wizard.css +6 -6
- package/dist/styles-areas/workbench.css +17 -17
- package/dist/styles-utilities.css +15 -0
- package/package.json +13 -1
- package/scripts/guardrails-baseline.json +1 -1
- package/scripts/styleAreas.ts +1 -1
- package/src/react/components/AppShell.spec.tsx +53 -0
- package/src/react/components/AppShell.tsx +79 -23
- package/src/react/components/ComboboxField.tsx +2 -2
- package/src/react/components/CommentThread.spec.tsx +25 -0
- package/src/react/components/CommentThread.tsx +60 -10
- package/src/react/components/ControlHeightScale.spec.tsx +2 -2
- package/src/react/components/DatePicker.spec.tsx +186 -5
- package/src/react/components/DatePicker.tsx +416 -63
- package/src/react/components/InlineEditableText.spec.tsx +29 -0
- package/src/react/components/InlineEditableText.tsx +26 -10
- package/src/react/components/VoiceNote.tsx +92 -0
- package/src/react/components/VoiceRecorder.spec.tsx +116 -0
- package/src/react/components/VoiceRecorder.tsx +224 -0
- package/src/react/components/suggestionList.tsx +2 -2
- package/src/react/index.ts +9 -0
- package/src/react/lib/dateText.ts +94 -0
- package/src/react/lib/floatingStyles.spec.ts +36 -1
- package/src/react/lib/floatingStyles.ts +13 -0
- package/src/react/map-frame/MapFrame.spec.ts +168 -0
- package/src/react/map-frame/MapFrame.tsx +954 -0
- package/src/react/map-frame/geo.spec.ts +393 -0
- package/src/react/map-frame/geo.ts +421 -0
- package/src/react/map-frame/index.ts +34 -0
- package/src/react/media/HoverScrubVideoThumb.spec.tsx +4 -0
- package/src/styles-areas/analytics.css +11 -10
- package/src/styles-areas/canvas-hud.css +5 -5
- package/src/styles-areas/data-table.css +13 -12
- package/src/styles-areas/fields.css +12 -10
- package/src/styles-areas/stats.css +12 -11
- package/src/styles-areas/wizard.css +6 -6
- package/src/styles-areas/workbench.css +17 -17
- package/src/styles-utilities.css +15 -0
|
@@ -41,6 +41,17 @@ export interface AppShellProps {
|
|
|
41
41
|
/** A section header was pressed while `navCollapsedSections` is controlled; `collapsed` is
|
|
42
42
|
* the section's NEXT state. */
|
|
43
43
|
onNavSectionToggle?: (section: string, collapsed: boolean) => void;
|
|
44
|
+
/**
|
|
45
|
+
* The 240px sidebar folded to the 64px icon rail at every width — the reader's choice, to see
|
|
46
|
+
* the page wider (a photo archive's grid, a canvas): Linear's `⌘\` and Notion's `«` fold theirs
|
|
47
|
+
* the same way. Controlled: the app remembers it (a setting, `localStorage`) and passes it back.
|
|
48
|
+
* With `onNavCollapsedChange` the rail head carries the fold button (`IconSidebar`, a tooltip
|
|
49
|
+
* either way); without it the sidebar is fixed open, as before. The rail keeps its places, the
|
|
50
|
+
* account and the ⌘K trigger folded (NAV-2, NAV-15); a phone is never folded — it has no sidebar.
|
|
51
|
+
*/
|
|
52
|
+
navCollapsed?: boolean;
|
|
53
|
+
/** The fold button was pressed; `collapsed` is the sidebar's NEXT state. */
|
|
54
|
+
onNavCollapsedChange?: (collapsed: boolean) => void;
|
|
44
55
|
/** Dynamic per-place badge (unread counts), keyed by domain id. A badge may carry its own tone (`{ value, tone }`) — see {@link NavBadge}. */
|
|
45
56
|
navBadges?: Record<string, NavBadge>;
|
|
46
57
|
/** How those counts READ — `alert` (default, red) for "this needs you", `neutral` or
|
|
@@ -171,7 +182,7 @@ export interface AppShellProps {
|
|
|
171
182
|
* <header h-[--header-h]> ← left: brand · center: places or ⌘K field · right: account
|
|
172
183
|
* <BannerLane /> ← NAV-10, only when there is a banner
|
|
173
184
|
* <div flex min-h-0 grow> ← sidebar + content row
|
|
174
|
-
* <aside md:flex lg:hidden w-16 /> ← 6+ places: the icon rail
|
|
185
|
+
* <aside md:flex lg:hidden w-16 /> ← 6+ places: the icon rail (and at lg, folded by `navCollapsed`)
|
|
175
186
|
* <aside lg:flex w-60 /> ← 6+ places: the sectioned SideNav
|
|
176
187
|
* <main><ScrollArea>{children}</ScrollArea></main> ← THE ONLY page scroll container
|
|
177
188
|
* </div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAuB,MAAM,OAAO,CAAC;AACxF,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,KAAK,YAAY,EAAkB,KAAK,YAAY,EAA0B,KAAK,QAAQ,EAAgD,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,10 @@ import { SideNav } from '../nav/SideNav.js';
|
|
|
13
13
|
import { TopBarPlaces } from '../nav/TopBar.js';
|
|
14
14
|
import { CommandSourceProvider, useCommandSources } from '../palette/commandSources.js';
|
|
15
15
|
import { useCommandPalette } from '../palette/useCommandPalette.js';
|
|
16
|
+
import { IconSidebar } from '../icons.js';
|
|
16
17
|
import { AmbientBackdrop } from './AmbientBackdrop.js';
|
|
17
18
|
import { BannerLane } from './BannerLane.js';
|
|
19
|
+
import { IconButton } from './IconButton.js';
|
|
18
20
|
import { lazyPart } from './DataTable/lazyPart.js';
|
|
19
21
|
import { ScrollArea } from './ScrollArea.js';
|
|
20
22
|
/**
|
|
@@ -52,7 +54,7 @@ const UNSECTIONED_MAX_PLACES = 7;
|
|
|
52
54
|
* <header h-[--header-h]> ← left: brand · center: places or ⌘K field · right: account
|
|
53
55
|
* <BannerLane /> ← NAV-10, only when there is a banner
|
|
54
56
|
* <div flex min-h-0 grow> ← sidebar + content row
|
|
55
|
-
* <aside md:flex lg:hidden w-16 /> ← 6+ places: the icon rail
|
|
57
|
+
* <aside md:flex lg:hidden w-16 /> ← 6+ places: the icon rail (and at lg, folded by `navCollapsed`)
|
|
56
58
|
* <aside lg:flex w-60 /> ← 6+ places: the sectioned SideNav
|
|
57
59
|
* <main><ScrollArea>{children}</ScrollArea></main> ← THE ONLY page scroll container
|
|
58
60
|
* </div>
|
|
@@ -68,7 +70,7 @@ export function AppShell(props) {
|
|
|
68
70
|
// palette the shell mounts, and the shell can read what they contributed.
|
|
69
71
|
return (_jsx(CommandSourceProvider, { children: _jsx(Shell, { ...props }) }));
|
|
70
72
|
}
|
|
71
|
-
function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate, navLinkComponent, resolveIcon, navPrefs, onNavPrefsChange, navCollapsedSections, onNavSectionToggle, navBadges, navBadgeTone, navHeader, navFooter, banners, density, commandPalette = 'auto', onCapture, captureLabel, onOpenCommand, commandLabel, commandHint, commandBarExtra, headerCenter, immersive = false, account, bottomDock, palette, placeBarMax = 5, placeBarLabels = 'active', scrollSpace = 'default', scrollRef, ambient, className, }) {
|
|
73
|
+
function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate, navLinkComponent, resolveIcon, navPrefs, onNavPrefsChange, navCollapsedSections, onNavSectionToggle, navCollapsed = false, onNavCollapsedChange, navBadges, navBadgeTone, navHeader, navFooter, banners, density, commandPalette = 'auto', onCapture, captureLabel, onOpenCommand, commandLabel, commandHint, commandBarExtra, headerCenter, immersive = false, account, bottomDock, palette, placeBarMax = 5, placeBarLabels = 'active', scrollSpace = 'default', scrollRef, ambient, className, }) {
|
|
72
74
|
useKeyboardInset();
|
|
73
75
|
const places = nav ? deriveSideNavDomains(nav, navGate) : [];
|
|
74
76
|
const pattern = !nav ? 'none' : places.length <= TOP_BAR_MAX_PLACES ? 'top' : 'side';
|
|
@@ -121,8 +123,25 @@ function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate,
|
|
|
121
123
|
* rail (md–lg) gets the account and the square ⌘K trigger; `onCapture` stays on the full sidebar
|
|
122
124
|
* and the phone's PlaceBar, as a worded primary button cannot fit a 64px rail.
|
|
123
125
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
// The fold button (`navCollapsed`): only where the app takes the choice back — a shell that cannot
|
|
127
|
+
// remember it does not offer it. On the icon rail it stacks under the account. On the full sidebar it
|
|
128
|
+
// sits at the leading edge of the ⌘K row, NOT on the brand line: the account launcher there is a
|
|
129
|
+
// worded control (cursedauth's "Curt Phillips ▾", 175px in a 240px rail), and a third control on
|
|
130
|
+
// that line left the brand no width at all (photos, WebKit, 2026-10-25). A shell with no ⌘K row
|
|
131
|
+
// keeps it on the brand line, where there is room.
|
|
132
|
+
const foldButton = (collapsed) => onNavCollapsedChange ? (_jsx(IconButton, { "data-cb-rail-fold": '', "aria-pressed": collapsed, label: collapsed ? 'Show the sidebar' : 'Hide the sidebar', tooltip: collapsed ? 'Show the sidebar with its names' : 'Fold the sidebar to icons, for a wider page', size: 'sm', variant: 'ghost', className: 'mt-0.5', onClick: () => onNavCollapsedChange(!collapsed), children: _jsx(IconSidebar, {}) })) : null;
|
|
133
|
+
const hasCommandRow = (collapsed) => Boolean(openCommand || (!collapsed && (onCapture || commandBarExtra)));
|
|
134
|
+
const railCommand = (collapsed) => {
|
|
135
|
+
if (!hasCommandRow(collapsed))
|
|
136
|
+
return null;
|
|
137
|
+
const bar = (_jsx(CommandBar, { className: collapsed ? 'flex-col' : 'w-full min-w-0 flex-wrap', compact: collapsed, onCapture: collapsed ? undefined : onCapture, captureLabel: captureLabel, onOpenCommand: openCommand, commandPlaceholder: commandLabel, commandHint: commandHint, extra: collapsed ? undefined : commandBarExtra }));
|
|
138
|
+
const fold = collapsed ? null : foldButton(false);
|
|
139
|
+
return fold ? (_jsxs("div", { "data-cb-rail-command-row": '', className: 'flex w-full min-w-0 items-start gap-1', children: [fold, _jsx("div", { className: 'min-w-0 flex-1', children: bar })] })) : (bar);
|
|
140
|
+
};
|
|
141
|
+
const railHead = (collapsed) => {
|
|
142
|
+
const foldOnBrandLine = collapsed || !hasCommandRow(collapsed);
|
|
143
|
+
return (_jsxs("div", { "data-cb-rail-head": '', className: cn('flex flex-col gap-3', collapsed && 'items-center'), children: [(navHeader && !collapsed) || account || (foldOnBrandLine && onNavCollapsedChange) ? (_jsxs("div", { className: cn('flex min-w-0 items-center gap-2', collapsed && 'flex-col'), children: [navHeader && !collapsed ? _jsx("div", { className: 'flex min-w-0 flex-1 items-center overflow-hidden', children: navHeader }) : null, account ? (_jsx("div", { "data-cb-account": '', className: 'shrink-0', children: account })) : null, foldOnBrandLine ? foldButton(collapsed) : null] })) : null, railCommand(collapsed)] }));
|
|
144
|
+
};
|
|
126
145
|
const sideNavProps = {
|
|
127
146
|
model: nav,
|
|
128
147
|
gate: navGate,
|
|
@@ -159,6 +178,6 @@ function Shell({ children, nav, navGate = allowAllGate, activeHref, onNavigate,
|
|
|
159
178
|
badgeTone: navBadgeTone === undefined && navBadges?.[d.id] === undefined ? undefined : navBadgeTone_(navBadges?.[d.id], navBadgeTone ?? 'alert'),
|
|
160
179
|
unavailable: d.hostLimit && d.hostLimit.navigable !== true ? d.hostLimit.reason : undefined,
|
|
161
180
|
linkProps: navLinkComponent ? undefined : { onClick: routeClick(d.path, onNavigate) },
|
|
162
|
-
})) })) : headerCenter ? (headerCenter) : (commandBar) }), (pattern === 'top' || account) && (_jsxs("div", { "data-cb-header-zone": 'right', className: 'flex shrink-0 items-center gap-2', children: [pattern === 'top' ? commandBar : null, account && (_jsx("div", { "data-cb-account": '', className: 'shrink-0', children: account }))] }))] })), banners && banners.length > 0 ? _jsx(BannerLane, { banners: banners, className: cn(ambient && chrome) }) : null, _jsxs("div", { className: 'relative flex min-h-0 grow overflow-hidden', children: [pattern === 'side' && (_jsxs(_Fragment, { children: [_jsx("aside", { "data-cb-nav-rail": '', "data-cb-nav-collapsed": '', className: cn('hidden w-[var(--rail-w-collapsed)] border-r border-border md:flex md:shrink-0 md:flex-col lg:hidden', chrome), children: _jsx(SideNav, { ...sideNavProps, collapsed: true, header: railHead(true) }) }), _jsx("aside", { "data-cb-nav-rail": '', className: cn('hidden w-[var(--rail-w)] border-r border-border lg:flex lg:shrink-0 lg:flex-col', chrome), children: _jsx(SideNav, { ...sideNavProps, header: railHead(false), onPrefsChange: onNavPrefsChange, collapsedSections: navCollapsedSections, onSectionToggle: onNavSectionToggle }) })] })), _jsx("main", { className: 'flex min-h-0 min-w-0 grow flex-col', children: _jsx(ScrollArea, { space: scrollSpace, scrollRef: scrollRef, children: children }) })] }), showBottom && (_jsxs("div", { ref: bottomChromeRef, className: 'shrink-0 pb-[env(safe-area-inset-bottom,0px)]', children: [bottomDock && _jsx("div", { className: 'border-t border-border', children: bottomDock }), nav && (_jsx(PlaceBar, { className: cn('border-t border-border md:hidden', ambient && chrome), model: nav, gate: navGate, activeHref: activeHref, onNavigate: onNavigate, linkComponent: navLinkComponent, resolveIcon: resolveIcon, badges: navBadges, badgeTone: navBadgeTone, onCapture: onCapture, captureLabel: captureLabel, max: placeBarMax, labels: placeBarLabels }))] })), palette, ownPalette && nav && paletteMounted ? (_jsx(ShellCommandPalette, { model: nav, gate: navGate, open: paletteControls.open, onOpenChange: paletteControls.setOpen, onNavigate: navigate, resolveIcon: resolveIcon, currentPath: activeHref, places: true, sources: sources })) : null] }));
|
|
181
|
+
})) })) : headerCenter ? (headerCenter) : (commandBar) }), (pattern === 'top' || account) && (_jsxs("div", { "data-cb-header-zone": 'right', className: 'flex shrink-0 items-center gap-2', children: [pattern === 'top' ? commandBar : null, account && (_jsx("div", { "data-cb-account": '', className: 'shrink-0', children: account }))] }))] })), banners && banners.length > 0 ? _jsx(BannerLane, { banners: banners, className: cn(ambient && chrome) }) : null, _jsxs("div", { className: 'relative flex min-h-0 grow overflow-hidden', children: [pattern === 'side' && (_jsxs(_Fragment, { children: [_jsx("aside", { "data-cb-nav-rail": '', "data-cb-nav-collapsed": '', className: cn('hidden w-[var(--rail-w-collapsed)] border-r border-border md:flex md:shrink-0 md:flex-col', !navCollapsed && 'lg:hidden', chrome), children: _jsx(SideNav, { ...sideNavProps, collapsed: true, header: railHead(true) }) }), _jsx("aside", { "data-cb-nav-rail": '', className: cn('hidden w-[var(--rail-w)] border-r border-border', !navCollapsed && 'lg:flex lg:shrink-0 lg:flex-col', chrome), children: _jsx(SideNav, { ...sideNavProps, header: railHead(false), onPrefsChange: onNavPrefsChange, collapsedSections: navCollapsedSections, onSectionToggle: onNavSectionToggle }) })] })), _jsx("main", { className: 'flex min-h-0 min-w-0 grow flex-col', children: _jsx(ScrollArea, { space: scrollSpace, scrollRef: scrollRef, children: children }) })] }), showBottom && (_jsxs("div", { ref: bottomChromeRef, className: 'shrink-0 pb-[env(safe-area-inset-bottom,0px)]', children: [bottomDock && _jsx("div", { className: 'border-t border-border', children: bottomDock }), nav && (_jsx(PlaceBar, { className: cn('border-t border-border md:hidden', ambient && chrome), model: nav, gate: navGate, activeHref: activeHref, onNavigate: onNavigate, linkComponent: navLinkComponent, resolveIcon: resolveIcon, badges: navBadges, badgeTone: navBadgeTone, onCapture: onCapture, captureLabel: captureLabel, max: placeBarMax, labels: placeBarLabels }))] })), palette, ownPalette && nav && paletteMounted ? (_jsx(ShellCommandPalette, { model: nav, gate: navGate, open: paletteControls.open, onOpenChange: paletteControls.setOpen, onNavigate: navigate, resolveIcon: resolveIcon, currentPath: activeHref, places: true, sources: sources })) : null] }));
|
|
163
182
|
}
|
|
164
183
|
//# sourceMappingURL=AppShell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA8C,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxF,OAAO,EACL,YAAY,EACZ,oBAAoB,GAIrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAqB,cAAc,EAAqB,UAAU,EAAE,UAAU,EAAiB,YAAY,IAAI,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChL,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/react/components/AppShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { Check, ChevronDown, Loader2, Plus, X } from 'lucide-react';
|
|
|
5
5
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
6
|
import { cn } from '../lib/cn.js';
|
|
7
7
|
import { CONTROL_HEIGHT_CLASS, CONTROL_MIN_HEIGHT_CLASS, choiceFieldWidth, declareFieldWidth, } from '../lib/field.js';
|
|
8
|
-
import { FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE } from '../lib/floatingStyles.js';
|
|
8
|
+
import { BASE_UI_POSITIONER, FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE } from '../lib/floatingStyles.js';
|
|
9
9
|
import { TAP_TARGET, TAP_TARGET_HEIGHT } from '../lib/tapTarget.js';
|
|
10
10
|
const DEBOUNCE_MS = 250;
|
|
11
11
|
/** Sentinel value used to represent the "Create new" option inside Base UI. */
|
|
@@ -118,7 +118,7 @@ export function ComboboxField(props) {
|
|
|
118
118
|
placeholder: multiple && (multiValue?.length ?? 0) > 0 ? undefined : placeholder, className: cn(
|
|
119
119
|
// `m-0 border-0 font-[inherit]`: the group draws the frame, and a host with no
|
|
120
120
|
// preflight (desk) would otherwise add the UA's inset border and control face (task 2757).
|
|
121
|
-
'm-0 min-w-24 flex-1 border-0 bg-transparent px-3 font-[inherit] text-base text-field-fg outline-none placeholder:text-field-placeholder sm:pointer-fine:text-sm', TAP_TARGET_HEIGHT, multiple && 'py-1.5') }), loading ? (_jsx(Loader2, { className: 'mr-2 size-4 shrink-0 animate-spin opacity-50', "aria-label": 'Loading options' })) : (_jsx(Combobox.Trigger, { "aria-label": 'Toggle options', className: `mr-2 flex size-5 shrink-0 items-center justify-center text-muted-foreground transition hover:text-foreground ${TAP_TARGET}`, children: _jsx(ChevronDown, { className: 'size-4' }) }))] }), _jsx(Combobox.Portal, { children: _jsx(Combobox.Positioner, { sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, className:
|
|
121
|
+
'm-0 min-w-24 flex-1 border-0 bg-transparent px-3 font-[inherit] text-base text-field-fg outline-none placeholder:text-field-placeholder sm:pointer-fine:text-sm', TAP_TARGET_HEIGHT, multiple && 'py-1.5') }), loading ? (_jsx(Loader2, { className: 'mr-2 size-4 shrink-0 animate-spin opacity-50', "aria-label": 'Loading options' })) : (_jsx(Combobox.Trigger, { "aria-label": 'Toggle options', className: `mr-2 flex size-5 shrink-0 items-center justify-center text-muted-foreground transition hover:text-foreground ${TAP_TARGET}`, children: _jsx(ChevronDown, { className: 'size-4' }) }))] }), _jsx(Combobox.Portal, { children: _jsx(Combobox.Positioner, { sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, className: BASE_UI_POSITIONER, children: _jsx(Combobox.Popup, { className: cn(FLOATING_CONTENT_BASE,
|
|
122
122
|
// guardrails-ignore no-raw-overflow: floating popover panel outside the page's ScrollArea, height-capped by max-h-64 — no keyboard-inset concern.
|
|
123
123
|
'max-h-64 min-w-[var(--anchor-width)] overflow-y-auto p-0', 'transition-[transform,opacity] duration-100', 'data-[starting-style]:scale-95 data-[starting-style]:opacity-0', 'data-[ending-style]:scale-95 data-[ending-style]:opacity-0'), children: _jsx(ComboboxList, { creatable: creatable, query: query, onCreateClick: handleCreate, emptyLabel: emptyLabel }) }) }) })] }));
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxField.js","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAkB,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EAExB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ComboboxField.js","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactionGroup } from './ReactionBar.js';
|
|
2
|
+
import { type VoiceRecording } from './VoiceRecorder.js';
|
|
2
3
|
export interface CommentAuthor {
|
|
3
4
|
id: string;
|
|
4
5
|
name?: string;
|
|
@@ -22,6 +23,8 @@ export interface CommentData {
|
|
|
22
23
|
/** Whether the current user may delete this comment. */
|
|
23
24
|
canDelete?: boolean;
|
|
24
25
|
reactions?: CommentReactionSummary;
|
|
26
|
+
/** A voice comment's audio, played inline above its (optional) text. */
|
|
27
|
+
audioUrl?: string | null;
|
|
25
28
|
}
|
|
26
29
|
export interface CommentThreadProps {
|
|
27
30
|
comments?: CommentData[];
|
|
@@ -32,6 +35,8 @@ export interface CommentThreadProps {
|
|
|
32
35
|
onDelete?: (id: string) => void;
|
|
33
36
|
/** Toggle a reaction on a comment. */
|
|
34
37
|
onReact?: (commentId: string, emoji: string) => void;
|
|
38
|
+
/** Post a voice comment (parentId for a reply). When set, every composer grows a record button. */
|
|
39
|
+
onPostVoice?: (recording: VoiceRecording, parentId?: string) => void;
|
|
35
40
|
className?: string;
|
|
36
41
|
emptyMessage?: string;
|
|
37
42
|
/** Placeholder for the root-level composer. */
|
|
@@ -42,9 +47,10 @@ export interface CommentThreadProps {
|
|
|
42
47
|
* query/mutation hooks bundled — wire up your own TanStack Query mutations and pass
|
|
43
48
|
* the results as props.
|
|
44
49
|
*
|
|
45
|
-
* Supports one level of replies, edit, delete (with confirm),
|
|
46
|
-
* via {@link ReactionBar}
|
|
50
|
+
* Supports one level of replies, edit, delete (with confirm), emoji reactions
|
|
51
|
+
* via {@link ReactionBar}, and — with `onPostVoice` — voice comments recorded by
|
|
52
|
+
* {@link VoiceRecorder} and played inline by {@link VoiceNote}. Each interaction calls its corresponding handler; the
|
|
47
53
|
* caller re-renders with fresh data.
|
|
48
54
|
*/
|
|
49
|
-
export declare function CommentThread({ comments, isLoading, onPost, onEdit, onDelete, onReact, className, emptyMessage, placeholder, ...rest }: CommentThreadProps): import("react").JSX.Element;
|
|
55
|
+
export declare function CommentThread({ comments, isLoading, onPost, onEdit, onDelete, onReact, onPostVoice, className, emptyMessage, placeholder, ...rest }: CommentThreadProps): import("react").JSX.Element;
|
|
50
56
|
//# sourceMappingURL=CommentThread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentThread.d.ts","sourceRoot":"","sources":["../../../src/react/components/CommentThread.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommentThread.d.ts","sourceRoot":"","sources":["../../../src/react/components/CommentThread.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,oBAAoB,CAAC;AAIxE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,mGAAmG;IACnG,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiTD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAa,EACb,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAA0D,EAC1D,WAAqD,EACrD,GAAG,IAAI,EACR,EAAE,kBAAkB,+BA+BpB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Edit2, Send, Trash2 } from 'lucide-react';
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Edit2, Mic, Send, Trash2 } from 'lucide-react';
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { cn } from '../lib/cn.js';
|
|
5
5
|
import { FIELD_CLASS } from '../lib/field.js';
|
|
@@ -10,6 +10,8 @@ import { Button } from './Button.js';
|
|
|
10
10
|
import { IconButton } from './IconButton.js';
|
|
11
11
|
import { ReactionBar } from './ReactionBar.js';
|
|
12
12
|
import { Skeleton } from './Skeleton.js';
|
|
13
|
+
import { VoiceNote } from './VoiceNote.js';
|
|
14
|
+
import { VoiceRecorder } from './VoiceRecorder.js';
|
|
13
15
|
// ── Internal helpers ──────────────────────────────────────────────────────────
|
|
14
16
|
const MS_MIN = 60_000;
|
|
15
17
|
const MS_DAY = 86_400_000;
|
|
@@ -34,8 +36,9 @@ function formatRelative(target, from = new Date()) {
|
|
|
34
36
|
return past ? `${phrase} ago` : `in ${phrase}`;
|
|
35
37
|
}
|
|
36
38
|
// ── Composer ──────────────────────────────────────────────────────────────────
|
|
37
|
-
function Composer({ onSubmit, placeholder, autoFocus, onCancel, }) {
|
|
39
|
+
function Composer({ onSubmit, onVoice, placeholder, autoFocus, onCancel, }) {
|
|
38
40
|
const [body, setBody] = useState('');
|
|
41
|
+
const [recording, setRecording] = useState(false);
|
|
39
42
|
const submit = () => {
|
|
40
43
|
const trimmed = body.trim();
|
|
41
44
|
if (!trimmed)
|
|
@@ -43,6 +46,12 @@ function Composer({ onSubmit, placeholder, autoFocus, onCancel, }) {
|
|
|
43
46
|
onSubmit(trimmed);
|
|
44
47
|
setBody('');
|
|
45
48
|
};
|
|
49
|
+
if (recording && onVoice) {
|
|
50
|
+
return (_jsx(VoiceRecorder, { onCancel: () => setRecording(false), onDone: (r) => {
|
|
51
|
+
setRecording(false);
|
|
52
|
+
onVoice(r);
|
|
53
|
+
} }));
|
|
54
|
+
}
|
|
46
55
|
return (_jsxs("div", { className: 'flex items-end gap-2', children: [_jsx(AutoGrowTextarea, { autoFocus: autoFocus, value: body, placeholder: placeholder, rows: 1, onChange: (e) => setBody(e.target.value), onKeyDown: (e) => {
|
|
47
56
|
if (e.key === 'Enter' && (e.metaKey || e.ctrlKey))
|
|
48
57
|
submit();
|
|
@@ -51,7 +60,7 @@ function Composer({ onSubmit, placeholder, autoFocus, onCancel, }) {
|
|
|
51
60
|
},
|
|
52
61
|
// `TAP_TARGET_HEIGHT`: at `min-h-9` (36px) the composer fell short of the 44px tap
|
|
53
62
|
// floor on a coarse pointer (DESIGN.md LAY-13).
|
|
54
|
-
className: cn(FIELD_CLASS, 'min-h-9 flex-1', TAP_TARGET_HEIGHT) }), _jsx(Button, { variant: 'primary', size: 'sm', "aria-label": 'Send', disabled: !body.trim(), onClick: submit, tooltip: 'Post comment', children: _jsx(Send, { className: 'h-4 w-4', "aria-hidden": true }) }), onCancel && (_jsx(Button, { variant: 'ghost', size: 'sm', onClick: onCancel, tooltip: 'Cancel comment', children: "Cancel" }))] }));
|
|
63
|
+
className: cn(FIELD_CLASS, 'min-h-9 flex-1', TAP_TARGET_HEIGHT) }), onVoice && (_jsx(IconButton, { label: 'Record a voice comment', variant: 'secondary', onClick: () => setRecording(true), children: _jsx(Mic, {}) })), _jsx(Button, { variant: 'primary', size: 'sm', "aria-label": 'Send', disabled: !body.trim(), onClick: submit, tooltip: 'Post comment', children: _jsx(Send, { className: 'h-4 w-4', "aria-hidden": true }) }), onCancel && (_jsx(Button, { variant: 'ghost', size: 'sm', onClick: onCancel, tooltip: 'Cancel comment', children: "Cancel" }))] }));
|
|
55
64
|
}
|
|
56
65
|
// ── CommentItem ───────────────────────────────────────────────────────────────
|
|
57
66
|
/** Two placeholder comments, in a comment's own shape: avatar, then a body bubble. */
|
|
@@ -60,7 +69,7 @@ function CommentSkeleton() {
|
|
|
60
69
|
}
|
|
61
70
|
/** A comment's secondary icon actions — muted until hovered, at the Reply link's weight. */
|
|
62
71
|
const QUIET_ACTION = 'text-muted-foreground hover:text-foreground [&_svg]:size-4';
|
|
63
|
-
function CommentItem({ comment, replies, onPost, onEdit, onDelete, onReact, }) {
|
|
72
|
+
function CommentItem({ comment, replies, onPost, onEdit, onDelete, onReact, onPostVoice, }) {
|
|
64
73
|
const [replying, setReplying] = useState(false);
|
|
65
74
|
const [editing, setEditing] = useState(false);
|
|
66
75
|
const [confirmDel, setConfirmDel] = useState(false);
|
|
@@ -69,11 +78,15 @@ function CommentItem({ comment, replies, onPost, onEdit, onDelete, onReact, }) {
|
|
|
69
78
|
return (_jsxs("div", { className: 'flex gap-2', children: [_jsx(Avatar, { name: comment.author.name, src: comment.author.avatarUrl, size: 'sm', className: 'mt-0.5 shrink-0' }), _jsxs("div", { className: 'min-w-0 flex-1', children: [_jsxs("div", { className: 'rounded-lg bg-muted px-3 py-2', children: [_jsxs("div", { className: 'flex items-baseline gap-2', children: [_jsx("span", { className: 'text-sm font-medium text-foreground', children: comment.author.name || 'Someone' }), _jsx("span", { className: 'text-xs text-muted-foreground', children: formatRelative(createdAt) })] }), editing ? (_jsxs("div", { className: 'mt-1 flex items-end gap-2', children: [_jsx(AutoGrowTextarea, { value: draft, rows: 1, onChange: (e) => setDraft(e.target.value), className: cn(FIELD_CLASS, 'min-h-9 flex-1', TAP_TARGET_HEIGHT) }), _jsx(Button, { variant: 'primary', size: 'sm', disabled: !draft.trim(), onClick: () => {
|
|
70
79
|
onEdit?.(comment.id, draft.trim());
|
|
71
80
|
setEditing(false);
|
|
72
|
-
}, tooltip: 'Save edited comment', children: "Save" }), _jsx(Button, { variant: 'ghost', size: 'sm', onClick: () => setEditing(false), tooltip: 'Cancel editing', children: "Cancel" })] })) : (_jsx("p", { className: 'mt-0.5
|
|
81
|
+
}, tooltip: 'Save edited comment', children: "Save" }), _jsx(Button, { variant: 'ghost', size: 'sm', onClick: () => setEditing(false), tooltip: 'Cancel editing', children: "Cancel" })] })) : comment.deleted ? (_jsx("p", { className: 'mt-0.5 text-sm italic text-muted-foreground', children: "deleted" })) : (_jsxs(_Fragment, { children: [comment.audioUrl && (_jsx(VoiceNote, { src: comment.audioUrl, label: `Play voice comment by ${comment.author.name || 'someone'}`, className: 'mt-1 max-w-80' })), comment.body && (_jsx("p", { className: 'mt-0.5 whitespace-pre-wrap break-words text-sm text-foreground', children: comment.body }))] }))] }), !comment.deleted && (_jsxs("div", { className: 'mt-1 flex flex-wrap items-center gap-2 pl-1', children: [comment.reactions && (_jsx(ReactionBar, { emojis: comment.reactions.emojis, myReaction: comment.reactions.myReaction, onReact: (emoji) => onReact?.(comment.id, emoji) })), _jsx(Button, { variant: 'link', onClick: () => setReplying((v) => !v), className: 'text-xs text-muted-foreground hover:text-foreground', tooltip: replying ? 'Cancel reply' : 'Reply to comment', children: "Reply" }), comment.canEdit && !editing && (_jsx(IconButton, { label: 'Edit comment', size: 'sm', className: QUIET_ACTION, onClick: () => setEditing(true), children: _jsx(Edit2, {}) })), comment.canDelete &&
|
|
73
82
|
(confirmDel ? (_jsxs("span", { className: 'flex items-center gap-1 text-xs', children: [_jsx(Button, { variant: 'link', className: 'text-destructive', onClick: () => onDelete?.(comment.id), tooltip: 'Confirm delete comment', children: "Delete?" }), _jsx(Button, { variant: 'link', className: 'text-muted-foreground', onClick: () => setConfirmDel(false), tooltip: 'Cancel delete', children: "No" })] })) : (_jsx(IconButton, { label: 'Delete comment', size: 'sm', className: QUIET_ACTION, onClick: () => setConfirmDel(true), children: _jsx(Trash2, {}) })))] })), replying && (_jsx("div", { className: 'mt-2', children: _jsx(Composer, { autoFocus: true, placeholder: 'Write a reply\u2026', onCancel: () => setReplying(false), onSubmit: (body) => {
|
|
74
83
|
onPost(body, comment.id);
|
|
75
84
|
setReplying(false);
|
|
76
|
-
}
|
|
85
|
+
}, onVoice: onPostVoice &&
|
|
86
|
+
((r) => {
|
|
87
|
+
onPostVoice(r, comment.id);
|
|
88
|
+
setReplying(false);
|
|
89
|
+
}) }) })), replies.length > 0 && (_jsx("div", { className: 'mt-2 space-y-3 border-l border-border pl-3', children: replies.map((r) => (_jsx(CommentItem, { comment: r, replies: [], onPost: onPost, onEdit: onEdit, onDelete: onDelete, onReact: onReact, onPostVoice: onPostVoice }, r.id))) }))] })] }));
|
|
77
90
|
}
|
|
78
91
|
// ── CommentThread ─────────────────────────────────────────────────────────────
|
|
79
92
|
/**
|
|
@@ -81,14 +94,15 @@ function CommentItem({ comment, replies, onPost, onEdit, onDelete, onReact, }) {
|
|
|
81
94
|
* query/mutation hooks bundled — wire up your own TanStack Query mutations and pass
|
|
82
95
|
* the results as props.
|
|
83
96
|
*
|
|
84
|
-
* Supports one level of replies, edit, delete (with confirm),
|
|
85
|
-
* via {@link ReactionBar}
|
|
97
|
+
* Supports one level of replies, edit, delete (with confirm), emoji reactions
|
|
98
|
+
* via {@link ReactionBar}, and — with `onPostVoice` — voice comments recorded by
|
|
99
|
+
* {@link VoiceRecorder} and played inline by {@link VoiceNote}. Each interaction calls its corresponding handler; the
|
|
86
100
|
* caller re-renders with fresh data.
|
|
87
101
|
*/
|
|
88
|
-
export function CommentThread({ comments = [], isLoading, onPost, onEdit, onDelete, onReact, className, emptyMessage = 'No comments yet — start the conversation.', placeholder = 'Add a comment… (⌘/Ctrl+Enter to send)', ...rest }) {
|
|
102
|
+
export function CommentThread({ comments = [], isLoading, onPost, onEdit, onDelete, onReact, onPostVoice, className, emptyMessage = 'No comments yet — start the conversation.', placeholder = 'Add a comment… (⌘/Ctrl+Enter to send)', ...rest }) {
|
|
89
103
|
const topLevel = comments.filter((c) => !c.parentId);
|
|
90
104
|
const repliesOf = (id) => comments.filter((c) => c.parentId === id);
|
|
91
105
|
return (_jsxs("div", { ...rest, className: cn('space-y-3', className), children: [!isLoading &&
|
|
92
|
-
topLevel.map((c) => (_jsx(CommentItem, { comment: c, replies: repliesOf(c.id), onPost: onPost, onEdit: onEdit, onDelete: onDelete, onReact: onReact }, c.id))), isLoading && _jsx(CommentSkeleton, {}), !isLoading && topLevel.length === 0 && (_jsx("p", { className: 'text-xs text-muted-foreground', children: emptyMessage })), _jsx(Composer, { placeholder: placeholder, onSubmit: (body) => onPost(body) })] }));
|
|
106
|
+
topLevel.map((c) => (_jsx(CommentItem, { comment: c, replies: repliesOf(c.id), onPost: onPost, onEdit: onEdit, onDelete: onDelete, onReact: onReact, onPostVoice: onPostVoice }, c.id))), isLoading && _jsx(CommentSkeleton, {}), !isLoading && topLevel.length === 0 && (_jsx("p", { className: 'text-xs text-muted-foreground', children: emptyMessage })), _jsx(Composer, { placeholder: placeholder, onSubmit: (body) => onPost(body), onVoice: onPostVoice && ((r) => onPostVoice(r)) })] }));
|
|
93
107
|
}
|
|
94
108
|
//# sourceMappingURL=CommentThread.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentThread.js","sourceRoot":"","sources":["../../../src/react/components/CommentThread.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CommentThread.js","sourceRoot":"","sources":["../../../src/react/components/CommentThread.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,13 +19,17 @@ export interface DatePickerProps {
|
|
|
19
19
|
size?: ControlSize;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* Token-themed date picker on `@daypicker/react`.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
22
|
+
* Token-themed date picker on `@daypicker/react`. The field is a text input a person can
|
|
23
|
+
* TYPE a date into (`2015-12-05`, `12/5/2015`, `Dec 5 2015`, `December 5, 2015`, `5 Dec
|
|
24
|
+
* 2015`; a two-digit year reads as the nearest sensible century), normalized to ISO on
|
|
25
|
+
* blur or Enter — and a calendar button beside it opens a popover on desktop or a bottom
|
|
26
|
+
* sheet on mobile (<640 px). In the calendar the month AND year step with buttons, the
|
|
27
|
+
* caption opens a year/month chooser, and PageUp/PageDown (Shift for a year) move the view.
|
|
26
28
|
*
|
|
27
29
|
* Value is an ISO date string (`'YYYY-MM-DD'`), matching what a native date
|
|
28
|
-
* input produces, so it's drop-in compatible with existing RHF form schemas.
|
|
30
|
+
* input produces, so it's drop-in compatible with existing RHF form schemas. Typed text that
|
|
31
|
+
* does not parse, or falls outside `min`/`max`, never reaches `onChange`: the field turns
|
|
32
|
+
* invalid with a short reason, and Escape restores the last good value.
|
|
29
33
|
*/
|
|
30
34
|
export declare function DatePicker({ value, onChange, onBlur, placeholder, disabled, id, name, min, max, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, size, ...rest }: DatePickerProps): import("react").JSX.Element;
|
|
31
35
|
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/react/components/DatePicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/react/components/DatePicker.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,iBAAiB,CAAC;AAQtE,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;kCAC8B;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAgPD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAA2B,EAC3B,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,GAAG,EACH,GAAG,EACH,cAAc,EAAE,WAAW,EAC3B,kBAAkB,EAAE,eAAe,EACnC,IAAW,EACX,GAAG,IAAI,EACR,EAAE,eAAe,+BA4LjB"}
|