design-zystem 1.0.430 → 1.0.432

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/ui/index.js CHANGED
@@ -2197,8 +2197,9 @@ var Tabs = ({
2197
2197
  updateBar();
2198
2198
  const ro = new ResizeObserver(updateBar);
2199
2199
  if (listRef.current) ro.observe(listRef.current);
2200
+ triggerRefs.current.forEach((trigger) => ro.observe(trigger));
2200
2201
  return () => ro.disconnect();
2201
- }, [updateBar]);
2202
+ }, [updateBar, items]);
2202
2203
  const isPills = variant === "pills";
2203
2204
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2204
2205
  RadixTabs.Root,
@@ -3366,6 +3367,17 @@ var TagLevelPicker = ({
3366
3367
  );
3367
3368
  };
3368
3369
 
3370
+ // src/ui/lib/warnDeprecatedTableProp.ts
3371
+ var warnedProps = /* @__PURE__ */ new Set();
3372
+ var warnDeprecatedTableProp = (component, prop, replacement) => {
3373
+ const key = `${component}.${prop}`;
3374
+ if (process.env.NODE_ENV === "production" || warnedProps.has(key)) return;
3375
+ warnedProps.add(key);
3376
+ console.warn(
3377
+ `[design-zystem] <${component} ${prop}> est d\xE9pr\xE9ci\xE9 et sera retir\xE9 : ${replacement}.`
3378
+ );
3379
+ };
3380
+
3369
3381
  // src/ui/components/ui/Pagination.tsx
3370
3382
  var import_react26 = require("react");
3371
3383
  var import_jsx_runtime33 = require("react/jsx-runtime");
@@ -3588,6 +3600,7 @@ var import_jsx_runtime36 = require("react/jsx-runtime");
3588
3600
  var TableBody = ({
3589
3601
  children,
3590
3602
  useEvenBackground,
3603
+ isLined,
3591
3604
  className
3592
3605
  }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3593
3606
  "tbody",
@@ -3595,6 +3608,7 @@ var TableBody = ({
3595
3608
  className: cn(
3596
3609
  "text-neutral-800",
3597
3610
  useEvenBackground && "[&>tr:nth-child(even)]:bg-grey-100",
3611
+ isLined && "[&>tr>td]:border-t [&>tr>td]:border-grey-200 [&>tr>th]:border-t [&>tr>th]:border-grey-200",
3598
3612
  className
3599
3613
  ),
3600
3614
  children
@@ -3906,12 +3920,25 @@ var Table = ({
3906
3920
  className,
3907
3921
  pagination,
3908
3922
  variant,
3923
+ columnsAlign = "center",
3909
3924
  toolbar,
3910
3925
  selection,
3911
3926
  zebra,
3912
3927
  borderLeft = false
3913
3928
  }) => {
3914
3929
  var _a;
3930
+ if (zebra !== void 0)
3931
+ warnDeprecatedTableProp(
3932
+ "Table",
3933
+ "zebra",
3934
+ 'utilise variant="zebra" ou variant="lined"'
3935
+ );
3936
+ if (borderLeft)
3937
+ warnDeprecatedTableProp(
3938
+ "Table",
3939
+ "borderLeft",
3940
+ "le style du tableau ne se r\xE8gle plus page par page"
3941
+ );
3915
3942
  const isZebra = (variant != null ? variant : zebra === false ? "lined" : "zebra") === "zebra";
3916
3943
  const loadingRowCount = (_a = pagination == null ? void 0 : pagination.itemsPerPage) != null ? _a : DEFAULT_LOADING_ROW_COUNT;
3917
3944
  const hasRows = rows.length > 0;
@@ -3944,13 +3971,14 @@ var Table = ({
3944
3971
  // bordures sont peintes par le modèle de fusion du tableau et
3945
3972
  // restent à la position d'origine dans la grille au scroll.
3946
3973
  "w-full table-fixed border-separate border-spacing-0 caption-bottom text-xs",
3947
- "[&_tr>*:first-child:not(.table-select-cell)]:text-left [&_tr>.table-select-cell:first-child+*]:text-left [&_tr>*:not(:first-child)]:text-center",
3974
+ "[&_tr>*:first-child:not(.table-select-cell)]:text-left [&_tr>.table-select-cell:first-child+*]:text-left",
3975
+ columnsAlign === "center" && "[&_tr>*:not(:first-child)]:text-center",
3948
3976
  borderLeft && "[&_th:not(:first-child)]:border-l [&_td:not(:first-child)]:border-l [&_th:not(:first-child)]:border-grey-200 [&_td:not(:first-child)]:border-grey-200"
3949
3977
  ),
3950
3978
  style: { minWidth: minWidth || void 0 },
3951
3979
  children: [
3952
3980
  header,
3953
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TableBody, { useEvenBackground: isZebra, children: rows }),
3981
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TableBody, { useEvenBackground: isZebra, isLined: !isZebra, children: rows }),
3954
3982
  footer
3955
3983
  ]
3956
3984
  }
@@ -4090,26 +4118,34 @@ var TableRow = (0, import_react28.forwardRef)(
4090
4118
  backgroundColor,
4091
4119
  accentColor,
4092
4120
  "data-index": dataIndex
4093
- }, ref) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4094
- "tr",
4095
- {
4096
- ref,
4097
- "data-index": dataIndex,
4098
- onClick,
4099
- onDoubleClick,
4100
- className: cn(
4101
- "[&>td]:border-t [&>td]:border-grey-200 [&>th]:border-t [&>th]:border-grey-200 transition-colors hover:bg-black/[0.025]",
4102
- (onClick || onDoubleClick) && "cursor-pointer",
4103
- accentColor && "border-l-4",
4104
- className
4105
- ),
4106
- style: {
4107
- backgroundColor,
4108
- borderLeftColor: accentColor
4109
- },
4110
- children
4111
- }
4112
- )
4121
+ }, ref) => {
4122
+ if (backgroundColor)
4123
+ warnDeprecatedTableProp(
4124
+ "TableRow",
4125
+ "backgroundColor",
4126
+ "le statut passe par TableStatusCell"
4127
+ );
4128
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4129
+ "tr",
4130
+ {
4131
+ ref,
4132
+ "data-index": dataIndex,
4133
+ onClick,
4134
+ onDoubleClick,
4135
+ className: cn(
4136
+ "transition-colors hover:bg-black/[0.025]",
4137
+ (onClick || onDoubleClick) && "cursor-pointer",
4138
+ accentColor && "border-l-4",
4139
+ className
4140
+ ),
4141
+ style: {
4142
+ backgroundColor,
4143
+ borderLeftColor: accentColor
4144
+ },
4145
+ children
4146
+ }
4147
+ );
4148
+ }
4113
4149
  );
4114
4150
  TableRow.displayName = "TableRow";
4115
4151
 
@@ -4135,36 +4171,50 @@ var TableCell = ({
4135
4171
  colSpan,
4136
4172
  cursor,
4137
4173
  className
4138
- }) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4139
- "td",
4140
- {
4141
- colSpan,
4142
- className: cn(
4143
- "text-ellipsis whitespace-nowrap h-10 px-2 py-2 text-center text-xs font-semibold",
4144
- // Une cellule fusionnée (section/groupe) ne tronque pas son contenu, et
4145
- // ne doit pas clipper : elle porte souvent un enfant `sticky` (label de
4146
- // groupe figé au scroll horizontal), qu'un ancêtre `overflow` cassé.
4147
- colSpan ? "overflow-visible" : "overflow-hidden",
4148
- borderLeft && "border-l border-grey-200",
4149
- sticky && !backgroundColor && cn("z-[2]", SURFACE_CLASS2[surface]),
4150
- sticky && backgroundColor && "z-[2]",
4151
- accentColor && "border-l-4",
4152
- cursor && CURSOR_CLASS[cursor],
4153
- className
4154
- ),
4155
- style: {
4156
- width: colSpan ? void 0 : width || "auto",
4157
- maxWidth: colSpan ? void 0 : width || "auto",
4158
- minWidth: colSpan ? void 0 : width || "auto",
4159
- position: sticky ? "sticky" : "static",
4160
- left: sticky === "left" ? stickyOffset : void 0,
4161
- right: sticky === "right" ? stickyOffset : void 0,
4162
- backgroundColor,
4163
- borderLeftColor: accentColor
4164
- },
4165
- children: centerContent ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Layout, { justify: "center", children }) : children
4166
- }
4167
- );
4174
+ }) => {
4175
+ if (backgroundColor)
4176
+ warnDeprecatedTableProp(
4177
+ "TableCell",
4178
+ "backgroundColor",
4179
+ "le statut passe par TableStatusCell"
4180
+ );
4181
+ if (borderLeft)
4182
+ warnDeprecatedTableProp(
4183
+ "TableCell",
4184
+ "borderLeft",
4185
+ "le style du tableau ne se r\xE8gle plus page par page"
4186
+ );
4187
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
4188
+ "td",
4189
+ {
4190
+ colSpan,
4191
+ className: cn(
4192
+ "text-ellipsis whitespace-nowrap h-10 px-2 py-2 text-center text-xs font-semibold",
4193
+ // Une cellule fusionnée (section/groupe) ne tronque pas son contenu, et
4194
+ // ne doit pas clipper : elle porte souvent un enfant `sticky` (label de
4195
+ // groupe figé au scroll horizontal), qu'un ancêtre `overflow` cassé.
4196
+ colSpan ? "overflow-visible" : "overflow-hidden",
4197
+ borderLeft && "border-l border-grey-200",
4198
+ sticky && !backgroundColor && cn("z-[2]", SURFACE_CLASS2[surface]),
4199
+ sticky && backgroundColor && "z-[2]",
4200
+ accentColor && "border-l-4",
4201
+ cursor && CURSOR_CLASS[cursor],
4202
+ className
4203
+ ),
4204
+ style: {
4205
+ width: colSpan ? void 0 : width || "auto",
4206
+ maxWidth: colSpan ? void 0 : width || "auto",
4207
+ minWidth: colSpan ? void 0 : width || "auto",
4208
+ position: sticky ? "sticky" : "static",
4209
+ left: sticky === "left" ? stickyOffset : void 0,
4210
+ right: sticky === "right" ? stickyOffset : void 0,
4211
+ backgroundColor,
4212
+ borderLeftColor: accentColor
4213
+ },
4214
+ children: centerContent ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Layout, { justify: "center", children }) : children
4215
+ }
4216
+ );
4217
+ };
4168
4218
 
4169
4219
  // src/ui/components/ui/table/TableFooter.tsx
4170
4220
  var import_jsx_runtime48 = require("react/jsx-runtime");
@@ -4203,56 +4253,120 @@ var TableFooterCell = ({
4203
4253
  }
4204
4254
  );
4205
4255
 
4206
- // src/ui/components/ui/table/TableSectionRow.tsx
4256
+ // src/ui/components/ui/table/TableGroupLabel.tsx
4207
4257
  var import_jsx_runtime51 = require("react/jsx-runtime");
4208
- var TableSectionRow = ({
4209
- children,
4210
- colSpan
4211
- }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4212
- "td",
4213
- {
4214
- colSpan,
4215
- className: "h-10 bg-grey-200 px-2 text-left text-xs font-bold uppercase tracking-wide text-neutral-800",
4216
- children
4217
- }
4218
- ) });
4258
+ var TableGroupLabel = ({
4259
+ title,
4260
+ count,
4261
+ isCollapsed = false,
4262
+ onToggleCollapse,
4263
+ selection
4264
+ }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Layout, { row: true, gap: 2, align: "center", children: [
4265
+ onToggleCollapse && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4266
+ Icon,
4267
+ {
4268
+ name: isCollapsed ? "chevron-right" : "chevron-down",
4269
+ size: "xs",
4270
+ "aria-expanded": !isCollapsed,
4271
+ "aria-label": isCollapsed ? `D\xE9plier ${title}` : `Replier ${title}`,
4272
+ onClick: onToggleCollapse
4273
+ }
4274
+ ),
4275
+ selection && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4276
+ Checkbox,
4277
+ {
4278
+ "aria-label": selection.label,
4279
+ checked: selection.isSelected,
4280
+ onChange: selection.onToggle
4281
+ }
4282
+ ),
4283
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: title }),
4284
+ count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-semibold text-grey-600", children: count })
4285
+ ] });
4219
4286
 
4220
- // src/ui/components/ui/table/TableSubgroupRow.tsx
4287
+ // src/ui/components/ui/table/TableSectionRow.tsx
4221
4288
  var import_jsx_runtime52 = require("react/jsx-runtime");
4222
- var TableSubgroupRow = ({
4223
- children,
4224
- colSpan
4225
- }) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
4226
- "td",
4227
- {
4228
- colSpan,
4229
- className: "h-10 bg-grey-100 px-2 pl-6 text-left text-xs font-semibold text-neutral-800",
4230
- children
4231
- }
4232
- ) });
4289
+ var TableSectionRow = (_a) => {
4290
+ var _b = _a, {
4291
+ colSpan
4292
+ } = _b, label = __objRest(_b, [
4293
+ "colSpan"
4294
+ ]);
4295
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
4296
+ "td",
4297
+ {
4298
+ colSpan,
4299
+ className: "h-8 bg-grey-300 px-2 text-left text-[11px] font-bold uppercase tracking-wide text-neutral-800",
4300
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TableGroupLabel, __spreadValues({}, label))
4301
+ }
4302
+ ) });
4303
+ };
4233
4304
 
4234
- // src/ui/components/ui/table/TableAlertRow.tsx
4305
+ // src/ui/components/ui/table/TableSubgroupRow.tsx
4235
4306
  var import_jsx_runtime53 = require("react/jsx-runtime");
4236
- var ALERT_THEME = "orange-600";
4237
- var TableAlertRow = ({ children, colSpan }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
4238
- "td",
4239
- {
4240
- colSpan,
4241
- role: "alert",
4242
- className: cn(
4243
- "h-10 px-2 text-left text-xs font-semibold",
4244
- THEME_VARIANT_CLASSES.pale[ALERT_THEME]
4245
- ),
4246
- children
4247
- }
4248
- ) });
4307
+ var TableSubgroupRow = (_a) => {
4308
+ var _b = _a, {
4309
+ colSpan
4310
+ } = _b, label = __objRest(_b, [
4311
+ "colSpan"
4312
+ ]);
4313
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
4314
+ "td",
4315
+ {
4316
+ colSpan,
4317
+ className: "h-9 bg-grey-200 py-0 pl-6 pr-2 text-left text-xs font-semibold text-neutral-800",
4318
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TableGroupLabel, __spreadValues({}, label))
4319
+ }
4320
+ ) });
4321
+ };
4249
4322
 
4250
- // src/ui/components/ui/table/TableExpandedRow.tsx
4323
+ // src/ui/components/ui/table/TableAlertRow.tsx
4251
4324
  var import_jsx_runtime54 = require("react/jsx-runtime");
4252
- var TableExpandedRow = ({
4325
+ var ALERT_TONES = {
4326
+ red: { theme: "red-500", icon: "circle-exclamation" },
4327
+ yellow: { theme: "yellow-500", icon: "triangle-exclamation" },
4328
+ green: { theme: "green-700", icon: "circle-check" },
4329
+ blue: { theme: "blue-700", icon: "circle-info" }
4330
+ };
4331
+ var TableAlertRow = ({
4253
4332
  children,
4254
- colSpan
4255
- }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("td", { colSpan, className: "bg-white p-3 text-left text-xs", children }) });
4333
+ colSpan,
4334
+ tone = "yellow",
4335
+ action
4336
+ }) => {
4337
+ const { theme, icon } = ALERT_TONES[tone];
4338
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
4339
+ "td",
4340
+ {
4341
+ colSpan,
4342
+ role: "alert",
4343
+ className: cn(
4344
+ "h-10 px-2 text-left text-xs font-semibold",
4345
+ THEME_VARIANT_CLASSES.pale[theme]
4346
+ ),
4347
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Layout, { row: true, gap: 2, align: "center", justify: "between", children: [
4348
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Layout, { row: true, gap: 2, align: "center", children: [
4349
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: icon, size: "xs", theme }),
4350
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children })
4351
+ ] }),
4352
+ action && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
4353
+ Button,
4354
+ {
4355
+ size: "xs",
4356
+ variant: "outline",
4357
+ theme,
4358
+ label: action.label,
4359
+ onClick: action.onClick
4360
+ }
4361
+ )
4362
+ ] })
4363
+ }
4364
+ ) });
4365
+ };
4366
+
4367
+ // src/ui/components/ui/table/TableExpandedRow.tsx
4368
+ var import_jsx_runtime55 = require("react/jsx-runtime");
4369
+ var TableExpandedRow = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(TableRow, { className: "bg-grey-100 hover:bg-grey-100", children });
4256
4370
 
4257
4371
  // src/utils/string/capitalizeFirstLetter.ts
4258
4372
  var capitalizeFirstLetter = (str) => {
@@ -4376,7 +4490,7 @@ var formatNameWithInitial = (firstname, lastname) => {
4376
4490
  // src/ui/components/ui/Avatar.tsx
4377
4491
  var import_react29 = require("react");
4378
4492
  var RadixAvatar = __toESM(require("@radix-ui/react-avatar"));
4379
- var import_jsx_runtime55 = require("react/jsx-runtime");
4493
+ var import_jsx_runtime56 = require("react/jsx-runtime");
4380
4494
  var AvatarSizeContext = (0, import_react29.createContext)(40);
4381
4495
  var useAvatarSize = () => (0, import_react29.useContext)(AvatarSizeContext);
4382
4496
  var BADGE_BG_CLASS = {
@@ -4437,7 +4551,7 @@ var Avatar = (0, import_react29.forwardRef)(
4437
4551
  "children"
4438
4552
  ]);
4439
4553
  var _a2;
4440
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4554
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4441
4555
  RadixAvatar.Root,
4442
4556
  __spreadProps(__spreadValues({
4443
4557
  ref,
@@ -4448,9 +4562,9 @@ var Avatar = (0, import_react29.forwardRef)(
4448
4562
  ),
4449
4563
  style: __spreadValues({ width: size, height: size, backgroundColor }, style)
4450
4564
  }, props), {
4451
- children: children != null ? children : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
4452
- src && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AvatarImage, { src, alt: name }),
4453
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4565
+ children: children != null ? children : /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_jsx_runtime56.Fragment, { children: [
4566
+ src && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AvatarImage, { src, alt: name }),
4567
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4454
4568
  AvatarFallback,
4455
4569
  {
4456
4570
  color,
@@ -4459,7 +4573,7 @@ var Avatar = (0, import_react29.forwardRef)(
4459
4573
  children: getInitials({ name })
4460
4574
  }
4461
4575
  ),
4462
- badge && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(AvatarBadge, { className: BADGE_BG_CLASS[badge.backgroundColor], children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4576
+ badge && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AvatarBadge, { className: BADGE_BG_CLASS[badge.backgroundColor], children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4463
4577
  FaIcon,
4464
4578
  {
4465
4579
  name: badge.icon,
@@ -4476,7 +4590,7 @@ var Avatar = (0, import_react29.forwardRef)(
4476
4590
  Avatar.displayName = "Avatar";
4477
4591
  var AvatarImage = (0, import_react29.forwardRef)((_a, ref) => {
4478
4592
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4479
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4593
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4480
4594
  RadixAvatar.Image,
4481
4595
  __spreadValues({
4482
4596
  ref,
@@ -4516,7 +4630,7 @@ var AvatarFallback = (0, import_react29.forwardRef)(
4516
4630
  "style"
4517
4631
  ]);
4518
4632
  const size = useAvatarSize();
4519
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4633
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4520
4634
  RadixAvatar.Fallback,
4521
4635
  __spreadValues({
4522
4636
  ref,
@@ -4540,7 +4654,7 @@ var AvatarBadge = (0, import_react29.forwardRef)(
4540
4654
  var _b = _a, { size, className, style } = _b, props = __objRest(_b, ["size", "className", "style"]);
4541
4655
  const avatarSize = useAvatarSize();
4542
4656
  const badgeSize = size != null ? size : Math.round(avatarSize * 0.35);
4543
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
4657
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4544
4658
  "div",
4545
4659
  __spreadValues({
4546
4660
  ref,
@@ -4571,7 +4685,7 @@ var AvatarGroup = (_a) => {
4571
4685
  );
4572
4686
  const visible = max ? items.slice(0, max) : items;
4573
4687
  const overflow = max ? items.length - max : 0;
4574
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Layout, __spreadProps(__spreadValues({ className: cn("-space-x-2", className) }, props), { children: [
4688
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Layout, __spreadProps(__spreadValues({ className: cn("-space-x-2", className) }, props), { children: [
4575
4689
  visible.map(
4576
4690
  (child, index) => (0, import_react29.cloneElement)(child, {
4577
4691
  key: index,
@@ -4579,7 +4693,7 @@ var AvatarGroup = (_a) => {
4579
4693
  className: cn("ring-2 ring-white", child.props.className)
4580
4694
  })
4581
4695
  ),
4582
- overflow > 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
4696
+ overflow > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
4583
4697
  Layout,
4584
4698
  {
4585
4699
  align: "center",
@@ -4600,15 +4714,15 @@ var AvatarGroup = (_a) => {
4600
4714
  };
4601
4715
 
4602
4716
  // src/ui/components/ui/table/TablePersonCell.tsx
4603
- var import_jsx_runtime56 = require("react/jsx-runtime");
4717
+ var import_jsx_runtime57 = require("react/jsx-runtime");
4604
4718
  var AVATAR_SIZE = 24;
4605
4719
  var TablePersonCell = ({
4606
4720
  firstName,
4607
4721
  lastName,
4608
4722
  src,
4609
4723
  width
4610
- }) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TableCell, { width, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "inline-flex max-w-full items-center gap-2 align-middle", children: [
4611
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4724
+ }) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TableCell, { width, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "inline-flex max-w-full items-center gap-2 align-middle", children: [
4725
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4612
4726
  Avatar,
4613
4727
  {
4614
4728
  size: AVATAR_SIZE,
@@ -4616,39 +4730,39 @@ var TablePersonCell = ({
4616
4730
  src
4617
4731
  }
4618
4732
  ),
4619
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "truncate", children: formatNameWithInitial(firstName, lastName != null ? lastName : null) })
4733
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "truncate", children: formatNameWithInitial(firstName, lastName != null ? lastName : null) })
4620
4734
  ] }) });
4621
4735
 
4622
4736
  // src/ui/components/ui/table/TableClientCell.tsx
4623
- var import_jsx_runtime57 = require("react/jsx-runtime");
4737
+ var import_jsx_runtime58 = require("react/jsx-runtime");
4624
4738
  var TableClientCell = ({
4625
4739
  name,
4626
4740
  color,
4627
4741
  width
4628
- }) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TableCell, { width, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "inline-flex max-w-full items-center gap-2 align-middle", children: [
4629
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4742
+ }) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TableCell, { width, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "inline-flex max-w-full items-center gap-2 align-middle", children: [
4743
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
4630
4744
  "span",
4631
4745
  {
4632
4746
  "aria-hidden": "true",
4633
4747
  "data-testid": "client-dot",
4634
- className: "h-2.5 w-2.5 shrink-0 rounded-full",
4748
+ className: "h-2 w-2 shrink-0 rounded-full",
4635
4749
  style: { backgroundColor: color }
4636
4750
  }
4637
4751
  ),
4638
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "truncate", children: name })
4752
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "truncate", children: name })
4639
4753
  ] }) });
4640
4754
 
4641
4755
  // src/ui/components/ui/table/TableStatusCell.tsx
4642
- var import_jsx_runtime58 = require("react/jsx-runtime");
4756
+ var import_jsx_runtime59 = require("react/jsx-runtime");
4643
4757
  var TableStatusCell = ({
4644
4758
  children,
4645
4759
  theme,
4646
4760
  width
4647
- }) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(TableCell, { width, centerContent: true, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge, { size: "l", theme, children }) });
4761
+ }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(TableCell, { width, centerContent: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Badge, { size: "l", theme, children }) });
4648
4762
 
4649
4763
  // src/ui/components/ui/Popover.tsx
4650
4764
  var RadixPopover4 = __toESM(require("@radix-ui/react-popover"));
4651
- var import_jsx_runtime59 = require("react/jsx-runtime");
4765
+ var import_jsx_runtime60 = require("react/jsx-runtime");
4652
4766
  var Popover = ({
4653
4767
  trigger,
4654
4768
  items,
@@ -4660,9 +4774,9 @@ var Popover = ({
4660
4774
  onOpenChange,
4661
4775
  width,
4662
4776
  className
4663
- }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(RadixPopover4.Root, { open, onOpenChange, children: [
4664
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RadixPopover4.Trigger, { asChild: true, children: trigger }),
4665
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RadixPopover4.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
4777
+ }) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(RadixPopover4.Root, { open, onOpenChange, children: [
4778
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(RadixPopover4.Trigger, { asChild: true, children: trigger }),
4779
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(RadixPopover4.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4666
4780
  RadixPopover4.Content,
4667
4781
  {
4668
4782
  align,
@@ -4675,11 +4789,13 @@ var Popover = ({
4675
4789
  "data-[state=open]:animate-[fade-in_150ms_ease-out]",
4676
4790
  className
4677
4791
  ),
4678
- children: items ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Layout, { column: true, children: items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
4792
+ children: items ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Layout, { column: true, children: items.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4679
4793
  RadixPopover4.Close,
4680
4794
  {
4681
4795
  onClick: item.action,
4682
- className: "cursor-pointer rounded-[4px] px-3 py-2 text-left text-sm font-medium text-neutral-800 outline-none hover:bg-grey-100",
4796
+ disabled: item.disabled,
4797
+ title: item.title,
4798
+ className: "cursor-pointer rounded-[4px] px-3 py-2 text-left text-sm font-medium text-neutral-800 outline-none hover:bg-grey-100 disabled:cursor-not-allowed disabled:text-grey-500 disabled:hover:bg-transparent",
4683
4799
  children: item.label
4684
4800
  },
4685
4801
  idx
@@ -4689,11 +4805,11 @@ var Popover = ({
4689
4805
  ] });
4690
4806
 
4691
4807
  // src/ui/components/ui/table/TableActionsCell.tsx
4692
- var import_jsx_runtime60 = require("react/jsx-runtime");
4808
+ var import_jsx_runtime61 = require("react/jsx-runtime");
4693
4809
  var MAX_INLINE_TABLE_ACTIONS = 3;
4694
4810
  var TableActionsCell = ({ actions, width }) => {
4695
4811
  const hasMenu = actions.length > MAX_INLINE_TABLE_ACTIONS;
4696
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TableCell, { width, centerContent: true, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4812
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { width, centerContent: true, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4697
4813
  Layout,
4698
4814
  {
4699
4815
  row: true,
@@ -4701,10 +4817,10 @@ var TableActionsCell = ({ actions, width }) => {
4701
4817
  align: "center",
4702
4818
  justify: "center",
4703
4819
  onClick: (event) => event.stopPropagation(),
4704
- children: hasMenu ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4820
+ children: hasMenu ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4705
4821
  Popover,
4706
4822
  {
4707
- trigger: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4823
+ trigger: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4708
4824
  Icon,
4709
4825
  {
4710
4826
  name: "ellipsis-vertical",
@@ -4712,28 +4828,36 @@ var TableActionsCell = ({ actions, width }) => {
4712
4828
  onClick: () => void 0
4713
4829
  }
4714
4830
  ),
4715
- items: actions.map(({ label, onClick }) => ({
4716
- label,
4717
- action: onClick
4718
- }))
4831
+ items: actions.map(
4832
+ ({ label, onClick, disabled, disabledReason }) => ({
4833
+ label,
4834
+ action: onClick,
4835
+ disabled,
4836
+ title: disabled ? disabledReason : void 0
4837
+ })
4838
+ )
4719
4839
  }
4720
- ) : actions.map(({ label, icon, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
4721
- Icon,
4722
- {
4723
- name: icon,
4724
- "aria-label": label,
4725
- title: label,
4726
- onClick
4727
- },
4728
- label
4729
- ))
4840
+ ) : actions.map(({ label, icon, onClick, disabled, disabledReason }) => {
4841
+ const action = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4842
+ Icon,
4843
+ {
4844
+ name: icon,
4845
+ "aria-label": label,
4846
+ title: disabledReason ? void 0 : label,
4847
+ disabled,
4848
+ onClick
4849
+ },
4850
+ label
4851
+ );
4852
+ return disabled && disabledReason ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Tooltip, { content: disabledReason, children: action }, label) : action;
4853
+ })
4730
4854
  }
4731
4855
  ) });
4732
4856
  };
4733
4857
 
4734
4858
  // src/ui/components/ui/table/TableSelectCell.tsx
4735
4859
  var import_react30 = require("react");
4736
- var import_jsx_runtime61 = require("react/jsx-runtime");
4860
+ var import_jsx_runtime62 = require("react/jsx-runtime");
4737
4861
  var TableSelectCell = ({
4738
4862
  isSelected,
4739
4863
  onToggle,
@@ -4741,7 +4865,7 @@ var TableSelectCell = ({
4741
4865
  width = "40px"
4742
4866
  }) => {
4743
4867
  const isRange = (0, import_react30.useRef)(false);
4744
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TableCell, { width, centerContent: true, className: "table-select-cell", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
4868
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TableCell, { width, centerContent: true, className: "table-select-cell", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { onClick: (event) => event.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
4745
4869
  Checkbox,
4746
4870
  {
4747
4871
  "aria-label": label,
@@ -4755,12 +4879,12 @@ var TableSelectCell = ({
4755
4879
  };
4756
4880
 
4757
4881
  // src/ui/components/ui/table/TableSelectHeaderCell.tsx
4758
- var import_jsx_runtime62 = require("react/jsx-runtime");
4882
+ var import_jsx_runtime63 = require("react/jsx-runtime");
4759
4883
  var TableSelectHeaderCell = ({
4760
4884
  state,
4761
4885
  onToggle,
4762
4886
  width = "40px"
4763
- }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TableHeaderCell, { width, className: "table-select-cell", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Layout, { justify: "center", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
4887
+ }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TableHeaderCell, { width, className: "table-select-cell", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Layout, { justify: "center", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4764
4888
  Checkbox,
4765
4889
  {
4766
4890
  "aria-label": "S\xE9lectionner toutes les lignes de la page",
@@ -4834,7 +4958,7 @@ var useRowSelection = ({
4834
4958
  // src/ui/components/ui/Radio.tsx
4835
4959
  var RadixRadioGroup = __toESM(require("@radix-ui/react-radio-group"));
4836
4960
  var import_class_variance_authority12 = require("class-variance-authority");
4837
- var import_jsx_runtime63 = require("react/jsx-runtime");
4961
+ var import_jsx_runtime64 = require("react/jsx-runtime");
4838
4962
  var radioVariants = (0, import_class_variance_authority12.cva)(
4839
4963
  "relative h-[22px] w-[22px] shrink-0 rounded-full border-2 border-grey-300 outline-none transition-colors",
4840
4964
  {
@@ -4889,23 +5013,23 @@ var Radio = ({
4889
5013
  color,
4890
5014
  width,
4891
5015
  className
4892
- }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
5016
+ }) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4893
5017
  RadixRadioGroup.Root,
4894
5018
  {
4895
5019
  value,
4896
5020
  onValueChange: onChange,
4897
5021
  disabled,
4898
5022
  asChild: true,
4899
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Layout, { column: true, gap: 2, className, width, children: items.map((item) => {
5023
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Layout, { column: true, gap: 2, className, width, children: items.map((item) => {
4900
5024
  const itemId = `radio-${item.value}`;
4901
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Layout, { row: true, gap: 2, align: "center", children: [
4902
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
5025
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Layout, { row: true, gap: 2, align: "center", children: [
5026
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4903
5027
  RadixRadioGroup.Item,
4904
5028
  {
4905
5029
  id: itemId,
4906
5030
  value: item.value,
4907
5031
  className: radioVariants({ color }),
4908
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
5032
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4909
5033
  RadixRadioGroup.Indicator,
4910
5034
  {
4911
5035
  className: indicatorVariants({ color })
@@ -4913,7 +5037,7 @@ var Radio = ({
4913
5037
  )
4914
5038
  }
4915
5039
  ),
4916
- item.label && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
5040
+ item.label && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4917
5041
  Text,
4918
5042
  {
4919
5043
  as: "label",
@@ -4932,7 +5056,7 @@ var Radio = ({
4932
5056
  var RadixProgress = __toESM(require("@radix-ui/react-progress"));
4933
5057
  var RadixSlider = __toESM(require("@radix-ui/react-slider"));
4934
5058
  var import_class_variance_authority13 = require("class-variance-authority");
4935
- var import_jsx_runtime64 = require("react/jsx-runtime");
5059
+ var import_jsx_runtime65 = require("react/jsx-runtime");
4936
5060
  var trackVariants2 = (0, import_class_variance_authority13.cva)(
4937
5061
  "relative w-full overflow-hidden rounded-full bg-grey-200",
4938
5062
  {
@@ -5001,15 +5125,15 @@ var ProgressBar = ({
5001
5125
  const editable = Boolean(onChange);
5002
5126
  if (segments) {
5003
5127
  const visible = segments.filter((segment) => segment.value > 0);
5004
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Layout, { column: true, fullWidth: true, gap: 1, className, children: [
5005
- label && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5006
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5128
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Layout, { column: true, fullWidth: true, gap: 1, className, children: [
5129
+ label && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5130
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5007
5131
  "div",
5008
5132
  {
5009
5133
  role: "img",
5010
5134
  "aria-label": ariaLabel != null ? ariaLabel : label,
5011
5135
  className: cn(trackVariants2({ height }), "flex gap-0.5"),
5012
- children: visible.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5136
+ children: visible.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5013
5137
  "span",
5014
5138
  {
5015
5139
  className: "h-full",
@@ -5027,16 +5151,16 @@ var ProgressBar = ({
5027
5151
  }
5028
5152
  if (!editable) {
5029
5153
  const readOnlyPercent = Math.max(0, Math.min(100, percent));
5030
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Layout, { column: true, fullWidth: true, gap: 1, className, children: [
5031
- label && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5032
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Layout, { fullWidth: true, align: "center", gap: 2, children: [
5033
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5154
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Layout, { column: true, fullWidth: true, gap: 1, className, children: [
5155
+ label && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5156
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Layout, { fullWidth: true, align: "center", gap: 2, children: [
5157
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5034
5158
  RadixProgress.Root,
5035
5159
  {
5036
5160
  value: readOnlyPercent,
5037
5161
  "aria-label": ariaLabel != null ? ariaLabel : label,
5038
5162
  className: trackVariants2({ height }),
5039
- children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5163
+ children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5040
5164
  RadixProgress.Indicator,
5041
5165
  {
5042
5166
  className: cn(
@@ -5051,11 +5175,11 @@ var ProgressBar = ({
5051
5175
  )
5052
5176
  }
5053
5177
  ),
5054
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "shrink-0 text-xs font-semibold text-neutral-800", children: display(Math.round(readOnlyPercent)) })
5178
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "shrink-0 text-xs font-semibold text-neutral-800", children: display(Math.round(readOnlyPercent)) })
5055
5179
  ] })
5056
5180
  ] });
5057
5181
  }
5058
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
5182
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
5059
5183
  Layout,
5060
5184
  {
5061
5185
  column: true,
@@ -5063,9 +5187,9 @@ var ProgressBar = ({
5063
5187
  gap: 1,
5064
5188
  className: cn(disabled && "cursor-not-allowed opacity-60", className),
5065
5189
  children: [
5066
- label && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5067
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "relative w-full pt-6", children: [
5068
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5190
+ label && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs text-grey-600", children: label }),
5191
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "relative w-full pt-6", children: [
5192
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5069
5193
  "span",
5070
5194
  {
5071
5195
  className: "absolute top-0 -translate-x-1/2 text-xs font-semibold text-neutral-800",
@@ -5073,7 +5197,7 @@ var ProgressBar = ({
5073
5197
  children: display(current)
5074
5198
  }
5075
5199
  ),
5076
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
5200
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
5077
5201
  RadixSlider.Root,
5078
5202
  {
5079
5203
  value: [current],
@@ -5084,7 +5208,7 @@ var ProgressBar = ({
5084
5208
  disabled,
5085
5209
  className: "relative flex h-5 w-full touch-none select-none items-center",
5086
5210
  children: [
5087
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(RadixSlider.Track, { className: cn(trackVariants2({ height }), "grow"), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5211
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(RadixSlider.Track, { className: cn(trackVariants2({ height }), "grow"), children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5088
5212
  RadixSlider.Range,
5089
5213
  {
5090
5214
  className: cn(
@@ -5094,7 +5218,7 @@ var ProgressBar = ({
5094
5218
  style: { backgroundColor: hexColor }
5095
5219
  }
5096
5220
  ) }),
5097
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
5221
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5098
5222
  RadixSlider.Thumb,
5099
5223
  {
5100
5224
  className: cn(
@@ -5109,9 +5233,9 @@ var ProgressBar = ({
5109
5233
  }
5110
5234
  )
5111
5235
  ] }),
5112
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Layout, { align: "center", justify: "between", children: [
5113
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-xs text-grey-600", children: display(min) }),
5114
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-xs text-grey-600", children: display(max) })
5236
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Layout, { align: "center", justify: "between", children: [
5237
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs text-grey-600", children: display(min) }),
5238
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs text-grey-600", children: display(max) })
5115
5239
  ] })
5116
5240
  ]
5117
5241
  }
@@ -5120,7 +5244,7 @@ var ProgressBar = ({
5120
5244
 
5121
5245
  // src/ui/components/ui/Collapsible.tsx
5122
5246
  var RadixCollapsible = __toESM(require("@radix-ui/react-collapsible"));
5123
- var import_jsx_runtime65 = require("react/jsx-runtime");
5247
+ var import_jsx_runtime66 = require("react/jsx-runtime");
5124
5248
  var Collapsible = RadixCollapsible.Root;
5125
5249
  var CollapsibleTrigger = RadixCollapsible.Trigger;
5126
5250
  var CollapsibleContent = (_a) => {
@@ -5129,7 +5253,7 @@ var CollapsibleContent = (_a) => {
5129
5253
  } = _b, props = __objRest(_b, [
5130
5254
  "className"
5131
5255
  ]);
5132
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
5256
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5133
5257
  RadixCollapsible.Content,
5134
5258
  __spreadValues({
5135
5259
  className: "overflow-hidden data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] " + (className != null ? className : "")
@@ -5209,7 +5333,7 @@ var swallowRestOfClick = () => {
5209
5333
  };
5210
5334
 
5211
5335
  // src/ui/components/ui/Drawer.tsx
5212
- var import_jsx_runtime66 = require("react/jsx-runtime");
5336
+ var import_jsx_runtime67 = require("react/jsx-runtime");
5213
5337
  var KEEP_OPEN_SELECTOR = '[role="dialog"], [role="listbox"], [data-drawer-keep-open]';
5214
5338
  var CONTENT_POSITION = {
5215
5339
  top: "inset-x-4 top-4 rounded-2xl",
@@ -5274,8 +5398,8 @@ var Drawer = ({
5274
5398
  return () => cancelAnimationFrame(frame);
5275
5399
  }, [modal, open]);
5276
5400
  const closeOnDismiss = (next) => !next && closeDrawer();
5277
- const drawerPortal = /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_vaul.Drawer.Portal, { children: [
5278
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5401
+ const drawerPortal = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_vaul.Drawer.Portal, { children: [
5402
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5279
5403
  import_vaul.Drawer.Overlay,
5280
5404
  {
5281
5405
  ref: overlayRef,
@@ -5287,7 +5411,7 @@ var Drawer = ({
5287
5411
  )
5288
5412
  }
5289
5413
  ),
5290
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5414
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5291
5415
  import_vaul.Drawer.Content,
5292
5416
  __spreadProps(__spreadValues({
5293
5417
  ref: (node) => {
@@ -5319,14 +5443,14 @@ var Drawer = ({
5319
5443
  })
5320
5444
  )
5321
5445
  ] });
5322
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5446
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5323
5447
  import_vaul.Drawer.Root,
5324
5448
  {
5325
5449
  direction,
5326
5450
  modal,
5327
5451
  open,
5328
5452
  onOpenChange: closeOnDismiss,
5329
- children: modal ? drawerPortal : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5453
+ children: modal ? drawerPortal : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5330
5454
  DialogPrimitive.Root,
5331
5455
  {
5332
5456
  modal: false,
@@ -5344,7 +5468,7 @@ var DrawerHeader = (_a) => {
5344
5468
  } = _b, props = __objRest(_b, [
5345
5469
  "className"
5346
5470
  ]);
5347
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5471
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5348
5472
  "div",
5349
5473
  __spreadValues({
5350
5474
  className: cn("flex w-full items-center justify-between", className)
@@ -5357,7 +5481,7 @@ var DrawerTitle = (_a) => {
5357
5481
  } = _b, props = __objRest(_b, [
5358
5482
  "className"
5359
5483
  ]);
5360
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5484
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5361
5485
  import_vaul.Drawer.Title,
5362
5486
  __spreadValues({
5363
5487
  className: cn("text-base font-bold text-neutral-800", className)
@@ -5370,7 +5494,7 @@ var DrawerDescription = (_a) => {
5370
5494
  } = _b, props = __objRest(_b, [
5371
5495
  "className"
5372
5496
  ]);
5373
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
5497
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5374
5498
  import_vaul.Drawer.Description,
5375
5499
  __spreadValues({
5376
5500
  className: cn("text-sm text-grey-500", className)
@@ -5383,7 +5507,7 @@ var DrawerBody = (_a) => {
5383
5507
  } = _b, props = __objRest(_b, [
5384
5508
  "className"
5385
5509
  ]);
5386
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", __spreadValues({ className: cn("min-h-0 flex-1 overflow-y-auto", className) }, props));
5510
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", __spreadValues({ className: cn("min-h-0 flex-1 overflow-y-auto", className) }, props));
5387
5511
  };
5388
5512
  var DrawerFooter = (_a) => {
5389
5513
  var _b = _a, {
@@ -5391,7 +5515,7 @@ var DrawerFooter = (_a) => {
5391
5515
  } = _b, props = __objRest(_b, [
5392
5516
  "className"
5393
5517
  ]);
5394
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", __spreadValues({ className: cn("flex w-full flex-col gap-3", className) }, props));
5518
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", __spreadValues({ className: cn("flex w-full flex-col gap-3", className) }, props));
5395
5519
  };
5396
5520
  var DrawerClose = import_vaul.Drawer.Close;
5397
5521
 
@@ -5405,11 +5529,11 @@ var SidebarCollapsedProvider = SidebarCollapsedContext.Provider;
5405
5529
  var useSidebarCollapsed = () => (0, import_react33.useContext)(SidebarCollapsedContext);
5406
5530
 
5407
5531
  // src/ui/components/ui/sidebar/Sidebar.tsx
5408
- var import_jsx_runtime67 = require("react/jsx-runtime");
5532
+ var import_jsx_runtime68 = require("react/jsx-runtime");
5409
5533
  var Sidebar = (0, import_react34.forwardRef)(
5410
5534
  (_a, ref) => {
5411
5535
  var _b = _a, { collapsed = false, className, children } = _b, props = __objRest(_b, ["collapsed", "className", "children"]);
5412
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SidebarCollapsedProvider, { value: collapsed, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
5536
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SidebarCollapsedProvider, { value: collapsed, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5413
5537
  "aside",
5414
5538
  __spreadProps(__spreadValues({
5415
5539
  ref,
@@ -5428,10 +5552,10 @@ Sidebar.displayName = "Sidebar";
5428
5552
 
5429
5553
  // src/ui/components/ui/sidebar/SidebarTrigger.tsx
5430
5554
  var import_react35 = require("react");
5431
- var import_jsx_runtime68 = require("react/jsx-runtime");
5555
+ var import_jsx_runtime69 = require("react/jsx-runtime");
5432
5556
  var SidebarTrigger = (0, import_react35.forwardRef)((_a, ref) => {
5433
5557
  var _b = _a, { collapsed, className } = _b, props = __objRest(_b, ["collapsed", "className"]);
5434
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5558
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
5435
5559
  "button",
5436
5560
  __spreadProps(__spreadValues({
5437
5561
  ref,
@@ -5442,7 +5566,7 @@ var SidebarTrigger = (0, import_react35.forwardRef)((_a, ref) => {
5442
5566
  className
5443
5567
  )
5444
5568
  }, props), {
5445
- children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
5569
+ children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
5446
5570
  FaIcon,
5447
5571
  {
5448
5572
  name: collapsed ? "chevrons-right" : "chevrons-left",
@@ -5457,11 +5581,11 @@ SidebarTrigger.displayName = "SidebarTrigger";
5457
5581
 
5458
5582
  // src/ui/components/ui/sidebar/SidebarHeader.tsx
5459
5583
  var import_react36 = require("react");
5460
- var import_jsx_runtime69 = require("react/jsx-runtime");
5584
+ var import_jsx_runtime70 = require("react/jsx-runtime");
5461
5585
  var SidebarHeader = (0, import_react36.forwardRef)(
5462
5586
  (_a, ref) => {
5463
5587
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5464
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
5588
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
5465
5589
  "div",
5466
5590
  __spreadValues({
5467
5591
  ref,
@@ -5474,11 +5598,11 @@ SidebarHeader.displayName = "SidebarHeader";
5474
5598
 
5475
5599
  // src/ui/components/ui/sidebar/SidebarContent.tsx
5476
5600
  var import_react37 = require("react");
5477
- var import_jsx_runtime70 = require("react/jsx-runtime");
5601
+ var import_jsx_runtime71 = require("react/jsx-runtime");
5478
5602
  var SidebarContent = (0, import_react37.forwardRef)(
5479
5603
  (_a, ref) => {
5480
5604
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5481
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
5605
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
5482
5606
  "div",
5483
5607
  __spreadValues({
5484
5608
  ref,
@@ -5495,20 +5619,20 @@ SidebarContent.displayName = "SidebarContent";
5495
5619
 
5496
5620
  // src/ui/components/ui/sidebar/SidebarGroup.tsx
5497
5621
  var import_react38 = require("react");
5498
- var import_jsx_runtime71 = require("react/jsx-runtime");
5622
+ var import_jsx_runtime72 = require("react/jsx-runtime");
5499
5623
  var SidebarGroup = (0, import_react38.forwardRef)(
5500
5624
  (_a, ref) => {
5501
5625
  var _b = _a, { label, className, children } = _b, props = __objRest(_b, ["label", "className", "children"]);
5502
5626
  const collapsed = useSidebarCollapsed();
5503
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
5627
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
5504
5628
  "div",
5505
5629
  __spreadProps(__spreadValues({
5506
5630
  ref,
5507
5631
  className: cn("flex w-full flex-col p-2", className)
5508
5632
  }, props), {
5509
5633
  children: [
5510
- label && !collapsed && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "flex h-8 shrink-0 items-center px-2 text-xs font-medium text-white/50", children: label }),
5511
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "flex flex-col gap-1", children })
5634
+ label && !collapsed && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "flex h-8 shrink-0 items-center px-2 text-xs font-medium text-white/50", children: label }),
5635
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "flex flex-col gap-1", children })
5512
5636
  ]
5513
5637
  })
5514
5638
  );
@@ -5518,7 +5642,7 @@ SidebarGroup.displayName = "SidebarGroup";
5518
5642
 
5519
5643
  // src/ui/components/ui/sidebar/SidebarMenuButton.tsx
5520
5644
  var import_react39 = require("react");
5521
- var import_jsx_runtime72 = require("react/jsx-runtime");
5645
+ var import_jsx_runtime73 = require("react/jsx-runtime");
5522
5646
  var SidebarMenuButton = (0, import_react39.forwardRef)(
5523
5647
  (_a, ref) => {
5524
5648
  var _b = _a, {
@@ -5541,7 +5665,7 @@ var SidebarMenuButton = (0, import_react39.forwardRef)(
5541
5665
  "className"
5542
5666
  ]);
5543
5667
  const collapsed = useSidebarCollapsed();
5544
- const button = /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
5668
+ const button = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
5545
5669
  "button",
5546
5670
  __spreadProps(__spreadValues({
5547
5671
  ref,
@@ -5557,7 +5681,7 @@ var SidebarMenuButton = (0, import_react39.forwardRef)(
5557
5681
  )
5558
5682
  }, props), {
5559
5683
  children: [
5560
- /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
5684
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5561
5685
  FaIcon,
5562
5686
  {
5563
5687
  name: icon,
@@ -5566,7 +5690,7 @@ var SidebarMenuButton = (0, import_react39.forwardRef)(
5566
5690
  className: "shrink-0"
5567
5691
  }
5568
5692
  ),
5569
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
5693
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5570
5694
  Text,
5571
5695
  {
5572
5696
  as: "span",
@@ -5577,8 +5701,8 @@ var SidebarMenuButton = (0, import_react39.forwardRef)(
5577
5701
  children: label
5578
5702
  }
5579
5703
  ),
5580
- !collapsed && shortcut && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("kbd", { className: "shrink-0 rounded border border-white/15 bg-white/5 px-1.5 py-0.5 text-[10px] font-medium text-white/50", children: shortcut }),
5581
- !!badge && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
5704
+ !collapsed && shortcut && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("kbd", { className: "shrink-0 rounded border border-white/15 bg-white/5 px-1.5 py-0.5 text-[10px] font-medium text-white/50", children: shortcut }),
5705
+ !!badge && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5582
5706
  "span",
5583
5707
  {
5584
5708
  className: cn(
@@ -5593,14 +5717,14 @@ var SidebarMenuButton = (0, import_react39.forwardRef)(
5593
5717
  })
5594
5718
  );
5595
5719
  if (!collapsed) return button;
5596
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Tooltip, { content: label, side: "right", children: button });
5720
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Tooltip, { content: label, side: "right", children: button });
5597
5721
  }
5598
5722
  );
5599
5723
  SidebarMenuButton.displayName = "SidebarMenuButton";
5600
5724
 
5601
5725
  // src/ui/components/ui/sidebar/SidebarActionCard.tsx
5602
5726
  var import_react40 = require("react");
5603
- var import_jsx_runtime73 = require("react/jsx-runtime");
5727
+ var import_jsx_runtime74 = require("react/jsx-runtime");
5604
5728
  var SidebarActionCard = (0, import_react40.forwardRef)(
5605
5729
  (_a, ref) => {
5606
5730
  var _b = _a, {
@@ -5621,11 +5745,11 @@ var SidebarActionCard = (0, import_react40.forwardRef)(
5621
5745
  const collapsed = useSidebarCollapsed();
5622
5746
  const tooltip = subtitle ? `${title} ${subtitle}` : title;
5623
5747
  const counter = badge ? badge > 99 ? "99+" : badge : null;
5624
- const iconBadge = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-yellow-200 text-neutral-800", children: [
5625
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(FaIcon, { name: icon, family: iconFamily, size: 16 }),
5626
- collapsed && counter && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "absolute -right-1.5 -top-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-bold text-white", children: counter })
5748
+ const iconBadge = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("span", { className: "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-yellow-200 text-neutral-800", children: [
5749
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(FaIcon, { name: icon, family: iconFamily, size: 16 }),
5750
+ collapsed && counter && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "absolute -right-1.5 -top-1.5 inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-bold text-white", children: counter })
5627
5751
  ] });
5628
- const button = /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(
5752
+ const button = /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(
5629
5753
  "button",
5630
5754
  __spreadProps(__spreadValues({
5631
5755
  ref,
@@ -5640,12 +5764,12 @@ var SidebarActionCard = (0, import_react40.forwardRef)(
5640
5764
  }, props), {
5641
5765
  children: [
5642
5766
  iconBadge,
5643
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
5644
- /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5645
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "truncate text-sm font-bold text-white", children: title }),
5646
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "truncate text-xs text-white/60", children: subtitle })
5767
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_jsx_runtime74.Fragment, { children: [
5768
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("span", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5769
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "truncate text-sm font-bold text-white", children: title }),
5770
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "truncate text-xs text-white/60", children: subtitle })
5647
5771
  ] }),
5648
- counter ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-bold text-white", children: counter }) : /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5772
+ counter ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-bold text-white", children: counter }) : /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
5649
5773
  FaIcon,
5650
5774
  {
5651
5775
  name: "chevron-right",
@@ -5659,18 +5783,18 @@ var SidebarActionCard = (0, import_react40.forwardRef)(
5659
5783
  })
5660
5784
  );
5661
5785
  if (!collapsed) return button;
5662
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Tooltip, { content: tooltip, side: "right", children: button });
5786
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Tooltip, { content: tooltip, side: "right", children: button });
5663
5787
  }
5664
5788
  );
5665
5789
  SidebarActionCard.displayName = "SidebarActionCard";
5666
5790
 
5667
5791
  // src/ui/components/ui/sidebar/SidebarMenuSub.tsx
5668
5792
  var import_react41 = require("react");
5669
- var import_jsx_runtime74 = require("react/jsx-runtime");
5793
+ var import_jsx_runtime75 = require("react/jsx-runtime");
5670
5794
  var SidebarMenuSub = (0, import_react41.forwardRef)(
5671
5795
  (_a, ref) => {
5672
5796
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5673
- return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
5797
+ return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
5674
5798
  "ul",
5675
5799
  __spreadValues({
5676
5800
  ref,
@@ -5686,23 +5810,23 @@ SidebarMenuSub.displayName = "SidebarMenuSub";
5686
5810
 
5687
5811
  // src/ui/components/ui/sidebar/SidebarMenuSubItem.tsx
5688
5812
  var import_react42 = require("react");
5689
- var import_jsx_runtime75 = require("react/jsx-runtime");
5813
+ var import_jsx_runtime76 = require("react/jsx-runtime");
5690
5814
  var SidebarMenuSubItem = (0, import_react42.forwardRef)((_a, ref) => {
5691
5815
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5692
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("li", __spreadValues({ ref, className: cn("relative", className) }, props));
5816
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("li", __spreadValues({ ref, className: cn("relative", className) }, props));
5693
5817
  });
5694
5818
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
5695
5819
 
5696
5820
  // src/ui/components/ui/sidebar/SidebarMenuSubButton.tsx
5697
5821
  var import_react43 = require("react");
5698
- var import_jsx_runtime76 = require("react/jsx-runtime");
5822
+ var import_jsx_runtime77 = require("react/jsx-runtime");
5699
5823
  var SIZE_CLASS = {
5700
5824
  default: "h-10",
5701
5825
  lg: "h-14"
5702
5826
  };
5703
5827
  var SidebarMenuSubButton = (0, import_react43.forwardRef)((_a, ref) => {
5704
5828
  var _b = _a, { active, size = "default", className } = _b, props = __objRest(_b, ["active", "size", "className"]);
5705
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
5829
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
5706
5830
  "button",
5707
5831
  __spreadValues({
5708
5832
  ref,
@@ -5722,11 +5846,11 @@ SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
5722
5846
 
5723
5847
  // src/ui/components/ui/sidebar/SidebarFooter.tsx
5724
5848
  var import_react44 = require("react");
5725
- var import_jsx_runtime77 = require("react/jsx-runtime");
5849
+ var import_jsx_runtime78 = require("react/jsx-runtime");
5726
5850
  var SidebarFooter = (0, import_react44.forwardRef)(
5727
5851
  (_a, ref) => {
5728
5852
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5729
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
5853
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
5730
5854
  "div",
5731
5855
  __spreadValues({
5732
5856
  ref,
@@ -5738,7 +5862,7 @@ var SidebarFooter = (0, import_react44.forwardRef)(
5738
5862
  SidebarFooter.displayName = "SidebarFooter";
5739
5863
 
5740
5864
  // src/ui/components/ui/sidebar/SidebarSupportInfo.tsx
5741
- var import_jsx_runtime78 = require("react/jsx-runtime");
5865
+ var import_jsx_runtime79 = require("react/jsx-runtime");
5742
5866
  var SidebarSupportInfo = ({
5743
5867
  phone,
5744
5868
  hours,
@@ -5747,27 +5871,27 @@ var SidebarSupportInfo = ({
5747
5871
  className
5748
5872
  }) => {
5749
5873
  const collapsed = useSidebarCollapsed();
5750
- const badge = /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-full bg-white/10 text-white", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(FaIcon, { name: icon, family: iconFamily, size: 16 }) });
5874
+ const badge = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-full bg-white/10 text-white", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(FaIcon, { name: icon, family: iconFamily, size: 16 }) });
5751
5875
  if (collapsed) {
5752
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: cn("flex justify-center px-2 py-1.5", className), children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Tooltip, { content: `${phone} \u2014 ${hours}`, side: "right", children: badge }) });
5876
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: cn("flex justify-center px-2 py-1.5", className), children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Tooltip, { content: `${phone} \u2014 ${hours}`, side: "right", children: badge }) });
5753
5877
  }
5754
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: cn("flex items-center gap-2 px-2 py-1.5", className), children: [
5878
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: cn("flex items-center gap-2 px-2 py-1.5", className), children: [
5755
5879
  badge,
5756
- /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex min-w-0 flex-col leading-tight", children: [
5757
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "truncate text-sm font-bold text-white", children: phone }),
5758
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "truncate text-xs text-white/50", children: hours })
5880
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "flex min-w-0 flex-col leading-tight", children: [
5881
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "truncate text-sm font-bold text-white", children: phone }),
5882
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "truncate text-xs text-white/50", children: hours })
5759
5883
  ] })
5760
5884
  ] });
5761
5885
  };
5762
5886
 
5763
5887
  // src/ui/components/ui/sidebar/SidebarMenuSearchInput.tsx
5764
5888
  var import_react45 = require("react");
5765
- var import_jsx_runtime79 = require("react/jsx-runtime");
5889
+ var import_jsx_runtime80 = require("react/jsx-runtime");
5766
5890
  var SidebarMenuSearchInput = (0, import_react45.forwardRef)((_a, ref) => {
5767
5891
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5768
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(InputGroup, { children: [
5769
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(FaIcon, { name: "magnifying-glass", size: 14, className: "text-white/50" }) }),
5770
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
5892
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(InputGroup, { children: [
5893
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(FaIcon, { name: "magnifying-glass", size: 14, className: "text-white/50" }) }),
5894
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
5771
5895
  Input,
5772
5896
  __spreadValues({
5773
5897
  ref,
@@ -5784,7 +5908,7 @@ SidebarMenuSearchInput.displayName = "SidebarMenuSearchInput";
5784
5908
  // src/ui/components/ui/sidebar/SidebarUserMenu.tsx
5785
5909
  var import_react46 = require("react");
5786
5910
  var RadixPopover5 = __toESM(require("@radix-ui/react-popover"));
5787
- var import_jsx_runtime80 = require("react/jsx-runtime");
5911
+ var import_jsx_runtime81 = require("react/jsx-runtime");
5788
5912
  var panelClassName = cn(
5789
5913
  "z-[9999] min-w-[220px] rounded-lg border border-white/10 bg-blue-800 p-1 shadow-[0_4px_16px_rgba(0,0,0,0.4)]",
5790
5914
  "data-[state=open]:animate-[fade-in_150ms_ease-out]"
@@ -5806,8 +5930,8 @@ var SidebarUserMenu = ({
5806
5930
  action();
5807
5931
  setOpen(false);
5808
5932
  };
5809
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(RadixPopover5.Root, { open, onOpenChange: setOpen, children: [
5810
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(RadixPopover5.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
5933
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(RadixPopover5.Root, { open, onOpenChange: setOpen, children: [
5934
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(RadixPopover5.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
5811
5935
  "button",
5812
5936
  {
5813
5937
  type: "button",
@@ -5817,10 +5941,10 @@ var SidebarUserMenu = ({
5817
5941
  className
5818
5942
  ),
5819
5943
  children: [
5820
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Avatar, { name, src: avatarSrc, size: collapsed ? 28 : 32 }),
5821
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [
5822
- /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5823
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
5944
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Avatar, { name, src: avatarSrc, size: collapsed ? 28 : 32 }),
5945
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [
5946
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5947
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5824
5948
  Text,
5825
5949
  {
5826
5950
  as: "span",
@@ -5831,10 +5955,10 @@ var SidebarUserMenu = ({
5831
5955
  children: name
5832
5956
  }
5833
5957
  ),
5834
- email && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "truncate text-xs text-white/50", children: email }),
5835
- subtitle && !hideSubtitleInTrigger && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
5958
+ email && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "truncate text-xs text-white/50", children: email }),
5959
+ subtitle && !hideSubtitleInTrigger && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
5836
5960
  ] }),
5837
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
5961
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5838
5962
  FaIcon,
5839
5963
  {
5840
5964
  name: "sort",
@@ -5847,7 +5971,7 @@ var SidebarUserMenu = ({
5847
5971
  ]
5848
5972
  }
5849
5973
  ) }),
5850
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(RadixPopover5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
5974
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(RadixPopover5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
5851
5975
  RadixPopover5.Content,
5852
5976
  {
5853
5977
  align: "end",
@@ -5855,10 +5979,10 @@ var SidebarUserMenu = ({
5855
5979
  sideOffset: 6,
5856
5980
  className: panelClassName,
5857
5981
  children: [
5858
- /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex items-center gap-2 px-2 py-1.5", children: [
5859
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Avatar, { name, src: avatarSrc, size: 32 }),
5860
- /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5861
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
5982
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex items-center gap-2 px-2 py-1.5", children: [
5983
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Avatar, { name, src: avatarSrc, size: 32 }),
5984
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col leading-tight", children: [
5985
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5862
5986
  Text,
5863
5987
  {
5864
5988
  as: "span",
@@ -5869,20 +5993,20 @@ var SidebarUserMenu = ({
5869
5993
  children: name
5870
5994
  }
5871
5995
  ),
5872
- email && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "truncate text-xs text-white/50", children: email }),
5873
- subtitle && !hideSubtitleInPanel && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
5996
+ email && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "truncate text-xs text-white/50", children: email }),
5997
+ subtitle && !hideSubtitleInPanel && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "truncate text-xs text-white/50", children: subtitle })
5874
5998
  ] })
5875
5999
  ] }),
5876
- actionGroups.map((group, groupIndex) => /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6000
+ actionGroups.map((group, groupIndex) => /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5877
6001
  "div",
5878
6002
  {
5879
6003
  className: "border-t border-white/10 py-1 first:border-t-0",
5880
6004
  children: group.map(
5881
6005
  (item) => {
5882
6006
  var _a;
5883
- return item.renderPanel || item.subActions ? /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(RadixPopover5.Root, { children: [
5884
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(RadixPopover5.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("button", { type: "button", className: rowClassName, children: [
5885
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6007
+ return item.renderPanel || item.subActions ? /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(RadixPopover5.Root, { children: [
6008
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(RadixPopover5.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("button", { type: "button", className: rowClassName, children: [
6009
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5886
6010
  FaIcon,
5887
6011
  {
5888
6012
  name: item.icon,
@@ -5891,8 +6015,8 @@ var SidebarUserMenu = ({
5891
6015
  className: "shrink-0 text-white/70"
5892
6016
  }
5893
6017
  ),
5894
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "flex-1", children: item.label }),
5895
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6018
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "flex-1", children: item.label }),
6019
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5896
6020
  FaIcon,
5897
6021
  {
5898
6022
  name: "chevron-right",
@@ -5901,21 +6025,21 @@ var SidebarUserMenu = ({
5901
6025
  }
5902
6026
  )
5903
6027
  ] }) }),
5904
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(RadixPopover5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6028
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(RadixPopover5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5905
6029
  RadixPopover5.Content,
5906
6030
  {
5907
6031
  align: "end",
5908
6032
  side: "right",
5909
6033
  sideOffset: 6,
5910
6034
  className: panelClassName,
5911
- children: item.renderPanel ? item.renderPanel(() => setOpen(false)) : (_a = item.subActions) == null ? void 0 : _a.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
6035
+ children: item.renderPanel ? item.renderPanel(() => setOpen(false)) : (_a = item.subActions) == null ? void 0 : _a.map((sub) => /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
5912
6036
  "button",
5913
6037
  {
5914
6038
  type: "button",
5915
6039
  onClick: () => runAndClose(sub.action),
5916
6040
  className: rowClassName,
5917
6041
  children: [
5918
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6042
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5919
6043
  FaIcon,
5920
6044
  {
5921
6045
  name: sub.icon,
@@ -5931,14 +6055,14 @@ var SidebarUserMenu = ({
5931
6055
  ))
5932
6056
  }
5933
6057
  ) })
5934
- ] }, item.label) : /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(
6058
+ ] }, item.label) : /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
5935
6059
  "button",
5936
6060
  {
5937
6061
  type: "button",
5938
6062
  onClick: () => runAndClose(item.action),
5939
6063
  className: rowClassName,
5940
6064
  children: [
5941
- /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
6065
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5942
6066
  FaIcon,
5943
6067
  {
5944
6068
  name: item.icon,
@@ -5965,15 +6089,15 @@ var SidebarUserMenu = ({
5965
6089
 
5966
6090
  // src/ui/components/ui/Toaster.tsx
5967
6091
  var import_sonner = require("sonner");
5968
- var import_jsx_runtime81 = require("react/jsx-runtime");
5969
- var Toaster = () => /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_sonner.Toaster, { position: "bottom-right", gap: 8 });
6092
+ var import_jsx_runtime82 = require("react/jsx-runtime");
6093
+ var Toaster = () => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_sonner.Toaster, { position: "bottom-right", gap: 8 });
5970
6094
 
5971
6095
  // src/ui/lib/toast.tsx
5972
6096
  var import_sonner3 = require("sonner");
5973
6097
 
5974
6098
  // src/ui/components/ui/ToastCard.tsx
5975
6099
  var import_sonner2 = require("sonner");
5976
- var import_jsx_runtime82 = require("react/jsx-runtime");
6100
+ var import_jsx_runtime83 = require("react/jsx-runtime");
5977
6101
  var ICON = {
5978
6102
  success: "circle-check",
5979
6103
  error: "circle-xmark",
@@ -6015,7 +6139,7 @@ var ToastCard = ({
6015
6139
  title,
6016
6140
  message,
6017
6141
  timeOut
6018
- }) => /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
6142
+ }) => /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
6019
6143
  Layout,
6020
6144
  {
6021
6145
  role: "status",
@@ -6027,14 +6151,14 @@ var ToastCard = ({
6027
6151
  ACCENT_BORDER[type]
6028
6152
  ),
6029
6153
  children: [
6030
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
6154
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
6031
6155
  "span",
6032
6156
  {
6033
6157
  className: cn(
6034
6158
  "flex h-7 w-7 shrink-0 items-center justify-center rounded-full",
6035
6159
  ACCENT_BG[type]
6036
6160
  ),
6037
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
6161
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
6038
6162
  FaIcon,
6039
6163
  {
6040
6164
  name: ICON[type],
@@ -6047,21 +6171,21 @@ var ToastCard = ({
6047
6171
  )
6048
6172
  }
6049
6173
  ),
6050
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Layout, { column: true, flex: 1, gap: 0.5, className: "min-w-0", children: [
6051
- title && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("p", { className: "text-sm font-bold text-neutral-800", children: title }),
6052
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("p", { className: "text-sm text-neutral-800", children: message })
6174
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(Layout, { column: true, flex: 1, gap: 0.5, className: "min-w-0", children: [
6175
+ title && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "text-sm font-bold text-neutral-800", children: title }),
6176
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("p", { className: "text-sm text-neutral-800", children: message })
6053
6177
  ] }),
6054
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
6178
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
6055
6179
  "button",
6056
6180
  {
6057
6181
  type: "button",
6058
6182
  "aria-label": "Fermer",
6059
6183
  onClick: () => import_sonner2.toast.dismiss(id),
6060
6184
  className: "absolute right-2.5 top-2.5 text-grey-500 hover:text-neutral-800",
6061
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(FaIcon, { name: "xmark", size: 14 })
6185
+ children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(FaIcon, { name: "xmark", size: 14 })
6062
6186
  }
6063
6187
  ),
6064
- type !== "loading" && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
6188
+ type !== "loading" && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
6065
6189
  "div",
6066
6190
  {
6067
6191
  className: cn(
@@ -6076,13 +6200,13 @@ var ToastCard = ({
6076
6200
  );
6077
6201
 
6078
6202
  // src/ui/lib/toast.tsx
6079
- var import_jsx_runtime83 = require("react/jsx-runtime");
6203
+ var import_jsx_runtime84 = require("react/jsx-runtime");
6080
6204
  var DEFAULT_TIMEOUT = 4e3;
6081
6205
  var show = (type, message, options) => {
6082
6206
  var _a;
6083
6207
  const timeOut = type === "loading" ? Infinity : (_a = options == null ? void 0 : options.timeOut) != null ? _a : DEFAULT_TIMEOUT;
6084
6208
  return import_sonner3.toast.custom(
6085
- (id) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
6209
+ (id) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
6086
6210
  ToastCard,
6087
6211
  {
6088
6212
  id,
@@ -6122,7 +6246,7 @@ var toast = {
6122
6246
  // src/ui/components/ui/PageContainer.tsx
6123
6247
  var import_react47 = require("react");
6124
6248
  var import_class_variance_authority14 = require("class-variance-authority");
6125
- var import_jsx_runtime84 = require("react/jsx-runtime");
6249
+ var import_jsx_runtime85 = require("react/jsx-runtime");
6126
6250
  var pageContainerVariants = (0, import_class_variance_authority14.cva)(
6127
6251
  "flex h-full w-full flex-col overflow-auto rounded-[10px] bg-grey-200 shadow-[0_1px_4px_rgba(0,0,0,0.16)]",
6128
6252
  {
@@ -6140,7 +6264,7 @@ var pageContainerVariants = (0, import_class_variance_authority14.cva)(
6140
6264
  var PageContainer = (0, import_react47.forwardRef)(
6141
6265
  (_a, ref) => {
6142
6266
  var _b = _a, { padding, className } = _b, props = __objRest(_b, ["padding", "className"]);
6143
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
6267
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
6144
6268
  "div",
6145
6269
  __spreadValues({
6146
6270
  ref,
@@ -6153,7 +6277,7 @@ PageContainer.displayName = "PageContainer";
6153
6277
 
6154
6278
  // src/ui/components/ui/IconTabs.tsx
6155
6279
  var import_react48 = require("react");
6156
- var import_jsx_runtime85 = require("react/jsx-runtime");
6280
+ var import_jsx_runtime86 = require("react/jsx-runtime");
6157
6281
  var IconTabs = ({
6158
6282
  items,
6159
6283
  value,
@@ -6184,8 +6308,8 @@ var IconTabs = ({
6184
6308
  if (listRef.current) ro.observe(listRef.current);
6185
6309
  return () => ro.disconnect();
6186
6310
  }, [updateBar]);
6187
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(Layout, { column: true, className, children: [
6188
- /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
6311
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(Layout, { column: true, className, children: [
6312
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
6189
6313
  Layout,
6190
6314
  {
6191
6315
  ref: listRef,
@@ -6194,7 +6318,7 @@ var IconTabs = ({
6194
6318
  gap: 1,
6195
6319
  className: "relative rounded-[5px] bg-grey-100 p-1",
6196
6320
  children: [
6197
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
6321
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
6198
6322
  "div",
6199
6323
  {
6200
6324
  className: "absolute rounded-[5px] bg-blue-50 transition-all duration-300",
@@ -6210,7 +6334,7 @@ var IconTabs = ({
6210
6334
  var _a2;
6211
6335
  const disabled = disabledIndexes.includes(index);
6212
6336
  const active = value === index;
6213
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
6337
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
6214
6338
  "button",
6215
6339
  {
6216
6340
  type: "button",
@@ -6227,14 +6351,14 @@ var IconTabs = ({
6227
6351
  disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
6228
6352
  ),
6229
6353
  children: [
6230
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
6354
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
6231
6355
  "i",
6232
6356
  {
6233
6357
  className: `fa-${(_a2 = item.iconFamily) != null ? _a2 : "regular"} fa-${item.icon}`,
6234
6358
  style: { fontSize: 16 }
6235
6359
  }
6236
6360
  ),
6237
- item.caption && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
6361
+ item.caption && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
6238
6362
  "span",
6239
6363
  {
6240
6364
  className: cn(
@@ -6252,13 +6376,13 @@ var IconTabs = ({
6252
6376
  ]
6253
6377
  }
6254
6378
  ),
6255
- ((_a = items[value]) == null ? void 0 : _a.label) && /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "mt-2 text-center text-xs text-neutral-800", children: items[value].label })
6379
+ ((_a = items[value]) == null ? void 0 : _a.label) && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "mt-2 text-center text-xs text-neutral-800", children: items[value].label })
6256
6380
  ] });
6257
6381
  };
6258
6382
 
6259
6383
  // src/ui/components/ui/Banner.tsx
6260
6384
  var import_class_variance_authority15 = require("class-variance-authority");
6261
- var import_jsx_runtime86 = require("react/jsx-runtime");
6385
+ var import_jsx_runtime87 = require("react/jsx-runtime");
6262
6386
  var bannerVariants = (0, import_class_variance_authority15.cva)("rounded-[6px] px-4 py-2", {
6263
6387
  variants: {
6264
6388
  theme: {
@@ -6315,14 +6439,14 @@ var Banner = ({
6315
6439
  }) => {
6316
6440
  const align = textAlignByJustify[justify];
6317
6441
  const textClass = TEXT_CLASS2[theme != null ? theme : "blue-700"];
6318
- const content = children ? children : message ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Text, { size: "s", align, className: textClass, children: message }) : /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(Layout, { column: true, align: justify, gap: 1, children: [
6319
- /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(Layout, { align: "center", gap: 2, children: [
6320
- badge && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Badge, { theme: theme != null ? theme : "blue-700", size: "m", children: badge }),
6321
- title && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Text, { size: "s", weight: "bold", align, className: textClass, children: title })
6442
+ const content = children ? children : message ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Text, { size: "s", align, className: textClass, children: message }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Layout, { column: true, align: justify, gap: 1, children: [
6443
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Layout, { align: "center", gap: 2, children: [
6444
+ badge && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Badge, { theme: theme != null ? theme : "blue-700", size: "m", children: badge }),
6445
+ title && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Text, { size: "s", weight: "bold", align, className: textClass, children: title })
6322
6446
  ] }),
6323
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Text, { size: "xs", align, className: textClass, children: subtitle })
6447
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Text, { size: "xs", align, className: textClass, children: subtitle })
6324
6448
  ] });
6325
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
6449
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
6326
6450
  Layout,
6327
6451
  {
6328
6452
  role: "alert",
@@ -6333,15 +6457,15 @@ var Banner = ({
6333
6457
  width,
6334
6458
  className: cn(bannerVariants({ theme }), className),
6335
6459
  children: [
6336
- justify === "start" ? content : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Layout, { flex: 1, justify, align: "center", gap: 2, wrap: true, children: content }),
6337
- toggle ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
6460
+ justify === "start" ? content : /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Layout, { flex: 1, justify, align: "center", gap: 2, wrap: true, children: content }),
6461
+ toggle ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6338
6462
  Switch,
6339
6463
  {
6340
6464
  checked: toggle.checked,
6341
6465
  onChange: toggle.onChange,
6342
6466
  disabled: toggle.disabled
6343
6467
  }
6344
- ) : action && /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
6468
+ ) : action && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
6345
6469
  Button,
6346
6470
  {
6347
6471
  variant: "outline",
@@ -6452,7 +6576,7 @@ var resolveArcPlacement = (request) => {
6452
6576
  };
6453
6577
 
6454
6578
  // src/ui/components/ui/FloatingButton.tsx
6455
- var import_jsx_runtime87 = require("react/jsx-runtime");
6579
+ var import_jsx_runtime88 = require("react/jsx-runtime");
6456
6580
  var readStoredOffset = (key) => {
6457
6581
  if (!key || typeof window === "undefined") return { x: 0, y: 0 };
6458
6582
  try {
@@ -6650,7 +6774,7 @@ var FloatingButton = ({
6650
6774
  const { itemSize } = placement.geometry;
6651
6775
  const translateX = offset.x + (isOpen ? placement.shift.x : 0);
6652
6776
  const translateY = offset.y + (isOpen ? placement.shift.y : 0);
6653
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
6777
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6654
6778
  "div",
6655
6779
  {
6656
6780
  ref: containerRef,
@@ -6668,7 +6792,7 @@ var FloatingButton = ({
6668
6792
  actions.map((action, index) => {
6669
6793
  var _a;
6670
6794
  const itemOffset = arcOffset(index, actions.length, placement.geometry);
6671
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
6795
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6672
6796
  "button",
6673
6797
  {
6674
6798
  type: "button",
@@ -6686,14 +6810,14 @@ var FloatingButton = ({
6686
6810
  transform: isOpen ? `translate(${itemOffset.x}px, ${itemOffset.y}px)` : "scale(0.4)"
6687
6811
  },
6688
6812
  children: [
6689
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: SUB_ICON[color], children: action.icon }),
6690
- ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: action.badge })
6813
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: SUB_ICON[color], children: action.icon }),
6814
+ ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: action.badge })
6691
6815
  ]
6692
6816
  },
6693
6817
  action.id
6694
6818
  );
6695
6819
  }),
6696
- /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
6820
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6697
6821
  "button",
6698
6822
  {
6699
6823
  type: "button",
@@ -6710,8 +6834,8 @@ var FloatingButton = ({
6710
6834
  touchAction: draggable ? "none" : void 0
6711
6835
  },
6712
6836
  children: [
6713
- isOpen ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(FaIcon, { name: "xmark", size: 20 }) : icon,
6714
- !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: mainBadge })
6837
+ isOpen ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(FaIcon, { name: "xmark", size: 20 }) : icon,
6838
+ !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { className: "absolute -right-1 -top-1 flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[11px] font-bold text-white", children: mainBadge })
6715
6839
  ]
6716
6840
  }
6717
6841
  )
@@ -6722,7 +6846,7 @@ var FloatingButton = ({
6722
6846
 
6723
6847
  // src/ui/components/ui/ActivityFeedPanel.tsx
6724
6848
  var import_react50 = require("react");
6725
- var import_jsx_runtime88 = require("react/jsx-runtime");
6849
+ var import_jsx_runtime89 = require("react/jsx-runtime");
6726
6850
  var PANEL_WIDTH = 500;
6727
6851
  var PANEL_MAX_HEIGHT = 750;
6728
6852
  var GAP = 8;
@@ -6789,7 +6913,7 @@ var ActivityFeedPanel = ({
6789
6913
  return () => window.removeEventListener("resize", recompute);
6790
6914
  }, [open, offset]);
6791
6915
  if (!open) return null;
6792
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6916
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
6793
6917
  Layout,
6794
6918
  {
6795
6919
  ref: panelRef,
@@ -6797,7 +6921,7 @@ var ActivityFeedPanel = ({
6797
6921
  className: "fixed z-30 w-[500px] max-w-[calc(100vw-32px)] overflow-hidden rounded-[10px] border border-grey-200 bg-white shadow-[0_20px_50px_-18px_rgba(15,36,48,0.35)]",
6798
6922
  style: __spreadProps(__spreadValues({}, placement), { maxHeight: PANEL_MAX_HEIGHT }),
6799
6923
  children: [
6800
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6924
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
6801
6925
  Layout,
6802
6926
  {
6803
6927
  align: "center",
@@ -6805,12 +6929,12 @@ var ActivityFeedPanel = ({
6805
6929
  padding: 4,
6806
6930
  className: "border-b border-grey-200",
6807
6931
  children: [
6808
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(IconBadge, __spreadValues({ name: "bell", size: "m" }, PULSE_ICON_BADGE)),
6809
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Text, { size: "s", weight: "bold", children: title })
6932
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(IconBadge, __spreadValues({ name: "bell", size: "m" }, PULSE_ICON_BADGE)),
6933
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", weight: "bold", children: title })
6810
6934
  ]
6811
6935
  }
6812
6936
  ),
6813
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Layout, { column: true, fullWidth: true, style: { flex: "1 1 0%", minHeight: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
6937
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Layout, { column: true, fullWidth: true, style: { flex: "1 1 0%", minHeight: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6814
6938
  "div",
6815
6939
  {
6816
6940
  style: {
@@ -6821,10 +6945,10 @@ var ActivityFeedPanel = ({
6821
6945
  scrollbarWidth: "none"
6822
6946
  },
6823
6947
  className: "[&::-webkit-scrollbar]:hidden",
6824
- children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Layout, { column: true, padding: 2, gap: 1, fullWidth: true, children: [
6825
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Layout, { fullWidth: true, justify: "center", padding: 6, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Spinner, {}) }),
6826
- !isLoading && items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Text, { size: "s", color: "grey-500", align: "center", className: "p-4", children: emptyMessage }),
6827
- items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
6948
+ children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { column: true, padding: 2, gap: 1, fullWidth: true, children: [
6949
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Layout, { fullWidth: true, justify: "center", padding: 6, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Spinner, {}) }),
6950
+ !isLoading && items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", color: "grey-500", align: "center", className: "p-4", children: emptyMessage }),
6951
+ items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
6828
6952
  Layout,
6829
6953
  {
6830
6954
  gap: 3,
@@ -6832,7 +6956,7 @@ var ActivityFeedPanel = ({
6832
6956
  className: "cursor-pointer items-start rounded-[8px] p-2 hover:bg-grey-100",
6833
6957
  onClick: item.onClick,
6834
6958
  children: [
6835
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
6959
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6836
6960
  IconBadge,
6837
6961
  {
6838
6962
  name: item.icon,
@@ -6841,9 +6965,9 @@ var ActivityFeedPanel = ({
6841
6965
  iconColor: item.iconColor
6842
6966
  }
6843
6967
  ),
6844
- /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Layout, { column: true, gap: 0.5, className: "min-w-0 flex-1", children: [
6845
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Text, { size: "xs", children: item.text }),
6846
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(Text, { size: "xxs", color: "grey-500", children: item.timeLabel })
6968
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { column: true, gap: 0.5, className: "min-w-0 flex-1", children: [
6969
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "xs", children: item.text }),
6970
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "xxs", color: "grey-500", children: item.timeLabel })
6847
6971
  ] })
6848
6972
  ]
6849
6973
  },
@@ -6858,7 +6982,7 @@ var ActivityFeedPanel = ({
6858
6982
  };
6859
6983
 
6860
6984
  // src/ui/components/ui/MetricCard.tsx
6861
- var import_jsx_runtime89 = require("react/jsx-runtime");
6985
+ var import_jsx_runtime90 = require("react/jsx-runtime");
6862
6986
  var ICON_WRAP_CLASS = {
6863
6987
  "blue-700": "bg-blue-50 text-blue-700",
6864
6988
  "blue-900": "bg-blue-50 text-blue-900",
@@ -6887,7 +7011,7 @@ var MetricCard = ({
6887
7011
  selected = false,
6888
7012
  children,
6889
7013
  className
6890
- }) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
7014
+ }) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
6891
7015
  "div",
6892
7016
  {
6893
7017
  onClick,
@@ -6897,25 +7021,25 @@ var MetricCard = ({
6897
7021
  selected && "border-blue-700",
6898
7022
  className
6899
7023
  ),
6900
- children: /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { align: "center", gap: 3, fullWidth: true, children: [
6901
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
7024
+ children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Layout, { align: "center", gap: 3, fullWidth: true, children: [
7025
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
6902
7026
  "span",
6903
7027
  {
6904
7028
  className: cn(
6905
7029
  "flex h-9 w-9 shrink-0 items-center justify-center rounded-full",
6906
7030
  ICON_WRAP_CLASS[accent]
6907
7031
  ),
6908
- children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("i", { className: `fa-${iconFamily} fa-${icon}`, style: { fontSize: 18 } })
7032
+ children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("i", { className: `fa-${iconFamily} fa-${icon}`, style: { fontSize: 18 } })
6909
7033
  }
6910
7034
  ),
6911
- children ? children : layout === "row" ? /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { align: "center", gap: 1, children: [
6912
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", weight: "bold", color: valueColor, children: value }),
6913
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", color: "grey-600", children: title })
6914
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { column: true, gap: 1, children: [
6915
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", color: "grey-600", children: title }),
6916
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(Layout, { align: "baseline", gap: 1, children: [
6917
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "s", weight: "bold", color: valueColor, children: value }),
6918
- subtitle && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Text, { size: "xs", color: "grey-600", children: subtitle })
7035
+ children ? children : layout === "row" ? /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Layout, { align: "center", gap: 1, children: [
7036
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text, { size: "s", weight: "bold", color: valueColor, children: value }),
7037
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text, { size: "s", color: "grey-600", children: title })
7038
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Layout, { column: true, gap: 1, children: [
7039
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text, { size: "s", color: "grey-600", children: title }),
7040
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(Layout, { align: "baseline", gap: 1, children: [
7041
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text, { size: "s", weight: "bold", color: valueColor, children: value }),
7042
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Text, { size: "xs", color: "grey-600", children: subtitle })
6919
7043
  ] })
6920
7044
  ] })
6921
7045
  ] })
@@ -6923,7 +7047,7 @@ var MetricCard = ({
6923
7047
  );
6924
7048
 
6925
7049
  // src/ui/components/ui/Tile.tsx
6926
- var import_jsx_runtime90 = require("react/jsx-runtime");
7050
+ var import_jsx_runtime91 = require("react/jsx-runtime");
6927
7051
  var Tile = ({
6928
7052
  children,
6929
7053
  onClick,
@@ -6933,7 +7057,7 @@ var Tile = ({
6933
7057
  className
6934
7058
  }) => {
6935
7059
  const isOutline = variant === "outline";
6936
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
7060
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
6937
7061
  "div",
6938
7062
  {
6939
7063
  className: cn(
@@ -6944,7 +7068,7 @@ var Tile = ({
6944
7068
  className
6945
7069
  ),
6946
7070
  children: [
6947
- onClick ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
7071
+ onClick ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
6948
7072
  "button",
6949
7073
  {
6950
7074
  type: "button",
@@ -6957,7 +7081,7 @@ var Tile = ({
6957
7081
  children
6958
7082
  }
6959
7083
  ) : children,
6960
- expandedContent && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("div", { className: cn(isOutline && "border-t border-grey-300"), children: expandedContent })
7084
+ expandedContent && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { className: cn(isOutline && "border-t border-grey-300"), children: expandedContent })
6961
7085
  ]
6962
7086
  }
6963
7087
  );
@@ -7112,16 +7236,16 @@ var formatName = (person, fallback = "") => {
7112
7236
  };
7113
7237
 
7114
7238
  // src/ui/components/ui/history/HistoryChangeRow.tsx
7115
- var import_jsx_runtime91 = require("react/jsx-runtime");
7239
+ var import_jsx_runtime92 = require("react/jsx-runtime");
7116
7240
  var HistoryChangeRow = ({ change }) => {
7117
7241
  const { label, previousValue, nextValue, href, onClick } = change;
7118
7242
  const hasValues = Boolean(previousValue || nextValue);
7119
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Layout, { align: "center", gap: 1.5, wrap: true, children: [
7120
- /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Text, { size: "xs", weight: "semibold", color: "grey-600", children: hasValues ? `${label} :` : label }),
7121
- previousValue && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Text, { size: "xs", color: "grey-600", children: previousValue }),
7122
- previousValue && nextValue && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Icon, { name: "arrow-right", size: "xs", color: "grey-500" }),
7123
- nextValue && href && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Link, { href, newTab: true, size: "xs", children: nextValue }),
7124
- nextValue && onClick && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
7243
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Layout, { align: "center", gap: 1.5, wrap: true, children: [
7244
+ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Text, { size: "xs", weight: "semibold", color: "grey-600", children: hasValues ? `${label} :` : label }),
7245
+ previousValue && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Text, { size: "xs", color: "grey-600", children: previousValue }),
7246
+ previousValue && nextValue && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Icon, { name: "arrow-right", size: "xs", color: "grey-500" }),
7247
+ nextValue && href && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Link, { href, newTab: true, size: "xs", children: nextValue }),
7248
+ nextValue && onClick && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
7125
7249
  "button",
7126
7250
  {
7127
7251
  type: "button",
@@ -7133,27 +7257,27 @@ var HistoryChangeRow = ({ change }) => {
7133
7257
  children: nextValue
7134
7258
  }
7135
7259
  ),
7136
- nextValue && !href && !onClick && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(Text, { size: "xs", weight: "semibold", children: nextValue })
7260
+ nextValue && !href && !onClick && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Text, { size: "xs", weight: "semibold", children: nextValue })
7137
7261
  ] });
7138
7262
  };
7139
7263
 
7140
7264
  // src/ui/components/ui/history/HistoryEntryCard.tsx
7141
- var import_jsx_runtime92 = require("react/jsx-runtime");
7265
+ var import_jsx_runtime93 = require("react/jsx-runtime");
7142
7266
  var CARD_CLASS = "group rounded-lg border border-grey-300 bg-white";
7143
7267
  var HistoryEntryCard = ({ entry }) => {
7144
7268
  const { title, date, author, badge, changes = [] } = entry;
7145
7269
  const hasChanges = changes.length > 0;
7146
- const summary = /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Layout, { column: true, gap: 1, fullWidth: true, children: [
7147
- /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Layout, { align: "center", justify: "between", gap: 2, fullWidth: true, children: [
7148
- /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Layout, { align: "center", gap: 3, fullWidth: false, className: "min-w-0", children: [
7149
- author && /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment, { children: [
7150
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Avatar, { name: author.name, src: author.avatarSrc, size: 40 }),
7151
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Text, { size: "xs", weight: "bold", className: "whitespace-nowrap", children: author.name })
7270
+ const summary = /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Layout, { column: true, gap: 1, fullWidth: true, children: [
7271
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Layout, { align: "center", justify: "between", gap: 2, fullWidth: true, children: [
7272
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Layout, { align: "center", gap: 3, fullWidth: false, className: "min-w-0", children: [
7273
+ author && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_jsx_runtime93.Fragment, { children: [
7274
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Avatar, { name: author.name, src: author.avatarSrc, size: 40 }),
7275
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Text, { size: "xs", weight: "bold", className: "whitespace-nowrap", children: author.name })
7152
7276
  ] }),
7153
- badge && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Badge, { theme: badge.theme, size: "s", children: badge.label })
7277
+ badge && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Badge, { theme: badge.theme, size: "s", children: badge.label })
7154
7278
  ] }),
7155
- /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Layout, { align: "center", gap: 2, fullWidth: false, className: "shrink-0", children: [
7156
- date && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
7279
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Layout, { align: "center", gap: 2, fullWidth: false, className: "shrink-0", children: [
7280
+ date && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7157
7281
  Text,
7158
7282
  {
7159
7283
  size: "xxs",
@@ -7163,7 +7287,7 @@ var HistoryEntryCard = ({ entry }) => {
7163
7287
  children: formatDate(date, "dateTime", "fr")
7164
7288
  }
7165
7289
  ),
7166
- hasChanges && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
7290
+ hasChanges && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7167
7291
  Icon,
7168
7292
  {
7169
7293
  name: "chevron-down",
@@ -7174,14 +7298,14 @@ var HistoryEntryCard = ({ entry }) => {
7174
7298
  )
7175
7299
  ] })
7176
7300
  ] }),
7177
- title && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(Text, { size: "xs", className: author ? "pl-[52px]" : void 0, children: title })
7301
+ title && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Text, { size: "xs", className: author ? "pl-[52px]" : void 0, children: title })
7178
7302
  ] });
7179
7303
  if (!hasChanges) {
7180
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: `${CARD_CLASS} p-3`, children: summary });
7304
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: `${CARD_CLASS} p-3`, children: summary });
7181
7305
  }
7182
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(Collapsible, { className: CARD_CLASS, children: [
7183
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(CollapsibleTrigger, { className: "w-full cursor-pointer p-3 text-left outline-none focus-visible:ring-2 focus-visible:ring-blue-200", children: summary }),
7184
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(CollapsibleContent, { children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
7306
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Collapsible, { className: CARD_CLASS, children: [
7307
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CollapsibleTrigger, { className: "w-full cursor-pointer p-3 text-left outline-none focus-visible:ring-2 focus-visible:ring-blue-200", children: summary }),
7308
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(CollapsibleContent, { children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7185
7309
  Layout,
7186
7310
  {
7187
7311
  column: true,
@@ -7189,7 +7313,7 @@ var HistoryEntryCard = ({ entry }) => {
7189
7313
  paddingX: 3,
7190
7314
  paddingBottom: 3,
7191
7315
  className: author ? "pl-[64px]" : void 0,
7192
- children: changes.map((change, index) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
7316
+ children: changes.map((change, index) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7193
7317
  HistoryChangeRow,
7194
7318
  {
7195
7319
  change
@@ -7202,7 +7326,7 @@ var HistoryEntryCard = ({ entry }) => {
7202
7326
  };
7203
7327
 
7204
7328
  // src/ui/components/ui/history/HistoryList.tsx
7205
- var import_jsx_runtime93 = require("react/jsx-runtime");
7329
+ var import_jsx_runtime94 = require("react/jsx-runtime");
7206
7330
  var SKELETON_COUNT = 4;
7207
7331
  var HistoryList = ({
7208
7332
  entries,
@@ -7214,8 +7338,8 @@ var HistoryList = ({
7214
7338
  emptyLabel = "Aucun historique",
7215
7339
  emptyDescription = "Aucune action enregistr\xE9e pour le moment.",
7216
7340
  notice
7217
- }) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Layout, { column: true, gap: 2, fullWidth: true, className: "flex-1", children: [
7218
- filters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Layout, { gap: 2, wrap: true, fullWidth: true, justify: "center", children: filters.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7341
+ }) => /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(Layout, { column: true, gap: 2, fullWidth: true, className: "flex-1", children: [
7342
+ filters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Layout, { gap: 2, wrap: true, fullWidth: true, justify: "center", children: filters.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7219
7343
  TagBubble,
7220
7344
  {
7221
7345
  label: filter.label,
@@ -7226,22 +7350,22 @@ var HistoryList = ({
7226
7350
  },
7227
7351
  filter.value
7228
7352
  )) }),
7229
- isLoading && Array.from({ length: SKELETON_COUNT }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Skeleton, { height: "72px" }, index)),
7230
- !isLoading && isError && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Text, { size: "s", color: "red-900", align: "center", children: errorLabel }),
7231
- !isLoading && !isError && entries.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
7353
+ isLoading && Array.from({ length: SKELETON_COUNT }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Skeleton, { height: "72px" }, index)),
7354
+ !isLoading && isError && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Text, { size: "s", color: "red-900", align: "center", children: errorLabel }),
7355
+ !isLoading && !isError && entries.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7232
7356
  EmptyState,
7233
7357
  {
7234
- icon: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(FaIcon, { name: "clock-rotate-left", size: 20 }),
7358
+ icon: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(FaIcon, { name: "clock-rotate-left", size: 20 }),
7235
7359
  title: emptyLabel,
7236
7360
  description: emptyDescription
7237
7361
  }
7238
7362
  ),
7239
- !isLoading && !isError && entries.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(HistoryEntryCard, { entry }, entry.id)),
7240
- !isLoading && !isError && notice && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Text, { size: "xs", color: "grey-600", align: "center", children: notice })
7363
+ !isLoading && !isError && entries.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(HistoryEntryCard, { entry }, entry.id)),
7364
+ !isLoading && !isError && notice && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(Text, { size: "xs", color: "grey-600", align: "center", children: notice })
7241
7365
  ] });
7242
7366
 
7243
7367
  // src/ui/components/ui/history/HistoryDrawer.tsx
7244
- var import_jsx_runtime94 = require("react/jsx-runtime");
7368
+ var import_jsx_runtime95 = require("react/jsx-runtime");
7245
7369
  var HistoryDrawer = (_a) => {
7246
7370
  var _b = _a, {
7247
7371
  open,
@@ -7252,7 +7376,7 @@ var HistoryDrawer = (_a) => {
7252
7376
  "onClose",
7253
7377
  "title"
7254
7378
  ]);
7255
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
7379
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
7256
7380
  Drawer,
7257
7381
  {
7258
7382
  open,
@@ -7260,9 +7384,9 @@ var HistoryDrawer = (_a) => {
7260
7384
  className: "z-[1060]",
7261
7385
  overlayClassName: "z-[1050]",
7262
7386
  children: [
7263
- /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(DrawerHeader, { children: [
7264
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DrawerTitle, { className: "uppercase", children: title }),
7265
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
7387
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(DrawerHeader, { children: [
7388
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(DrawerTitle, { className: "uppercase", children: title }),
7389
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
7266
7390
  Icon,
7267
7391
  {
7268
7392
  name: "xmark",
@@ -7272,7 +7396,7 @@ var HistoryDrawer = (_a) => {
7272
7396
  }
7273
7397
  ) })
7274
7398
  ] }),
7275
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(DrawerBody, { className: "flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(HistoryList, __spreadValues({}, listProps)) })
7399
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(DrawerBody, { className: "flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(HistoryList, __spreadValues({}, listProps)) })
7276
7400
  ]
7277
7401
  }
7278
7402
  );
@@ -7280,7 +7404,7 @@ var HistoryDrawer = (_a) => {
7280
7404
 
7281
7405
  // src/ui/components/ui/history/HistoryButton.tsx
7282
7406
  var import_react51 = require("react");
7283
- var import_jsx_runtime95 = require("react/jsx-runtime");
7407
+ var import_jsx_runtime96 = require("react/jsx-runtime");
7284
7408
  var LABEL = "Historique";
7285
7409
  var SHORT_TOOLTIP = "Voir l\u2019historique des actions";
7286
7410
  var HistoryButton = (_a) => {
@@ -7301,10 +7425,10 @@ var HistoryButton = (_a) => {
7301
7425
  onOpenChange == null ? void 0 : onOpenChange(nextIsOpen);
7302
7426
  };
7303
7427
  const open = () => changeOpen(true);
7304
- const icon = /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(FaIcon, { name: "clock-rotate-left", size: 14 });
7305
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
7306
- variant === "icon" ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Tooltip, { content: tooltip, className: "z-[1100]", children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Button, { iconLeft: icon, "aria-label": LABEL, onClick: open }) }) : /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Button, { label: LABEL, iconLeft: icon, onClick: open }),
7307
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
7428
+ const icon = /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(FaIcon, { name: "clock-rotate-left", size: 14 });
7429
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [
7430
+ variant === "icon" ? /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Tooltip, { content: tooltip, className: "z-[1100]", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Button, { iconLeft: icon, "aria-label": LABEL, onClick: open }) }) : /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Button, { label: LABEL, iconLeft: icon, onClick: open }),
7431
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7308
7432
  HistoryDrawer,
7309
7433
  __spreadValues({
7310
7434
  open: isOpen,
@@ -7316,7 +7440,7 @@ var HistoryButton = (_a) => {
7316
7440
  };
7317
7441
 
7318
7442
  // src/ui/components/ui/Gantt.tsx
7319
- var import_jsx_runtime96 = require("react/jsx-runtime");
7443
+ var import_jsx_runtime97 = require("react/jsx-runtime");
7320
7444
  var Gantt = ({
7321
7445
  days,
7322
7446
  rows,
@@ -7332,7 +7456,7 @@ var Gantt = ({
7332
7456
  const bodyHeight = rows.length * rowHeight;
7333
7457
  const clickable = Boolean(onRowClick);
7334
7458
  const gridCols = { gridTemplateColumns: `${labelWidth}px minmax(0, 1fr)` };
7335
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
7459
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
7336
7460
  "div",
7337
7461
  {
7338
7462
  className: cn(
@@ -7340,13 +7464,13 @@ var Gantt = ({
7340
7464
  className
7341
7465
  ),
7342
7466
  children: [
7343
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
7467
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
7344
7468
  "div",
7345
7469
  {
7346
7470
  className: "grid border-b border-grey-300 bg-grey-100",
7347
7471
  style: gridCols,
7348
7472
  children: [
7349
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7473
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7350
7474
  Layout,
7351
7475
  {
7352
7476
  align: "center",
@@ -7354,7 +7478,7 @@ var Gantt = ({
7354
7478
  children: labelHeader
7355
7479
  }
7356
7480
  ),
7357
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "relative h-[30px]", children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7481
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "relative h-[30px]", children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7358
7482
  Layout,
7359
7483
  {
7360
7484
  fullHeight: true,
@@ -7368,13 +7492,13 @@ var Gantt = ({
7368
7492
  ]
7369
7493
  }
7370
7494
  ),
7371
- /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
7495
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
7372
7496
  "div",
7373
7497
  {
7374
7498
  className: "grid overflow-y-auto overflow-x-hidden",
7375
7499
  style: __spreadProps(__spreadValues({}, gridCols), { maxHeight }),
7376
7500
  children: [
7377
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "min-w-0 border-r border-grey-300", children: rows.map((row, i) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7501
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "min-w-0 border-r border-grey-300", children: rows.map((row, i) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7378
7502
  Layout,
7379
7503
  {
7380
7504
  column: true,
@@ -7391,8 +7515,8 @@ var Gantt = ({
7391
7515
  },
7392
7516
  row.key
7393
7517
  )) }),
7394
- /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "relative w-full", style: { height: bodyHeight }, children: [
7395
- days.map((day, i) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7518
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "relative w-full", style: { height: bodyHeight }, children: [
7519
+ days.map((day, i) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7396
7520
  "div",
7397
7521
  {
7398
7522
  className: cn(
@@ -7403,7 +7527,7 @@ var Gantt = ({
7403
7527
  },
7404
7528
  day.key
7405
7529
  )),
7406
- bands.map((band) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7530
+ bands.map((band) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7407
7531
  "div",
7408
7532
  {
7409
7533
  title: band.title,
@@ -7414,7 +7538,7 @@ var Gantt = ({
7414
7538
  )),
7415
7539
  rows.map((row, i) => {
7416
7540
  var _a, _b, _c;
7417
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7541
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7418
7542
  "div",
7419
7543
  {
7420
7544
  className: cn(
@@ -7422,7 +7546,7 @@ var Gantt = ({
7422
7546
  i === 0 ? "border-t-0" : "border-t border-grey-200"
7423
7547
  ),
7424
7548
  style: { top: i * rowHeight, height: rowHeight },
7425
- children: row.bar && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7549
+ children: row.bar && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7426
7550
  Layout,
7427
7551
  {
7428
7552
  align: "center",
@@ -7437,7 +7561,7 @@ var Gantt = ({
7437
7561
  background: row.bar.color,
7438
7562
  borderColor: row.bar.color
7439
7563
  },
7440
- children: row.bar.label && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7564
+ children: row.bar.label && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7441
7565
  "span",
7442
7566
  {
7443
7567
  className: "overflow-hidden text-ellipsis whitespace-nowrap text-[10px] font-semibold",
@@ -7459,7 +7583,7 @@ var Gantt = ({
7459
7583
  }
7460
7584
  );
7461
7585
  };
7462
- var GanttDot = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7586
+ var GanttDot = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7463
7587
  "span",
7464
7588
  {
7465
7589
  className: "inline-block h-[9px] w-[9px] shrink-0 rounded-[3px]",
@@ -7469,7 +7593,7 @@ var GanttDot = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7469
7593
  var GanttSwatch = ({
7470
7594
  color,
7471
7595
  filled = true
7472
- }) => /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
7596
+ }) => /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7473
7597
  "span",
7474
7598
  {
7475
7599
  className: "box-border inline-block h-3 w-[18px] shrink-0 rounded-[3px] border-[1.5px]",
@@ -7478,7 +7602,7 @@ var GanttSwatch = ({
7478
7602
  );
7479
7603
 
7480
7604
  // src/ui/components/ui/Timeline.tsx
7481
- var import_jsx_runtime97 = require("react/jsx-runtime");
7605
+ var import_jsx_runtime98 = require("react/jsx-runtime");
7482
7606
  var Timeline = ({
7483
7607
  items,
7484
7608
  lineColor = "#F1F5F9",
@@ -7486,22 +7610,22 @@ var Timeline = ({
7486
7610
  className
7487
7611
  }) => {
7488
7612
  if (items.length === 0) {
7489
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Text, { size: "s", color: "grey-600", children: emptyLabel });
7613
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { size: "s", color: "grey-600", children: emptyLabel });
7490
7614
  }
7491
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Layout, { column: true, className, children: items.map((item, index) => {
7615
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Layout, { column: true, className, children: items.map((item, index) => {
7492
7616
  var _a;
7493
7617
  const isLast = index === items.length - 1;
7494
7618
  const dotColor = (_a = item.color) != null ? _a : "#377EA1";
7495
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Layout, { gap: 3, children: [
7496
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Layout, { column: true, align: "center", className: "w-4", children: [
7497
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7619
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Layout, { gap: 3, children: [
7620
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Layout, { column: true, align: "center", className: "w-4", children: [
7621
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7498
7622
  "span",
7499
7623
  {
7500
7624
  className: "mt-1 h-2.5 w-2.5 shrink-0 rounded-full",
7501
7625
  style: { background: dotColor }
7502
7626
  }
7503
7627
  ),
7504
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
7628
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7505
7629
  "span",
7506
7630
  {
7507
7631
  className: "w-0.5 flex-1 min-h-[16px]",
@@ -7509,10 +7633,10 @@ var Timeline = ({
7509
7633
  }
7510
7634
  )
7511
7635
  ] }),
7512
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(Layout, { column: true, gap: 0.5, className: isLast ? void 0 : "pb-4", children: [
7513
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Text, { size: "s", weight: item.highlighted ? "bold" : "semibold", children: item.title }),
7514
- item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Text, { size: "xs", color: "grey-600", children: item.subtitle }),
7515
- item.description && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-xs italic text-neutral-800", children: item.description })
7636
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Layout, { column: true, gap: 0.5, className: isLast ? void 0 : "pb-4", children: [
7637
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { size: "s", weight: item.highlighted ? "bold" : "semibold", children: item.title }),
7638
+ item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(Text, { size: "xs", color: "grey-600", children: item.subtitle }),
7639
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "text-xs italic text-neutral-800", children: item.description })
7516
7640
  ] })
7517
7641
  ] }, item.id);
7518
7642
  }) });
@@ -7521,7 +7645,7 @@ var Timeline = ({
7521
7645
  // src/ui/components/ui/ColorPicker.tsx
7522
7646
  var import_react52 = require("react");
7523
7647
  var import_class_variance_authority16 = require("class-variance-authority");
7524
- var import_jsx_runtime98 = require("react/jsx-runtime");
7648
+ var import_jsx_runtime99 = require("react/jsx-runtime");
7525
7649
  var swatchVariants = (0, import_class_variance_authority16.cva)(
7526
7650
  "inline-flex shrink-0 overflow-hidden rounded-[6px] border border-grey-300",
7527
7651
  {
@@ -7565,7 +7689,7 @@ var ColorPicker = (0, import_react52.forwardRef)(
7565
7689
  if (value === void 0) setInternalColor(next);
7566
7690
  onChange == null ? void 0 : onChange(next);
7567
7691
  };
7568
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
7692
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
7569
7693
  Layout,
7570
7694
  {
7571
7695
  column: true,
@@ -7573,21 +7697,21 @@ var ColorPicker = (0, import_react52.forwardRef)(
7573
7697
  gap: 1.5,
7574
7698
  className: cn(disabled && "opacity-60", className),
7575
7699
  children: [
7576
- label && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "text-xs font-semibold text-neutral-800", children: label }),
7577
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Layout, { gap: 2, children: [
7578
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7700
+ label && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "text-xs font-semibold text-neutral-800", children: label }),
7701
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Layout, { gap: 2, children: [
7702
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7579
7703
  "label",
7580
7704
  {
7581
7705
  className: cn(
7582
7706
  swatchVariants({ size }),
7583
7707
  disabled ? "cursor-not-allowed" : "cursor-pointer"
7584
7708
  ),
7585
- children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7709
+ children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7586
7710
  "span",
7587
7711
  {
7588
7712
  className: "relative block h-full w-full",
7589
7713
  style: { backgroundColor: currentColor },
7590
- children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7714
+ children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7591
7715
  "input",
7592
7716
  {
7593
7717
  ref,
@@ -7602,7 +7726,7 @@ var ColorPicker = (0, import_react52.forwardRef)(
7602
7726
  )
7603
7727
  }
7604
7728
  ),
7605
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
7729
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7606
7730
  "input",
7607
7731
  __spreadProps(__spreadValues({
7608
7732
  type: "text",
@@ -7642,7 +7766,7 @@ var COLOR_TOKENS = [
7642
7766
  ];
7643
7767
 
7644
7768
  // src/ui/components/ui/ColorTokenPicker.tsx
7645
- var import_jsx_runtime99 = require("react/jsx-runtime");
7769
+ var import_jsx_runtime100 = require("react/jsx-runtime");
7646
7770
  var SWATCH_CLASS = {
7647
7771
  "blue-700": "bg-blue-700",
7648
7772
  "blue-900": "bg-blue-900",
@@ -7664,13 +7788,13 @@ var ColorTokenPicker = ({
7664
7788
  disabled = false
7665
7789
  }) => {
7666
7790
  const [open, setOpen] = (0, import_react53.useState)(false);
7667
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7791
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7668
7792
  Popover,
7669
7793
  {
7670
7794
  open,
7671
7795
  onOpenChange: disabled ? void 0 : setOpen,
7672
7796
  align: "start",
7673
- trigger: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7797
+ trigger: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7674
7798
  "button",
7675
7799
  {
7676
7800
  type: "button",
@@ -7681,7 +7805,7 @@ var ColorTokenPicker = ({
7681
7805
  "focus-visible:ring-2 focus-visible:ring-blue-200",
7682
7806
  disabled && "cursor-not-allowed opacity-50"
7683
7807
  ),
7684
- children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7808
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7685
7809
  "span",
7686
7810
  {
7687
7811
  className: cn(
@@ -7692,7 +7816,7 @@ var ColorTokenPicker = ({
7692
7816
  )
7693
7817
  }
7694
7818
  ),
7695
- children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Layout, { wrap: true, gap: 2, className: "w-[168px] p-1", children: COLOR_TOKENS.map((token) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
7819
+ children: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Layout, { wrap: true, gap: 2, className: "w-[168px] p-1", children: COLOR_TOKENS.map((token) => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7696
7820
  "button",
7697
7821
  {
7698
7822
  type: "button",
@@ -7716,7 +7840,7 @@ var ColorTokenPicker = ({
7716
7840
 
7717
7841
  // src/ui/components/ui/FileUploadZone.tsx
7718
7842
  var import_react54 = require("react");
7719
- var import_jsx_runtime100 = require("react/jsx-runtime");
7843
+ var import_jsx_runtime101 = require("react/jsx-runtime");
7720
7844
  var ACCEPT_MAP = {
7721
7845
  png: "image/png",
7722
7846
  jpg: "image/jpeg",
@@ -7844,7 +7968,7 @@ var FileUploadZone = ({
7844
7968
  onRemove == null ? void 0 : onRemove();
7845
7969
  };
7846
7970
  if (previewUrl) {
7847
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
7971
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
7848
7972
  Layout,
7849
7973
  {
7850
7974
  column: true,
@@ -7856,14 +7980,14 @@ var FileUploadZone = ({
7856
7980
  className
7857
7981
  ),
7858
7982
  children: [
7859
- fileType && isPdf(fileType) ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7983
+ fileType && isPdf(fileType) ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
7860
7984
  "embed",
7861
7985
  {
7862
7986
  src: previewUrl,
7863
7987
  type: "application/pdf",
7864
7988
  className: "h-[500px] w-full rounded"
7865
7989
  }
7866
- ) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7990
+ ) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
7867
7991
  "img",
7868
7992
  {
7869
7993
  src: previewUrl,
@@ -7871,13 +7995,13 @@ var FileUploadZone = ({
7871
7995
  className: "max-h-[400px] max-w-full rounded object-contain"
7872
7996
  }
7873
7997
  ),
7874
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
7998
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
7875
7999
  Button,
7876
8000
  {
7877
8001
  label: "Supprimer",
7878
8002
  theme: "red-900",
7879
8003
  size: "s",
7880
- iconLeft: /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(FaIcon, { name: "trash", size: 14 }),
8004
+ iconLeft: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(FaIcon, { name: "trash", size: 14 }),
7881
8005
  onClick: handleRemove
7882
8006
  }
7883
8007
  )
@@ -7886,14 +8010,14 @@ var FileUploadZone = ({
7886
8010
  );
7887
8011
  }
7888
8012
  const showBrowse = !compact && browseLabel !== false;
7889
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
8013
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
7890
8014
  Layout,
7891
8015
  {
7892
8016
  column: true,
7893
8017
  gap: 1,
7894
8018
  className: cn(fullWidth ? "w-full" : "w-fit", className),
7895
8019
  children: [
7896
- /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
8020
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
7897
8021
  "label",
7898
8022
  {
7899
8023
  onDragOver: handleDragOver,
@@ -7907,7 +8031,7 @@ var FileUploadZone = ({
7907
8031
  isDragging ? "border-solid border-blue-100 bg-blue-50" : cn(compact ? "border-grey-300" : "border-blue-50", "bg-grey-100")
7908
8032
  ),
7909
8033
  children: [
7910
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8034
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
7911
8035
  "input",
7912
8036
  {
7913
8037
  ref: inputRef,
@@ -7919,11 +8043,11 @@ var FileUploadZone = ({
7919
8043
  className: "hidden"
7920
8044
  }
7921
8045
  ),
7922
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(FaIcon, { name: "cloud-arrow-up", size: 28, className: "text-blue-700" }),
7923
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "text-center text-sm text-grey-600", children: label }),
7924
- showBrowse && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [
7925
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "text-center text-xs text-grey-600", children: "ou" }),
7926
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
8046
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(FaIcon, { name: "cloud-arrow-up", size: 28, className: "text-blue-700" }),
8047
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "text-center text-sm text-grey-600", children: label }),
8048
+ showBrowse && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [
8049
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "text-center text-xs text-grey-600", children: "ou" }),
8050
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
7927
8051
  Button,
7928
8052
  {
7929
8053
  label: browseLabel,
@@ -7937,15 +8061,15 @@ var FileUploadZone = ({
7937
8061
  }
7938
8062
  )
7939
8063
  ] }),
7940
- sublabel && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "text-center text-xs text-grey-500", children: sublabel })
8064
+ sublabel && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "text-center text-xs text-grey-500", children: sublabel })
7941
8065
  ]
7942
8066
  }
7943
8067
  ),
7944
- showFileName && fileName && /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(Layout, { align: "center", justify: "center", gap: 2, children: [
7945
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(FaIcon, { name: "file", size: 16, className: "text-green-700" }),
7946
- /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "text-sm text-green-700", children: fileName })
8068
+ showFileName && fileName && /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(Layout, { align: "center", justify: "center", gap: 2, children: [
8069
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(FaIcon, { name: "file", size: 16, className: "text-green-700" }),
8070
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "text-sm text-green-700", children: fileName })
7947
8071
  ] }),
7948
- inlineError && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: "text-center text-sm text-red-900", children: inlineError })
8072
+ inlineError && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "text-center text-sm text-red-900", children: inlineError })
7949
8073
  ]
7950
8074
  }
7951
8075
  );
@@ -7953,7 +8077,7 @@ var FileUploadZone = ({
7953
8077
 
7954
8078
  // src/ui/components/ui/FilePicker.tsx
7955
8079
  var import_react55 = require("react");
7956
- var import_jsx_runtime101 = require("react/jsx-runtime");
8080
+ var import_jsx_runtime102 = require("react/jsx-runtime");
7957
8081
  var FilePicker = ({
7958
8082
  label,
7959
8083
  onSelect,
@@ -7968,8 +8092,8 @@ var FilePicker = ({
7968
8092
  className
7969
8093
  }) => {
7970
8094
  const inputRef = (0, import_react55.useRef)(null);
7971
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [
7972
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8095
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_jsx_runtime102.Fragment, { children: [
8096
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
7973
8097
  "input",
7974
8098
  {
7975
8099
  ref: inputRef,
@@ -7985,20 +8109,20 @@ var FilePicker = ({
7985
8109
  }
7986
8110
  }
7987
8111
  ),
7988
- variant === "button" ? /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8112
+ variant === "button" ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
7989
8113
  Button,
7990
8114
  {
7991
8115
  variant: "outline",
7992
8116
  label,
7993
8117
  disabled,
7994
8118
  className,
7995
- iconLeft: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Icon, { name: icon, family: iconFamily, size: "s", color: "inherit" }),
8119
+ iconLeft: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Icon, { name: icon, family: iconFamily, size: "s", color: "inherit" }),
7996
8120
  onClick: () => {
7997
8121
  var _a;
7998
8122
  return (_a = inputRef.current) == null ? void 0 : _a.click();
7999
8123
  }
8000
8124
  }
8001
- ) : /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(Tooltip, { content: label, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
8125
+ ) : /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Tooltip, { content: label, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
8002
8126
  Icon,
8003
8127
  {
8004
8128
  name: icon,
@@ -8020,7 +8144,7 @@ var FilePicker = ({
8020
8144
  // src/ui/components/ui/Item.tsx
8021
8145
  var import_react56 = require("react");
8022
8146
  var import_class_variance_authority17 = require("class-variance-authority");
8023
- var import_jsx_runtime102 = require("react/jsx-runtime");
8147
+ var import_jsx_runtime103 = require("react/jsx-runtime");
8024
8148
  var itemVariants = (0, import_class_variance_authority17.cva)(
8025
8149
  "group/item flex items-center rounded-[6px] border border-transparent transition-colors",
8026
8150
  {
@@ -8041,7 +8165,7 @@ var itemVariants = (0, import_class_variance_authority17.cva)(
8041
8165
  var Item4 = (0, import_react56.forwardRef)(
8042
8166
  (_a, ref) => {
8043
8167
  var _b = _a, { variant, size, className } = _b, props = __objRest(_b, ["variant", "size", "className"]);
8044
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
8168
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8045
8169
  "div",
8046
8170
  __spreadValues({
8047
8171
  ref,
@@ -8066,7 +8190,7 @@ var itemMediaVariants = (0, import_class_variance_authority17.cva)(
8066
8190
  );
8067
8191
  var ItemMedia = (_a) => {
8068
8192
  var _b = _a, { variant, className } = _b, props = __objRest(_b, ["variant", "className"]);
8069
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", __spreadValues({ className: cn(itemMediaVariants({ variant }), className) }, props));
8193
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", __spreadValues({ className: cn(itemMediaVariants({ variant }), className) }, props));
8070
8194
  };
8071
8195
  var ItemContent = (_a) => {
8072
8196
  var _b = _a, {
@@ -8074,7 +8198,7 @@ var ItemContent = (_a) => {
8074
8198
  } = _b, props = __objRest(_b, [
8075
8199
  "className"
8076
8200
  ]);
8077
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
8201
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8078
8202
  "div",
8079
8203
  __spreadValues({
8080
8204
  className: cn("flex min-w-0 flex-1 flex-col gap-1", className)
@@ -8087,7 +8211,7 @@ var ItemTitle = (_a) => {
8087
8211
  } = _b, props = __objRest(_b, [
8088
8212
  "className"
8089
8213
  ]);
8090
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
8214
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8091
8215
  "div",
8092
8216
  __spreadValues({
8093
8217
  className: cn(
@@ -8103,7 +8227,7 @@ var ItemDescription = (_a) => {
8103
8227
  } = _b, props = __objRest(_b, [
8104
8228
  "className"
8105
8229
  ]);
8106
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", __spreadValues({ className: cn("text-sm text-grey-500", className) }, props));
8230
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", __spreadValues({ className: cn("text-sm text-grey-500", className) }, props));
8107
8231
  };
8108
8232
  var ItemActions = (_a) => {
8109
8233
  var _b = _a, {
@@ -8111,7 +8235,7 @@ var ItemActions = (_a) => {
8111
8235
  } = _b, props = __objRest(_b, [
8112
8236
  "className"
8113
8237
  ]);
8114
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
8238
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8115
8239
  "div",
8116
8240
  __spreadValues({
8117
8241
  className: cn("flex shrink-0 items-center gap-2", className)
@@ -8120,7 +8244,7 @@ var ItemActions = (_a) => {
8120
8244
  };
8121
8245
 
8122
8246
  // src/ui/components/ui/Attachment.tsx
8123
- var import_jsx_runtime103 = require("react/jsx-runtime");
8247
+ var import_jsx_runtime104 = require("react/jsx-runtime");
8124
8248
  var Attachment = ({
8125
8249
  name,
8126
8250
  size,
@@ -8134,7 +8258,7 @@ var Attachment = ({
8134
8258
  }) => {
8135
8259
  const isUploading = status === "uploading";
8136
8260
  const isError = status === "error";
8137
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
8261
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
8138
8262
  Item4,
8139
8263
  {
8140
8264
  variant: "outline",
@@ -8146,12 +8270,12 @@ var Attachment = ({
8146
8270
  ),
8147
8271
  style: { width },
8148
8272
  children: [
8149
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8273
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8150
8274
  ItemMedia,
8151
8275
  {
8152
8276
  variant: "icon",
8153
8277
  className: cn(isError && "border-red-900 bg-red-50"),
8154
- children: isUploading ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Spinner, { size: "s", color: "blue-700" }) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8278
+ children: isUploading ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Spinner, { size: "s", color: "blue-700" }) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8155
8279
  FaIcon,
8156
8280
  {
8157
8281
  name: isError ? "triangle-exclamation" : "file",
@@ -8161,33 +8285,33 @@ var Attachment = ({
8161
8285
  )
8162
8286
  }
8163
8287
  ),
8164
- /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(ItemContent, { children: [
8165
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(ItemTitle, { children: name }),
8166
- isUploading ? /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(ItemDescription, { className: "text-xs", children: [
8288
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(ItemContent, { children: [
8289
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ItemTitle, { children: name }),
8290
+ isUploading ? /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(ItemDescription, { className: "text-xs", children: [
8167
8291
  "Uploading - ",
8168
8292
  progress,
8169
8293
  "%"
8170
- ] }) : isError ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(ItemDescription, { className: "text-xs text-red-900", children: errorMessage }) : size && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(ItemDescription, { className: "text-xs", children: size })
8294
+ ] }) : isError ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ItemDescription, { className: "text-xs text-red-900", children: errorMessage }) : size && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ItemDescription, { className: "text-xs", children: size })
8171
8295
  ] }),
8172
- (onRetry || onRemove) && /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(ItemActions, { children: [
8173
- isError && onRetry && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8296
+ (onRetry || onRemove) && /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(ItemActions, { children: [
8297
+ isError && onRetry && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8174
8298
  "button",
8175
8299
  {
8176
8300
  type: "button",
8177
8301
  onClick: onRetry,
8178
8302
  "aria-label": `R\xE9essayer l'envoi de ${name}`,
8179
8303
  className: "text-grey-400 hover:text-grey-600",
8180
- children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(FaIcon, { name: "rotate-right", size: 12 })
8304
+ children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(FaIcon, { name: "rotate-right", size: 12 })
8181
8305
  }
8182
8306
  ),
8183
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
8307
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8184
8308
  "button",
8185
8309
  {
8186
8310
  type: "button",
8187
8311
  onClick: onRemove,
8188
8312
  "aria-label": `Retirer ${name}`,
8189
8313
  className: "text-grey-400 hover:text-grey-600",
8190
- children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(FaIcon, { name: "xmark", size: 12 })
8314
+ children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(FaIcon, { name: "xmark", size: 12 })
8191
8315
  }
8192
8316
  )
8193
8317
  ] })
@@ -8199,7 +8323,7 @@ var Attachment = ({
8199
8323
  // src/ui/components/ui/PdfPreview.tsx
8200
8324
  var import_react57 = require("react");
8201
8325
  var import_react_pdf = require("react-pdf");
8202
- var import_jsx_runtime104 = require("react/jsx-runtime");
8326
+ var import_jsx_runtime105 = require("react/jsx-runtime");
8203
8327
  import_react_pdf.pdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${import_react_pdf.pdfjs.version}/build/pdf.worker.min.mjs`;
8204
8328
  var PdfPreview = ({
8205
8329
  file,
@@ -8210,9 +8334,9 @@ var PdfPreview = ({
8210
8334
  const [hasError, setHasError] = (0, import_react57.useState)(false);
8211
8335
  const [numPages, setNumPages] = (0, import_react57.useState)(0);
8212
8336
  const height = Math.round(width * 1.3);
8213
- const thumbnailSkeleton = /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Skeleton, { width, height });
8337
+ const thumbnailSkeleton = /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Skeleton, { width, height });
8214
8338
  if (hasError) {
8215
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
8339
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
8216
8340
  Layout,
8217
8341
  {
8218
8342
  column: true,
@@ -8225,13 +8349,13 @@ var PdfPreview = ({
8225
8349
  ),
8226
8350
  style: { width, height },
8227
8351
  children: [
8228
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(FaIcon, { name: "file-pdf", size: 24 }),
8229
- /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("span", { className: "text-xs", children: "Aper\xE7u indisponible" })
8352
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(FaIcon, { name: "file-pdf", size: 24 }),
8353
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "text-xs", children: "Aper\xE7u indisponible" })
8230
8354
  ]
8231
8355
  }
8232
8356
  );
8233
8357
  }
8234
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8358
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8235
8359
  "div",
8236
8360
  {
8237
8361
  className: cn(
@@ -8239,7 +8363,7 @@ var PdfPreview = ({
8239
8363
  className
8240
8364
  ),
8241
8365
  style: { width, maxHeight },
8242
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8366
+ children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8243
8367
  import_react_pdf.Document,
8244
8368
  {
8245
8369
  file,
@@ -8247,7 +8371,7 @@ var PdfPreview = ({
8247
8371
  onLoadError: () => setHasError(true),
8248
8372
  loading: thumbnailSkeleton,
8249
8373
  error: thumbnailSkeleton,
8250
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Layout, { column: true, gap: 2, className: "p-2", children: Array.from({ length: numPages }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
8374
+ children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Layout, { column: true, gap: 2, className: "p-2", children: Array.from({ length: numPages }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8251
8375
  import_react_pdf.Page,
8252
8376
  {
8253
8377
  pageNumber: i + 1,
@@ -8268,7 +8392,7 @@ var import_react59 = require("react");
8268
8392
 
8269
8393
  // src/ui/components/ui/VideoPlayer.tsx
8270
8394
  var import_react58 = require("react");
8271
- var import_jsx_runtime105 = require("react/jsx-runtime");
8395
+ var import_jsx_runtime106 = require("react/jsx-runtime");
8272
8396
  var formatVideoDuration = (seconds) => {
8273
8397
  if (seconds === void 0 || !Number.isFinite(seconds) || seconds < 0)
8274
8398
  return "";
@@ -8367,8 +8491,8 @@ var VideoPlayer = ({
8367
8491
  const stopBubbling = (e) => {
8368
8492
  e.stopPropagation();
8369
8493
  };
8370
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_jsx_runtime105.Fragment, { children: [
8371
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
8494
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_jsx_runtime106.Fragment, { children: [
8495
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8372
8496
  Layout,
8373
8497
  {
8374
8498
  className: cn(
@@ -8379,7 +8503,7 @@ var VideoPlayer = ({
8379
8503
  onClick: stopBubbling,
8380
8504
  "data-testid": "video-player",
8381
8505
  children: [
8382
- isInlinePlaying ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8506
+ isInlinePlaying ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8383
8507
  "video",
8384
8508
  {
8385
8509
  ref: attachInlineVideo,
@@ -8391,7 +8515,7 @@ var VideoPlayer = ({
8391
8515
  className: "h-full w-full bg-black object-contain",
8392
8516
  "aria-label": title
8393
8517
  }
8394
- ) : /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
8518
+ ) : /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8395
8519
  "button",
8396
8520
  {
8397
8521
  type: "button",
@@ -8399,7 +8523,7 @@ var VideoPlayer = ({
8399
8523
  "aria-label": `Lire la vid\xE9o ${title}`,
8400
8524
  className: "group relative flex h-full w-full items-center justify-center",
8401
8525
  children: [
8402
- visiblePoster ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8526
+ visiblePoster ? /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8403
8527
  "img",
8404
8528
  {
8405
8529
  src: visiblePoster,
@@ -8410,7 +8534,7 @@ var VideoPlayer = ({
8410
8534
  ) : (
8411
8535
  // Sans vignette : première image de la vidéo (métadonnées seulement,
8412
8536
  // `#t=0.1` force l'affichage d'une frame), tuile sombre si ça échoue.
8413
- !hasFramePreviewError && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8537
+ !hasFramePreviewError && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8414
8538
  "video",
8415
8539
  {
8416
8540
  src: `${src}#t=0.1`,
@@ -8425,12 +8549,12 @@ var VideoPlayer = ({
8425
8549
  }
8426
8550
  )
8427
8551
  ),
8428
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "relative flex h-12 w-12 items-center justify-center rounded-full bg-blue-900 text-white transition-colors group-hover:bg-blue-950", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(FaIcon, { name: "play", family: "solid", size: 18 }) }),
8429
- formattedDuration && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "absolute bottom-2 left-2 rounded bg-black/60 px-1.5 py-0.5 text-xs font-medium text-white", children: formattedDuration })
8552
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "relative flex h-12 w-12 items-center justify-center rounded-full bg-blue-900 text-white transition-colors group-hover:bg-blue-950", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(FaIcon, { name: "play", family: "solid", size: 18 }) }),
8553
+ formattedDuration && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "absolute bottom-2 left-2 rounded bg-black/60 px-1.5 py-0.5 text-xs font-medium text-white", children: formattedDuration })
8430
8554
  ]
8431
8555
  }
8432
8556
  ),
8433
- label && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8557
+ label && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8434
8558
  Layout,
8435
8559
  {
8436
8560
  width: "auto",
@@ -8438,14 +8562,14 @@ var VideoPlayer = ({
8438
8562
  children: label
8439
8563
  }
8440
8564
  ),
8441
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
8565
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8442
8566
  Layout,
8443
8567
  {
8444
8568
  width: "auto",
8445
8569
  gap: 1,
8446
8570
  className: "absolute right-1 top-1 rounded-full bg-white/90",
8447
8571
  children: [
8448
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Tooltip, { content: "Agrandir la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8572
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Tooltip, { content: "Agrandir la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8449
8573
  Icon,
8450
8574
  {
8451
8575
  name: "up-right-and-down-left-from-center",
@@ -8454,7 +8578,7 @@ var VideoPlayer = ({
8454
8578
  "aria-label": "Agrandir la vid\xE9o"
8455
8579
  }
8456
8580
  ) }),
8457
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Tooltip, { content: "T\xE9l\xE9charger la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8581
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Tooltip, { content: "T\xE9l\xE9charger la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8458
8582
  Icon,
8459
8583
  {
8460
8584
  name: "download",
@@ -8466,7 +8590,7 @@ var VideoPlayer = ({
8466
8590
  ]
8467
8591
  }
8468
8592
  ),
8469
- meta && !isInlinePlaying && /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8593
+ meta && !isInlinePlaying && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8470
8594
  Layout,
8471
8595
  {
8472
8596
  width: "auto",
@@ -8477,7 +8601,7 @@ var VideoPlayer = ({
8477
8601
  ]
8478
8602
  }
8479
8603
  ),
8480
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
8604
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8481
8605
  Modal,
8482
8606
  {
8483
8607
  open: isExpanded,
@@ -8485,9 +8609,9 @@ var VideoPlayer = ({
8485
8609
  onOpenAutoFocus: focusExpandedVideo,
8486
8610
  width: "70vw",
8487
8611
  children: [
8488
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(ModalHeader, { className: "items-start text-left", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Layout, { align: "center", justify: "between", fullWidth: true, gap: 2, children: [
8489
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Layout, { align: "center", gap: 2, className: "min-w-0", children: [
8490
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8612
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ModalHeader, { className: "items-start text-left", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Layout, { align: "center", justify: "between", fullWidth: true, gap: 2, children: [
8613
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Layout, { align: "center", gap: 2, className: "min-w-0", children: [
8614
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8491
8615
  IconBadge,
8492
8616
  {
8493
8617
  name: "video",
@@ -8496,10 +8620,10 @@ var VideoPlayer = ({
8496
8620
  iconColor: "blue_900"
8497
8621
  }
8498
8622
  ),
8499
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(ModalTitle, { className: "truncate", children: title })
8623
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ModalTitle, { className: "truncate", children: title })
8500
8624
  ] }),
8501
- /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(Layout, { width: "auto", align: "center", gap: 1, children: [
8502
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Tooltip, { content: "T\xE9l\xE9charger la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8625
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(Layout, { width: "auto", align: "center", gap: 1, children: [
8626
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Tooltip, { content: "T\xE9l\xE9charger la vid\xE9o", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8503
8627
  Icon,
8504
8628
  {
8505
8629
  name: "download",
@@ -8508,7 +8632,7 @@ var VideoPlayer = ({
8508
8632
  "aria-label": "T\xE9l\xE9charger la vid\xE9o"
8509
8633
  }
8510
8634
  ) }),
8511
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(ModalClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8635
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ModalClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8512
8636
  Icon,
8513
8637
  {
8514
8638
  name: "xmark",
@@ -8520,7 +8644,7 @@ var VideoPlayer = ({
8520
8644
  ) })
8521
8645
  ] })
8522
8646
  ] }) }),
8523
- /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
8647
+ /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(ModalBody, { children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8524
8648
  "video",
8525
8649
  {
8526
8650
  ref: attachExpandedVideo,
@@ -8541,7 +8665,7 @@ var VideoPlayer = ({
8541
8665
  };
8542
8666
 
8543
8667
  // src/ui/components/ui/AudioPlayer.tsx
8544
- var import_jsx_runtime106 = require("react/jsx-runtime");
8668
+ var import_jsx_runtime107 = require("react/jsx-runtime");
8545
8669
  var DEFAULT_VOLUME2 = 0.5;
8546
8670
  var clampVolume2 = (volume) => Number.isFinite(volume) ? Math.min(1, Math.max(0, volume)) : DEFAULT_VOLUME2;
8547
8671
  var AudioPlayer = ({
@@ -8584,7 +8708,7 @@ var AudioPlayer = ({
8584
8708
  const value = (_b = (_a = audioRef.current) == null ? void 0 : _a.duration) != null ? _b : 0;
8585
8709
  setDuration(Number.isFinite(value) ? value : 0);
8586
8710
  };
8587
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(
8711
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
8588
8712
  Layout,
8589
8713
  {
8590
8714
  gap: 3,
@@ -8593,7 +8717,7 @@ var AudioPlayer = ({
8593
8717
  className: cn("rounded-lg border border-grey-300 p-2", className),
8594
8718
  "data-testid": "audio-player",
8595
8719
  children: [
8596
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8720
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8597
8721
  "audio",
8598
8722
  {
8599
8723
  ref: attachAudio,
@@ -8611,19 +8735,19 @@ var AudioPlayer = ({
8611
8735
  "aria-label": title
8612
8736
  }
8613
8737
  ),
8614
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8738
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8615
8739
  Button,
8616
8740
  {
8617
8741
  variant: "outline",
8618
8742
  size: "s",
8619
8743
  iconOnly: true,
8620
8744
  "aria-label": isPlaying ? `Mettre en pause ${title}` : `Lire ${title}`,
8621
- iconLeft: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Icon, { name: isPlaying ? "pause" : "play", size: "s", color: "inherit" }),
8745
+ iconLeft: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Icon, { name: isPlaying ? "pause" : "play", size: "s", color: "inherit" }),
8622
8746
  onClick: togglePlayback
8623
8747
  }
8624
8748
  ),
8625
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Text, { size: "xs", color: "grey-600", className: "tabular-nums", children: formatVideoDuration(currentTime) }),
8626
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
8749
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Text, { size: "xs", color: "grey-600", className: "tabular-nums", children: formatVideoDuration(currentTime) }),
8750
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8627
8751
  "input",
8628
8752
  {
8629
8753
  type: "range",
@@ -8637,7 +8761,7 @@ var AudioPlayer = ({
8637
8761
  className: "h-1 min-w-0 flex-1 cursor-pointer accent-blue-700 disabled:cursor-default"
8638
8762
  }
8639
8763
  ),
8640
- /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Text, { size: "xs", color: "grey-600", className: "tabular-nums", children: formatVideoDuration(duration) })
8764
+ /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(Text, { size: "xs", color: "grey-600", className: "tabular-nums", children: formatVideoDuration(duration) })
8641
8765
  ]
8642
8766
  }
8643
8767
  );
@@ -8645,7 +8769,7 @@ var AudioPlayer = ({
8645
8769
 
8646
8770
  // src/ui/components/ui/ScrollArea.tsx
8647
8771
  var RadixScrollArea = __toESM(require("@radix-ui/react-scroll-area"));
8648
- var import_jsx_runtime107 = require("react/jsx-runtime");
8772
+ var import_jsx_runtime108 = require("react/jsx-runtime");
8649
8773
  var HIDDEN_SCROLLBAR_CLASSNAME = "w-0 h-0 opacity-0";
8650
8774
  var ScrollArea = (_a) => {
8651
8775
  var _b = _a, {
@@ -8661,13 +8785,13 @@ var ScrollArea = (_a) => {
8661
8785
  "viewportRef",
8662
8786
  "maxHeight"
8663
8787
  ]);
8664
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(
8788
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
8665
8789
  RadixScrollArea.Root,
8666
8790
  __spreadProps(__spreadValues({
8667
8791
  className: cn("relative overflow-hidden", className)
8668
8792
  }, props), {
8669
8793
  children: [
8670
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8794
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
8671
8795
  RadixScrollArea.Viewport,
8672
8796
  {
8673
8797
  ref: viewportRef,
@@ -8680,23 +8804,23 @@ var ScrollArea = (_a) => {
8680
8804
  children
8681
8805
  }
8682
8806
  ),
8683
- (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8807
+ (orientation === "vertical" || orientation === "both") && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
8684
8808
  RadixScrollArea.Scrollbar,
8685
8809
  {
8686
8810
  orientation: "vertical",
8687
8811
  className: HIDDEN_SCROLLBAR_CLASSNAME,
8688
- children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadixScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-grey-400" })
8812
+ children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(RadixScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-grey-400" })
8689
8813
  }
8690
8814
  ),
8691
- (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
8815
+ (orientation === "horizontal" || orientation === "both") && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
8692
8816
  RadixScrollArea.Scrollbar,
8693
8817
  {
8694
8818
  orientation: "horizontal",
8695
8819
  className: HIDDEN_SCROLLBAR_CLASSNAME,
8696
- children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadixScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-grey-400" })
8820
+ children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(RadixScrollArea.Thumb, { className: "relative flex-1 rounded-full bg-grey-400" })
8697
8821
  }
8698
8822
  ),
8699
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(RadixScrollArea.Corner, {})
8823
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(RadixScrollArea.Corner, {})
8700
8824
  ]
8701
8825
  })
8702
8826
  );
@@ -8704,7 +8828,7 @@ var ScrollArea = (_a) => {
8704
8828
 
8705
8829
  // src/ui/components/ui/Message.tsx
8706
8830
  var import_react60 = require("react");
8707
- var import_jsx_runtime108 = require("react/jsx-runtime");
8831
+ var import_jsx_runtime109 = require("react/jsx-runtime");
8708
8832
  var BUBBLE_BACKGROUND = {
8709
8833
  own: { solid: "bg-blue-700", pale: "bg-blue-50" },
8710
8834
  teammate: { solid: "bg-blue-100", pale: "bg-blue-100" },
@@ -8763,7 +8887,7 @@ var Message = (0, import_react60.forwardRef)(
8763
8887
  const isInverted = isOwn && variant === "solid";
8764
8888
  const contentColor = isInverted ? "white" : "neutral-800";
8765
8889
  const metaColor = isInverted ? "white" : "grey-500";
8766
- const avatar = showAuthor ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Avatar, { name: authorName, src: authorSrc, size: avatarSize }) : /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
8890
+ const avatar = showAuthor ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Avatar, { name: authorName, src: authorSrc, size: avatarSize }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
8767
8891
  Layout,
8768
8892
  {
8769
8893
  width: `${avatarSize}px`,
@@ -8771,8 +8895,8 @@ var Message = (0, import_react60.forwardRef)(
8771
8895
  "aria-hidden": "true"
8772
8896
  }
8773
8897
  );
8774
- const actionsSlot = actions && !actionsOnHover ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Layout, { width: "auto", align: "center", className: "shrink-0", children: actions }) : null;
8775
- const cornerActions = actions && actionsOnHover ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
8898
+ const actionsSlot = actions && !actionsOnHover ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { width: "auto", align: "center", className: "shrink-0", children: actions }) : null;
8899
+ const cornerActions = actions && actionsOnHover ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
8776
8900
  Layout,
8777
8901
  {
8778
8902
  width: "auto",
@@ -8785,7 +8909,7 @@ var Message = (0, import_react60.forwardRef)(
8785
8909
  children: actions
8786
8910
  }
8787
8911
  ) : null;
8788
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
8912
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8789
8913
  Layout,
8790
8914
  __spreadProps(__spreadValues({
8791
8915
  ref,
@@ -8796,7 +8920,7 @@ var Message = (0, import_react60.forwardRef)(
8796
8920
  className
8797
8921
  }, props), {
8798
8922
  children: [
8799
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
8923
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8800
8924
  Layout,
8801
8925
  {
8802
8926
  fullWidth: true,
@@ -8807,7 +8931,7 @@ var Message = (0, import_react60.forwardRef)(
8807
8931
  children: [
8808
8932
  !isRightAligned && avatar,
8809
8933
  isRightAligned && actionsSlot,
8810
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
8934
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8811
8935
  Layout,
8812
8936
  {
8813
8937
  column: true,
@@ -8816,7 +8940,7 @@ var Message = (0, import_react60.forwardRef)(
8816
8940
  align: isRightAligned ? "end" : "start",
8817
8941
  style: { maxWidth },
8818
8942
  children: [
8819
- bubble ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(
8943
+ bubble ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
8820
8944
  Layout,
8821
8945
  {
8822
8946
  column: true,
@@ -8830,16 +8954,16 @@ var Message = (0, import_react60.forwardRef)(
8830
8954
  cornerActions && "pr-8"
8831
8955
  ),
8832
8956
  children: [
8833
- deleted ? /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Text, { size: "s", italic: true, color: metaColor, children: deletedLabel }) : /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Text, { size: "s", color: contentColor, children }),
8834
- time && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Layout, { fullWidth: true, justify: "end", children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Text, { size: "xxs", color: metaColor, children: time }) }),
8957
+ deleted ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Text, { size: "s", italic: true, color: metaColor, children: deletedLabel }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Text, { size: "s", color: contentColor, children }),
8958
+ time && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { fullWidth: true, justify: "end", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Text, { size: "xxs", color: metaColor, children: time }) }),
8835
8959
  cornerActions
8836
8960
  ]
8837
8961
  }
8838
- ) : cornerActions ? /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(Layout, { width: "auto", className: "relative", children: [
8962
+ ) : cornerActions ? /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Layout, { width: "auto", className: "relative", children: [
8839
8963
  children,
8840
8964
  cornerActions
8841
8965
  ] }) : children,
8842
- status && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Layout, { fullWidth: true, justify: isRightAligned ? "end" : "start", children: status })
8966
+ status && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { fullWidth: true, justify: isRightAligned ? "end" : "start", children: status })
8843
8967
  ]
8844
8968
  }
8845
8969
  ),
@@ -8848,7 +8972,7 @@ var Message = (0, import_react60.forwardRef)(
8848
8972
  ]
8849
8973
  }
8850
8974
  ),
8851
- showAuthor && showAuthorName && authorName && /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(Text, { size: "xs", color: "grey-600", children: authorName })
8975
+ showAuthor && showAuthorName && authorName && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Text, { size: "xs", color: "grey-600", children: authorName })
8852
8976
  ]
8853
8977
  })
8854
8978
  );
@@ -8858,7 +8982,7 @@ Message.displayName = "Message";
8858
8982
 
8859
8983
  // src/ui/components/ui/MessageScroller.tsx
8860
8984
  var import_react61 = require("react");
8861
- var import_jsx_runtime109 = require("react/jsx-runtime");
8985
+ var import_jsx_runtime110 = require("react/jsx-runtime");
8862
8986
  var SEPARATOR_LINE = {
8863
8987
  neutral: "",
8864
8988
  alert: "bg-red-500"
@@ -8871,9 +8995,9 @@ var MessageDateSeparator = ({
8871
8995
  label,
8872
8996
  tone = "neutral",
8873
8997
  className
8874
- }) => /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Layout, { fullWidth: true, gap: 2, align: "center", className, children: [
8875
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { flex: 1, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Divider, { className: SEPARATOR_LINE[tone] }) }),
8876
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { width: "auto", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
8998
+ }) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Layout, { fullWidth: true, gap: 2, align: "center", className, children: [
8999
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Layout, { flex: 1, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Divider, { className: SEPARATOR_LINE[tone] }) }),
9000
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Layout, { width: "auto", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
8877
9001
  Text,
8878
9002
  {
8879
9003
  size: "xs",
@@ -8882,7 +9006,7 @@ var MessageDateSeparator = ({
8882
9006
  children: label
8883
9007
  }
8884
9008
  ) }),
8885
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Layout, { flex: 1, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Divider, { className: SEPARATOR_LINE[tone] }) })
9009
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Layout, { flex: 1, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Divider, { className: SEPARATOR_LINE[tone] }) })
8886
9010
  ] });
8887
9011
  var MessageScroller = ({
8888
9012
  children,
@@ -8922,13 +9046,13 @@ var MessageScroller = ({
8922
9046
  if (isEmpty && emptyState) return emptyState;
8923
9047
  return children;
8924
9048
  };
8925
- const scroller = /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
9049
+ const scroller = /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
8926
9050
  ScrollArea,
8927
9051
  {
8928
9052
  viewportRef: scrollerRef,
8929
9053
  className: cn("w-full", floatingFooter ? "min-h-0 flex-1" : className),
8930
9054
  style: typeof height === "number" ? { height: `${height}px` } : { height },
8931
- children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
9055
+ children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
8932
9056
  Layout,
8933
9057
  {
8934
9058
  column: true,
@@ -8951,9 +9075,9 @@ var MessageScroller = ({
8951
9075
  }
8952
9076
  );
8953
9077
  if (!floatingFooter) return scroller;
8954
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Layout, { column: true, fullWidth: true, className: cn("relative min-h-0", className), children: [
9078
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Layout, { column: true, fullWidth: true, className: cn("relative min-h-0", className), children: [
8955
9079
  scroller,
8956
- /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
9080
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
8957
9081
  Layout,
8958
9082
  {
8959
9083
  width: "auto",
@@ -8966,13 +9090,13 @@ var MessageScroller = ({
8966
9090
 
8967
9091
  // src/ui/components/ui/Stepper.tsx
8968
9092
  var import_react62 = require("react");
8969
- var import_jsx_runtime110 = require("react/jsx-runtime");
9093
+ var import_jsx_runtime111 = require("react/jsx-runtime");
8970
9094
  var Stepper = ({
8971
9095
  numberOfSteps,
8972
9096
  current = 0,
8973
9097
  size = 28,
8974
9098
  className
8975
- }) => /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
9099
+ }) => /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
8976
9100
  "nav",
8977
9101
  {
8978
9102
  "aria-label": "progression",
@@ -8983,8 +9107,8 @@ var Stepper = ({
8983
9107
  children: Array.from({ length: numberOfSteps }, (_, i) => {
8984
9108
  const isActive = i === current;
8985
9109
  const isCompleted = i < current;
8986
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_react62.Fragment, { children: [
8987
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
9110
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_react62.Fragment, { children: [
9111
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
8988
9112
  "div",
8989
9113
  {
8990
9114
  "aria-hidden": true,
@@ -8993,10 +9117,10 @@ var Stepper = ({
8993
9117
  isCompleted ? "border-blue-800 bg-blue-800 text-white" : isActive ? "border-blue-800 bg-white text-blue-800" : "border-grey-500 bg-white text-grey-500"
8994
9118
  ),
8995
9119
  style: { width: size, height: size },
8996
- children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(FaIcon, { name: "check", family: "solid", size: 12 }) : i + 1
9120
+ children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "check", family: "solid", size: 12 }) : i + 1
8997
9121
  }
8998
9122
  ),
8999
- i < numberOfSteps - 1 && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "h-px min-w-[8px] flex-1 bg-grey-300" })
9123
+ i < numberOfSteps - 1 && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "h-px min-w-[8px] flex-1 bg-grey-300" })
9000
9124
  ] }, i);
9001
9125
  })
9002
9126
  }
@@ -9010,7 +9134,7 @@ var import_style2 = require("react-day-picker/style.css");
9010
9134
  var import_date_fns = require("date-fns");
9011
9135
  var import_locale2 = require("date-fns/locale");
9012
9136
  var RadixPopover6 = __toESM(require("@radix-ui/react-popover"));
9013
- var import_jsx_runtime111 = require("react/jsx-runtime");
9137
+ var import_jsx_runtime112 = require("react/jsx-runtime");
9014
9138
  var formatMonthCaption = (month) => (0, import_date_fns.format)(month, "MMM yyyy", { locale: import_locale2.fr });
9015
9139
  var isSameCalendarDay = (a, b) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
9016
9140
  var parseTypedDate = (text, minDate, maxDate) => {
@@ -9040,7 +9164,7 @@ var autoFormatTypedInput = (raw, isRange) => {
9040
9164
  var RANGE_PRESETS = [
9041
9165
  {
9042
9166
  label: "Mois pr\xE9c\xE9dent",
9043
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-arrow-up", size: 15 }),
9167
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-arrow-up", size: 15 }),
9044
9168
  getValue: () => [
9045
9169
  (0, import_date_fns.startOfMonth)((0, import_date_fns.subMonths)(/* @__PURE__ */ new Date(), 1)),
9046
9170
  (0, import_date_fns.endOfMonth)((0, import_date_fns.subMonths)(/* @__PURE__ */ new Date(), 1))
@@ -9048,34 +9172,34 @@ var RANGE_PRESETS = [
9048
9172
  },
9049
9173
  {
9050
9174
  label: "Ce mois",
9051
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-days", size: 15 }),
9175
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-days", size: 15 }),
9052
9176
  getValue: () => [(0, import_date_fns.startOfMonth)(/* @__PURE__ */ new Date()), (0, import_date_fns.endOfMonth)(/* @__PURE__ */ new Date())]
9053
9177
  },
9054
9178
  {
9055
9179
  label: "Ce trimestre",
9056
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-range", size: 15 }),
9180
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-range", size: 15 }),
9057
9181
  getValue: () => [(0, import_date_fns.startOfQuarter)(/* @__PURE__ */ new Date()), (0, import_date_fns.endOfQuarter)(/* @__PURE__ */ new Date())]
9058
9182
  },
9059
9183
  {
9060
9184
  label: "Cette ann\xE9e",
9061
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-clock", size: 15 }),
9185
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-clock", size: 15 }),
9062
9186
  getValue: () => [(0, import_date_fns.startOfYear)(/* @__PURE__ */ new Date()), (0, import_date_fns.endOfYear)(/* @__PURE__ */ new Date())]
9063
9187
  }
9064
9188
  ];
9065
9189
  var SINGLE_PRESETS = [
9066
9190
  {
9067
9191
  label: "Aujourd'hui",
9068
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-days", size: 15 }),
9192
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-days", size: 15 }),
9069
9193
  getValue: () => /* @__PURE__ */ new Date()
9070
9194
  },
9071
9195
  {
9072
9196
  label: "Demain",
9073
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-plus", size: 15 }),
9197
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-plus", size: 15 }),
9074
9198
  getValue: () => (0, import_date_fns.addDays)(/* @__PURE__ */ new Date(), 1)
9075
9199
  },
9076
9200
  {
9077
9201
  label: "Dans 7 jours",
9078
- icon: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar-clock", size: 15 }),
9202
+ icon: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar-clock", size: 15 }),
9079
9203
  getValue: () => (0, import_date_fns.addDays)(/* @__PURE__ */ new Date(), 7)
9080
9204
  }
9081
9205
  ];
@@ -9163,7 +9287,7 @@ var DatePicker = ({
9163
9287
  setIsEditing(false);
9164
9288
  }
9165
9289
  };
9166
- const calendar = /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(RadixPopover6.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9290
+ const calendar = /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(RadixPopover6.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9167
9291
  RadixPopover6.Content,
9168
9292
  {
9169
9293
  align,
@@ -9175,7 +9299,7 @@ var DatePicker = ({
9175
9299
  // mois (range) passait à la ligne et se faisait couper par max-h.
9176
9300
  isRange && "max-h-[320px] max-w-[460px] overflow-y-auto [&_.rdp-months]:flex-nowrap"
9177
9301
  ),
9178
- children: isRange ? /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9302
+ children: isRange ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9179
9303
  import_react_day_picker.DayPicker,
9180
9304
  {
9181
9305
  mode: "range",
@@ -9193,7 +9317,7 @@ var DatePicker = ({
9193
9317
  showOutsideDays: true,
9194
9318
  formatters: { formatCaption: formatMonthCaption }
9195
9319
  }
9196
- ) : /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9320
+ ) : /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9197
9321
  import_react_day_picker.DayPicker,
9198
9322
  {
9199
9323
  mode: "single",
@@ -9211,8 +9335,8 @@ var DatePicker = ({
9211
9335
  }
9212
9336
  ) });
9213
9337
  if (!showPresets) {
9214
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(RadixPopover6.Root, { open, onOpenChange: setOpen, children: [
9215
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(RadixPopover6.Anchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(
9338
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(RadixPopover6.Root, { open, onOpenChange: setOpen, children: [
9339
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(RadixPopover6.Anchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
9216
9340
  Layout,
9217
9341
  {
9218
9342
  align: "center",
@@ -9226,7 +9350,7 @@ var DatePicker = ({
9226
9350
  className
9227
9351
  ),
9228
9352
  children: [
9229
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9353
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9230
9354
  "input",
9231
9355
  {
9232
9356
  type: "text",
@@ -9247,14 +9371,14 @@ var DatePicker = ({
9247
9371
  )
9248
9372
  }
9249
9373
  ),
9250
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(RadixPopover6.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9374
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(RadixPopover6.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9251
9375
  "button",
9252
9376
  {
9253
9377
  type: "button",
9254
9378
  "aria-label": "Ouvrir le calendrier",
9255
9379
  disabled,
9256
9380
  className: "flex h-full w-8 shrink-0 items-center justify-center text-grey-500 hover:text-blue-700 disabled:cursor-not-allowed",
9257
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar", size: 14 })
9381
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar", size: 14 })
9258
9382
  }
9259
9383
  ) })
9260
9384
  ]
@@ -9263,10 +9387,10 @@ var DatePicker = ({
9263
9387
  calendar
9264
9388
  ] });
9265
9389
  }
9266
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(RadixPopover6.Root, { open, onOpenChange: setOpen, children: [
9267
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Layout, { column: true, gap: 1.5, align, className, children: [
9268
- /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(Layout, { align: "center", gap: 1.5, width: "auto", children: [
9269
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(RadixPopover6.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9390
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(RadixPopover6.Root, { open, onOpenChange: setOpen, children: [
9391
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(Layout, { column: true, gap: 1.5, align, className, children: [
9392
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(Layout, { align: "center", gap: 1.5, width: "auto", children: [
9393
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(RadixPopover6.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9270
9394
  "button",
9271
9395
  {
9272
9396
  type: "button",
@@ -9278,12 +9402,12 @@ var DatePicker = ({
9278
9402
  hasValue && !activePreset ? "border-blue-700 bg-blue-50 text-blue-700" : "border-grey-300 bg-white text-neutral-800 hover:border-blue-700",
9279
9403
  "disabled:cursor-not-allowed disabled:opacity-60"
9280
9404
  ),
9281
- children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(FaIcon, { name: "calendar", size: 16 })
9405
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(FaIcon, { name: "calendar", size: 16 })
9282
9406
  }
9283
9407
  ) }),
9284
9408
  resolvedPresets.map((preset) => {
9285
9409
  const active = activePreset === preset.label;
9286
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Tooltip, { content: preset.label, children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9410
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Tooltip, { content: preset.label, children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9287
9411
  "button",
9288
9412
  {
9289
9413
  type: "button",
@@ -9301,7 +9425,7 @@ var DatePicker = ({
9301
9425
  ) }, preset.label);
9302
9426
  })
9303
9427
  ] }),
9304
- hasValue && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
9428
+ hasValue && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
9305
9429
  "button",
9306
9430
  {
9307
9431
  type: "button",
@@ -9772,7 +9896,7 @@ var optimizeImage = async (file, desiredBaseName, opts = {}) => {
9772
9896
  // src/ui/components/ui/Tour.tsx
9773
9897
  var import_react64 = require("react");
9774
9898
  var import_driver = require("driver.js");
9775
- var import_jsx_runtime112 = require("react/jsx-runtime");
9899
+ var import_jsx_runtime113 = require("react/jsx-runtime");
9776
9900
  var TOUR_TARGET_ATTRIBUTE = "data-tour-target";
9777
9901
  var DEFAULT_LABELS = {
9778
9902
  previous: "Pr\xE9c\xE9dent",
@@ -9784,7 +9908,7 @@ var DEFAULT_LABELS = {
9784
9908
  var STAGE_PADDING = 6;
9785
9909
  var GHOST_TRANSITION_MS = 200;
9786
9910
  var HIGHLIGHT_DURATION_MS = 400;
9787
- var TourTarget = ({ id, children }) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", __spreadProps(__spreadValues({}, { [TOUR_TARGET_ATTRIBUTE]: id }), { className: "contents", children }));
9911
+ var TourTarget = ({ id, children }) => /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", __spreadProps(__spreadValues({}, { [TOUR_TARGET_ATTRIBUTE]: id }), { className: "contents", children }));
9788
9912
  var isContents = (element) => getComputedStyle(element).display === "contents";
9789
9913
  var measure = (element) => {
9790
9914
  if (!isContents(element)) {