Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/nitro-forward-externals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@workflow/nitro": minor
---

Forward string entries from Nitro's `externals.external` config to the workflow builder's esbuild `external` option.
4 changes: 2 additions & 2 deletions docs/app/[lang]/(home)/components/intro/non-workflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ const Loading = (
<Loader2Icon className="size-[13px] text-muted-foreground animate-spin" />
);
const Success = (
<div key="success">
<div>
<CheckIcon className="size-[14px] text-emerald-500" />
</div>
);
const ErrorIndicator = (
<div key="error">
<div>
<XIcon className="size-[14px] text-rose-500" />
</div>
);
Expand Down
9 changes: 3 additions & 6 deletions docs/app/[lang]/(home)/components/intro/workflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,15 @@ type WorkflowLog = {
};

const Loading = (
<Loader2Icon
key="loading"
className="size-[13px] text-muted-foreground animate-spin"
/>
<Loader2Icon className="size-[13px] text-muted-foreground animate-spin" />
);
const Success = (
<div key="success">
<div>
<CheckIcon className="size-[14px] text-emerald-500" />
</div>
);
const ErrorIndicator = (
<div key="error">
<div>
<XIcon className="size-[14px] text-rose-500" />
</div>
);
Expand Down
65 changes: 41 additions & 24 deletions docs/components/geistdocs/desktop-menu.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use client';

import DynamicLink from 'fumadocs-core/dynamic-link';
import { useParams, usePathname } from 'next/navigation';
import { IconArrowUpRightSmall } from '@/components/geistcn-fallbacks/geistcn-assets/icons/icon-arrow-up-right-small';
import {
NavigationMenu,
Expand All @@ -18,34 +19,50 @@ interface DesktopMenuProps {

export const DesktopMenu = ({ items, className }: DesktopMenuProps) => {
const isMobile = useIsMobile();
const pathname = usePathname() ?? '/';
const { lang } = useParams<{ lang?: string }>();

const matchesHref = (href: string) => {
const candidates = [href];
if (lang) candidates.push(`/${lang}${href}`);
return candidates.some(
(candidate) =>
pathname === candidate || pathname.startsWith(`${candidate}/`)
);
};

return (
<NavigationMenu viewport={isMobile}>
<NavigationMenuList className={cn('h-14 gap-4', className)}>
{items.map((item) => (
<NavigationMenuItem key={item.href}>
<NavigationMenuLink
asChild
className="flex items-center text-gray-900 text-sm transition-colors duration-100 hover:text-gray-1000"
>
{item.href.startsWith('http') ? (
<a
className="flex flex-row items-center gap-1"
href={item.href}
rel="noopener"
target="_blank"
>
{item.label}
<IconArrowUpRightSmall aria-hidden="true" size={12} />
</a>
) : (
<DynamicLink href={`/[lang]${item.href}`}>
{item.label}
</DynamicLink>
)}
</NavigationMenuLink>
</NavigationMenuItem>
))}
{items.map((item) => {
const isExternal = item.href.startsWith('http');
const isActive = !isExternal && matchesHref(item.href);
return (
<NavigationMenuItem key={item.href}>
<NavigationMenuLink
active={isActive}
asChild
className="flex items-center text-gray-900 text-sm transition-colors duration-100 hover:text-gray-1000 data-[active]:text-gray-1000"
>
{isExternal ? (
<a
className="flex flex-row items-center gap-1"
href={item.href}
rel="noopener"
target="_blank"
>
{item.label}
<IconArrowUpRightSmall aria-hidden="true" size={12} />
</a>
) : (
<DynamicLink href={`/[lang]${item.href}`}>
{item.label}
</DynamicLink>
)}
</NavigationMenuLink>
</NavigationMenuItem>
);
})}
</NavigationMenuList>
</NavigationMenu>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Child workflows are the right choice when:
- **You want massive fan-out.** Spawning 50 or 500 children is practical because each runs on its own infrastructure.
- **You need per-item observability.** Each child workflow has its own run ID, status, and event log for monitoring.

For simpler cases where steps share a single event log, use [direct await composition](/docs/foundations/common-patterns#direct-await-flattening) instead.
For simpler cases where steps share a single event log, use [direct await composition](/cookbook/common-patterns/workflow-composition#direct-await-flattening) instead.

## Basic pattern: spawn and poll

Expand Down
168 changes: 0 additions & 168 deletions docs/content/docs/cookbook/advanced/custom-serialization.mdx

This file was deleted.

Loading
Loading