@devfellowship/components 1.3.0 → 1.4.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/index.cjs +68 -19
- package/dist/index.d.cts +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +66 -19
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -112,6 +112,7 @@ __export(src_exports, {
|
|
|
112
112
|
ContextMenuSubContent: () => ContextMenuSubContent,
|
|
113
113
|
ContextMenuSubTrigger: () => ContextMenuSubTrigger,
|
|
114
114
|
ContextMenuTrigger: () => ContextMenuTrigger,
|
|
115
|
+
DEFAULT_NAME_COL_WIDTH: () => DEFAULT_NAME_COL_WIDTH,
|
|
115
116
|
DflRemote: () => DflRemote,
|
|
116
117
|
Dialog: () => Dialog,
|
|
117
118
|
DialogClose: () => DialogClose,
|
|
@@ -311,6 +312,7 @@ __export(src_exports, {
|
|
|
311
312
|
memberHueVar: () => memberHueVar,
|
|
312
313
|
navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
|
|
313
314
|
parseTags: () => parseTags,
|
|
315
|
+
resolveNameColWidth: () => resolveNameColWidth,
|
|
314
316
|
resolveWeekCount: () => resolveWeekCount,
|
|
315
317
|
resolveWeekLabels: () => resolveWeekLabels,
|
|
316
318
|
stageProgress: () => stageProgress,
|
|
@@ -5074,6 +5076,12 @@ function AppNavbar({
|
|
|
5074
5076
|
// src/components/organisms/Gantt.tsx
|
|
5075
5077
|
var React44 = __toESM(require("react"), 1);
|
|
5076
5078
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
5079
|
+
var DEFAULT_NAME_COL_WIDTH = 320;
|
|
5080
|
+
function resolveNameColWidth(nameColWidth, labelWidth) {
|
|
5081
|
+
if (typeof nameColWidth === "number" && nameColWidth > 0) return Math.round(nameColWidth);
|
|
5082
|
+
if (typeof labelWidth === "number" && labelWidth > 0) return Math.round(labelWidth);
|
|
5083
|
+
return DEFAULT_NAME_COL_WIDTH;
|
|
5084
|
+
}
|
|
5077
5085
|
function clampPct(value) {
|
|
5078
5086
|
if (value == null || Number.isNaN(value)) return 0;
|
|
5079
5087
|
return Math.max(0, Math.min(100, Math.round(value)));
|
|
@@ -5116,7 +5124,8 @@ function Gantt({
|
|
|
5116
5124
|
rowsHeader = "Stage / Task",
|
|
5117
5125
|
stagesOnly = false,
|
|
5118
5126
|
header,
|
|
5119
|
-
labelWidth
|
|
5127
|
+
labelWidth,
|
|
5128
|
+
nameColWidth,
|
|
5120
5129
|
weekMinWidth = 64,
|
|
5121
5130
|
className,
|
|
5122
5131
|
style,
|
|
@@ -5124,6 +5133,7 @@ function Gantt({
|
|
|
5124
5133
|
}) {
|
|
5125
5134
|
const weekCount = resolveWeekCount(stages, weeks);
|
|
5126
5135
|
const weekLabels = resolveWeekLabels(weekCount, weeks);
|
|
5136
|
+
const nameWidth = resolveNameColWidth(nameColWidth, labelWidth);
|
|
5127
5137
|
const [collapsed, setCollapsed] = React44.useState(
|
|
5128
5138
|
() => Object.fromEntries(stages.filter((s) => s.collapsed).map((s) => [s.id, true]))
|
|
5129
5139
|
);
|
|
@@ -5164,7 +5174,8 @@ function Gantt({
|
|
|
5164
5174
|
window.addEventListener("resize", handler);
|
|
5165
5175
|
return () => window.removeEventListener("resize", handler);
|
|
5166
5176
|
}, [dependencies.length, recomputeEdges]);
|
|
5167
|
-
const trackTemplate = `${
|
|
5177
|
+
const trackTemplate = `${nameWidth}px repeat(${weekCount}, minmax(${weekMinWidth}px, 1fr))`;
|
|
5178
|
+
const stickyCol = "sticky left-0 z-20 after:absolute after:inset-y-0 after:right-0 after:w-px after:bg-[var(--s-border-subtle,#2A2622)]";
|
|
5168
5179
|
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
5169
5180
|
"div",
|
|
5170
5181
|
{
|
|
@@ -5227,7 +5238,16 @@ function Gantt({
|
|
|
5227
5238
|
className: "grid items-center border-b border-[var(--s-border-subtle,#2A2622)] bg-[var(--s-surface-raised,#1A1714)]",
|
|
5228
5239
|
style: { gridTemplateColumns: trackTemplate },
|
|
5229
5240
|
children: [
|
|
5230
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5241
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5242
|
+
"div",
|
|
5243
|
+
{
|
|
5244
|
+
className: cn(
|
|
5245
|
+
stickyCol,
|
|
5246
|
+
"bg-[var(--s-surface-raised,#1A1714)] px-4 py-2.5 font-[var(--s-font-mono,monospace)] text-[10.5px] font-medium uppercase tracking-[0.6px] text-[var(--s-ink-muted,#7D7568)]"
|
|
5247
|
+
),
|
|
5248
|
+
children: rowsHeader
|
|
5249
|
+
}
|
|
5250
|
+
),
|
|
5231
5251
|
weekLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5232
5252
|
"div",
|
|
5233
5253
|
{
|
|
@@ -5258,7 +5278,10 @@ function Gantt({
|
|
|
5258
5278
|
{
|
|
5259
5279
|
type: "button",
|
|
5260
5280
|
onClick: () => toggle(stage.id),
|
|
5261
|
-
className:
|
|
5281
|
+
className: cn(
|
|
5282
|
+
stickyCol,
|
|
5283
|
+
"flex items-center gap-2 bg-[var(--s-surface-panel,#141210)] px-4 py-3 text-left transition-colors hover:bg-[var(--s-surface-raised,#1A1714)]"
|
|
5284
|
+
),
|
|
5262
5285
|
"aria-expanded": !isCollapsed,
|
|
5263
5286
|
children: [
|
|
5264
5287
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Chevron, { open: !isCollapsed }),
|
|
@@ -5270,8 +5293,22 @@ function Gantt({
|
|
|
5270
5293
|
}
|
|
5271
5294
|
),
|
|
5272
5295
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "min-w-0", children: [
|
|
5273
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5274
|
-
|
|
5296
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5297
|
+
"span",
|
|
5298
|
+
{
|
|
5299
|
+
className: "block truncate text-[13px] font-semibold text-[var(--s-ink-primary,#F6F1E7)]",
|
|
5300
|
+
title: stage.title,
|
|
5301
|
+
children: stage.title
|
|
5302
|
+
}
|
|
5303
|
+
),
|
|
5304
|
+
stage.subtitle && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5305
|
+
"span",
|
|
5306
|
+
{
|
|
5307
|
+
className: "block truncate text-[11px] text-[var(--s-ink-muted,#7D7568)]",
|
|
5308
|
+
title: stage.subtitle,
|
|
5309
|
+
children: stage.subtitle
|
|
5310
|
+
}
|
|
5311
|
+
)
|
|
5275
5312
|
] }),
|
|
5276
5313
|
ms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "ml-auto shrink-0 rounded-[var(--c-badge-radius,4px)] bg-[var(--s-surface-elevated,#1F1C18)] px-1.5 py-0.5 font-[var(--s-font-mono,monospace)] text-[10px] tabular-nums text-[var(--s-ink-secondary,#C9C0B4)]", children: [
|
|
5277
5314
|
done,
|
|
@@ -5330,20 +5367,30 @@ function Gantt({
|
|
|
5330
5367
|
className: "grid items-center border-b border-[var(--s-border-subtle,#2A2622)] bg-[var(--s-surface-page,#0A0908)]",
|
|
5331
5368
|
style: { gridTemplateColumns: trackTemplate },
|
|
5332
5369
|
children: [
|
|
5333
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5370
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
5371
|
+
"div",
|
|
5372
|
+
{
|
|
5373
|
+
className: cn(
|
|
5374
|
+
stickyCol,
|
|
5375
|
+
"flex items-center gap-2 bg-[var(--s-surface-page,#0A0908)] py-2 pl-10 pr-4"
|
|
5376
|
+
),
|
|
5377
|
+
children: [
|
|
5378
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(StatusDot, { done: m.done, color: dot }),
|
|
5379
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5380
|
+
"span",
|
|
5381
|
+
{
|
|
5382
|
+
className: cn(
|
|
5383
|
+
"min-w-0 flex-1 truncate text-[13px]",
|
|
5384
|
+
m.done ? "text-[var(--s-ink-muted,#7D7568)] line-through" : "text-[var(--s-ink-secondary,#C9C0B4)]"
|
|
5385
|
+
),
|
|
5386
|
+
title: m.title,
|
|
5387
|
+
children: m.title
|
|
5388
|
+
}
|
|
5341
5389
|
),
|
|
5342
|
-
children: m.
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
] }),
|
|
5390
|
+
m.points != null && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "shrink-0 font-[var(--s-font-mono,monospace)] text-[10px] tabular-nums text-[var(--s-ink-muted,#7D7568)]", children: m.points })
|
|
5391
|
+
]
|
|
5392
|
+
}
|
|
5393
|
+
),
|
|
5347
5394
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
5348
5395
|
"div",
|
|
5349
5396
|
{
|
|
@@ -5896,6 +5943,7 @@ var useFeatureFlags = () => {
|
|
|
5896
5943
|
ContextMenuSubContent,
|
|
5897
5944
|
ContextMenuSubTrigger,
|
|
5898
5945
|
ContextMenuTrigger,
|
|
5946
|
+
DEFAULT_NAME_COL_WIDTH,
|
|
5899
5947
|
DflRemote,
|
|
5900
5948
|
Dialog,
|
|
5901
5949
|
DialogClose,
|
|
@@ -6095,6 +6143,7 @@ var useFeatureFlags = () => {
|
|
|
6095
6143
|
memberHueVar,
|
|
6096
6144
|
navigationMenuTriggerStyle,
|
|
6097
6145
|
parseTags,
|
|
6146
|
+
resolveNameColWidth,
|
|
6098
6147
|
resolveWeekCount,
|
|
6099
6148
|
resolveWeekLabels,
|
|
6100
6149
|
stageProgress,
|
package/dist/index.d.cts
CHANGED
|
@@ -985,11 +985,25 @@ interface GanttProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
985
985
|
stagesOnly?: boolean;
|
|
986
986
|
/** Optional header strip (e.g. member + per-stage progress pills). */
|
|
987
987
|
header?: React$1.ReactNode;
|
|
988
|
-
/**
|
|
988
|
+
/**
|
|
989
|
+
* Px width of the left (sticky) name column.
|
|
990
|
+
* @deprecated prefer `nameColWidth` — kept as a fallback for back-compat.
|
|
991
|
+
*/
|
|
989
992
|
labelWidth?: number;
|
|
993
|
+
/**
|
|
994
|
+
* Px width of the left (sticky) STAGE/TASK name column. Takes precedence
|
|
995
|
+
* over `labelWidth`. Defaults to 320 — wide enough that long stage/task
|
|
996
|
+
* titles read in full; overflow ellipsizes with a native tooltip. Bump this
|
|
997
|
+
* higher (e.g. 420) on full-width pages where you have the room.
|
|
998
|
+
*/
|
|
999
|
+
nameColWidth?: number;
|
|
990
1000
|
/** Min px width of a single week column. Defaults to 64. */
|
|
991
1001
|
weekMinWidth?: number;
|
|
992
1002
|
}
|
|
1003
|
+
/** Default width of the sticky name column. ~2× the original 240 → readable. */
|
|
1004
|
+
declare const DEFAULT_NAME_COL_WIDTH = 320;
|
|
1005
|
+
/** Resolve the effective name-column width: `nameColWidth` > `labelWidth` > default. */
|
|
1006
|
+
declare function resolveNameColWidth(nameColWidth?: number, labelWidth?: number): number;
|
|
993
1007
|
/** Clamp a 0..100 percentage to an integer. */
|
|
994
1008
|
declare function clampPct(value: number | undefined): number;
|
|
995
1009
|
/** Progress for a stage: explicit `progress`, else done/total of milestones. */
|
|
@@ -1006,7 +1020,7 @@ declare function barGridColumn(weekStart: number, weekSpan: number, weekCount: n
|
|
|
1006
1020
|
start: number;
|
|
1007
1021
|
span: number;
|
|
1008
1022
|
};
|
|
1009
|
-
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, weekMinWidth, className, style, ...rest }: GanttProps): react_jsx_runtime.JSX.Element;
|
|
1023
|
+
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, nameColWidth, weekMinWidth, className, style, ...rest }: GanttProps): react_jsx_runtime.JSX.Element;
|
|
1010
1024
|
|
|
1011
1025
|
/** Minimal subset of `@supabase/supabase-js` SupabaseClient we rely on.
|
|
1012
1026
|
* Kept structural so the package never hard-depends on supabase-js. */
|
|
@@ -1083,4 +1097,4 @@ declare function validatePublishForm(input: {
|
|
|
1083
1097
|
}): string | null;
|
|
1084
1098
|
declare function PublishDrawer({ open, onOpenChange, supabase, videoUrl, transcript, suggestedTitle, suggestedDescription, suggestedThumbnailUrl, thumbnailTemplateId, buId, registerLesson, onPublished, onError, className, }: PublishDrawerProps): react_jsx_runtime.JSX.Element;
|
|
1085
1099
|
|
|
1086
|
-
export { ALLOWED_ORIGINS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type DflIframeMessage, type DflNavigateMessage, type DflReadyMessage, DflRemote, type DflRemoteProps, type DflResizeMessage, type DflSetTokenMessage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, IframeAware, type IframeAwareProps, IframeContext, type IframeContextValue, type IframeMessageType, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, type KbdProps, Label, LoginPage, type LoginPageProps, LoginScreen, type LoginScreenProps, MEMBER_PALETTE_SIZE, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavGroup, type NavItem, type NavbarUserInfo, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, type ToastComponentProps, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, type UserInfo, UserMenu, type UserMenuItem, type UserMenuProps, badgeVariants, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|
|
1100
|
+
export { ALLOWED_ORIGINS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_NAME_COL_WIDTH, type DflIframeMessage, type DflNavigateMessage, type DflReadyMessage, DflRemote, type DflRemoteProps, type DflResizeMessage, type DflSetTokenMessage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, IframeAware, type IframeAwareProps, IframeContext, type IframeContextValue, type IframeMessageType, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, type KbdProps, Label, LoginPage, type LoginPageProps, LoginScreen, type LoginScreenProps, MEMBER_PALETTE_SIZE, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavGroup, type NavItem, type NavbarUserInfo, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, type ToastComponentProps, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, type UserInfo, UserMenu, type UserMenuItem, type UserMenuProps, badgeVariants, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveNameColWidth, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|
package/dist/index.d.ts
CHANGED
|
@@ -985,11 +985,25 @@ interface GanttProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
985
985
|
stagesOnly?: boolean;
|
|
986
986
|
/** Optional header strip (e.g. member + per-stage progress pills). */
|
|
987
987
|
header?: React$1.ReactNode;
|
|
988
|
-
/**
|
|
988
|
+
/**
|
|
989
|
+
* Px width of the left (sticky) name column.
|
|
990
|
+
* @deprecated prefer `nameColWidth` — kept as a fallback for back-compat.
|
|
991
|
+
*/
|
|
989
992
|
labelWidth?: number;
|
|
993
|
+
/**
|
|
994
|
+
* Px width of the left (sticky) STAGE/TASK name column. Takes precedence
|
|
995
|
+
* over `labelWidth`. Defaults to 320 — wide enough that long stage/task
|
|
996
|
+
* titles read in full; overflow ellipsizes with a native tooltip. Bump this
|
|
997
|
+
* higher (e.g. 420) on full-width pages where you have the room.
|
|
998
|
+
*/
|
|
999
|
+
nameColWidth?: number;
|
|
990
1000
|
/** Min px width of a single week column. Defaults to 64. */
|
|
991
1001
|
weekMinWidth?: number;
|
|
992
1002
|
}
|
|
1003
|
+
/** Default width of the sticky name column. ~2× the original 240 → readable. */
|
|
1004
|
+
declare const DEFAULT_NAME_COL_WIDTH = 320;
|
|
1005
|
+
/** Resolve the effective name-column width: `nameColWidth` > `labelWidth` > default. */
|
|
1006
|
+
declare function resolveNameColWidth(nameColWidth?: number, labelWidth?: number): number;
|
|
993
1007
|
/** Clamp a 0..100 percentage to an integer. */
|
|
994
1008
|
declare function clampPct(value: number | undefined): number;
|
|
995
1009
|
/** Progress for a stage: explicit `progress`, else done/total of milestones. */
|
|
@@ -1006,7 +1020,7 @@ declare function barGridColumn(weekStart: number, weekSpan: number, weekCount: n
|
|
|
1006
1020
|
start: number;
|
|
1007
1021
|
span: number;
|
|
1008
1022
|
};
|
|
1009
|
-
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, weekMinWidth, className, style, ...rest }: GanttProps): react_jsx_runtime.JSX.Element;
|
|
1023
|
+
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, nameColWidth, weekMinWidth, className, style, ...rest }: GanttProps): react_jsx_runtime.JSX.Element;
|
|
1010
1024
|
|
|
1011
1025
|
/** Minimal subset of `@supabase/supabase-js` SupabaseClient we rely on.
|
|
1012
1026
|
* Kept structural so the package never hard-depends on supabase-js. */
|
|
@@ -1083,4 +1097,4 @@ declare function validatePublishForm(input: {
|
|
|
1083
1097
|
}): string | null;
|
|
1084
1098
|
declare function PublishDrawer({ open, onOpenChange, supabase, videoUrl, transcript, suggestedTitle, suggestedDescription, suggestedThumbnailUrl, thumbnailTemplateId, buId, registerLesson, onPublished, onError, className, }: PublishDrawerProps): react_jsx_runtime.JSX.Element;
|
|
1085
1099
|
|
|
1086
|
-
export { ALLOWED_ORIGINS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type DflIframeMessage, type DflNavigateMessage, type DflReadyMessage, DflRemote, type DflRemoteProps, type DflResizeMessage, type DflSetTokenMessage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, IframeAware, type IframeAwareProps, IframeContext, type IframeContextValue, type IframeMessageType, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, type KbdProps, Label, LoginPage, type LoginPageProps, LoginScreen, type LoginScreenProps, MEMBER_PALETTE_SIZE, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavGroup, type NavItem, type NavbarUserInfo, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, type ToastComponentProps, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, type UserInfo, UserMenu, type UserMenuItem, type UserMenuProps, badgeVariants, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|
|
1100
|
+
export { ALLOWED_ORIGINS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEntry, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_NAME_COL_WIDTH, type DflIframeMessage, type DflNavigateMessage, type DflReadyMessage, DflRemote, type DflRemoteProps, type DflResizeMessage, type DflSetTokenMessage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, type IconButtonProps, IframeAware, type IframeAwareProps, IframeContext, type IframeContextValue, type IframeMessageType, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, type KbdProps, Label, LoginPage, type LoginPageProps, LoginScreen, type LoginScreenProps, MEMBER_PALETTE_SIZE, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavGroup, type NavItem, type NavbarUserInfo, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast, ToastAction, type ToastActionElement, ToastClose, type ToastComponentProps, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, type UserInfo, UserMenu, type UserMenuItem, type UserMenuProps, badgeVariants, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveNameColWidth, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|
package/dist/index.js
CHANGED
|
@@ -4754,6 +4754,12 @@ function AppNavbar({
|
|
|
4754
4754
|
// src/components/organisms/Gantt.tsx
|
|
4755
4755
|
import * as React44 from "react";
|
|
4756
4756
|
import { jsx as jsx63, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4757
|
+
var DEFAULT_NAME_COL_WIDTH = 320;
|
|
4758
|
+
function resolveNameColWidth(nameColWidth, labelWidth) {
|
|
4759
|
+
if (typeof nameColWidth === "number" && nameColWidth > 0) return Math.round(nameColWidth);
|
|
4760
|
+
if (typeof labelWidth === "number" && labelWidth > 0) return Math.round(labelWidth);
|
|
4761
|
+
return DEFAULT_NAME_COL_WIDTH;
|
|
4762
|
+
}
|
|
4757
4763
|
function clampPct(value) {
|
|
4758
4764
|
if (value == null || Number.isNaN(value)) return 0;
|
|
4759
4765
|
return Math.max(0, Math.min(100, Math.round(value)));
|
|
@@ -4796,7 +4802,8 @@ function Gantt({
|
|
|
4796
4802
|
rowsHeader = "Stage / Task",
|
|
4797
4803
|
stagesOnly = false,
|
|
4798
4804
|
header,
|
|
4799
|
-
labelWidth
|
|
4805
|
+
labelWidth,
|
|
4806
|
+
nameColWidth,
|
|
4800
4807
|
weekMinWidth = 64,
|
|
4801
4808
|
className,
|
|
4802
4809
|
style,
|
|
@@ -4804,6 +4811,7 @@ function Gantt({
|
|
|
4804
4811
|
}) {
|
|
4805
4812
|
const weekCount = resolveWeekCount(stages, weeks);
|
|
4806
4813
|
const weekLabels = resolveWeekLabels(weekCount, weeks);
|
|
4814
|
+
const nameWidth = resolveNameColWidth(nameColWidth, labelWidth);
|
|
4807
4815
|
const [collapsed, setCollapsed] = React44.useState(
|
|
4808
4816
|
() => Object.fromEntries(stages.filter((s) => s.collapsed).map((s) => [s.id, true]))
|
|
4809
4817
|
);
|
|
@@ -4844,7 +4852,8 @@ function Gantt({
|
|
|
4844
4852
|
window.addEventListener("resize", handler);
|
|
4845
4853
|
return () => window.removeEventListener("resize", handler);
|
|
4846
4854
|
}, [dependencies.length, recomputeEdges]);
|
|
4847
|
-
const trackTemplate = `${
|
|
4855
|
+
const trackTemplate = `${nameWidth}px repeat(${weekCount}, minmax(${weekMinWidth}px, 1fr))`;
|
|
4856
|
+
const stickyCol = "sticky left-0 z-20 after:absolute after:inset-y-0 after:right-0 after:w-px after:bg-[var(--s-border-subtle,#2A2622)]";
|
|
4848
4857
|
return /* @__PURE__ */ jsxs31(
|
|
4849
4858
|
"div",
|
|
4850
4859
|
{
|
|
@@ -4907,7 +4916,16 @@ function Gantt({
|
|
|
4907
4916
|
className: "grid items-center border-b border-[var(--s-border-subtle,#2A2622)] bg-[var(--s-surface-raised,#1A1714)]",
|
|
4908
4917
|
style: { gridTemplateColumns: trackTemplate },
|
|
4909
4918
|
children: [
|
|
4910
|
-
/* @__PURE__ */ jsx63(
|
|
4919
|
+
/* @__PURE__ */ jsx63(
|
|
4920
|
+
"div",
|
|
4921
|
+
{
|
|
4922
|
+
className: cn(
|
|
4923
|
+
stickyCol,
|
|
4924
|
+
"bg-[var(--s-surface-raised,#1A1714)] px-4 py-2.5 font-[var(--s-font-mono,monospace)] text-[10.5px] font-medium uppercase tracking-[0.6px] text-[var(--s-ink-muted,#7D7568)]"
|
|
4925
|
+
),
|
|
4926
|
+
children: rowsHeader
|
|
4927
|
+
}
|
|
4928
|
+
),
|
|
4911
4929
|
weekLabels.map((label, i) => /* @__PURE__ */ jsx63(
|
|
4912
4930
|
"div",
|
|
4913
4931
|
{
|
|
@@ -4938,7 +4956,10 @@ function Gantt({
|
|
|
4938
4956
|
{
|
|
4939
4957
|
type: "button",
|
|
4940
4958
|
onClick: () => toggle(stage.id),
|
|
4941
|
-
className:
|
|
4959
|
+
className: cn(
|
|
4960
|
+
stickyCol,
|
|
4961
|
+
"flex items-center gap-2 bg-[var(--s-surface-panel,#141210)] px-4 py-3 text-left transition-colors hover:bg-[var(--s-surface-raised,#1A1714)]"
|
|
4962
|
+
),
|
|
4942
4963
|
"aria-expanded": !isCollapsed,
|
|
4943
4964
|
children: [
|
|
4944
4965
|
/* @__PURE__ */ jsx63(Chevron, { open: !isCollapsed }),
|
|
@@ -4950,8 +4971,22 @@ function Gantt({
|
|
|
4950
4971
|
}
|
|
4951
4972
|
),
|
|
4952
4973
|
/* @__PURE__ */ jsxs31("span", { className: "min-w-0", children: [
|
|
4953
|
-
/* @__PURE__ */ jsx63(
|
|
4954
|
-
|
|
4974
|
+
/* @__PURE__ */ jsx63(
|
|
4975
|
+
"span",
|
|
4976
|
+
{
|
|
4977
|
+
className: "block truncate text-[13px] font-semibold text-[var(--s-ink-primary,#F6F1E7)]",
|
|
4978
|
+
title: stage.title,
|
|
4979
|
+
children: stage.title
|
|
4980
|
+
}
|
|
4981
|
+
),
|
|
4982
|
+
stage.subtitle && /* @__PURE__ */ jsx63(
|
|
4983
|
+
"span",
|
|
4984
|
+
{
|
|
4985
|
+
className: "block truncate text-[11px] text-[var(--s-ink-muted,#7D7568)]",
|
|
4986
|
+
title: stage.subtitle,
|
|
4987
|
+
children: stage.subtitle
|
|
4988
|
+
}
|
|
4989
|
+
)
|
|
4955
4990
|
] }),
|
|
4956
4991
|
ms.length > 0 && /* @__PURE__ */ jsxs31("span", { className: "ml-auto shrink-0 rounded-[var(--c-badge-radius,4px)] bg-[var(--s-surface-elevated,#1F1C18)] px-1.5 py-0.5 font-[var(--s-font-mono,monospace)] text-[10px] tabular-nums text-[var(--s-ink-secondary,#C9C0B4)]", children: [
|
|
4957
4992
|
done,
|
|
@@ -5010,20 +5045,30 @@ function Gantt({
|
|
|
5010
5045
|
className: "grid items-center border-b border-[var(--s-border-subtle,#2A2622)] bg-[var(--s-surface-page,#0A0908)]",
|
|
5011
5046
|
style: { gridTemplateColumns: trackTemplate },
|
|
5012
5047
|
children: [
|
|
5013
|
-
/* @__PURE__ */ jsxs31(
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5048
|
+
/* @__PURE__ */ jsxs31(
|
|
5049
|
+
"div",
|
|
5050
|
+
{
|
|
5051
|
+
className: cn(
|
|
5052
|
+
stickyCol,
|
|
5053
|
+
"flex items-center gap-2 bg-[var(--s-surface-page,#0A0908)] py-2 pl-10 pr-4"
|
|
5054
|
+
),
|
|
5055
|
+
children: [
|
|
5056
|
+
/* @__PURE__ */ jsx63(StatusDot, { done: m.done, color: dot }),
|
|
5057
|
+
/* @__PURE__ */ jsx63(
|
|
5058
|
+
"span",
|
|
5059
|
+
{
|
|
5060
|
+
className: cn(
|
|
5061
|
+
"min-w-0 flex-1 truncate text-[13px]",
|
|
5062
|
+
m.done ? "text-[var(--s-ink-muted,#7D7568)] line-through" : "text-[var(--s-ink-secondary,#C9C0B4)]"
|
|
5063
|
+
),
|
|
5064
|
+
title: m.title,
|
|
5065
|
+
children: m.title
|
|
5066
|
+
}
|
|
5021
5067
|
),
|
|
5022
|
-
children: m.
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
] }),
|
|
5068
|
+
m.points != null && /* @__PURE__ */ jsx63("span", { className: "shrink-0 font-[var(--s-font-mono,monospace)] text-[10px] tabular-nums text-[var(--s-ink-muted,#7D7568)]", children: m.points })
|
|
5069
|
+
]
|
|
5070
|
+
}
|
|
5071
|
+
),
|
|
5027
5072
|
/* @__PURE__ */ jsx63(
|
|
5028
5073
|
"div",
|
|
5029
5074
|
{
|
|
@@ -5579,6 +5624,7 @@ export {
|
|
|
5579
5624
|
ContextMenuSubContent,
|
|
5580
5625
|
ContextMenuSubTrigger,
|
|
5581
5626
|
ContextMenuTrigger,
|
|
5627
|
+
DEFAULT_NAME_COL_WIDTH,
|
|
5582
5628
|
DflRemote,
|
|
5583
5629
|
Dialog,
|
|
5584
5630
|
DialogClose,
|
|
@@ -5778,6 +5824,7 @@ export {
|
|
|
5778
5824
|
memberHueVar,
|
|
5779
5825
|
navigationMenuTriggerStyle,
|
|
5780
5826
|
parseTags,
|
|
5827
|
+
resolveNameColWidth,
|
|
5781
5828
|
resolveWeekCount,
|
|
5782
5829
|
resolveWeekLabels,
|
|
5783
5830
|
stageProgress,
|