@j3m-quantum/ui 1.8.0 → 1.10.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.js CHANGED
@@ -39,6 +39,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
39
39
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
40
40
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
41
41
  import * as ResizablePrimitive from 'react-resizable-panels';
42
+ import { MapContainer, TileLayer, Marker, Popup, Tooltip, ZoomControl } from 'react-leaflet';
42
43
  import { useReactTable, getPaginationRowModel, getFilteredRowModel, getSortedRowModel, getCoreRowModel, flexRender } from '@tanstack/react-table';
43
44
  export { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';
44
45
  import { addDays, isToday, subMonths, subYears, subWeeks, subDays, addMonths, addYears, addWeeks, format, startOfWeek, endOfWeek, startOfMonth, endOfMonth, startOfYear, endOfYear, isSameMonth, isSameWeek, isSameDay, isSameYear, isWithinInterval, parseISO, differenceInMinutes, eachDayOfInterval, differenceInDays, startOfDay, setMinutes, setHours, eachHourOfInterval, endOfDay, getHours, getMinutes, addMinutes, areIntervalsOverlapping } from 'date-fns';
@@ -5839,6 +5840,89 @@ var SectionFooter = React27.forwardRef(
5839
5840
  )
5840
5841
  );
5841
5842
  SectionFooter.displayName = "SectionFooter";
5843
+ function Map2({
5844
+ center,
5845
+ zoom = 13,
5846
+ className,
5847
+ children,
5848
+ ...props
5849
+ }) {
5850
+ return /* @__PURE__ */ jsx(
5851
+ MapContainer,
5852
+ {
5853
+ center,
5854
+ zoom,
5855
+ className: cn(
5856
+ "w-full rounded-lg border border-border overflow-hidden",
5857
+ "[&_.leaflet-control-zoom]:border-border",
5858
+ "[&_.leaflet-control-zoom]:rounded-md",
5859
+ "[&_.leaflet-control-zoom]:shadow-sm",
5860
+ "[&_.leaflet-control-zoom-in]:rounded-t-md",
5861
+ "[&_.leaflet-control-zoom-in]:border-b",
5862
+ "[&_.leaflet-control-zoom-in]:border-border",
5863
+ "[&_.leaflet-control-zoom-out]:rounded-b-md",
5864
+ "[&_.leaflet-popup-content-wrapper]:rounded-lg",
5865
+ "[&_.leaflet-popup-content-wrapper]:shadow-lg",
5866
+ "[&_.leaflet-popup-content-wrapper]:border",
5867
+ "[&_.leaflet-popup-content-wrapper]:border-border",
5868
+ className
5869
+ ),
5870
+ scrollWheelZoom: true,
5871
+ ...props,
5872
+ children
5873
+ }
5874
+ );
5875
+ }
5876
+ var TILE_LAYERS = {
5877
+ default: {
5878
+ url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
5879
+ attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
5880
+ },
5881
+ dark: {
5882
+ url: "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png",
5883
+ attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors &copy; <a href="https://carto.com/attributions">CARTO</a>'
5884
+ },
5885
+ satellite: {
5886
+ url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
5887
+ attribution: "&copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community"
5888
+ }
5889
+ };
5890
+ function MapTileLayer({
5891
+ variant = "default",
5892
+ ...props
5893
+ }) {
5894
+ const layer = TILE_LAYERS[variant];
5895
+ return /* @__PURE__ */ jsx(
5896
+ TileLayer,
5897
+ {
5898
+ url: layer.url,
5899
+ attribution: layer.attribution,
5900
+ ...props
5901
+ }
5902
+ );
5903
+ }
5904
+ function MapMarker({
5905
+ position,
5906
+ children,
5907
+ ...props
5908
+ }) {
5909
+ return /* @__PURE__ */ jsx(Marker, { position, ...props, children });
5910
+ }
5911
+ function MapPopup({
5912
+ children,
5913
+ ...props
5914
+ }) {
5915
+ return /* @__PURE__ */ jsx(Popup, { ...props, children: /* @__PURE__ */ jsx("div", { className: "text-sm", children }) });
5916
+ }
5917
+ function MapTooltip({
5918
+ children,
5919
+ ...props
5920
+ }) {
5921
+ return /* @__PURE__ */ jsx(Tooltip, { ...props, children });
5922
+ }
5923
+ function MapZoomControl(props) {
5924
+ return /* @__PURE__ */ jsx(ZoomControl, { ...props });
5925
+ }
5842
5926
  function DataTableColumnHeader({
5843
5927
  column,
5844
5928
  title,
@@ -9285,36 +9369,41 @@ function getLeftStrokeStyles(state, hasRisk, isHovered) {
9285
9369
  stroke: "border-l-[3px] border-l-red-500",
9286
9370
  content: "text-foreground",
9287
9371
  progressBg: "bg-red-500",
9288
- iconColor: "text-red-600 dark:text-red-400"
9372
+ iconColor: "text-red-600 dark:text-red-400",
9373
+ cardBg: "bg-background"
9289
9374
  };
9290
9375
  }
9291
9376
  switch (state) {
9292
9377
  case "sent":
9293
9378
  return {
9294
- stroke: "border-l-[3px] border-l-green-500/50",
9295
- content: "text-muted-foreground/60",
9296
- progressBg: "bg-green-500",
9297
- iconColor: "text-green-600 dark:text-green-400"
9379
+ stroke: "border-l-[3px] border-l-green-500/40",
9380
+ content: "text-muted-foreground/50",
9381
+ progressBg: "bg-green-500/50",
9382
+ iconColor: "text-green-600/50 dark:text-green-400/50",
9383
+ cardBg: "bg-muted/30"
9298
9384
  };
9299
9385
  case "ready":
9300
9386
  return {
9301
9387
  stroke: "border-l-[3px] border-l-green-500",
9302
9388
  content: "text-foreground",
9303
9389
  progressBg: "bg-green-500",
9304
- iconColor: "text-green-600 dark:text-green-400"
9390
+ iconColor: "text-green-600 dark:text-green-400",
9391
+ cardBg: "bg-background"
9305
9392
  };
9306
9393
  default:
9307
9394
  return {
9308
9395
  stroke: isHovered ? "border-l-[3px] border-l-primary/50" : "border-l-[3px] border-l-border",
9309
9396
  content: "text-foreground",
9310
9397
  progressBg: "bg-primary",
9311
- iconColor: "text-muted-foreground"
9398
+ iconColor: "text-muted-foreground",
9399
+ cardBg: "bg-background"
9312
9400
  };
9313
9401
  }
9314
9402
  }
9315
9403
  function DeliveryBadge({
9316
9404
  delivery,
9317
9405
  onClick,
9406
+ onCommentClick,
9318
9407
  className
9319
9408
  }) {
9320
9409
  const [isHovered, setIsHovered] = React27.useState(false);
@@ -9377,70 +9466,125 @@ function DeliveryBadge({
9377
9466
  onClick?.();
9378
9467
  }
9379
9468
  };
9469
+ const handleCommentClick = (e) => {
9470
+ e.stopPropagation();
9471
+ onCommentClick?.();
9472
+ };
9473
+ const amountColorClass = React27.useMemo(() => {
9474
+ if (visualState === "sent") {
9475
+ return "text-muted-foreground/40";
9476
+ }
9477
+ if (delivery.isReadyToUnload) {
9478
+ return "text-green-600 dark:text-green-400";
9479
+ }
9480
+ if (delivery.hasProductionRisk) {
9481
+ return "text-red-600 dark:text-red-400";
9482
+ }
9483
+ return "text-muted-foreground";
9484
+ }, [visualState, delivery.isReadyToUnload, delivery.hasProductionRisk]);
9380
9485
  return /* @__PURE__ */ jsxs(
9381
- "button",
9486
+ "div",
9382
9487
  {
9383
- type: "button",
9384
- onClick: handleClick,
9385
- onKeyDown: handleKeyDown,
9386
- onMouseEnter: () => setIsHovered(true),
9387
- onMouseLeave: () => setIsHovered(false),
9388
9488
  className: cn(
9389
- // Position relative for comment dot
9489
+ // Position relative for comment button
9390
9490
  "relative",
9391
9491
  // Full-width in cell, 90° corners
9392
9492
  "w-full rounded-none",
9393
9493
  // Sizing using Quantum tokens:
9394
- // - h-[80px] card height
9395
- // - px-6 = 24px horizontal (j3m.spacing.l)
9396
- // - py-4 = 16px vertical (j3m.spacing.m)
9397
- "h-[80px] px-6 py-4",
9398
- // Layout
9399
- "flex items-center",
9400
- // Card base: white background, complete border
9401
- "bg-background border border-border",
9494
+ // - min-h-[100px] card min-height
9495
+ // - pt-4 pb-3 = vertical padding (j3m.spacing.m / j3m.spacing.s)
9496
+ // - pl-4 = left padding (j3m.spacing.m)
9497
+ // - pr-2 = minimal right padding (progress bar extends further)
9498
+ "min-h-[100px] pt-4 pb-3 pl-4 pr-2",
9499
+ // Card base: dynamic background based on state, complete border
9500
+ styles.cardBg,
9501
+ "border border-border",
9402
9502
  // Left stroke for status
9403
9503
  styles.stroke,
9404
- // Interactive states
9405
- "cursor-pointer transition-all duration-200 ease-out",
9406
- "hover:-translate-y-0.5 hover:shadow-[var(--j3m-shadow-md)]",
9407
- "active:translate-y-0 active:shadow-sm",
9408
- // Focus state
9409
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1",
9410
- // Greyed out for sent state
9411
- visualState === "sent" && "opacity-60",
9504
+ // Interactive states (reduced for sent state)
9505
+ "transition-all duration-200 ease-out",
9506
+ visualState !== "sent" && "hover:-translate-y-0.5 hover:shadow-[var(--j3m-shadow-md)]",
9412
9507
  className
9413
9508
  ),
9414
9509
  children: [
9415
- hasComments && /* @__PURE__ */ jsx(
9416
- "span",
9510
+ /* @__PURE__ */ jsx(
9511
+ Button,
9417
9512
  {
9418
- className: "absolute -top-1 -right-1 h-3 w-3 rounded-full bg-primary ring-2 ring-background",
9419
- "aria-label": "Has comments"
9513
+ type: "button",
9514
+ variant: "ghost",
9515
+ size: "icon",
9516
+ className: cn(
9517
+ "absolute top-2 right-2",
9518
+ // 44px touch target for accessibility
9519
+ "h-11 w-11",
9520
+ "rounded-full",
9521
+ hasComments && "text-primary"
9522
+ ),
9523
+ onClick: handleCommentClick,
9524
+ "aria-label": hasComments ? `${delivery.comments.length} comments` : "Add comment",
9525
+ children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
9526
+ /* @__PURE__ */ jsx(MessageSquare, { className: "h-5 w-5" }),
9527
+ hasComments && /* @__PURE__ */ jsx(
9528
+ "span",
9529
+ {
9530
+ className: "absolute -top-1 -right-1 h-2.5 w-2.5 rounded-full bg-primary border-2 border-background",
9531
+ "aria-hidden": "true"
9532
+ }
9533
+ )
9534
+ ] })
9420
9535
  }
9421
9536
  ),
9422
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center gap-3 min-w-0 flex-1 overflow-hidden", children: [
9423
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 overflow-hidden", children: [
9424
- /* @__PURE__ */ jsx("span", { className: cn("text-sm font-semibold truncate", styles.content), children: prefixTitle }),
9425
- visualState === "sent" && /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 text-green-600 dark:text-green-400 shrink-0" }),
9426
- delivery.hasProductionRisk && /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 text-red-500 shrink-0" }),
9427
- delivery.supplierName && /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground truncate ml-auto", children: delivery.supplierName })
9428
- ] }),
9429
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9430
- /* @__PURE__ */ jsx(Factory, { className: cn("h-3.5 w-3.5 shrink-0", styles.iconColor) }),
9431
- /* @__PURE__ */ jsx("div", { className: "flex-1 h-1.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
9432
- "div",
9433
- {
9434
- className: cn("h-full rounded-full transition-all", styles.progressBg),
9435
- style: { width: `${productionProgress}%` }
9436
- }
9437
- ) }),
9438
- productionDisplay && /* @__PURE__ */ jsx("span", { className: cn(
9439
- "text-xs tabular-nums font-medium shrink-0",
9440
- delivery.isReadyToUnload ? "text-green-600 dark:text-green-400" : delivery.hasProductionRisk ? "text-red-600 dark:text-red-400" : "text-muted-foreground"
9441
- ), children: productionDisplay })
9442
- ] })
9443
- ] })
9537
+ /* @__PURE__ */ jsxs(
9538
+ "button",
9539
+ {
9540
+ type: "button",
9541
+ onClick: handleClick,
9542
+ onKeyDown: handleKeyDown,
9543
+ onMouseEnter: () => setIsHovered(true),
9544
+ onMouseLeave: () => setIsHovered(false),
9545
+ className: cn(
9546
+ // Full width, no background (inherits from parent)
9547
+ "w-full bg-transparent text-left",
9548
+ // Layout - vertical stack
9549
+ "flex flex-col gap-2",
9550
+ // Interactive states
9551
+ "cursor-pointer",
9552
+ "active:translate-y-0 active:shadow-sm",
9553
+ // Focus state
9554
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1"
9555
+ ),
9556
+ children: [
9557
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 overflow-hidden pr-12", children: [
9558
+ /* @__PURE__ */ jsx("span", { className: cn("text-sm font-semibold truncate", styles.content), children: prefixTitle }),
9559
+ delivery.hasProductionRisk && /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 text-red-500 shrink-0" }),
9560
+ delivery.supplierName && /* @__PURE__ */ jsx("span", { className: cn(
9561
+ "text-xs truncate ml-auto",
9562
+ visualState === "sent" ? "text-muted-foreground/40" : "text-muted-foreground"
9563
+ ), children: delivery.supplierName })
9564
+ ] }),
9565
+ /* @__PURE__ */ jsx("div", { className: "pr-14", children: /* @__PURE__ */ jsx("div", { className: "h-2 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
9566
+ "div",
9567
+ {
9568
+ className: cn("h-full rounded-full transition-all", styles.progressBg),
9569
+ style: { width: `${productionProgress}%` }
9570
+ }
9571
+ ) }) }),
9572
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
9573
+ productionDisplay && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
9574
+ /* @__PURE__ */ jsx(Factory, { className: cn("h-3 w-3 shrink-0", styles.iconColor) }),
9575
+ /* @__PURE__ */ jsx("span", { className: cn(
9576
+ "text-[11px] tabular-nums font-medium",
9577
+ amountColorClass
9578
+ ), children: productionDisplay })
9579
+ ] }),
9580
+ visualState === "sent" && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 ml-auto", children: [
9581
+ /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 text-green-600/60 dark:text-green-400/60 shrink-0" }),
9582
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium text-muted-foreground/50 uppercase tracking-wide", children: "Sent" })
9583
+ ] })
9584
+ ] })
9585
+ ]
9586
+ }
9587
+ )
9444
9588
  ]
9445
9589
  }
9446
9590
  );
@@ -9450,7 +9594,7 @@ function WeeklyLoadingView({
9450
9594
  deliveries,
9451
9595
  onDeliveryClick,
9452
9596
  onWeekChange,
9453
- onDayCommentClick,
9597
+ onDeliveryCommentClick,
9454
9598
  showNavigation = true,
9455
9599
  className
9456
9600
  }) {
@@ -9481,20 +9625,6 @@ function WeeklyLoadingView({
9481
9625
  }
9482
9626
  return grouped;
9483
9627
  }, [deliveries]);
9484
- const commentCountByDay = React27.useMemo(() => {
9485
- const counts = /* @__PURE__ */ new Map();
9486
- for (let i = 1; i <= 5; i++) {
9487
- counts.set(i, 0);
9488
- }
9489
- for (const delivery of deliveries) {
9490
- const dayOfWeek = delivery.date.getDay();
9491
- if (dayOfWeek >= 1 && dayOfWeek <= 5) {
9492
- const current = counts.get(dayOfWeek) ?? 0;
9493
- counts.set(dayOfWeek, current + delivery.comments.length);
9494
- }
9495
- }
9496
- return counts;
9497
- }, [deliveries]);
9498
9628
  const totalDeliveries = deliveries.length;
9499
9629
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", className), children: [
9500
9630
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 border-b border-border p-4 lg:flex-row lg:items-center lg:justify-between", children: [
@@ -9559,54 +9689,27 @@ function WeeklyLoadingView({
9559
9689
  ] }),
9560
9690
  /* @__PURE__ */ jsxs(ScrollArea, { className: "flex-1", children: [
9561
9691
  /* @__PURE__ */ jsxs("div", { className: "hidden sm:block", children: [
9562
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5 border-b border-border bg-muted/30", children: weekDays.map(({ date, dayOfWeek, isToday: dayIsToday }) => {
9563
- const dayCommentCount = commentCountByDay.get(dayOfWeek) ?? 0;
9564
- return /* @__PURE__ */ jsxs(
9565
- "div",
9566
- {
9567
- className: cn(
9568
- // Relative for positioning comment button
9569
- "relative",
9570
- // Compact padding: py-2 px-3 (j3m.spacing.xs / j3m.spacing.s)
9571
- "flex items-center justify-center gap-2 py-2 px-3",
9572
- dayIsToday && "bg-primary/5"
9573
- ),
9574
- children: [
9575
- /* @__PURE__ */ jsx("span", { className: cn(
9576
- "text-xs font-medium uppercase tracking-wide",
9577
- dayIsToday ? "text-primary" : "text-muted-foreground"
9578
- ), children: getShortDayLabel(dayOfWeek) }),
9579
- /* @__PURE__ */ jsx("span", { className: cn(
9580
- "text-base font-semibold tabular-nums",
9581
- dayIsToday ? "text-primary" : "text-foreground"
9582
- ), children: date.getDate() }),
9583
- /* @__PURE__ */ jsxs(
9584
- Button,
9585
- {
9586
- variant: "ghost",
9587
- size: "icon",
9588
- className: cn(
9589
- "absolute top-1 right-1 h-7 w-7",
9590
- dayCommentCount > 0 && "text-primary"
9591
- ),
9592
- onClick: (e) => {
9593
- e.stopPropagation();
9594
- onDayCommentClick?.(dayOfWeek, date);
9595
- },
9596
- children: [
9597
- /* @__PURE__ */ jsxs("div", { className: "relative", children: [
9598
- /* @__PURE__ */ jsx(MessageSquare, { className: "h-4 w-4" }),
9599
- dayCommentCount > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary" })
9600
- ] }),
9601
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: dayCommentCount > 0 ? `${dayCommentCount} comments on ${getShortDayLabel(dayOfWeek)}` : `Add comment for ${getShortDayLabel(dayOfWeek)}` })
9602
- ]
9603
- }
9604
- )
9605
- ]
9606
- },
9607
- dayOfWeek
9608
- );
9609
- }) }),
9692
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5 border-b border-border bg-muted/30", children: weekDays.map(({ date, dayOfWeek, isToday: dayIsToday }) => /* @__PURE__ */ jsxs(
9693
+ "div",
9694
+ {
9695
+ className: cn(
9696
+ // Compact padding
9697
+ "flex flex-col items-center justify-center py-2 px-2",
9698
+ dayIsToday && "bg-primary/5"
9699
+ ),
9700
+ children: [
9701
+ /* @__PURE__ */ jsx("span", { className: cn(
9702
+ "text-[11px] font-semibold uppercase tracking-wide leading-none",
9703
+ dayIsToday ? "text-primary" : "text-muted-foreground"
9704
+ ), children: getShortDayLabel(dayOfWeek) }),
9705
+ /* @__PURE__ */ jsx("span", { className: cn(
9706
+ "text-lg font-medium tabular-nums leading-tight mt-0.5",
9707
+ dayIsToday ? "text-primary" : "text-foreground"
9708
+ ), children: date.getDate() })
9709
+ ]
9710
+ },
9711
+ dayOfWeek
9712
+ )) }),
9610
9713
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5", children: weekDays.map(({ dayOfWeek, isToday: dayIsToday }) => {
9611
9714
  const dayDeliveries = deliveriesByDay.get(dayOfWeek) ?? [];
9612
9715
  return /* @__PURE__ */ jsx(
@@ -9621,7 +9724,8 @@ function WeeklyLoadingView({
9621
9724
  DeliveryBadge,
9622
9725
  {
9623
9726
  delivery,
9624
- onClick: () => onDeliveryClick?.(delivery)
9727
+ onClick: () => onDeliveryClick?.(delivery),
9728
+ onCommentClick: () => onDeliveryCommentClick?.(delivery)
9625
9729
  },
9626
9730
  delivery.id
9627
9731
  )) : /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-6 text-sm text-muted-foreground/40", children: "\u2014" }) })
@@ -9632,7 +9736,6 @@ function WeeklyLoadingView({
9632
9736
  ] }),
9633
9737
  /* @__PURE__ */ jsx("div", { className: "sm:hidden divide-y divide-border", children: weekDays.map(({ date, dayOfWeek, isToday: dayIsToday }) => {
9634
9738
  const dayDeliveries = deliveriesByDay.get(dayOfWeek) ?? [];
9635
- const dayCommentCount = commentCountByDay.get(dayOfWeek) ?? 0;
9636
9739
  return /* @__PURE__ */ jsxs(
9637
9740
  "div",
9638
9741
  {
@@ -9641,52 +9744,31 @@ function WeeklyLoadingView({
9641
9744
  ),
9642
9745
  children: [
9643
9746
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2", children: [
9644
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9645
- /* @__PURE__ */ jsx("span", { className: cn(
9646
- "text-xs font-medium uppercase",
9647
- dayIsToday ? "text-primary" : "text-muted-foreground"
9648
- ), children: getShortDayLabel(dayOfWeek) }),
9649
- /* @__PURE__ */ jsx("span", { className: cn(
9650
- "text-base font-semibold tabular-nums",
9651
- dayIsToday ? "text-primary" : "text-foreground"
9652
- ), children: date.getDate() }),
9653
- dayIsToday && /* @__PURE__ */ jsx("span", { className: "text-xs text-primary font-medium", children: "Today" })
9654
- ] }),
9655
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9656
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground", children: [
9657
- dayDeliveries.length,
9658
- " ",
9659
- dayDeliveries.length === 1 ? "delivery" : "deliveries"
9747
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
9748
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center min-w-[40px]", children: [
9749
+ /* @__PURE__ */ jsx("span", { className: cn(
9750
+ "text-[11px] font-semibold uppercase tracking-wide leading-none",
9751
+ dayIsToday ? "text-primary" : "text-muted-foreground"
9752
+ ), children: getShortDayLabel(dayOfWeek) }),
9753
+ /* @__PURE__ */ jsx("span", { className: cn(
9754
+ "text-lg font-medium tabular-nums leading-tight mt-0.5",
9755
+ dayIsToday ? "text-primary" : "text-foreground"
9756
+ ), children: date.getDate() })
9660
9757
  ] }),
9661
- /* @__PURE__ */ jsxs(
9662
- Button,
9663
- {
9664
- variant: "ghost",
9665
- size: "icon",
9666
- className: cn(
9667
- "h-7 w-7",
9668
- dayCommentCount > 0 && "text-primary"
9669
- ),
9670
- onClick: (e) => {
9671
- e.stopPropagation();
9672
- onDayCommentClick?.(dayOfWeek, date);
9673
- },
9674
- children: [
9675
- /* @__PURE__ */ jsxs("div", { className: "relative", children: [
9676
- /* @__PURE__ */ jsx(MessageSquare, { className: "h-4 w-4" }),
9677
- dayCommentCount > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary" })
9678
- ] }),
9679
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Comments" })
9680
- ]
9681
- }
9682
- )
9758
+ dayIsToday && /* @__PURE__ */ jsx("span", { className: "text-xs text-primary font-medium bg-primary/10 px-2 py-0.5 rounded", children: "Today" })
9759
+ ] }),
9760
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground", children: [
9761
+ dayDeliveries.length,
9762
+ " ",
9763
+ dayDeliveries.length === 1 ? "delivery" : "deliveries"
9683
9764
  ] })
9684
9765
  ] }),
9685
9766
  /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 p-3 pt-0", children: dayDeliveries.length > 0 ? dayDeliveries.map((delivery) => /* @__PURE__ */ jsx(
9686
9767
  DeliveryBadge,
9687
9768
  {
9688
9769
  delivery,
9689
- onClick: () => onDeliveryClick?.(delivery)
9770
+ onClick: () => onDeliveryClick?.(delivery),
9771
+ onCommentClick: () => onDeliveryCommentClick?.(delivery)
9690
9772
  },
9691
9773
  delivery.id
9692
9774
  )) : /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground/40 py-4 text-center", children: "\u2014" }) })
@@ -9796,7 +9878,7 @@ function AddCommentDialog({
9796
9878
  }, [open]);
9797
9879
  return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-md", children: [
9798
9880
  /* @__PURE__ */ jsxs(DialogHeader, { children: [
9799
- /* @__PURE__ */ jsx(DialogTitle, { children: "Add pre-unloading note" }),
9881
+ /* @__PURE__ */ jsx(DialogTitle, { children: "Add pre-loading note" }),
9800
9882
  /* @__PURE__ */ jsxs(DialogDescription, { children: [
9801
9883
  "Add a note for ",
9802
9884
  /* @__PURE__ */ jsx("strong", { children: delivery.label }),
@@ -9812,7 +9894,7 @@ function AddCommentDialog({
9812
9894
  Textarea,
9813
9895
  {
9814
9896
  id: "comment-text",
9815
- placeholder: "Add a note before unloading...",
9897
+ placeholder: "Add a note before loading...",
9816
9898
  value: commentText,
9817
9899
  onChange: (e) => setCommentText(e.target.value),
9818
9900
  onKeyDown: handleKeyDown,
@@ -9867,7 +9949,7 @@ function CommentsSection({
9867
9949
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
9868
9950
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9869
9951
  /* @__PURE__ */ jsx(MessageSquare, { className: "h-4 w-4 text-muted-foreground" }),
9870
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Notes before unloading" }),
9952
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Notes before loading" }),
9871
9953
  comments.length > 0 && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-[10px] h-5", children: comments.length })
9872
9954
  ] }),
9873
9955
  /* @__PURE__ */ jsxs(
@@ -9902,7 +9984,7 @@ function CommentsSection({
9902
9984
  ] }),
9903
9985
  /* @__PURE__ */ jsx("p", { className: "text-sm", children: comment.text })
9904
9986
  ] }, comment.id)) })
9905
- ] }) : /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-dashed p-4 text-center text-sm text-muted-foreground", children: "No pre-unloading notes yet. Add notes before confirming the load." })
9987
+ ] }) : /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-dashed p-4 text-center text-sm text-muted-foreground", children: "No pre-loading notes yet. Add notes before confirming the load." })
9906
9988
  ] }),
9907
9989
  /* @__PURE__ */ jsx(
9908
9990
  AddCommentDialog,
@@ -9965,7 +10047,7 @@ function DeliveryDetailPage({
9965
10047
  const addons = delivery.elements.filter((e) => e.status === "addon");
9966
10048
  return { loaded, missing, moved, addons };
9967
10049
  }, [delivery.elements]);
9968
- const preUnloadingComments = delivery.comments.filter((c) => c.context === "pre_unloading");
10050
+ const preLoadingComments = delivery.comments.filter((c) => c.context === "pre_unloading");
9969
10051
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full", children: [
9970
10052
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 px-4 py-3 border-b bg-background sticky top-0 z-10", children: /* @__PURE__ */ jsxs(
9971
10053
  Button,
@@ -10014,7 +10096,7 @@ function DeliveryDetailPage({
10014
10096
  {
10015
10097
  variant: "outline",
10016
10098
  className: "bg-green-100 dark:bg-green-900/50 border-green-300 dark:border-green-700 text-green-700 dark:text-green-300",
10017
- children: "Ready to unload"
10099
+ children: "Ready to load"
10018
10100
  }
10019
10101
  )
10020
10102
  ] })
@@ -10105,13 +10187,13 @@ function DeliveryDetailPage({
10105
10187
  ] })
10106
10188
  ] })
10107
10189
  ] }),
10108
- delivery.elements.length > 0 && /* @__PURE__ */ jsxs("section", { className: "space-y-3", children: [
10190
+ (elementsByStatus.loaded.length > 0 || elementsByStatus.missing.length > 0 || elementsByStatus.moved.length > 0) && /* @__PURE__ */ jsxs("section", { className: "space-y-3", children: [
10109
10191
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
10110
10192
  /* @__PURE__ */ jsx(Package, { className: "h-4 w-4 text-muted-foreground" }),
10111
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Elements to Unload" }),
10193
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "What should be packed" }),
10112
10194
  /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground ml-auto", children: [
10113
- delivery.elements.length,
10114
- " total"
10195
+ elementsByStatus.loaded.length + elementsByStatus.missing.length + elementsByStatus.moved.length,
10196
+ " items"
10115
10197
  ] })
10116
10198
  ] }),
10117
10199
  /* @__PURE__ */ jsx("div", { className: "rounded-lg border overflow-hidden", children: /* @__PURE__ */ jsxs(Table, { children: [
@@ -10122,7 +10204,7 @@ function DeliveryDetailPage({
10122
10204
  /* @__PURE__ */ jsx(TableHead, { className: "font-semibold text-right", children: "Size (m\xB2)" }),
10123
10205
  /* @__PURE__ */ jsx(TableHead, { className: "font-semibold text-center", children: "Status" })
10124
10206
  ] }) }),
10125
- /* @__PURE__ */ jsx(TableBody, { children: delivery.elements.map((element) => /* @__PURE__ */ jsxs(
10207
+ /* @__PURE__ */ jsx(TableBody, { children: [...elementsByStatus.loaded, ...elementsByStatus.missing, ...elementsByStatus.moved].map((element) => /* @__PURE__ */ jsxs(
10126
10208
  TableRow,
10127
10209
  {
10128
10210
  className: getElementRowBg(element.status),
@@ -10150,10 +10232,6 @@ function DeliveryDetailPage({
10150
10232
  element.status === "moved" && element.actualDeliveryLabel && /* @__PURE__ */ jsxs("span", { className: "text-[9px] text-blue-600 dark:text-blue-400", children: [
10151
10233
  "\u2192 ",
10152
10234
  element.actualDeliveryLabel
10153
- ] }),
10154
- element.status === "addon" && element.originalDeliveryLabel && /* @__PURE__ */ jsxs("span", { className: "text-[9px] text-purple-600 dark:text-purple-400", children: [
10155
- "from ",
10156
- element.originalDeliveryLabel
10157
10235
  ] })
10158
10236
  ] }) })
10159
10237
  ]
@@ -10162,10 +10240,48 @@ function DeliveryDetailPage({
10162
10240
  )) })
10163
10241
  ] }) })
10164
10242
  ] }),
10243
+ elementsByStatus.addons.length > 0 && /* @__PURE__ */ jsxs("section", { className: "space-y-3", children: [
10244
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
10245
+ /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4 text-purple-600 dark:text-purple-400" }),
10246
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Extra items (moved to this delivery)" }),
10247
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground ml-auto", children: [
10248
+ elementsByStatus.addons.length,
10249
+ " items"
10250
+ ] })
10251
+ ] }),
10252
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "These items were originally planned for other deliveries but have been moved to this one." }),
10253
+ /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-purple-200 dark:border-purple-800 overflow-hidden", children: /* @__PURE__ */ jsxs(Table, { children: [
10254
+ /* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsxs(TableRow, { className: "bg-purple-50/50 dark:bg-purple-950/30 hover:bg-purple-50/50 dark:hover:bg-purple-950/30", children: [
10255
+ /* @__PURE__ */ jsx(TableHead, { className: "font-semibold", children: "Prefix" }),
10256
+ /* @__PURE__ */ jsx(TableHead, { className: "font-semibold", children: "Type" }),
10257
+ /* @__PURE__ */ jsx(TableHead, { className: "font-semibold text-right", children: "Weight" }),
10258
+ /* @__PURE__ */ jsx(TableHead, { className: "font-semibold text-right", children: "Size (m\xB2)" }),
10259
+ /* @__PURE__ */ jsx(TableHead, { className: "font-semibold", children: "Moved from" })
10260
+ ] }) }),
10261
+ /* @__PURE__ */ jsx(TableBody, { children: elementsByStatus.addons.map((element) => /* @__PURE__ */ jsxs(
10262
+ TableRow,
10263
+ {
10264
+ className: "bg-purple-50/30 dark:bg-purple-950/10",
10265
+ children: [
10266
+ /* @__PURE__ */ jsx(TableCell, { className: "font-medium", children: element.prefix }),
10267
+ /* @__PURE__ */ jsx(TableCell, { children: element.type }),
10268
+ /* @__PURE__ */ jsx(TableCell, { className: "text-right tabular-nums", children: element.weight ? /* @__PURE__ */ jsxs("span", { children: [
10269
+ element.weight,
10270
+ " ",
10271
+ element.weightUnit || "kg"
10272
+ ] }) : "\u2014" }),
10273
+ /* @__PURE__ */ jsx(TableCell, { className: "text-right tabular-nums", children: element.sizeSqm ?? "\u2014" }),
10274
+ /* @__PURE__ */ jsx(TableCell, { children: element.originalDeliveryLabel ? /* @__PURE__ */ jsx("span", { className: "text-sm text-purple-600 dark:text-purple-400", children: element.originalDeliveryLabel }) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "\u2014" }) })
10275
+ ]
10276
+ },
10277
+ element.id
10278
+ )) })
10279
+ ] }) })
10280
+ ] }),
10165
10281
  /* @__PURE__ */ jsx(
10166
10282
  CommentsSection,
10167
10283
  {
10168
- comments: preUnloadingComments,
10284
+ comments: preLoadingComments,
10169
10285
  delivery,
10170
10286
  weekId: week.weekKey,
10171
10287
  onAddComment
@@ -10202,6 +10318,9 @@ function SupplierWeeklyLoading({
10202
10318
  }) {
10203
10319
  const [selectedDelivery, setSelectedDelivery] = React27.useState(null);
10204
10320
  const [sheetOpen, setSheetOpen] = React27.useState(false);
10321
+ const [commentDelivery, setCommentDelivery] = React27.useState(null);
10322
+ const [commentDialogOpen, setCommentDialogOpen] = React27.useState(false);
10323
+ const [commentText, setCommentText] = React27.useState("");
10205
10324
  const handleDeliveryClick = (delivery) => {
10206
10325
  setSelectedDelivery(delivery);
10207
10326
  setSheetOpen(true);
@@ -10212,6 +10331,38 @@ function SupplierWeeklyLoading({
10212
10331
  setTimeout(() => setSelectedDelivery(null), 200);
10213
10332
  onBack?.();
10214
10333
  };
10334
+ const handleDeliveryCommentClick = (delivery) => {
10335
+ setCommentDelivery(delivery);
10336
+ setCommentDialogOpen(true);
10337
+ };
10338
+ const handleCommentDialogClose = () => {
10339
+ setCommentDialogOpen(false);
10340
+ setCommentText("");
10341
+ setTimeout(() => setCommentDelivery(null), 200);
10342
+ };
10343
+ const handleCommentSubmit = () => {
10344
+ if (commentText.trim() && commentDelivery && onAddComment) {
10345
+ onAddComment({
10346
+ author: "Current User",
10347
+ // Would come from auth context in real app
10348
+ text: commentText.trim(),
10349
+ context: "pre_unloading",
10350
+ weekId: week.weekKey,
10351
+ deliveryId: commentDelivery.id,
10352
+ supplierId: commentDelivery.supplierId,
10353
+ supplierName: commentDelivery.supplierName,
10354
+ prefixId: commentDelivery.prefixScope,
10355
+ prefixName: commentDelivery.prefixScope
10356
+ });
10357
+ handleCommentDialogClose();
10358
+ }
10359
+ };
10360
+ const handleCommentKeyDown = (e) => {
10361
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
10362
+ e.preventDefault();
10363
+ handleCommentSubmit();
10364
+ }
10365
+ };
10215
10366
  const Wrapper = bordered ? Card : "div";
10216
10367
  const Content14 = bordered ? CardContent : "div";
10217
10368
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -10230,6 +10381,7 @@ function SupplierWeeklyLoading({
10230
10381
  week,
10231
10382
  deliveries,
10232
10383
  onDeliveryClick: handleDeliveryClick,
10384
+ onDeliveryCommentClick: handleDeliveryCommentClick,
10233
10385
  onWeekChange,
10234
10386
  showNavigation
10235
10387
  }
@@ -10258,7 +10410,58 @@ function SupplierWeeklyLoading({
10258
10410
  )
10259
10411
  ]
10260
10412
  }
10261
- ) })
10413
+ ) }),
10414
+ /* @__PURE__ */ jsx(Dialog, { open: commentDialogOpen, onOpenChange: (open) => !open && handleCommentDialogClose(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-md", children: [
10415
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
10416
+ /* @__PURE__ */ jsx(DialogTitle, { children: "Add pre-loading note" }),
10417
+ /* @__PURE__ */ jsxs(DialogDescription, { children: [
10418
+ "Add a note for ",
10419
+ /* @__PURE__ */ jsx("strong", { children: commentDelivery?.label }),
10420
+ " (",
10421
+ commentDelivery?.supplierName,
10422
+ commentDelivery?.prefixScope && ` \u2022 ${commentDelivery.prefixScope}`,
10423
+ ")."
10424
+ ] })
10425
+ ] }),
10426
+ /* @__PURE__ */ jsx("div", { className: "space-y-4 py-2", children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
10427
+ /* @__PURE__ */ jsx(Label2, { htmlFor: "card-comment-text", className: "text-sm font-medium", children: "Note" }),
10428
+ /* @__PURE__ */ jsx(
10429
+ Textarea,
10430
+ {
10431
+ id: "card-comment-text",
10432
+ placeholder: "Add a note before loading...",
10433
+ value: commentText,
10434
+ onChange: (e) => setCommentText(e.target.value),
10435
+ onKeyDown: handleCommentKeyDown,
10436
+ className: "min-h-[120px] text-base resize-none",
10437
+ autoFocus: true
10438
+ }
10439
+ ),
10440
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "\u2318+Enter to save" })
10441
+ ] }) }),
10442
+ /* @__PURE__ */ jsxs(DialogFooter, { className: "gap-2 sm:gap-0", children: [
10443
+ /* @__PURE__ */ jsx(
10444
+ Button,
10445
+ {
10446
+ variant: "ghost",
10447
+ onClick: handleCommentDialogClose,
10448
+ children: "Cancel"
10449
+ }
10450
+ ),
10451
+ /* @__PURE__ */ jsxs(
10452
+ Button,
10453
+ {
10454
+ onClick: handleCommentSubmit,
10455
+ disabled: !commentText.trim(),
10456
+ className: "gap-1.5",
10457
+ children: [
10458
+ /* @__PURE__ */ jsx(Send, { className: "h-4 w-4" }),
10459
+ "Save note"
10460
+ ]
10461
+ }
10462
+ )
10463
+ ] })
10464
+ ] }) })
10262
10465
  ] });
10263
10466
  }
10264
10467
  function getStatusBadgeVariant3(status) {
@@ -13495,6 +13698,6 @@ function CalendarView({
13495
13698
  }
13496
13699
  }
13497
13700
 
13498
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgendaView, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, BADGE_VARIANT_LABELS, Badge, BigCalendar, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarContext, CalendarDayButton, CalendarHeader, CalendarHeaderCompact, CalendarSettingsButton, CalendarSettingsContent, CalendarSettingsDialog, CalibrationTable, CalibrationWeekCell, CalibrationWeekHeader, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChangeBadgeVariantInput, ChangeVisibleHoursInput, ChangeWorkingHoursInput, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CircularProgress, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommentButton, CommentDialog, CommentPopover, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_VISIBLE_HOURS, DEFAULT_WORKING_HOURS, DataTableColumnHeader, DataTablePagination, DataTableViewOptions, DateBadge, DayView, DeliveryBadge, DeliveryCard, DeliveryDetailPage, DeliveryIndicator, DeliveryIndicators, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DragContext, DragProvider, DraggableEvent, 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, DroppableZone, EVENT_COLORS, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventBadge, EventCalendarProvider, EventDialog, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Item6 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label2 as Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MonthView, MoreEvents, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavMain, NavProjects, NavSecondary, NavUser, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NetBadge, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PlanningTable, PlanningTableToolbar, PlanningWeekCommentPopover, PlayerCanvas, PlayerCanvasActionButton, PlayerCanvasControls, PlayerCanvasDivider, PlayerCanvasInfo, PlayerCanvasLabel, PlayerCanvasPlayButton, PlayerCanvasProgress, PlayerCanvasSkipButton, PlayerCanvasTitle, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, QuickAddEvent, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RowHeaderCell, ScrollArea, ScrollBar, SearchForm, SearchTrigger, Section, SectionContent, SectionDescription, SectionFooter, SectionHeader, SectionTitle, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, 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, SiteHeader, Skeleton, Slider, Spinner, SubmitCalibrationBar, SupplierCell, SupplierWeeklyLoading, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeSwitch, TimeIndicator, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolBarCanvas, ToolBarCanvasButton, ToolBarCanvasDivider, ToolBarCanvasGroup, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatarsDropdown, VIEW_LABELS, WeekCell, WeekDetailDialog, WeekHeader, WeekView, WeeklyLoadingView, YearView, badgeVariants, buttonGroupVariants, buttonVariants, calculateCalibrationCells, calculateDropDates, calculateMonthEventPositions, canSubmitCalibration, cardVariants, createDefaultEvent, deliveryIndicatorVariants, extractPrefixes, formatCalibrationUnit, formatDateRange2 as formatDateRange, formatProductionUnit, formatTime, generateColumns, generateEventId, generateLoadingWeek, generateLocationOptions, generateWeekColumns, generateWeeks, getCalendarCells, getCommentLocationLabel, getCurrentEvents, getDayHours, getDayLabel, getDeliveryVisualState, getElementShipmentStatus, getEventBlockStyle, getEventDuration, getEventDurationMinutes, getEventsCount, getEventsForDate, getEventsInRange, getHeaderLabel, getISOWeek, getLoadingDeliveryStatusLabel, getLoadingElementStatusLabel, getLoadingISOWeek, getLoadingWeekKey, getMonthCellEvents, getMonthDays, getShipmentStatusLabel, getShortDayLabel, getSupplierColumn, getTimeHeight, getTimePosition, getViewDateRange, getVisibleHours, getWeekDayNames, getWeekDays, getWeekKey, getYearMonths, groupDeliveriesByDay, groupDeliveriesByPrefixAndDay, groupEvents, isMultiDayEvent, isWorkingHour, navigateDate, navigationMenuTriggerStyle, playerCanvasPlayButtonVariants, playerCanvasSkipButtonVariants, rangeText, sectionVariants, snapToInterval, sortEvents, splitEventsByDuration, toggleVariants, toolBarCanvasButtonVariants, useDrag, useDraggable, useDroppable, useEventCalendar, useEventsInRange, useFilteredEvents, useFormField, useIsMobile, useSearchShortcut, useSidebar };
13701
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgendaView, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, BADGE_VARIANT_LABELS, Badge, BigCalendar, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarContext, CalendarDayButton, CalendarHeader, CalendarHeaderCompact, CalendarSettingsButton, CalendarSettingsContent, CalendarSettingsDialog, CalibrationTable, CalibrationWeekCell, CalibrationWeekHeader, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChangeBadgeVariantInput, ChangeVisibleHoursInput, ChangeWorkingHoursInput, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CircularProgress, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommentButton, CommentDialog, CommentPopover, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_VISIBLE_HOURS, DEFAULT_WORKING_HOURS, DataTableColumnHeader, DataTablePagination, DataTableViewOptions, DateBadge, DayView, DeliveryBadge, DeliveryCard, DeliveryDetailPage, DeliveryIndicator, DeliveryIndicators, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DragContext, DragProvider, DraggableEvent, 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, DroppableZone, EVENT_COLORS, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventBadge, EventCalendarProvider, EventDialog, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Item6 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label2 as Label, Map2 as Map, MapMarker, MapPopup, MapTileLayer, MapTooltip, MapZoomControl, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MonthView, MoreEvents, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavMain, NavProjects, NavSecondary, NavUser, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NetBadge, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PlanningTable, PlanningTableToolbar, PlanningWeekCommentPopover, PlayerCanvas, PlayerCanvasActionButton, PlayerCanvasControls, PlayerCanvasDivider, PlayerCanvasInfo, PlayerCanvasLabel, PlayerCanvasPlayButton, PlayerCanvasProgress, PlayerCanvasSkipButton, PlayerCanvasTitle, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, QuickAddEvent, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RowHeaderCell, ScrollArea, ScrollBar, SearchForm, SearchTrigger, Section, SectionContent, SectionDescription, SectionFooter, SectionHeader, SectionTitle, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, 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, SiteHeader, Skeleton, Slider, Spinner, SubmitCalibrationBar, SupplierCell, SupplierWeeklyLoading, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeSwitch, TimeIndicator, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToolBarCanvas, ToolBarCanvasButton, ToolBarCanvasDivider, ToolBarCanvasGroup, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatarsDropdown, VIEW_LABELS, WeekCell, WeekDetailDialog, WeekHeader, WeekView, WeeklyLoadingView, YearView, badgeVariants, buttonGroupVariants, buttonVariants, calculateCalibrationCells, calculateDropDates, calculateMonthEventPositions, canSubmitCalibration, cardVariants, createDefaultEvent, deliveryIndicatorVariants, extractPrefixes, formatCalibrationUnit, formatDateRange2 as formatDateRange, formatProductionUnit, formatTime, generateColumns, generateEventId, generateLoadingWeek, generateLocationOptions, generateWeekColumns, generateWeeks, getCalendarCells, getCommentLocationLabel, getCurrentEvents, getDayHours, getDayLabel, getDeliveryVisualState, getElementShipmentStatus, getEventBlockStyle, getEventDuration, getEventDurationMinutes, getEventsCount, getEventsForDate, getEventsInRange, getHeaderLabel, getISOWeek, getLoadingDeliveryStatusLabel, getLoadingElementStatusLabel, getLoadingISOWeek, getLoadingWeekKey, getMonthCellEvents, getMonthDays, getShipmentStatusLabel, getShortDayLabel, getSupplierColumn, getTimeHeight, getTimePosition, getViewDateRange, getVisibleHours, getWeekDayNames, getWeekDays, getWeekKey, getYearMonths, groupDeliveriesByDay, groupDeliveriesByPrefixAndDay, groupEvents, isMultiDayEvent, isWorkingHour, navigateDate, navigationMenuTriggerStyle, playerCanvasPlayButtonVariants, playerCanvasSkipButtonVariants, rangeText, sectionVariants, snapToInterval, sortEvents, splitEventsByDuration, toggleVariants, toolBarCanvasButtonVariants, useDrag, useDraggable, useDroppable, useEventCalendar, useEventsInRange, useFilteredEvents, useFormField, useIsMobile, useSearchShortcut, useSidebar };
13499
13702
  //# sourceMappingURL=index.js.map
13500
13703
  //# sourceMappingURL=index.js.map