@tangle-network/sandbox-ui 0.134.11 → 0.135.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/globals.css CHANGED
@@ -283,6 +283,9 @@
283
283
  white-space: nowrap;
284
284
  border-width: 0;
285
285
  }
286
+ .\!fixed {
287
+ position: fixed !important;
288
+ }
286
289
  .absolute {
287
290
  position: absolute;
288
291
  }
@@ -298,6 +301,9 @@
298
301
  .sticky {
299
302
  position: sticky;
300
303
  }
304
+ .\!inset-3 {
305
+ inset: calc(var(--spacing) * 3) !important;
306
+ }
301
307
  .inset-0 {
302
308
  inset: 0px;
303
309
  }
@@ -433,6 +439,9 @@
433
439
  .\!z-10 {
434
440
  z-index: 10 !important;
435
441
  }
442
+ .\!z-40 {
443
+ z-index: 40 !important;
444
+ }
436
445
  .z-0 {
437
446
  z-index: 0;
438
447
  }
@@ -712,6 +721,9 @@
712
721
  -webkit-box-orient: vertical;
713
722
  -webkit-line-clamp: 6;
714
723
  }
724
+ .\!hidden {
725
+ display: none !important;
726
+ }
715
727
  .block {
716
728
  display: block;
717
729
  }
@@ -826,6 +838,9 @@
826
838
  .\!h-2\.5 {
827
839
  height: calc(var(--spacing) * 2.5) !important;
828
840
  }
841
+ .\!h-auto {
842
+ height: auto !important;
843
+ }
829
844
  .h-0\.5 {
830
845
  height: calc(var(--spacing) * 0.5);
831
846
  }
@@ -940,6 +955,9 @@
940
955
  .h-\[34rem\] {
941
956
  height: 34rem;
942
957
  }
958
+ .h-\[36rem\] {
959
+ height: 36rem;
960
+ }
943
961
  .h-\[72\%\] {
944
962
  height: 72%;
945
963
  }
@@ -1186,6 +1204,9 @@
1186
1204
  .\!w-2\.5 {
1187
1205
  width: calc(var(--spacing) * 2.5) !important;
1188
1206
  }
1207
+ .\!w-auto {
1208
+ width: auto !important;
1209
+ }
1189
1210
  .w-0 {
1190
1211
  width: 0px;
1191
1212
  }
@@ -1348,6 +1369,9 @@
1348
1369
  .w-\[268px\] {
1349
1370
  width: 268px;
1350
1371
  }
1372
+ .w-\[358px\] {
1373
+ width: 358px;
1374
+ }
1351
1375
  .w-\[360px\] {
1352
1376
  width: 360px;
1353
1377
  }
@@ -1381,6 +1405,9 @@
1381
1405
  .w-\[1000px\] {
1382
1406
  width: 1000px;
1383
1407
  }
1408
+ .w-\[1100px\] {
1409
+ width: 1100px;
1410
+ }
1384
1411
  .w-\[calc\(100vw-32px\)\] {
1385
1412
  width: calc(100vw - 32px);
1386
1413
  }
@@ -2976,6 +3003,12 @@
2976
3003
  background-color: color-mix(in oklab, hsl(var(--primary)) 20%, transparent);
2977
3004
  }
2978
3005
  }
3006
+ .bg-primary\/\[0\.04\] {
3007
+ background-color: hsl(var(--primary));
3008
+ @supports (color: color-mix(in lab, red, red)) {
3009
+ background-color: color-mix(in oklab, hsl(var(--primary)) 4%, transparent);
3010
+ }
3011
+ }
2979
3012
  .bg-red-500 {
2980
3013
  background-color: var(--color-red-500);
2981
3014
  }
@@ -3963,6 +3996,12 @@
3963
3996
  color: color-mix(in oklab, hsl(var(--primary)) 70%, transparent);
3964
3997
  }
3965
3998
  }
3999
+ .text-primary\/80 {
4000
+ color: hsl(var(--primary));
4001
+ @supports (color: color-mix(in lab, red, red)) {
4002
+ color: color-mix(in oklab, hsl(var(--primary)) 80%, transparent);
4003
+ }
4004
+ }
3966
4005
  .text-red-400 {
3967
4006
  color: var(--color-red-400);
3968
4007
  }
@@ -4065,6 +4104,10 @@
4065
4104
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
4066
4105
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4067
4106
  }
4107
+ .shadow-2xl {
4108
+ --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
4109
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4110
+ }
4068
4111
  .shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.2\)\] {
4069
4112
  --tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2));
4070
4113
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -5572,6 +5615,9 @@
5572
5615
  -webkit-box-orient: vertical;
5573
5616
  -webkit-line-clamp: 3;
5574
5617
  }
5618
+ .sm\:\!block {
5619
+ display: block !important;
5620
+ }
5575
5621
  .sm\:flex {
5576
5622
  display: flex;
5577
5623
  }
package/dist/hooks.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
1
+ import { t as usePtySession } from "./use-pty-session-B5Q_i9RI.js";
2
2
  import { i as useSessionStream, n as SESSION_STREAM_RECONNECT_DELAY_MS, r as SessionStreamError, t as useSidecarAuth } from "./use-sidecar-auth-DkdcufOz.js";
3
3
  import * as React$1 from "react";
4
4
  import { RealtimeSessionRegistry, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useDropdownMenu, useLiveTime, useRealtimeSession, useRunCollapseState, useRunGroups, useSSEStream, useSdkSession, useToolCallStream } from "@tangle-network/ui/hooks";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-QHNLHsoL.js";
1
+ import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-BzXAYUId.js";
2
2
  import { $ as DialogClose, $n as TooltipProvider, $t as SelectScrollUpButton, A as Chip, An as TableCell, At as InlineCode, B as ContextMenuLabel, Bt as PopoverClose, C as Card, Cn as StatCard, Ct as DropdownMenuTrigger, D as CardHeader, Dn as Table, Dt as Heading, E as CardFooter, En as TONE_CLASSES, Et as FilterField, F as ContextMenu, Fn as Tabs, Ft as PageHeader, G as ContextMenuShortcut, Gn as Textarea, Gt as RadioGroupItem, H as ContextMenuRadioGroup, Ht as PopoverTrigger, I as ContextMenuCheckboxItem, In as TabsContent, It as PageShell, J as ContextMenuSubTrigger, Jn as ToastContainer, Jt as SelectContent, K as ContextMenuSub, Kn as ThemeToggle, Kt as SegmentedControl, L as ContextMenuContent, Ln as TabsList, Lt as Pagination, M as Collapsible, Mn as TableHead, Mt as Label, N as CollapsibleContent, Nn as TableHeader, Nt as Metric, O as CardTitle, On as TableBody, Ot as HelpText, P as CollapsibleTrigger, Pn as TableRow, Pt as MetricStrip, Q as Dialog, Qn as TooltipContent, Qt as SelectScrollDownButton, R as ContextMenuGroup, Rn as TabsTrigger, Rt as Popover, S as Calendar, Sn as Slider, St as DropdownMenuSubTrigger, T as CardDescription, Tn as Switch, Tt as Field, U as ContextMenuRadioItem, Ut as Progress, V as ContextMenuPortal, Vn as TerminalDisplay, Vt as PopoverContent, W as ContextMenuSeparator, Wn as TextShimmer, Wt as RadioGroup, X as CopyButton, Xn as Toolbar, Xt as SelectItem, Y as ContextMenuTrigger, Yn as ToastProvider, Yt as SelectGroup, Z as DatePicker, Zn as Tooltip, Zt as SelectLabel, _ as AvatarFallback, _n as SheetTrigger, _t as DropdownMenuRadioItem, a as AlertDialogCancel, an as SettingsListItem, ar as buttonVariants, at as DialogPortal, b as Button, bn as SkeletonCard, bt as DropdownMenuSub, c as AlertDialogFooter, cn as Sheet, cr as initialsOf, ct as DropZone, d as AlertDialogPortal, dn as SheetDescription, dr as toneFor, dt as DropdownMenuContent, en as SelectSeparator, er as TooltipTrigger, et as DialogContent, f as AlertDialogTitle, fn as SheetFooter, fr as useTheme, ft as DropdownMenuGroup, g as Avatar, gn as SheetTitle, gr as TangleKnot, gt as DropdownMenuRadioGroup, hn as SheetPortal, hr as Logo, ht as DropdownMenuPortal, i as AlertDialogAction, in as SettingsList, ir as badgeVariants, it as DialogOverlay, j as CodeBlock, jn as TableFooter, jt as Input, k as Checkbox, kn as TableCaption, kt as IconTile, l as AlertDialogHeader, ln as SheetClose, lr as localToday, lt as DropdownMenu, m as AlertTitle, mn as SheetOverlay, mr as SectionTitle, mt as DropdownMenuLabel, n as AlertDescription, nn as SelectValue, nr as Wizard, nt as DialogFooter, o as AlertDialogContent, on as SettingsRow, or as fieldMessageId, ot as DialogTitle, p as AlertDialogTrigger, pn as SheetHeader, pr as useToast, pt as DropdownMenuItem, q as ContextMenuSubContent, qn as TimeSelect, qt as Select, r as AlertDialog, rn as Separator, rr as WizardStep, rt as DialogHeader, s as AlertDialogDescription, sn as SettingsSection, sr as formatCalendarDate, st as DialogTrigger, t as Alert, tn as SelectTrigger, tr as UploadProgress, tt as DialogDescription, u as AlertDialogOverlay, un as SheetContent, ur as parseCalendarDate, ut as DropdownMenuCheckboxItem, v as AvatarImage, vn as SidebarDropZone, vt as DropdownMenuSeparator, w as CardContent, wn as StatusPill, wt as EmptyState, x as CATEGORY_TONES, xn as SkeletonTable, xt as DropdownMenuSubContent, y as Badge, yn as Skeleton, yt as DropdownMenuShortcut, z as ContextMenuItem, zn as Tag, zt as PopoverAnchor } from "./primitives-CxpjGadw.js";
3
3
  import { i as WorkspacePaneHeader, n as SHELL_INSET_GUTTER, r as ShellHeader, t as SHELL_HEADER_HEIGHT } from "./shell-header-CTh3oV_e.js";
4
4
  import { C as WorkspaceSurfaceTitle, S as WorkspaceSurfaceFrame, _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, x as WorkspaceSurface, y as DirectoryPane } from "./workspace-BJgSt2WW.js";
@@ -6,7 +6,7 @@ import { i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as
6
6
  import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-C1ALa6lw.js";
7
7
  import { i as modelBrandFor, n as ProviderMark, r as canonicalModelId, t as ModelBrandStack } from "./model-brand-BSr9on8C.js";
8
8
  import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
9
- import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
9
+ import { t as usePtySession } from "./use-pty-session-B5Q_i9RI.js";
10
10
  import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
11
11
  import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CYb9hevq.js";
12
12
  import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
@@ -767,10 +767,56 @@ function withConfig(base, cfg) {
767
767
  * neither — dropping the envelope would leave the two indistinguishable in the
768
768
  * detail view, which is the one place that promises every field.
769
769
  */
770
+ /**
771
+ * Title a step by the id its author gave it, when that names it better than
772
+ * its kind does. A graph of a real workflow is mostly the same few kinds — a
773
+ * factory is nine "GitHub" steps and a handful of decisions whose own titles
774
+ * are run-time templates — so titling by kind makes every node look like its
775
+ * neighbour. The author's id ("open-pr", "ship-gate", "monitor-note") is the
776
+ * one name that says what each is FOR.
777
+ *
778
+ * An agent keeps its profile's role ("Factory reviewer"), which already says
779
+ * that; it takes the id only when it has no readable role. A decision keeps a
780
+ * title its author wrote as plain text, and takes the id when that title is a
781
+ * template the graph would show with its `${...}` unresolved. Every other
782
+ * kind takes the id, and what the kind does moves to the subtitle, where the
783
+ * provider's logo still marks it.
784
+ */
785
+ /** An id the editor minted rather than an author chose: the kind's own slug
786
+ * (`agent-run`, `integration-invoke-2`) or a positional `step-N`. Titling by
787
+ * one would only restate the kind, worse. */
788
+ function isMachineStepId(id, kind) {
789
+ if (/^step-\d+$/.test(id)) return true;
790
+ if (!kind) return false;
791
+ const slug = kind.toLowerCase().replace(/[^a-z0-9]+/g, "-");
792
+ return id === slug || new RegExp(`^${slug}-\\d+$`).test(id);
793
+ }
794
+ function titledByStep(base, rec) {
795
+ const id = str(rec.id);
796
+ if (!id || isMachineStepId(id, base.kind)) return base;
797
+ const role = humanizeIdentifier(id);
798
+ if (base.kind === "agent.run") return base.title === "AI Agent" ? {
799
+ ...base,
800
+ title: role
801
+ } : base;
802
+ if (base.kind === "decision") {
803
+ const authored = str(asRecord(rec.decision).title);
804
+ return authored && !authored.includes("${") ? base : {
805
+ ...base,
806
+ title: role
807
+ };
808
+ }
809
+ const what = [base.title, base.subtitle].filter(Boolean).join(" · ");
810
+ return {
811
+ ...base,
812
+ title: role,
813
+ ...what ? { subtitle: what } : {}
814
+ };
815
+ }
770
816
  function describeAction(action) {
771
817
  const rec = asRecord(action);
772
818
  const kind = actionKind(rec);
773
- const base = describeActionBase(action);
819
+ const base = titledByStep(describeActionBase(action), rec);
774
820
  const config = toJsonSafe(asRecord(kind ? rec[kind] : {}));
775
821
  for (const key of CONTROL_FLOW_KEYS) if (rec[key] !== void 0) config[key] = toJsonSafe(rec[key]);
776
822
  return Object.keys(config).length > 0 ? {
@@ -1228,7 +1274,8 @@ function buildWorkflowGraph(yaml, options) {
1228
1274
  };
1229
1275
  addEdge(spec.from, spec.to, "spine", spec.whenLabel);
1230
1276
  }
1231
- const rootward = new Set(edges.map((e) => e.target));
1277
+ const loopBack = classifyBackEdges(logical.map((n) => n.id), edges);
1278
+ const rootward = new Set(edges.filter((e) => !loopBack.has(e.id)).map((e) => e.target));
1232
1279
  for (const n of logical) {
1233
1280
  if (triggerNodeIndex(n.id) !== null) continue;
1234
1281
  if (rootward.has(n.id)) continue;
@@ -1252,7 +1299,11 @@ function buildWorkflowGraph(yaml, options) {
1252
1299
  return {
1253
1300
  nodes: (options?.wrap && direction === "LR" && !labelled ? layoutSerpentine(logical, edges, rankSep, geo.crossSep) : null) ?? layoutLayers(logical, direction, rankSep, geo.crossSep),
1254
1301
  edges,
1255
- error: null
1302
+ error: null,
1303
+ spacing: {
1304
+ rank: rankSep,
1305
+ cross: geo.crossSep
1306
+ }
1256
1307
  };
1257
1308
  }
1258
1309
  //#endregion
@@ -1328,7 +1379,8 @@ const STATUS_COLOR = {
1328
1379
  running: STATUS_RUNNING,
1329
1380
  waiting: STATUS_WAITING,
1330
1381
  succeeded: STATUS_DONE,
1331
- failed: STATUS_FAILED
1382
+ failed: STATUS_FAILED,
1383
+ skipped: STATUS_QUEUED
1332
1384
  };
1333
1385
  /** An edge reads by the status of the node it points AT — with the 2026-10-09
1334
1386
  * fix: SETTLED edges go quiet. A succeeded run used to paint every edge green
@@ -1346,7 +1398,8 @@ const STATUS_LABEL = {
1346
1398
  running: "Running",
1347
1399
  waiting: "Waiting on you",
1348
1400
  succeeded: "Done",
1349
- failed: "Failed"
1401
+ failed: "Failed",
1402
+ skipped: "Not taken"
1350
1403
  };
1351
1404
  /** @deprecated `StatusPill` now renders ui's StatusPill from `STATUS_TONE`;
1352
1405
  * kept for consumers that styled their own pill from it.
@@ -1378,6 +1431,11 @@ const STATUS_PILL = {
1378
1431
  background: "var(--surface-danger-bg)",
1379
1432
  color: "var(--surface-danger-text)",
1380
1433
  borderColor: "var(--surface-danger-border)"
1434
+ },
1435
+ skipped: {
1436
+ background: "transparent",
1437
+ color: "hsl(var(--muted-foreground))",
1438
+ borderColor: "color-mix(in srgb, hsl(var(--muted-foreground)) 28%, transparent)"
1381
1439
  }
1382
1440
  };
1383
1441
  /** The card's border + ring once a node has live run state. The emphasis
@@ -1403,6 +1461,11 @@ function statusBorder(status) {
1403
1461
  };
1404
1462
  }
1405
1463
  case "queued": return { borderColor: "hsl(var(--border))" };
1464
+ case "skipped": return {
1465
+ borderColor: "hsl(var(--muted-foreground) / 0.45)",
1466
+ borderStyle: "dashed",
1467
+ opacity: .5
1468
+ };
1406
1469
  case "succeeded": return {
1407
1470
  borderColor: RESTING_BORDER,
1408
1471
  boxShadow: RESTING_SHADOW
@@ -1560,7 +1623,8 @@ const STATUS_TONE = {
1560
1623
  running: "running",
1561
1624
  waiting: "warning",
1562
1625
  succeeded: "neutral",
1563
- failed: "danger"
1626
+ failed: "danger",
1627
+ skipped: "neutral"
1564
1628
  };
1565
1629
  /** The status pill in a card's header — the one place the run state is spelled
1566
1630
  * out in words. ui's `StatusPill`, so a node's state carries the same glyph,
@@ -1642,6 +1706,7 @@ function emptySlotLabel(status) {
1642
1706
  case "queued": return "Not run yet";
1643
1707
  case "succeeded": return "No output";
1644
1708
  case "failed": return "No error reported";
1709
+ case "skipped": return "Not taken this run";
1645
1710
  default: return;
1646
1711
  }
1647
1712
  }
package/dist/styles.css CHANGED
@@ -283,6 +283,9 @@
283
283
  white-space: nowrap;
284
284
  border-width: 0;
285
285
  }
286
+ .\!fixed {
287
+ position: fixed !important;
288
+ }
286
289
  .absolute {
287
290
  position: absolute;
288
291
  }
@@ -298,6 +301,9 @@
298
301
  .sticky {
299
302
  position: sticky;
300
303
  }
304
+ .\!inset-3 {
305
+ inset: calc(var(--spacing) * 3) !important;
306
+ }
301
307
  .inset-0 {
302
308
  inset: 0px;
303
309
  }
@@ -433,6 +439,9 @@
433
439
  .\!z-10 {
434
440
  z-index: 10 !important;
435
441
  }
442
+ .\!z-40 {
443
+ z-index: 40 !important;
444
+ }
436
445
  .z-0 {
437
446
  z-index: 0;
438
447
  }
@@ -712,6 +721,9 @@
712
721
  -webkit-box-orient: vertical;
713
722
  -webkit-line-clamp: 6;
714
723
  }
724
+ .\!hidden {
725
+ display: none !important;
726
+ }
715
727
  .block {
716
728
  display: block;
717
729
  }
@@ -826,6 +838,9 @@
826
838
  .\!h-2\.5 {
827
839
  height: calc(var(--spacing) * 2.5) !important;
828
840
  }
841
+ .\!h-auto {
842
+ height: auto !important;
843
+ }
829
844
  .h-0\.5 {
830
845
  height: calc(var(--spacing) * 0.5);
831
846
  }
@@ -940,6 +955,9 @@
940
955
  .h-\[34rem\] {
941
956
  height: 34rem;
942
957
  }
958
+ .h-\[36rem\] {
959
+ height: 36rem;
960
+ }
943
961
  .h-\[72\%\] {
944
962
  height: 72%;
945
963
  }
@@ -1186,6 +1204,9 @@
1186
1204
  .\!w-2\.5 {
1187
1205
  width: calc(var(--spacing) * 2.5) !important;
1188
1206
  }
1207
+ .\!w-auto {
1208
+ width: auto !important;
1209
+ }
1189
1210
  .w-0 {
1190
1211
  width: 0px;
1191
1212
  }
@@ -1348,6 +1369,9 @@
1348
1369
  .w-\[268px\] {
1349
1370
  width: 268px;
1350
1371
  }
1372
+ .w-\[358px\] {
1373
+ width: 358px;
1374
+ }
1351
1375
  .w-\[360px\] {
1352
1376
  width: 360px;
1353
1377
  }
@@ -1381,6 +1405,9 @@
1381
1405
  .w-\[1000px\] {
1382
1406
  width: 1000px;
1383
1407
  }
1408
+ .w-\[1100px\] {
1409
+ width: 1100px;
1410
+ }
1384
1411
  .w-\[calc\(100vw-32px\)\] {
1385
1412
  width: calc(100vw - 32px);
1386
1413
  }
@@ -2976,6 +3003,12 @@
2976
3003
  background-color: color-mix(in oklab, hsl(var(--primary)) 20%, transparent);
2977
3004
  }
2978
3005
  }
3006
+ .bg-primary\/\[0\.04\] {
3007
+ background-color: hsl(var(--primary));
3008
+ @supports (color: color-mix(in lab, red, red)) {
3009
+ background-color: color-mix(in oklab, hsl(var(--primary)) 4%, transparent);
3010
+ }
3011
+ }
2979
3012
  .bg-red-500 {
2980
3013
  background-color: var(--color-red-500);
2981
3014
  }
@@ -3963,6 +3996,12 @@
3963
3996
  color: color-mix(in oklab, hsl(var(--primary)) 70%, transparent);
3964
3997
  }
3965
3998
  }
3999
+ .text-primary\/80 {
4000
+ color: hsl(var(--primary));
4001
+ @supports (color: color-mix(in lab, red, red)) {
4002
+ color: color-mix(in oklab, hsl(var(--primary)) 80%, transparent);
4003
+ }
4004
+ }
3966
4005
  .text-red-400 {
3967
4006
  color: var(--color-red-400);
3968
4007
  }
@@ -4065,6 +4104,10 @@
4065
4104
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
4066
4105
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4067
4106
  }
4107
+ .shadow-2xl {
4108
+ --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
4109
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4110
+ }
4068
4111
  .shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.2\)\] {
4069
4112
  --tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2));
4070
4113
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -5572,6 +5615,9 @@
5572
5615
  -webkit-box-orient: vertical;
5573
5616
  -webkit-line-clamp: 3;
5574
5617
  }
5618
+ .sm\:\!block {
5619
+ display: block !important;
5620
+ }
5575
5621
  .sm\:flex {
5576
5622
  display: flex;
5577
5623
  }