@snksergio/design-system 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- import { g as getContrastTextColor, a as FormField, e as Avatar, i as isFilterEntryActive, f as FilterPopover, T as ToolbarToolButton, h as ButtonGroup, j as ToolbarSimpleFilterDrawer, k as TableToolbar, l as ToolbarActions, m as ToolbarFilterButton, n as ToolbarSearch, o as ToolbarApplied, q as ToolbarTabs, r as columnTypeRegistry, L as ListItem, s as List$1 } from "./chunks/panel-C3puLY_V.mjs";
2
- import { t, A, u, B, v, C, w, x, y, D, z, E, G, H, I, J, K, M, N, d, O, Q, R, S, U, F, b, V, c, W, X, P, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, p, al, am, an, ao, ap } from "./chunks/panel-C3puLY_V.mjs";
1
+ import { g as getContrastTextColor, a as FormField, e as Avatar, i as isFilterEntryActive, f as FilterPopover, T as ToolbarToolButton, h as ButtonGroup, j as ToolbarSimpleFilterDrawer, d as FloatingPanel, k as TableToolbar, l as ToolbarActions, m as ToolbarFilterButton, n as ToolbarSearch, o as ToolbarApplied, q as ToolbarTabs, r as columnTypeRegistry, L as ListItem, s as List$1 } from "./chunks/panel-C3puLY_V.mjs";
2
+ import { t, A, u, B, v, C, w, x, y, D, z, E, G, H, I, J, K, M, N, O, Q, R, S, U, F, b, V, c, W, X, P, Y, Z, _, $, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, p, al, am, an, ao, ap } from "./chunks/panel-C3puLY_V.mjs";
3
3
  import { C as Chip } from "./chunks/useTheme-caPM-I73.mjs";
4
- import { A as A2, B as B2, c as c2, a, b as b2, H as H2, d as d2, e, f, g, h, M as M2, S as S2, i, j, k, l, m, n, o, U as U2, p as p2, q, r, s, t as t2, v as v2, w as w2, x as x2, y as y2, z as z2, u as u2 } from "./chunks/useTheme-caPM-I73.mjs";
4
+ import { A as A2, B as B2, c as c2, a, b as b2, H as H2, d, e, f, g, h, M as M2, S as S2, i, j, k, l, m, n, o, U as U2, p as p2, q, r, s, t as t2, v as v2, w as w2, x as x2, y as y2, z as z2, u as u2 } from "./chunks/useTheme-caPM-I73.mjs";
5
5
  import { af as tv, c as cn, a0 as Popover, a4 as PopoverTrigger, a3 as PopoverContent, ae as Button, D as Dialog, G as DialogTrigger, v as DialogContent, F as DialogTitle, a1 as PopoverAnchor, u as DialogClose, w as DialogDescription, H as DropdownMenu, V as DropdownMenuTrigger, J as DropdownMenuContent, O as DropdownMenuRadioGroup, P as DropdownMenuRadioItem, M as DropdownMenuLabel, Q as DropdownMenuSeparator, L as DropdownMenuItem } from "./chunks/avatar-CZRLkTxt.mjs";
6
- import { d as d3, e as e2, f as f2, g as g2, h as h2, i as i2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, I as I2, ag as ag2, ad as ad2 } from "./chunks/avatar-CZRLkTxt.mjs";
6
+ import { d as d2, e as e2, f as f2, g as g2, h as h2, i as i2, W as W2, X as X2, Y as Y2, Z as Z2, _ as _2, $ as $2, I as I2, ag as ag2, ad as ad2 } from "./chunks/avatar-CZRLkTxt.mjs";
7
7
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
8
8
  import * as React from "react";
9
9
  import { createContext, forwardRef, useContext, useId, useState, Fragment as Fragment$1, isValidElement, useCallback, useMemo, createElement, useRef, useEffect, useLayoutEffect, useImperativeHandle, Children } from "react";
@@ -3863,7 +3863,7 @@ const Icon = forwardRef(
3863
3863
  ...props,
3864
3864
  children: [
3865
3865
  title2 ? /* @__PURE__ */ jsx("title", { children: title2 }) : null,
3866
- paths.map((d4, i4) => /* @__PURE__ */ jsx("path", { d: d4 }, i4))
3866
+ paths.map((d3, i4) => /* @__PURE__ */ jsx("path", { d: d3 }, i4))
3867
3867
  ]
3868
3868
  }
3869
3869
  );
@@ -5264,11 +5264,25 @@ const schedulerRoot = tv({
5264
5264
  });
5265
5265
  const schedulerToolbar = tv({
5266
5266
  base: [
5267
- "flex flex-wrap items-center justify-between gap-gp-xl"
5267
+ "flex flex-col gap-gp-xl",
5268
+ "lg:flex-row lg:flex-wrap lg:items-center lg:justify-between"
5268
5269
  ]
5269
5270
  });
5270
5271
  const schedulerToolbarSide = tv({
5271
- base: "flex min-w-0 flex-wrap items-center gap-gp-md"
5272
+ base: "flex min-w-0 items-center gap-gp-md",
5273
+ variants: {
5274
+ /**
5275
+ * `leading` = título + navegação. Empilhado, ocupa a linha inteira e
5276
+ * separa os dois extremos — é o que joga `‹ Hoje ›` pro fim.
5277
+ * `trailing` = busca + controles. A busca é quem estica (`flex-1` nela),
5278
+ * então aqui basta ocupar a linha.
5279
+ */
5280
+ slot: {
5281
+ leading: "w-full justify-between lg:w-auto lg:flex-wrap lg:justify-start",
5282
+ trailing: "w-full lg:w-auto lg:flex-wrap"
5283
+ }
5284
+ },
5285
+ defaultVariants: { slot: "trailing" }
5272
5286
  });
5273
5287
  const schedulerTitle = tv({
5274
5288
  base: [
@@ -5308,15 +5322,15 @@ const schedulerSearch = tv({
5308
5322
  "border border-border-subtle dark:border-border-input",
5309
5323
  "shadow-sh-sm dark:shadow-sh-none",
5310
5324
  "text-fg-default",
5311
- "min-w-0 flex-1 md:flex-initial",
5312
- "md:w-[200px] md:focus-within:w-[300px]",
5325
+ "min-w-0 flex-1 lg:flex-initial",
5326
+ "lg:w-[200px] lg:focus-within:w-[300px]",
5313
5327
  "transition-[width,border-color,background-color,box-shadow] duration-200",
5314
5328
  "focus-within:border-border-brand focus-within:shadow-sh-ring",
5315
5329
  "[&_svg]:size-icon-sm [&_svg]:shrink-0 [&_svg]:text-fg-muted"
5316
5330
  ],
5317
5331
  variants: {
5318
5332
  /** Mantém expandido mesmo sem foco quando já há termo digitado. */
5319
- expanded: { true: "md:w-[300px]", false: "" }
5333
+ expanded: { true: "lg:w-[300px]", false: "" }
5320
5334
  },
5321
5335
  defaultVariants: { expanded: false }
5322
5336
  });
@@ -5379,13 +5393,32 @@ const schedulerMain = tv({
5379
5393
  });
5380
5394
  const schedulerFilterAside = tv({
5381
5395
  base: [
5382
- "flex w-[280px] min-h-0 shrink-0 flex-col overflow-y-auto",
5396
+ "flex min-h-0 flex-col overflow-y-auto",
5383
5397
  // `scrollbar-thin` é a barra do DS (26 usos no repo contra 2 do
5384
5398
  // `scrollbar-default`) — trilho transparente + thumb tokenizado.
5385
5399
  // ⚠️ É `@utility` do tema GERADO, não do globals.css: existe nos 4 canais.
5386
- "scrollbar-thin",
5387
- "rounded-radius-xl border border-border-default bg-bg-surface"
5388
- ]
5400
+ "scrollbar-thin"
5401
+ ],
5402
+ variants: {
5403
+ /**
5404
+ * `embedded` = o painel vive DENTRO de outro contêiner que já é a
5405
+ * superfície — hoje o `FloatingPanel` do modo drawer (<1024px).
5406
+ *
5407
+ * Como coluna (`false`, o default) ele É o card: largura própria, borda,
5408
+ * radius e fundo. Embutido, os quatro viram defeito — largura fixa deixa
5409
+ * uma faixa morta à direita do drawer, e borda+radius+fundo repetem a
5410
+ * superfície do painel que já o embrulha (card dentro de card, a mesma
5411
+ * classe de erro da L-050).
5412
+ */
5413
+ embedded: {
5414
+ false: [
5415
+ "w-[280px] shrink-0",
5416
+ "rounded-radius-xl border border-border-default bg-bg-surface"
5417
+ ],
5418
+ true: "w-full"
5419
+ }
5420
+ },
5421
+ defaultVariants: { embedded: false }
5389
5422
  });
5390
5423
  const schedulerAsideSection = tv({
5391
5424
  base: [
@@ -5855,7 +5888,6 @@ function SchedulerToolbar({
5855
5888
  appliedCount,
5856
5889
  filterPanelOpen,
5857
5890
  onToggleFilterPanel,
5858
- filterPanelAvailable,
5859
5891
  toolbarActions,
5860
5892
  primaryAction
5861
5893
  }) {
@@ -5867,7 +5899,7 @@ function SchedulerToolbar({
5867
5899
  );
5868
5900
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-gp-xl", children: [
5869
5901
  /* @__PURE__ */ jsxs("div", { className: schedulerToolbar(), children: [
5870
- /* @__PURE__ */ jsxs("div", { className: schedulerToolbarSide(), children: [
5902
+ /* @__PURE__ */ jsxs("div", { className: schedulerToolbarSide({ slot: "leading" }), children: [
5871
5903
  /* @__PURE__ */ jsx("span", { className: schedulerTitle(), children: title2 }),
5872
5904
  /* @__PURE__ */ jsxs("div", { role: "group", "aria-label": "Navegação de período", className: schedulerNavGroup(), children: [
5873
5905
  /* @__PURE__ */ jsx(
@@ -5895,7 +5927,7 @@ function SchedulerToolbar({
5895
5927
  )
5896
5928
  ] })
5897
5929
  ] }),
5898
- /* @__PURE__ */ jsxs("div", { className: schedulerToolbarSide(), children: [
5930
+ /* @__PURE__ */ jsxs("div", { className: schedulerToolbarSide({ slot: "trailing" }), children: [
5899
5931
  searchable ? /* @__PURE__ */ jsxs("label", { className: schedulerSearch({ expanded: search !== "" }), children: [
5900
5932
  /* @__PURE__ */ jsx(Search, { "aria-hidden": "true" }),
5901
5933
  /* @__PURE__ */ jsx(
@@ -5919,10 +5951,10 @@ function SchedulerToolbar({
5919
5951
  color: "secondary",
5920
5952
  size: "sm",
5921
5953
  iconLeft: activeView.icon,
5922
- iconRight: /* @__PURE__ */ jsx(ChevronDown, {}),
5954
+ iconRight: /* @__PURE__ */ jsx(ChevronDown, { className: "hidden lg:block" }),
5923
5955
  "aria-label": `Visualização: ${activeView.label}`,
5924
- className: "shrink-0",
5925
- children: activeView.label
5956
+ className: "shrink-0 max-lg:size-form-xl max-lg:p-0",
5957
+ children: /* @__PURE__ */ jsx("span", { className: "hidden lg:inline", children: activeView.label })
5926
5958
  }
5927
5959
  ) }),
5928
5960
  /* @__PURE__ */ jsx(DropdownMenuContent, { align: "end", className: "min-w-[168px]", children: /* @__PURE__ */ jsx(
@@ -5946,13 +5978,13 @@ function SchedulerToolbar({
5946
5978
  size: "sm",
5947
5979
  iconLeft: /* @__PURE__ */ jsx(ListFilter, {}),
5948
5980
  onClick: onToggleFilterPanel,
5949
- disabled: !filterPanelAvailable,
5950
5981
  "aria-expanded": filterPanelOpen,
5951
5982
  className: cn(
5983
+ "max-lg:size-form-xl max-lg:p-0",
5952
5984
  filterEngaged && "border-border-brand hover:border-border-brand"
5953
5985
  ),
5954
- title: filterPanelAvailable ? void 0 : "O painel de filtros precisa de uma tela mais larga (1024px+)",
5955
- children: "Filtro"
5986
+ "aria-label": "Filtro",
5987
+ children: /* @__PURE__ */ jsx("span", { className: "hidden lg:inline", children: "Filtro" })
5956
5988
  }
5957
5989
  ),
5958
5990
  appliedCount > 0 ? /* @__PURE__ */ jsx("span", { className: schedulerFilterDot(), "aria-hidden": "true" }) : null
@@ -6250,6 +6282,7 @@ function SchedulerFilterPanel({
6250
6282
  onClearAll,
6251
6283
  appliedCount,
6252
6284
  onClose,
6285
+ embedded = false,
6253
6286
  counts,
6254
6287
  date,
6255
6288
  now,
@@ -6265,8 +6298,8 @@ function SchedulerFilterPanel({
6265
6298
  else next.add(id);
6266
6299
  return next;
6267
6300
  });
6268
- return /* @__PURE__ */ jsxs("aside", { className: schedulerFilterAside(), "aria-label": "Filtros do calendário", children: [
6269
- /* @__PURE__ */ jsx("div", { className: schedulerAsideSection({ compact: true, sticky: true }), children: /* @__PURE__ */ jsxs("div", { className: schedulerAsideHead(), children: [
6301
+ return /* @__PURE__ */ jsxs("aside", { className: schedulerFilterAside({ embedded }), "aria-label": "Filtros do calendário", children: [
6302
+ embedded ? null : /* @__PURE__ */ jsx("div", { className: schedulerAsideSection({ compact: true, sticky: true }), children: /* @__PURE__ */ jsxs("div", { className: schedulerAsideHead(), children: [
6270
6303
  /* @__PURE__ */ jsx("span", { className: schedulerAsideTitle(), children: "Filtros" }),
6271
6304
  /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-gp-sm", children: [
6272
6305
  appliedCount > 0 ? /* @__PURE__ */ jsx("button", { type: "button", onClick: onClearAll, className: schedulerClearLink(), children: "Limpar" }) : null,
@@ -6860,7 +6893,7 @@ function SchedulerMonthView({
6860
6893
  /* @__PURE__ */ jsx("div", { ref: gridRef, role: "grid", className: schedulerMonthGrid(), children: weeks.map(
6861
6894
  (week, weekIndex) => week.map((day) => {
6862
6895
  const dayEvents = byDay.get(day.getTime()) ?? [];
6863
- const todos = dayEvents.map((d4) => d4.event);
6896
+ const todos = dayEvents.map((d3) => d3.event);
6864
6897
  const { visible, overflowCount } = maxPerCell !== void 0 ? {
6865
6898
  visible: todos.slice(
6866
6899
  0,
@@ -6908,7 +6941,7 @@ function SchedulerMonthView({
6908
6941
  ] }),
6909
6942
  /* @__PURE__ */ jsxs("div", { className: schedulerCellEvents(), children: [
6910
6943
  visible.map((event) => {
6911
- const meta = dayEvents.find((d4) => d4.event.id === event.id);
6944
+ const meta = dayEvents.find((d3) => d3.event.id === event.id);
6912
6945
  return /* @__PURE__ */ jsx(
6913
6946
  DraggableEvent,
6914
6947
  {
@@ -6937,16 +6970,16 @@ function SchedulerMonthView({
6937
6970
  ] }) }),
6938
6971
  /* @__PURE__ */ jsx(PopoverContent, { align: "start", className: "p-0", children: /* @__PURE__ */ jsxs("div", { className: schedulerOverflowPanel(), children: [
6939
6972
  /* @__PURE__ */ jsx("span", { className: schedulerOverflowPanelTitle(), children: format(day, "EEEE, d 'de' MMMM", { locale }) }),
6940
- dayEvents.map((d4) => /* @__PURE__ */ jsx(
6973
+ dayEvents.map((d3) => /* @__PURE__ */ jsx(
6941
6974
  SchedulerEventItem,
6942
6975
  {
6943
- event: d4.event,
6976
+ event: d3.event,
6944
6977
  view: "month",
6945
6978
  variant: "row",
6946
- timeLabel: timeLabelOf(d4.event),
6947
- onClick: (evt) => onEventClick?.(d4.event, evt)
6979
+ timeLabel: timeLabelOf(d3.event),
6980
+ onClick: (evt) => onEventClick?.(d3.event, evt)
6948
6981
  },
6949
- `overflow-${d4.event.id}`
6982
+ `overflow-${d3.event.id}`
6950
6983
  ))
6951
6984
  ] }) })
6952
6985
  ] }) : null
@@ -7013,10 +7046,10 @@ function SchedulerTimeGrid({
7013
7046
  el.scrollTop = Math.max(0, target);
7014
7047
  }, [scrollToHour, rangeStart]);
7015
7048
  const fmtHour = (hour) => {
7016
- const d4 = new Date(2e3, 0, 1, hour % 24, 0);
7017
- return format(d4, hourFormat === "12h" ? "h a" : "HH:mm", { locale });
7049
+ const d3 = new Date(2e3, 0, 1, hour % 24, 0);
7050
+ return format(d3, hourFormat === "12h" ? "h a" : "HH:mm", { locale });
7018
7051
  };
7019
- const fmtTime = (d4) => format(d4, hourFormat === "12h" ? "h:mm a" : "HH:mm", { locale });
7052
+ const fmtTime = (d3) => format(d3, hourFormat === "12h" ? "h:mm a" : "HH:mm", { locale });
7020
7053
  const allDayByDay = useMemo(() => {
7021
7054
  const map = /* @__PURE__ */ new Map();
7022
7055
  for (const day of days) map.set(day.getTime(), []);
@@ -7080,14 +7113,14 @@ function SchedulerTimeGrid({
7080
7113
  }, [events, days, dayRange, rangeStart, rangeEnd, snapMinutes, hourFormat, locale]);
7081
7114
  const nowOffset = useMemo(() => {
7082
7115
  if (!nowIndicator) return null;
7083
- const visivel = days.some((d4) => isSameDay(d4, now));
7116
+ const visivel = days.some((d3) => isSameDay(d3, now));
7084
7117
  if (!visivel) return null;
7085
7118
  const offset = minutesToOffset(now, dayRange, HOUR_HEIGHT_PX);
7086
7119
  const total = hours.length * HOUR_HEIGHT_PX;
7087
7120
  if (offset < 0 || offset > total) return null;
7088
7121
  return offset;
7089
7122
  }, [nowIndicator, days, now, dayRange, hours.length]);
7090
- const isWeekend = (d4) => d4.getDay() === 0 || d4.getDay() === 6;
7123
+ const isWeekend = (d3) => d3.getDay() === 0 || d3.getDay() === 6;
7091
7124
  return /* @__PURE__ */ jsxs("div", { className: schedulerTimeFrame(), children: [
7092
7125
  /* @__PURE__ */ jsxs("div", { className: schedulerTimeHead(), children: [
7093
7126
  /* @__PURE__ */ jsx("div", { className: schedulerTimeGutter() }),
@@ -7240,7 +7273,7 @@ function SchedulerListView({
7240
7273
  })
7241
7274
  }));
7242
7275
  }, [events, date]);
7243
- const fmtTime = (d4) => format(d4, hourFormat === "12h" ? "h:mm a" : "HH:mm", { locale });
7276
+ const fmtTime = (d3) => format(d3, hourFormat === "12h" ? "h:mm a" : "HH:mm", { locale });
7244
7277
  const rotuloHorario = (ev) => {
7245
7278
  if (ev.allDay) return "Dia inteiro";
7246
7279
  if (ev.start.getTime() === ev.end.getTime()) return fmtTime(ev.start);
@@ -7596,9 +7629,11 @@ const Scheduler = forwardRef(
7596
7629
  return;
7597
7630
  }, [draggable, resizable, onEventMove, onEventResize]);
7598
7631
  const eventoArrastado = dnd.dragAtivo?.kind === "move" ? filter.filteredEvents.find((e3) => e3.id === dnd.dragAtivo?.eventId) ?? null : null;
7599
- const filterPanelAvailable = useMediaQuery("(min-width: 1024px)");
7632
+ const wideLayout = useMediaQuery("(min-width: 1024px)");
7600
7633
  const [filterPanelOpen, setFilterPanelOpen] = useState(defaultFilterPanelOpen);
7601
- const showFilterPanel = filterPanelOpen && filterPanelAvailable && (filterFields?.length ?? 0) > 0;
7634
+ const hasFilterFields = (filterFields?.length ?? 0) > 0;
7635
+ const showFilterPanel = filterPanelOpen && wideLayout && hasFilterFields;
7636
+ const showFilterDrawer = filterPanelOpen && !wideLayout && hasFilterFields;
7602
7637
  useImperativeHandle(
7603
7638
  ref,
7604
7639
  () => ({
@@ -7665,9 +7700,8 @@ const Scheduler = forwardRef(
7665
7700
  onClearField: filter.clearField,
7666
7701
  onClearAll: filter.clearAll,
7667
7702
  appliedCount: filter.appliedCount,
7668
- filterPanelOpen: showFilterPanel,
7703
+ filterPanelOpen: showFilterPanel || showFilterDrawer,
7669
7704
  onToggleFilterPanel: () => setFilterPanelOpen((o2) => !o2),
7670
- filterPanelAvailable,
7671
7705
  toolbarActions,
7672
7706
  primaryAction
7673
7707
  }
@@ -7744,6 +7778,52 @@ const Scheduler = forwardRef(
7744
7778
  }
7745
7779
  ) : null
7746
7780
  ] }),
7781
+ showFilterDrawer && filterFields ? /* @__PURE__ */ jsx(
7782
+ FloatingPanel,
7783
+ {
7784
+ open: true,
7785
+ onOpenChange: (aberto) => setFilterPanelOpen(aberto),
7786
+ side: "right",
7787
+ size: "sm",
7788
+ bodyPadded: false,
7789
+ title: "Filtros",
7790
+ titleIcon: ListFilter,
7791
+ description: filter.appliedCount === 1 ? "1 filtro ativo" : `${filter.appliedCount} filtros ativos`,
7792
+ footer: /* @__PURE__ */ jsx(
7793
+ Button,
7794
+ {
7795
+ variant: "ghost",
7796
+ color: "secondary",
7797
+ size: "sm",
7798
+ onClick: filter.clearAll,
7799
+ disabled: filter.appliedCount === 0,
7800
+ children: "Limpar tudo"
7801
+ }
7802
+ ),
7803
+ children: /* @__PURE__ */ jsx(
7804
+ SchedulerFilterPanel,
7805
+ {
7806
+ embedded: true,
7807
+ filterFields,
7808
+ filterModel: filter.filterModel,
7809
+ onToggleValue: filter.toggleValue,
7810
+ onClearAll: filter.clearAll,
7811
+ appliedCount: filter.appliedCount,
7812
+ onClose: () => setFilterPanelOpen(false),
7813
+ counts: filter.optionCounts,
7814
+ date: state.date,
7815
+ now,
7816
+ locale,
7817
+ weekStartsOn,
7818
+ events: filter.filteredEvents,
7819
+ onDateSelect: (d3) => {
7820
+ state.goToDate(d3);
7821
+ setFilterPanelOpen(false);
7822
+ }
7823
+ }
7824
+ )
7825
+ }
7826
+ ) : null,
7747
7827
  /* @__PURE__ */ jsx(DragOverlay, { dropAnimation: null, children: eventoArrastado ? /* @__PURE__ */ jsx(
7748
7828
  SchedulerEventItem,
7749
7829
  {
@@ -8680,9 +8760,9 @@ function cartesianAddInPlace(a11, b4) {
8680
8760
  function cartesianScale(vector, k2) {
8681
8761
  return [vector[0] * k2, vector[1] * k2, vector[2] * k2];
8682
8762
  }
8683
- function cartesianNormalizeInPlace(d4) {
8684
- var l2 = sqrt(d4[0] * d4[0] + d4[1] * d4[1] + d4[2] * d4[2]);
8685
- d4[0] /= l2, d4[1] /= l2, d4[2] /= l2;
8763
+ function cartesianNormalizeInPlace(d3) {
8764
+ var l2 = sqrt(d3[0] * d3[0] + d3[1] * d3[1] + d3[2] * d3[2]);
8765
+ d3[0] /= l2, d3[1] /= l2, d3[2] /= l2;
8686
8766
  }
8687
8767
  function compose(a11, b4) {
8688
8768
  function compose2(x3, y3) {
@@ -9581,12 +9661,12 @@ function append(strings) {
9581
9661
  }
9582
9662
  }
9583
9663
  function appendRound(digits) {
9584
- const d4 = Math.floor(digits);
9585
- if (!(d4 >= 0)) throw new RangeError(`invalid digits: ${digits}`);
9586
- if (d4 > 15) return append;
9587
- if (d4 !== cacheDigits) {
9588
- const k2 = 10 ** d4;
9589
- cacheDigits = d4;
9664
+ const d3 = Math.floor(digits);
9665
+ if (!(d3 >= 0)) throw new RangeError(`invalid digits: ${digits}`);
9666
+ if (d3 > 15) return append;
9667
+ if (d3 !== cacheDigits) {
9668
+ const k2 = 10 ** d3;
9669
+ cacheDigits = d3;
9590
9670
  cacheAppend = function append2(strings) {
9591
9671
  let i4 = 1;
9592
9672
  this._ += strings[0];
@@ -9642,9 +9722,9 @@ function geoPath(projection2, context) {
9642
9722
  if (!arguments.length) return digits;
9643
9723
  if (_3 == null) digits = null;
9644
9724
  else {
9645
- const d4 = Math.floor(_3);
9646
- if (!(d4 >= 0)) throw new RangeError(`invalid digits: ${_3}`);
9647
- digits = d4;
9725
+ const d3 = Math.floor(_3);
9726
+ if (!(d3 >= 0)) throw new RangeError(`invalid digits: ${_3}`);
9727
+ digits = d3;
9648
9728
  }
9649
9729
  if (context === null) contextStream = new PathString(digits);
9650
9730
  return path;
@@ -10181,18 +10261,18 @@ const ChoroplethMap = forwardRef(
10181
10261
  });
10182
10262
  },
10183
10263
  children: [
10184
- geometry.map(({ feature: feature2, d: d4 }, index) => {
10264
+ geometry.map(({ feature: feature2, d: d3 }, index) => {
10185
10265
  const id = getId(feature2);
10186
10266
  const value = values[id];
10187
10267
  return /* @__PURE__ */ jsx(
10188
10268
  "path",
10189
10269
  {
10190
- d: d4,
10270
+ d: d3,
10191
10271
  fill: fillFor(value),
10192
10272
  strokeWidth,
10193
10273
  className: styles2.path(),
10194
10274
  style: onFeatureClick ? { cursor: "pointer" } : void 0,
10195
- onMouseEnter: () => setHover({ id, name: getName(feature2), value, feature: feature2, d: d4 }),
10275
+ onMouseEnter: () => setHover({ id, name: getName(feature2), value, feature: feature2, d: d3 }),
10196
10276
  onClick: onFeatureClick ? () => onFeatureClick({
10197
10277
  id,
10198
10278
  name: getName(feature2),
@@ -11423,7 +11503,7 @@ export {
11423
11503
  BRANDS,
11424
11504
  B3 as Badge,
11425
11505
  B2 as Breadcrumb,
11426
- d3 as BreadcrumbEllipsis,
11506
+ d2 as BreadcrumbEllipsis,
11427
11507
  e2 as BreadcrumbItem,
11428
11508
  f2 as BreadcrumbLink,
11429
11509
  g2 as BreadcrumbList,
@@ -11471,7 +11551,7 @@ export {
11471
11551
  FileUploadField,
11472
11552
  N as FilterPanel,
11473
11553
  FilterPopover,
11474
- d as FloatingPanel,
11554
+ FloatingPanel,
11475
11555
  O as FloatingPanelField,
11476
11556
  Q as FloatingPanelSection,
11477
11557
  R as FooterTable,
@@ -11483,7 +11563,7 @@ export {
11483
11563
  V as FormFieldSwitch,
11484
11564
  c as FormFieldTextarea,
11485
11565
  H2 as Header,
11486
- d2 as HeaderBreadcrumb,
11566
+ d as HeaderBreadcrumb,
11487
11567
  e as HeaderMessages,
11488
11568
  f as HeaderNotifications,
11489
11569
  g as HeaderSearch,